aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/changes.html1
-rw-r--r--src/buildvm_x86.dasc29
-rw-r--r--src/buildvm_x86.h1799
-rw-r--r--src/lj_api.c37
-rw-r--r--src/lj_dispatch.c7
-rw-r--r--src/lj_dispatch.h2
-rw-r--r--src/lj_err.c2
-rw-r--r--src/lj_frame.h4
-rw-r--r--src/lj_vm.h1
9 files changed, 950 insertions, 932 deletions
diff --git a/doc/changes.html b/doc/changes.html
index d9a3aadd..b15639a9 100644
--- a/doc/changes.html
+++ b/doc/changes.html
@@ -55,6 +55,7 @@ to see whether newer versions are available.
55<div class="major" style="background: #d0d0d0;"> 55<div class="major" style="background: #d0d0d0;">
56<h2 id="snap">Development Snapshot</h2> 56<h2 id="snap">Development Snapshot</h2>
57<ul> 57<ul>
58<li>Implement yield from C hooks.</li>
58<li>Add abstract C call handling to IR.</li> 59<li>Add abstract C call handling to IR.</li>
59<li>Improve KNUM fuse vs. load heuristics.</li> 60<li>Improve KNUM fuse vs. load heuristics.</li>
60<li>Drive the GC forward on string allocations in the parser.</li> 61<li>Drive the GC forward on string allocations in the parser.</li>
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 5ff76a55..952fc9d6 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -618,13 +618,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
618 |->vm_unwind_c: // Unwind C stack, return from vm_pcall. 618 |->vm_unwind_c: // Unwind C stack, return from vm_pcall.
619 | // (void *cframe, int errcode) 619 | // (void *cframe, int errcode)
620 |.if X64 620 |.if X64
621 | and CARG1, CFRAME_RAWMASK
622 | mov eax, CARG2d // Error return status for vm_pcall. 621 | mov eax, CARG2d // Error return status for vm_pcall.
623 | mov rsp, CARG1 622 | mov rsp, CARG1
624 |.else 623 |.else
625 | mov ecx, [esp+4] 624 | mov ecx, [esp+4]
626 | mov eax, [esp+8] // Error return status for vm_pcall. 625 | mov eax, [esp+8] // Error return status for vm_pcall.
627 | and ecx, CFRAME_RAWMASK
628 | mov esp, ecx 626 | mov esp, ecx
629 |.endif 627 |.endif
630 | mov L:RB, SAVE_L 628 | mov L:RB, SAVE_L
@@ -2618,24 +2616,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2618 | test RDL, LUA_MASKLINE 2616 | test RDL, LUA_MASKLINE
2619 | jz >5 2617 | jz >5
2620 |1: 2618 |1:
2621 |.if X64
2622 | mov L:RB, SAVE_L
2623 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
2624 | mov CARG3d, NRESULTS // Dynamic top for *M instructions.
2625 | mov CARG2d, PC
2626 | mov CARG1d, L:RB
2627 |.else
2628 | mov L:RB, SAVE_L 2619 | mov L:RB, SAVE_L
2629 | mov RD, NRESULTS // Dynamic top for *M instructions.
2630 | mov ARG3, RD
2631 | mov L:RB->base, BASE 2620 | mov L:RB->base, BASE
2632 | mov ARG2, PC 2621 | mov FCARG2, PC // Caveat: FCARG2 == BASE
2633 | mov ARG1, L:RB 2622 | mov FCARG1, L:RB
2634 |.endif
2635 | // SAVE_PC must hold the _previous_ PC. The callee updates it with PC. 2623 | // SAVE_PC must hold the _previous_ PC. The callee updates it with PC.
2636 | call extern lj_dispatch_ins // (lua_State *L, BCIns *pc, int nres) 2624 | call extern lj_dispatch_ins@8 // (lua_State *L, BCIns *pc)
2637 |4: 2625 |3:
2638 | mov BASE, L:RB->base 2626 | mov BASE, L:RB->base
2627 |4:
2639 | movzx RA, PC_RA 2628 | movzx RA, PC_RA
2640 |5: 2629 |5:
2641 | movzx OP, PC_OP 2630 | movzx OP, PC_OP
@@ -2646,6 +2635,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2646 | jmp aword [DISPATCH+OP*4+GG_DISP_STATIC*4] // Re-dispatch to static ins. 2635 | jmp aword [DISPATCH+OP*4+GG_DISP_STATIC*4] // Re-dispatch to static ins.
2647 |.endif 2636 |.endif
2648 | 2637 |
2638 |->cont_hook: // Continue from hook yield.
2639 | add PC, 4
2640 | mov RA, [RB-24]
2641 | mov NRESULTS, RA // Restore NRESULTS for *M ins.
2642 | jmp <4
2643 |
2649 |->vm_hotloop: // Hot loop counter underflow. 2644 |->vm_hotloop: // Hot loop counter underflow.
2650#if LJ_HASJIT 2645#if LJ_HASJIT
2651 |.if X64 2646 |.if X64
@@ -2658,7 +2653,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2658 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2653 | mov [DISPATCH+DISPATCH_J(L)], L:RB
2659 | mov SAVE_PC, PC 2654 | mov SAVE_PC, PC
2660 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc) 2655 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc)
2661 | jmp <4 2656 | jmp <3
2662 |.endif 2657 |.endif
2663#endif 2658#endif
2664 | 2659 |
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index c7eb42e3..0affad6a 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[15184] = { 15static const unsigned char build_actionlist[15191] = {
16 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233, 16 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233,
17 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135, 17 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135,
18 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244, 18 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244,
@@ -40,393 +40,393 @@ static const unsigned char build_actionlist[15184] = {
40 15,135,244,254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7, 40 15,135,244,254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7,
41 133,201,15,132,244,5,41,193,141,20,202,252,233,244,5,248,8,137,149,233,255, 41 133,201,15,132,244,5,41,193,141,20,202,252,233,244,5,248,8,137,149,233,255,
42 137,68,36,20,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248, 42 137,68,36,20,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248,
43 23,139,76,36,4,139,68,36,8,129,225,239,137,204,139,108,36,48,139,173,233, 43 23,139,76,36,4,139,68,36,8,137,204,139,108,36,48,139,173,233,199,133,233,
44 199,133,233,237,252,233,244,22,248,24,139,76,36,4,129,225,239,137,204,139, 44 237,252,233,244,22,248,24,139,76,36,4,129,225,239,137,204,139,108,36,48,185,
45 108,36,48,185,252,248,252,255,252,255,252,255,184,237,139,149,233,139,157, 45 252,248,252,255,252,255,252,255,184,237,139,149,233,139,157,233,129,195,239,
46 233,129,195,239,139,114,252,252,199,66,252,252,237,199,131,233,237,252,233, 46 139,114,252,252,199,66,252,252,237,199,131,233,237,252,233,244,16,248,20,
47 244,16,248,20,255,252,247,198,237,15,132,244,25,131,230,252,248,41,252,242, 47 255,252,247,198,237,15,132,244,25,131,230,252,248,41,252,242,141,76,49,252,
48 141,76,49,252,248,139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186, 48 248,139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233,
49 237,252,233,244,247,248,13,131,232,8,137,202,137,252,249,139,181,233,139, 49 244,247,248,13,131,232,8,137,202,137,252,249,139,181,233,139,108,36,48,248,
50 108,36,48,248,11,131,232,4,41,209,193,252,233,3,131,198,4,137,149,233,137, 50 11,131,232,4,41,209,193,252,233,3,131,198,4,137,149,233,137,133,233,137,116,
51 133,233,137,116,36,24,137,202,248,1,137,252,233,232,251,1,0,139,141,233,139, 51 36,24,137,202,248,1,137,252,233,232,251,1,0,139,141,233,139,133,233,139,105,
52 133,233,139,105,252,248,139,113,252,252,41,200,193,232,3,131,192,1,252,255, 52 252,248,139,113,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248,26,
53 165,233,248,26,255,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52, 53 255,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192,
54 190,237,49,192,141,188,253,36,233,139,157,233,129,195,239,137,189,233,137, 54 141,188,253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68,
55 68,36,24,137,68,36,52,56,133,233,15,132,244,249,199,131,233,237,136,133,233, 55 36,52,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
56 139,149,233,139,133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252, 56 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252,
57 137,68,36,20,252,247,198,237,15,132,244,17,252,233,244,18,248,27,85,87,86, 57 247,198,237,15,132,244,17,252,233,244,18,248,27,85,87,86,83,131,252,236,28,
58 83,131,252,236,28,190,237,255,252,233,244,247,248,28,85,87,86,83,131,252, 58 190,237,255,252,233,244,247,248,28,85,87,86,83,131,252,236,28,190,237,248,
59 236,28,190,237,248,1,139,108,36,48,139,76,36,52,248,2,139,189,233,137,124, 59 1,139,108,36,48,139,76,36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,
60 36,52,137,108,36,24,137,165,233,139,157,233,129,195,239,248,3,199,131,233, 60 137,165,233,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,
61 237,139,149,233,1,206,41,214,139,133,233,41,200,193,232,3,131,192,1,139,105, 61 41,214,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,
62 252,248,129,121,253,252,252,239,15,133,244,29,252,255,165,233,248,30,255, 62 252,252,239,15,133,244,29,252,255,165,233,248,30,255,85,87,86,83,131,252,
63 85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84, 63 236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,36,60,137,108,36,24,
64 36,60,137,108,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36, 64 139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137,
65 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233, 65 76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,252,255,210,133,192,
66 252,255,210,133,192,15,132,244,21,137,193,190,237,252,233,244,2,248,25,1, 66 15,132,244,21,137,193,190,237,252,233,244,2,248,25,1,209,131,230,252,248,
67 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139, 67 137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,139,77,
68 117,252,244,139,77,252,240,139,122,252,248,139,191,233,139,191,233,252,255, 68 252,240,139,122,252,248,139,191,233,139,191,233,252,255,225,248,31,15,182,
69 225,248,31,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,132, 69 78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,32,252,247,217,
70 244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,137, 70 193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,
71 69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20,237,255, 71 233,244,33,248,34,137,68,36,16,199,68,36,20,237,255,141,68,36,16,128,126,
72 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65, 72 252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,
73 4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,255,252,242,15,42, 73 244,248,248,35,15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,
74 192,252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255, 74 16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244,
75 141,68,36,16,252,233,244,247,248,36,15,182,70,252,254,141,4,194,248,1,15, 75 247,248,36,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,
76 182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36, 76 234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,
77 8,137,44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15, 77 116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,249,248,32,15,182,78,
78 132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4, 78 252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,
79 202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3, 79 131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141,
80 139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,3,0,0, 80 177,233,41,214,139,105,252,248,184,3,0,0,0,252,255,165,233,248,37,137,68,
81 0,252,255,165,233,248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126, 81 36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,141,
82 252,252,235,15,133,244,247,141,139,233,255,137,41,199,65,4,237,137,205,252, 82 139,233,255,137,41,199,65,4,237,137,205,252,233,244,248,248,38,15,182,70,
83 233,244,248,248,38,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248, 83 252,254,255,141,68,36,16,252,233,244,247,248,39,15,182,70,252,254,141,4,194,
84 39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248, 84 248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,
85 2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36, 85 137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133,
86 24,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108, 86 192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137,
87 202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198, 87 8,248,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
88 4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252, 88 248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194,
89 253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105, 89 137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,184,4,0,0,0,252,255,
90 252,248,184,4,0,0,0,252,255,165,233,248,41,15,182,110,252,252,141,4,194,141, 90 165,233,248,41,15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139,
91 12,202,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,
92 149,233,137,116,36,24,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,
93 244,42,248,4,255,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,
94 253,134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
95 36,171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,
96 44,129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,
97 108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232, 91 108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,
98 251,1,4,252,233,244,3,248,46,255,141,4,199,252,233,244,247,248,47,141,4,199, 92 251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,42,248,4,255,141,118,4,
99 141,44,252,234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248, 93 15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,
100 248,49,141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108, 94 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,43,131,198,4,129,
101 36,48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137, 95 120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,
102 149,233,137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42, 96 244,4,248,45,131,252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,
103 137,193,41,208,137,113,252,244,141,176,233,139,105,252,248,184,3,0,0,0,129, 97 36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,4,252,233,244,3,248,46,
104 121,253,252,252,239,15,133,244,29,255,252,255,165,233,248,50,139,108,36,48, 98 255,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,234,149,252,233,
105 137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,1,6,139,149,233, 99 244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,4,194,248,1,141,
106 252,233,244,42,248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139, 100 44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,
107 108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232, 101 70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,
108 251,1,7,139,149,233,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57, 102 251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,
109 215,15,132,244,51,252,255,165,233,248,52,139,108,36,48,137,149,233,137,202, 103 244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,
110 137,252,233,137,116,36,24,232,251,1,8,139,149,233,139,70,252,252,15,182,204, 104 244,29,255,252,255,165,233,248,50,139,108,36,48,137,149,233,141,20,194,137,
111 15,182,232,193,232,16,252,255,164,253,171,233,248,53,129,252,248,239,15,130, 105 252,233,137,116,36,24,232,251,1,6,139,149,233,252,233,244,42,248,29,137,76,
112 244,54,255,139,105,4,129,252,253,239,15,131,244,54,137,68,36,20,137,105,252, 106 36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,
113 252,139,41,137,105,252,248,131,232,2,15,132,244,248,137,76,36,16,248,1,131, 107 68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,
114 193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,244, 108 36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,51,252,255,
115 1,139,76,36,16,248,2,139,68,36,20,252,233,244,55,248,56,129,252,248,239,15, 109 165,233,248,52,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,
116 130,244,54,139,105,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134, 110 232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,
117 244,247,137,232,248,1,255,139,105,252,248,139,132,253,197,233,199,65,252, 111 255,164,253,171,233,248,53,129,252,248,239,15,130,244,54,255,139,105,4,129,
118 252,237,137,65,252,248,252,233,244,57,248,58,129,252,248,239,15,130,244,54, 112 252,253,239,15,131,244,54,137,68,36,20,137,105,252,252,139,41,137,105,252,
119 139,105,4,129,252,253,239,15,133,244,252,248,1,139,41,139,173,233,248,2,133, 113 248,131,232,2,15,132,244,248,137,76,36,16,248,1,131,193,8,139,105,4,137,105,
120 252,237,199,65,252,252,237,15,132,244,57,139,65,252,248,139,131,233,199,65, 114 252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,139,76,36,16,248,2,
121 252,252,237,137,105,252,248,137,76,36,16,139,141,233,255,35,136,233,105,201, 115 139,68,36,20,252,233,244,55,248,56,129,252,248,239,15,130,244,54,139,105,
122 239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244, 116 4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,
123 251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,57,248,5,139,105,4, 117 1,255,139,105,252,248,139,132,253,197,233,199,65,252,252,237,137,65,252,248,
124 129,252,253,239,15,132,244,57,255,139,1,139,76,36,16,137,105,252,252,137, 118 252,233,244,57,248,58,129,252,248,239,15,130,244,54,139,105,4,129,252,253,
125 65,252,248,252,233,244,57,248,6,129,252,253,239,15,132,244,1,129,252,253, 119 239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,252,237,199,65,252,
126 239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171,233,252,233, 120 252,237,15,132,244,57,139,65,252,248,139,131,233,199,65,252,252,237,137,105,
127 244,2,248,59,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54, 121 252,248,137,76,36,16,139,141,233,255,35,136,233,105,201,239,3,141,233,248,
128 255,139,41,131,189,233,0,15,133,244,54,129,121,253,12,239,15,133,244,54,139, 122 3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,
129 65,8,137,133,233,199,65,252,252,237,137,105,252,248,252,246,133,233,235,15, 123 233,133,201,15,133,244,3,252,233,244,57,248,5,139,105,4,129,252,253,239,15,
130 132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252, 124 132,244,57,255,139,1,139,76,36,16,137,105,252,252,137,65,252,248,252,233,
131 233,244,57,248,60,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 125 244,57,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253,
132 133,244,54,139,1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36,16, 126 189,237,248,7,252,247,213,139,172,253,171,233,252,233,244,2,248,59,129,252,
133 131,193,8,137,76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139,64, 127 248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,255,139,41,131,189,
134 4,137,105,252,248,137,65,252,252,252,233,244,57,248,61,129,252,248,239,15, 128 233,0,15,133,244,54,129,121,253,12,239,15,133,244,54,139,65,8,137,133,233,
135 133,244,54,129,121,253,4,239,15,135,244,54,255,252,242,15,16,1,252,233,244, 129 199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,132,244,247,128,
136 62,255,221,1,252,233,244,63,255,248,64,129,252,248,239,15,130,244,54,129, 130 165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,244,57,248,
137 121,253,4,239,15,133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248, 131 60,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,
138 252,233,244,57,248,3,129,121,253,4,239,15,135,244,54,131,187,233,0,15,133, 132 1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36,16,131,193,8,137,
139 244,54,139,171,233,59,171,233,255,15,130,244,247,232,244,65,248,1,139,108, 133 76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139,64,4,137,105,252,
140 36,48,137,141,233,137,113,252,252,137,116,36,24,137,84,36,16,137,202,137, 134 248,137,65,252,252,252,233,244,57,248,61,129,252,248,239,15,133,244,54,129,
141 252,233,232,251,1,10,139,141,233,139,84,36,16,252,233,244,2,248,66,129,252, 135 121,253,4,239,15,135,244,54,255,252,242,15,16,1,252,233,244,62,255,221,1,
142 248,239,15,130,244,54,15,132,244,248,248,1,129,121,253,4,239,15,133,244,54, 136 252,233,244,63,255,248,64,129,252,248,239,15,130,244,54,129,121,253,4,239,
143 139,41,137,108,36,4,139,108,36,48,137,44,36,137,141,233,255,137,113,252,252, 137 15,133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244,
144 137,84,36,16,131,193,8,137,76,36,8,137,116,36,24,232,251,1,11,139,141,233, 138 57,248,3,129,121,253,4,239,15,135,244,54,131,187,233,0,15,133,244,54,139,
145 139,84,36,16,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252,248,137, 139 171,233,59,171,233,255,15,130,244,247,232,244,65,248,1,139,108,36,48,137,
146 65,252,252,139,105,16,139,65,20,137,41,137,65,4,248,67,184,237,252,233,244, 140 141,233,137,113,252,252,137,116,36,24,137,84,36,16,137,202,137,252,233,232,
147 68,248,2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,233,244, 141 251,1,10,139,141,233,139,84,36,16,252,233,244,2,248,66,129,252,248,239,15,
148 57,248,69,129,252,248,239,15,130,244,54,129,121,253,4,239,255,15,133,244, 142 130,244,54,15,132,244,248,248,1,129,121,253,4,239,15,133,244,54,139,41,137,
149 54,139,133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,237,252, 143 108,36,4,139,108,36,48,137,44,36,137,141,233,255,137,113,252,252,137,84,36,
150 233,244,68,248,70,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133, 144 16,131,193,8,137,76,36,8,137,116,36,24,232,251,1,11,139,141,233,139,84,36,
151 244,54,129,121,253,12,239,15,135,244,54,255,252,242,15,16,65,8,189,0,0,252, 145 16,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252,248,137,65,252,
152 240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192, 146 252,139,105,16,139,65,20,137,41,137,65,4,248,67,184,237,252,233,244,68,248,
153 252,242,15,17,65,252,248,255,221,65,8,217,232,222,193,219,20,36,221,89,252, 147 2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,233,244,57,248,
154 248,139,4,36,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233,248, 148 69,129,252,248,239,15,130,244,54,129,121,253,4,239,255,15,133,244,54,139,
155 1,129,120,253,4,239,15,132,244,71,139,40,139,64,4,137,41,137,65,4,252,233, 149 133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,237,252,233,244,
156 244,67,248,2,131,189,233,0,15,132,244,71,137,84,36,16,135,205,137,194,232, 150 68,248,70,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,129,
157 251,1,12,137,252,233,139,84,36,16,133,192,15,133,244,1,248,71,184,237,252, 151 121,253,12,239,15,135,244,54,255,252,242,15,16,65,8,189,0,0,252,240,63,102,
158 233,244,68,248,72,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 152 15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242,
159 133,244,54,139,133,233,199,65,252,252,237,137,65,252,248,255,15,87,192,252, 153 15,17,65,252,248,255,221,65,8,217,232,222,193,219,20,36,221,89,252,248,139,
160 242,15,17,65,8,255,217,252,238,221,89,8,255,184,237,252,233,244,68,248,73, 154 4,36,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
161 129,252,248,239,15,130,244,54,137,113,252,252,190,237,137,202,131,193,8,131, 155 253,4,239,15,132,244,71,139,40,139,64,4,137,41,137,65,4,252,233,244,67,248,
162 232,1,139,105,252,248,248,1,252,246,131,233,235,15,133,244,249,248,2,129, 156 2,131,189,233,0,15,132,244,71,137,84,36,16,135,205,137,194,232,251,1,12,137,
163 121,253,252,252,239,15,133,244,29,252,255,165,233,248,3,131,198,1,252,233, 157 252,233,139,84,36,16,133,192,15,133,244,1,248,71,184,237,252,233,244,68,248,
164 244,2,248,74,255,129,252,248,239,15,130,244,54,129,121,253,12,239,15,133, 158 72,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,
165 244,54,137,113,252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113,8, 159 133,233,199,65,252,252,237,137,65,252,248,255,15,87,192,252,242,15,17,65,
166 137,105,8,137,49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248, 160 8,255,217,252,238,221,89,8,255,184,237,252,233,244,68,248,73,129,252,248,
167 9,139,116,36,24,252,233,244,54,248,75,129,252,248,239,15,130,244,54,139,41, 161 239,15,130,244,54,137,113,252,252,190,237,137,202,131,193,8,131,232,1,139,
168 137,113,252,252,137,116,36,24,137,44,36,129,121,253,4,239,15,133,244,9,255, 162 105,252,248,248,1,252,246,131,233,235,15,133,244,249,248,2,129,121,253,252,
169 131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116, 163 252,239,15,133,244,29,252,255,165,233,248,3,131,198,1,252,233,244,2,248,74,
170 36,4,15,132,244,247,59,181,233,15,132,244,9,248,1,141,116,198,252,240,59, 164 255,129,252,248,239,15,130,244,54,129,121,253,12,239,15,133,244,54,137,113,
171 181,233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,131,193,8,137, 165 252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113,8,137,105,8,137,
172 141,233,255,139,108,36,4,141,76,193,232,41,252,241,57,252,238,15,132,244, 166 49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248,9,139,116,36,24,
173 249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238, 167 252,233,244,54,248,75,129,252,248,239,15,130,244,54,139,41,137,113,252,252,
174 8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26, 168 137,116,36,24,137,44,36,129,121,253,4,239,15,133,244,9,255,131,189,233,0,
175 199,131,233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135, 169 15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,15,132,
176 244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132, 170 244,247,59,181,233,15,132,244,9,248,1,141,116,198,252,240,59,181,233,15,135,
177 244,252,255,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205, 171 244,9,137,181,233,139,108,36,48,137,141,233,131,193,8,137,141,233,255,139,
178 248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244, 172 108,36,4,141,76,193,232,41,252,241,57,252,238,15,132,244,249,248,2,139,68,
179 5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185, 173 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,
180 252,248,252,255,252,255,252,255,252,247,198,237,15,132,244,17,252,233,244, 174 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,199,131,233,237,139,
181 18,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137, 175 108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,
182 2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,255,139,12,36,137,185,233, 176 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,255,141,
183 137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,9,139,116, 177 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
184 36,24,252,233,244,54,248,76,139,173,233,137,113,252,252,137,116,36,24,137, 178 4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,
185 44,36,131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233, 179 2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,
186 137,116,36,4,15,132,244,247,59,181,233,255,15,132,244,9,248,1,141,116,198, 180 252,255,252,255,252,247,198,237,15,132,244,17,252,233,244,18,248,8,199,66,
187 252,248,59,181,233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,137, 181 252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,
188 141,233,139,108,36,4,141,76,193,252,240,41,252,241,57,252,238,15,132,244, 182 66,4,184,237,252,233,244,7,248,9,255,139,12,36,137,185,233,137,252,242,137,
189 249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238, 183 252,233,232,251,1,0,139,149,233,252,233,244,4,248,9,139,116,36,24,252,233,
190 8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26, 184 244,54,248,76,139,173,233,137,113,252,252,137,116,36,24,137,44,36,131,189,
191 199,131,233,237,139,108,36,48,139,52,36,139,149,233,255,129,252,248,239,15, 185 233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,
192 135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206, 186 15,132,244,247,59,181,233,255,15,132,244,9,248,1,141,116,198,252,248,59,181,
193 15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41, 187 233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,137,141,233,139,108,
194 205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133, 188 36,4,141,76,193,252,240,41,252,241,57,252,238,15,132,244,249,248,2,139,68,
195 244,5,248,6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198, 189 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,
196 237,15,132,244,17,255,252,233,244,18,248,8,137,252,242,137,252,233,232,251, 190 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,199,131,233,237,139,
197 1,13,248,9,139,12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139, 191 108,36,48,139,52,36,139,149,233,255,129,252,248,239,15,135,244,254,248,4,
198 149,233,252,233,244,4,248,77,139,108,36,48,137,113,252,252,252,247,133,233, 192 139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,
199 237,15,132,244,54,137,141,233,141,68,193,252,248,137,133,233,49,192,137,133, 193 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
200 233,176,235,136,133,233,252,233,244,22,255,248,63,221,89,252,248,252,233, 194 4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,
201 244,57,248,78,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 195 1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,17,255,
202 54,252,242,15,16,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15, 196 252,233,244,18,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,12,36,
203 84,193,248,62,252,242,15,17,65,252,248,255,248,78,129,252,248,239,15,130, 197 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,
204 244,54,129,121,253,4,239,15,135,244,54,221,1,217,225,248,62,248,63,221,89, 198 248,77,139,108,36,48,137,113,252,252,252,247,133,233,237,15,132,244,54,137,
205 252,248,255,248,57,184,237,248,68,137,68,36,20,248,55,252,247,198,237,15, 199 141,233,141,68,193,252,248,137,133,233,49,192,137,133,233,176,235,136,133,
206 133,244,253,248,5,56,70,252,255,15,135,244,252,139,6,15,182,204,15,182,232, 200 233,252,233,244,22,255,248,63,221,89,252,248,252,233,244,57,248,78,129,252,
207 131,198,4,193,232,16,252,255,36,171,248,6,199,68,193,252,244,237,131,192, 201 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,102,
208 1,252,233,244,5,248,7,137,202,185,252,248,252,255,252,255,252,255,252,233, 202 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,62,252,242,15,
209 244,18,255,248,79,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135, 203 17,65,252,248,255,248,78,129,252,248,239,15,130,244,54,129,121,253,4,239,
210 244,54,252,242,15,81,1,252,233,244,62,248,80,129,252,248,239,15,130,244,54, 204 15,135,244,54,221,1,217,225,248,62,248,63,221,89,252,248,255,248,57,184,237,
211 129,121,253,4,239,15,135,244,54,252,242,15,16,1,232,244,81,252,233,244,62, 205 248,68,137,68,36,20,248,55,252,247,198,237,15,133,244,253,248,5,56,70,252,
212 248,82,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54, 206 255,15,135,244,252,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
213 252,242,15,16,1,232,244,83,252,233,244,62,255,248,79,129,252,248,239,15,130, 207 36,171,248,6,199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202,
214 244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,250,252,233,244,63,248, 208 185,252,248,252,255,252,255,252,255,252,233,244,18,255,248,79,129,252,248,
215 80,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,232, 209 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,81,1,252,233,
216 244,81,252,233,244,63,248,82,255,129,252,248,239,15,130,244,54,129,121,253, 210 244,62,248,80,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
217 4,239,15,135,244,54,221,1,232,244,83,252,233,244,63,255,248,84,129,252,248, 211 54,252,242,15,16,1,232,244,81,252,233,244,62,248,82,255,129,252,248,239,15,
218 239,15,130,244,54,129,121,253,4,239,15,135,244,54,217,252,237,221,1,217,252, 212 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,232,244,83,252,
219 241,252,233,244,63,248,85,129,252,248,239,15,130,244,54,129,121,253,4,239, 213 233,244,62,255,248,79,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
220 15,135,244,54,217,252,236,221,1,217,252,241,252,233,244,63,248,86,129,252, 214 135,244,54,221,1,217,252,250,252,233,244,63,248,80,129,252,248,239,15,130,
221 248,239,255,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,87, 215 244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,81,252,233,244,63,248,
222 252,233,244,63,248,88,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 216 82,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
223 135,244,54,221,1,217,252,254,252,233,244,63,248,89,129,252,248,239,255,15, 217 1,232,244,83,252,233,244,63,255,248,84,129,252,248,239,15,130,244,54,129,
224 130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,255,252,233,244, 218 121,253,4,239,15,135,244,54,217,252,237,221,1,217,252,241,252,233,244,63,
225 63,248,90,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, 219 248,85,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,217,
226 1,217,252,242,221,216,252,233,244,63,248,91,129,252,248,239,15,130,244,54, 220 252,236,221,1,217,252,241,252,233,244,63,248,86,129,252,248,239,255,15,130,
227 255,129,121,253,4,239,15,135,244,54,221,1,217,192,216,200,217,232,222,225, 221 244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,87,252,233,244,63,248,
228 217,252,250,217,252,243,252,233,244,63,248,92,129,252,248,239,15,130,244, 222 88,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,
229 54,129,121,253,4,239,15,135,244,54,221,1,217,192,216,200,217,232,222,225, 223 252,254,252,233,244,63,248,89,129,252,248,239,255,15,130,244,54,129,121,253,
230 217,252,250,217,201,217,252,243,252,233,244,63,248,93,129,252,248,239,15, 224 4,239,15,135,244,54,221,1,217,252,255,252,233,244,63,248,90,129,252,248,239,
231 130,244,54,129,121,253,4,239,15,135,244,54,255,221,1,217,232,217,252,243, 225 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,242,221,216,252,
232 252,233,244,63,255,248,94,129,252,248,239,15,130,244,54,129,121,253,4,239, 226 233,244,63,248,91,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,
233 15,135,244,54,252,242,15,16,1,252,242,15,17,4,36,255,248,94,129,252,248,239, 227 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
234 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,221,28,36,255,137,76, 228 252,233,244,63,248,92,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
235 36,16,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233,244,63,255,248, 229 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
236 95,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242, 230 252,243,252,233,244,63,248,93,129,252,248,239,15,130,244,54,129,121,253,4,
237 15,16,1,252,242,15,17,4,36,255,248,95,129,252,248,239,15,130,244,54,129,121, 231 239,15,135,244,54,255,221,1,217,232,217,252,243,252,233,244,63,255,248,94,
232 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,
233 16,1,252,242,15,17,4,36,255,248,94,129,252,248,239,15,130,244,54,129,121,
238 253,4,239,15,135,244,54,221,1,221,28,36,255,137,76,36,16,137,213,232,251, 234 253,4,239,15,135,244,54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,
239 1,15,139,76,36,16,137,252,234,252,233,244,63,255,248,96,129,252,248,239,15, 235 1,14,139,76,36,16,137,252,234,252,233,244,63,255,248,95,129,252,248,239,15,
240 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,17, 236 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,17,
241 4,36,255,248,96,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 237 4,36,255,248,95,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
242 54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,16,139,76,36,16,137, 238 54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,15,139,76,36,16,137,
243 252,234,252,233,244,63,248,97,255,248,98,129,252,248,239,15,130,244,54,129, 239 252,234,252,233,244,63,255,248,96,129,252,248,239,15,130,244,54,129,121,253,
244 121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,89,133,233,252,233, 240 4,239,15,135,244,54,252,242,15,16,1,252,242,15,17,4,36,255,248,96,129,252,
245 244,62,255,248,98,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135, 241 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,221,28,36,255,
246 244,54,221,1,220,141,233,252,233,244,63,255,248,99,129,252,248,239,15,130, 242 137,76,36,16,137,213,232,251,1,16,139,76,36,16,137,252,234,252,233,244,63,
243 248,97,255,248,98,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,
244 244,54,252,242,15,16,1,252,242,15,89,133,233,252,233,244,62,255,248,98,129,
245 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,220,141,233,
246 252,233,244,63,255,248,99,129,252,248,239,15,130,244,54,129,121,253,4,239,
247 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,217,252,243,
248 252,233,244,63,248,100,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
249 135,244,54,129,121,253,12,239,255,15,135,244,54,221,65,8,221,1,217,252,253,
250 221,217,252,233,244,63,248,101,129,252,248,239,15,130,244,54,139,105,4,129,
251 252,253,239,15,135,244,54,139,1,137,105,252,252,137,65,252,248,209,229,129,
252 252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,
253 0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,
254 242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,105,252,252,129,229,
255 252,255,252,255,15,128,129,205,0,0,224,63,137,105,252,252,248,2,255,252,242,
256 15,17,1,255,221,25,255,184,237,252,233,244,68,248,3,255,15,87,192,252,233,
257 244,2,255,217,252,238,252,233,244,2,255,252,242,15,16,1,189,0,0,80,67,102,
258 15,110,205,102,15,112,201,81,252,242,15,89,193,252,242,15,17,65,252,248,255,
259 221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,252,248,255,139,105,252,
260 252,184,52,4,0,0,209,229,252,233,244,1,255,248,102,129,252,248,239,15,130,
261 244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,255,248,102,129,252,
262 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,255,139,105,4,
263 209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,
264 103,252,242,15,92,224,248,1,252,242,15,17,65,252,248,252,242,15,17,33,255,
265 217,192,232,244,103,220,252,233,248,1,221,89,252,248,221,25,255,139,65,252,
266 252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,233,244,68,248,3,129,
267 252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,255,15,87,228,252,233,244,
268 1,255,217,252,238,217,201,252,233,244,1,255,248,104,129,252,248,239,15,130,
247 244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221, 269 244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,
248 1,221,65,8,217,252,243,252,233,244,63,248,100,129,252,248,239,15,130,244, 270 65,8,221,1,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,
249 54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,255,15,135,244,54,221, 271 63,255,248,105,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
250 65,8,221,1,217,252,253,221,217,252,233,244,63,248,101,129,252,248,239,15, 272 54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,232,
251 130,244,54,139,105,4,129,252,253,239,15,135,244,54,139,1,137,105,252,252, 273 244,106,252,233,244,62,255,248,105,129,252,248,239,15,130,244,54,129,121,
252 137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15, 274 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,232,
253 132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193, 275 244,106,252,233,244,63,255,248,107,129,252,248,239,15,130,244,54,129,121,
254 252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,36,16,255, 276 253,4,239,15,135,244,54,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,
255 139,105,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,105, 277 62,129,124,253,252,233,252,252,239,15,135,244,54,252,242,15,16,76,252,233,
256 252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237,252,233,244,68,248, 278 252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,107,129,252,248,
257 3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,252,242,15, 279 239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,189,2,0,0,0,248,1,
258 16,1,189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15,89,193,252, 280 57,197,15,131,244,63,129,124,253,252,233,252,252,239,15,135,244,251,221,68,
259 242,15,17,65,252,248,255,221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89, 281 252,233,252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,
260 252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,102, 282 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,108,129,252,248,
261 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15, 283 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,2,0,
262 16,1,255,248,102,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 284 0,0,248,1,57,197,15,131,244,62,129,124,253,252,233,252,252,239,15,135,244,
263 54,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255,15,132,244,250, 285 54,252,242,15,16,76,252,233,252,248,252,242,15,95,193,131,197,1,252,233,244,
264 255,15,40,224,232,244,103,252,242,15,92,224,248,1,252,242,15,17,65,252,248, 286 1,255,248,108,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
265 252,242,15,17,33,255,217,192,232,244,103,220,252,233,248,1,221,89,252,248,
266 221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,
267 233,244,68,248,3,129,252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,255,
268 15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,104,
269 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,
270 12,239,15,135,244,54,221,65,8,221,1,248,1,217,252,248,223,224,158,15,138,
271 244,1,221,217,252,233,244,63,255,248,105,129,252,248,239,15,130,244,54,129,
272 121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,
273 1,252,242,15,16,73,8,232,244,106,252,233,244,62,255,248,105,129,252,248,239,
274 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,
275 54,221,1,221,65,8,232,244,106,252,233,244,63,255,248,107,129,252,248,239,
276 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,2,0,0,0,
277 248,1,57,197,15,131,244,62,129,124,253,252,233,252,252,239,15,135,244,54,
278 252,242,15,16,76,252,233,252,248,252,242,15,93,193,131,197,1,252,233,244,
279 1,255,248,107,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
280 54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,233,252,252, 287 54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,233,252,252,
281 239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,219,209,221,217, 288 239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,218,209,221,217,
282 255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216, 289 255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,
283 88,255,248,108,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 290 88,255,248,5,221,216,252,233,244,54,255,248,109,129,252,248,239,15,130,244,
284 54,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,62,129,124,253,252, 291 54,129,121,253,4,239,15,133,244,54,139,41,255,252,242,15,42,133,233,252,233,
285 233,252,252,239,15,135,244,54,252,242,15,16,76,252,233,252,248,252,242,15, 292 244,62,255,219,133,233,252,233,244,63,255,248,110,129,252,248,239,15,133,
286 95,193,131,197,1,252,233,244,1,255,248,108,129,252,248,239,15,130,244,54, 293 244,54,129,121,253,4,239,15,133,244,54,139,41,131,189,233,1,15,130,244,71,
287 129,121,253,4,239,15,135,244,54,221,1,189,2,0,0,0,248,1,57,197,15,131,244, 294 15,182,173,233,255,252,242,15,42,197,252,233,244,62,255,137,108,36,16,219,
288 63,129,124,253,252,233,252,252,239,15,135,244,251,221,68,252,233,252,248, 295 68,36,16,252,233,244,63,255,248,111,139,171,233,59,171,233,15,130,244,247,
289 255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133, 296 232,244,65,248,1,129,252,248,239,15,133,244,54,129,121,253,4,239,15,135,244,
290 244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244,54,255,248, 297 54,255,252,242,15,45,1,61,252,255,0,0,0,15,135,244,54,137,68,36,20,255,221,
291 109,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,41, 298 1,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,54,255,199,68,36,8,
292 255,252,242,15,42,133,233,252,233,244,62,255,219,133,233,252,233,244,63,255, 299 1,0,0,0,141,68,36,20,137,76,36,16,248,112,139,108,36,48,137,149,233,137,68,
293 248,110,129,252,248,239,15,133,244,54,129,121,253,4,239,15,133,244,54,139, 300 36,4,137,44,36,137,116,36,24,232,251,1,17,139,76,36,16,139,149,233,199,65,
294 41,131,189,233,1,15,130,244,71,15,182,173,233,255,252,242,15,42,197,252,233, 301 252,252,237,137,65,252,248,252,233,244,57,248,113,139,171,233,59,171,233,
295 244,62,255,137,108,36,16,219,68,36,16,252,233,244,63,255,248,111,139,171, 302 15,130,244,247,232,244,65,248,1,137,76,36,16,199,68,36,20,252,255,252,255,
296 233,59,171,233,15,130,244,247,232,244,65,248,1,129,252,248,239,15,133,244, 303 252,255,252,255,129,252,248,239,15,130,244,54,15,134,244,247,129,121,253,
297 54,129,121,253,4,239,15,135,244,54,255,252,242,15,45,1,61,252,255,0,0,0,15, 304 20,239,255,252,242,15,45,105,16,137,108,36,20,255,221,65,16,219,92,36,20,
298 135,244,54,137,68,36,20,255,221,1,219,92,36,20,129,124,36,20,252,255,0,0, 305 255,248,1,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244,54,
299 0,15,135,244,54,255,199,68,36,8,1,0,0,0,141,68,36,20,137,76,36,16,248,112, 306 139,41,137,108,36,12,139,173,233,255,252,242,15,45,73,8,255,221,65,8,219,
300 139,108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36,24,232,251,1,17, 307 92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,
301 139,76,36,16,139,149,233,199,65,252,252,237,137,65,252,248,252,233,244,57, 308 15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,114,141,172,253,13,233,
302 248,113,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36, 309 131,192,1,248,4,137,68,36,8,137,232,252,233,244,112,248,5,15,140,244,252,
303 16,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244, 310 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,
304 54,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105,16,137,108,36, 311 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,
305 20,255,221,65,16,219,92,36,20,255,248,1,129,121,253,4,239,15,133,244,54,129, 312 114,49,192,252,233,244,4,248,115,129,252,248,239,15,130,244,54,139,171,233,
306 121,253,12,239,15,135,244,54,139,41,137,108,36,12,139,173,233,255,252,242, 313 59,171,233,15,130,244,247,232,244,65,248,1,255,137,76,36,16,129,121,253,4,
307 15,45,73,8,255,221,65,8,219,92,36,8,139,76,36,8,255,139,68,36,20,57,197,15, 314 239,15,133,244,54,129,121,253,12,239,15,135,244,54,139,41,255,252,242,15,
308 130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,12,41,200,15,140, 315 45,65,8,255,221,65,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,114,
309 244,114,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244, 316 131,189,233,1,15,130,244,114,15,133,244,116,57,131,233,15,130,244,116,15,
310 112,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233, 317 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,
311 244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185, 318 133,244,1,139,131,233,252,233,244,112,248,117,129,252,248,239,255,15,130,
312 1,0,0,0,252,233,244,3,248,114,49,192,252,233,244,4,248,115,129,252,248,239, 319 244,54,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,
313 15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,255, 320 129,121,253,4,239,15,133,244,54,139,41,139,133,233,133,192,15,132,244,114,
314 137,76,36,16,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244, 321 57,131,233,15,130,244,118,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
315 54,139,41,255,252,242,15,45,65,8,255,221,65,8,219,92,36,20,139,68,36,20,255, 322 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,
316 133,192,15,142,244,114,131,189,233,1,15,130,244,114,15,133,244,116,57,131, 323 139,116,36,20,252,233,244,112,248,119,129,252,248,239,15,130,244,54,139,171,
317 233,15,130,244,116,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0, 324 233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,
318 131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,112,248,117,129, 325 239,15,133,244,54,139,41,139,133,233,57,131,233,255,15,130,244,118,129,197,
319 252,248,239,255,15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244, 326 239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,
320 65,248,1,137,76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233, 327 5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,
321 133,192,15,132,244,114,57,131,233,15,130,244,118,129,197,239,137,116,36,20, 328 32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,
322 137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12, 329 252,233,244,112,248,120,129,252,248,239,15,130,244,54,255,139,171,233,59,
323 6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,112,248,119,129,252, 330 171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,239,15,
324 248,239,15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244,65,248, 331 133,244,54,139,41,139,133,233,57,131,233,15,130,244,118,129,197,239,137,116,
325 1,137,76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233,57,131, 332 36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,
326 233,255,15,130,244,118,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 333 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,
327 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252, 334 2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,
328 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137, 335 244,112,248,121,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,
329 244,1,137,252,240,139,116,36,20,252,233,244,112,248,120,129,252,248,239,15, 336 54,137,84,36,16,137,205,139,9,232,251,1,18,137,252,233,139,84,36,16,255,252,
330 130,244,54,255,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,137, 337 242,15,42,192,252,233,244,62,255,137,4,36,219,4,36,252,233,244,63,255,248,
331 76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233,57,131,233,15, 338 122,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,
332 130,244,118,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,244, 339 15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,
333 249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122, 340 102,15,126,197,252,242,15,42,197,252,233,244,62,255,248,122,129,252,248,239,
334 15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1, 341 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,
335 137,252,240,139,116,36,20,252,233,244,112,248,121,129,252,248,239,15,130, 342 89,216,68,36,16,221,28,36,219,4,36,252,233,244,63,255,248,123,129,252,248,
336 244,54,129,121,253,4,239,15,133,244,54,137,84,36,16,137,205,139,9,232,251, 343 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,
337 1,18,137,252,233,139,84,36,16,255,252,242,15,42,192,252,233,244,62,255,137, 344 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
338 4,36,219,4,36,252,233,244,63,255,248,122,129,252,248,239,15,130,244,54,129, 345 248,123,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
339 121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205, 346 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,
340 102,15,112,201,81,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252, 347 20,141,68,193,252,240,255,137,84,36,16,255,248,1,57,200,15,134,244,124,129,
341 233,244,62,255,248,122,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 348 120,253,4,239,15,135,244,125,255,252,242,15,16,0,252,242,15,88,193,102,15,
342 135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,219,4,36, 349 126,194,33,213,255,221,0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,
343 252,233,244,63,255,248,123,129,252,248,239,15,130,244,54,129,121,253,4,239, 350 233,244,1,255,248,126,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
344 15,135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,
345 81,252,242,15,88,193,102,15,126,197,255,248,123,129,252,248,239,15,130,244,
346 54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,
347 16,221,28,36,139,44,36,255,137,68,36,20,141,68,193,252,240,255,137,84,36,
348 16,255,248,1,57,200,15,134,244,124,129,120,253,4,239,15,135,244,125,255,252,
349 242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,221,0,216,68,36,16,
350 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,126,129,252,248,239,
351 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,
352 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
353 248,126,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
354 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
355 16,0,252,242,15,88,193,102,15,126,194,9,213,255,221,0,216,68,36,16,221,28,
356 36,11,44,36,255,248,127,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
357 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 351 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
358 252,242,15,88,193,102,15,126,197,255,248,127,129,252,248,239,15,130,244,54, 352 252,242,15,88,193,102,15,126,197,255,248,126,129,252,248,239,15,130,244,54,
359 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16, 353 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,
360 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194, 354 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,
361 49,213,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,128,129,252,248, 355 9,213,255,221,0,216,68,36,16,221,28,36,11,44,36,255,248,127,129,252,248,239,
362 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0, 356 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,
363 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, 357 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
364 248,128,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, 358 248,127,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
365 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252, 359 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
366 233,244,129,255,248,130,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 360 16,0,252,242,15,88,193,102,15,126,194,49,213,255,221,0,216,68,36,16,221,28,
361 36,51,44,36,255,248,128,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
367 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 362 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
368 252,242,15,88,193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,54, 363 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,54,
369 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16, 364 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,
370 221,28,36,139,44,36,255,252,247,213,255,248,129,252,242,15,42,197,252,233, 365 221,28,36,139,44,36,255,15,205,252,233,244,129,255,248,130,129,252,248,239,
371 244,62,248,124,252,242,15,42,197,139,84,36,16,252,233,244,62,255,248,129, 366 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,
372 248,124,137,44,36,219,4,36,252,233,244,63,255,248,125,255,139,68,36,20,252, 367 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
373 233,244,54,255,248,131,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 368 248,130,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
374 135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,16, 369 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,247,213,
375 73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252, 370 255,248,129,252,242,15,42,197,252,233,244,62,248,124,252,242,15,42,197,139,
376 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,131,129,252,248, 371 84,36,16,252,233,244,62,255,248,129,248,124,137,44,36,219,4,36,252,233,244,
377 239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135, 372 63,255,248,125,255,139,68,36,20,252,233,244,54,255,248,131,129,252,248,239,
378 244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216, 373 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,
379 68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,193,252, 374 54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,
380 233,244,129,255,248,132,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 375 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
381 135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,16, 376 15,126,201,255,248,131,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
382 73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252, 377 135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,
383 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,129,252,248, 378 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,
379 8,139,44,36,255,211,229,137,193,252,233,244,129,255,248,132,129,252,248,239,
380 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,
381 54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,
382 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
383 15,126,201,255,248,132,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
384 135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,
385 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,
386 8,139,44,36,255,211,252,237,137,193,252,233,244,129,255,248,133,129,252,248,
384 239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135, 387 239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,
385 244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216, 388 244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,
386 68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,237,137,193, 389 15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,
387 252,233,244,129,255,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239, 390 102,15,126,201,255,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239,
388 15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15, 391 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,
389 16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194, 392 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,
390 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133,129,252, 393 36,8,139,44,36,255,211,252,253,137,193,252,233,244,129,255,248,134,129,252,
391 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239, 394 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,
392 15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92, 395 15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,
393 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,253, 396 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
394 137,193,252,233,244,129,255,248,134,129,252,248,239,15,130,244,54,129,121, 397 126,197,102,15,126,201,255,248,134,129,252,248,239,15,130,244,54,129,121,
395 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1, 398 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,
396 252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, 399 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
397 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248, 400 139,76,36,8,139,44,36,255,211,197,137,193,252,233,244,129,255,248,135,129,
398 134,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121, 401 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,
399 253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36, 402 239,15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,
400 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, 403 110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,
401 197,137,193,252,233,244,129,255,248,135,129,252,248,239,15,130,244,54,129, 404 15,126,197,102,15,126,201,255,248,135,129,252,248,239,15,130,244,54,129,121,
402 121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16, 405 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,
403 1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, 406 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
404 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248, 407 139,76,36,8,139,44,36,255,211,205,137,193,252,233,244,129,248,116,184,237,
405 135,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121, 408 252,233,244,54,248,118,184,237,248,54,139,108,36,48,41,202,137,113,252,252,
406 253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36, 409 137,116,36,24,137,84,36,16,137,141,233,141,68,193,252,248,141,144,233,137,
407 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, 410 133,233,139,65,252,248,59,149,233,15,135,244,251,137,44,36,252,255,144,233,
408 205,137,193,252,233,244,129,248,116,184,237,252,233,244,54,248,118,184,237, 411 133,192,15,133,244,249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,
409 248,54,139,108,36,48,41,202,137,113,252,252,137,116,36,24,137,84,36,16,137, 412 131,192,1,139,105,252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248,
410 141,233,141,68,193,252,248,141,144,233,137,133,233,139,65,252,248,59,149, 413 252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,29,252,255,165,233,
411 233,15,135,244,251,137,44,36,252,255,144,233,133,192,15,133,244,249,248,1, 414 248,3,139,141,233,139,84,36,16,1,202,252,233,244,68,248,5,186,237,137,252,
412 139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,139, 415 233,232,251,1,0,252,233,244,1,248,65,93,137,108,36,16,139,108,36,48,41,202,
413 84,36,16,1,202,57,113,252,252,15,133,244,248,252,255,165,233,248,2,129,121, 416 137,84,36,20,137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248,
414 253,252,252,239,15,133,244,29,252,255,165,233,248,3,139,141,233,139,84,36, 417 137,252,233,137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,
415 16,1,202,252,233,244,68,248,5,186,237,137,252,233,232,251,1,0,252,233,244, 418 232,3,131,192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105,
416 1,248,65,93,137,108,36,16,139,108,36,48,41,202,137,84,36,20,137,113,252,252, 419 252,248,195,248,136,255,15,182,131,233,168,235,15,133,244,251,168,235,15,
417 137,116,36,24,137,141,233,141,68,193,252,248,137,252,233,137,133,233,255, 420 133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,
418 232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192,1,139,113,252, 421 137,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,
419 252,139,84,36,20,1,202,139,108,36,16,85,139,105,252,248,195,248,136,255,15, 422 139,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149,
420 182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132, 423 233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,
421 244,247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,233,168,235, 424 252,253,248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,
422 15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168, 425 233,248,138,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,139,255,139,
423 235,15,132,244,251,248,1,139,108,36,48,139,68,36,20,137,68,36,8,137,149,233, 426 108,36,48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,
424 137,116,36,4,137,44,36,232,251,1,20,248,4,139,149,233,15,182,78,252,253,248, 427 251,1,21,252,233,244,3,255,248,140,255,139,108,36,48,137,149,233,137,252,
425 5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,233,248,138,255, 428 242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6,
426 139,108,36,48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36, 429 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,141,255,
427 24,232,251,1,21,252,233,244,4,255,248,139,255,139,108,36,48,137,149,233,137,
428 252,242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,
429 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,140,255,
430 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125, 430 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,
431 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233, 431 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,
432 137,139,233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15, 432 137,139,233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,
@@ -434,29 +434,29 @@ static const unsigned char build_actionlist[15184] = {
434 192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242, 434 192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,
435 15,17,69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84, 435 15,17,69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,
436 36,16,141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108, 436 36,16,141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,
437 36,48,255,248,141,255,139,122,252,248,139,191,233,139,191,233,199,131,233, 437 36,48,255,248,142,255,139,122,252,248,139,191,233,139,191,233,199,131,233,
438 0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 438 0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
439 252,255,36,171,255,248,81,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11, 439 252,255,36,171,255,248,81,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,
440 68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217, 440 68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,
441 108,36,4,139,68,36,8,195,255,248,142,102,15,252,239,210,102,15,118,210,102, 441 108,36,4,139,68,36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102,
442 15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102, 442 15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,
443 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252, 443 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,
444 242,15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112, 444 242,15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,
445 210,81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248, 445 210,81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,
446 1,195,248,83,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102, 446 1,195,248,83,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,
447 37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 447 37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
448 139,68,36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102,15,115, 448 139,68,36,8,195,255,248,144,102,15,252,239,210,102,15,118,210,102,15,115,
449 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84, 449 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,
450 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, 450 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
451 15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210, 451 15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,
452 81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195, 452 81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,
453 248,103,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137, 453 248,103,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,
454 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,144, 454 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,145,
455 102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110, 455 102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,
456 216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247, 456 216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,
457 102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240, 457 102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,
458 63,102,15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252, 458 63,102,15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,
459 242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,145,255,15,40,232,252, 459 242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,146,255,15,40,232,252,
460 242,15,94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0, 460 242,15,94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,
461 48,67,102,15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46, 461 48,67,102,15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,
462 220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102, 462 220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,
@@ -465,9 +465,9 @@ static const unsigned char build_actionlist[15184] = {
465 242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195, 465 242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,
466 255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252, 466 255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,
467 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201, 467 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,
468 222,252,233,195,255,248,87,217,252,234,222,201,248,146,217,84,36,4,129,124, 468 222,252,233,195,255,248,87,217,252,234,222,201,248,147,217,84,36,4,129,124,
469 36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248, 469 36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,
470 248,147,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, 470 248,148,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
471 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,106,219, 471 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,106,219,
472 84,36,4,219,68,36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133, 472 84,36,4,219,68,36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,
473 244,254,15,138,244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248, 473 244,254,15,138,244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,
@@ -477,14 +477,14 @@ static const unsigned char build_actionlist[15184] = {
477 244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233, 477 244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,
478 244,1,248,7,221,216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139, 478 244,1,248,7,221,216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,
479 68,36,4,209,224,61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132, 479 68,36,4,209,224,61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,
480 244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,147,248,9, 480 244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,148,248,9,
481 255,217,232,255,223,252,234,255,221,252,234,223,224,158,255,15,132,244,247, 481 255,217,232,255,223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,
482 217,201,248,1,221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216, 482 217,201,248,1,221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,
483 217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244, 483 217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,
484 249,217,201,248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221, 484 249,217,201,248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,
485 216,221,216,133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0, 485 216,221,216,133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,
486 128,127,217,68,36,4,195,255,248,106,255,248,148,252,242,15,45,193,252,242, 486 128,127,217,68,36,4,195,255,248,106,255,248,149,252,242,15,45,193,252,242,
487 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,149,131,252,248, 487 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,
488 1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232, 488 1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,
489 252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89, 489 252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,
490 192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244, 490 192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,
@@ -504,28 +504,28 @@ static const unsigned char build_actionlist[15184] = {
504 87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102, 504 87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,
505 15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3, 505 15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,
506 255,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195, 506 255,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,
507 248,150,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247, 507 248,151,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,
508 15,135,244,248,232,244,81,252,233,244,253,248,1,232,244,83,252,233,244,253, 508 15,135,244,248,232,244,81,252,233,244,253,248,1,232,244,83,252,233,244,253,
509 248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,103,255,252,233, 509 248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,103,255,252,233,
510 244,253,248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195, 510 244,253,248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,
511 248,2,221,68,36,4,131,252,248,5,15,130,244,87,15,132,244,146,248,2,131,252, 511 248,2,221,68,36,4,131,252,248,5,15,130,244,87,15,132,244,147,248,2,131,252,
512 248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248, 512 248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,
513 1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135, 513 1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
514 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248, 514 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
515 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217, 515 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
516 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244, 516 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,
517 81,15,132,244,83,131,252,248,3,15,130,244,103,15,135,244,248,217,252,250, 517 81,15,132,244,83,131,252,248,3,15,130,244,103,15,135,244,248,217,252,250,
518 195,248,2,131,252,248,5,15,130,244,87,15,132,244,146,131,252,248,7,15,132, 518 195,248,2,131,252,248,5,15,130,244,87,15,132,244,147,131,252,248,7,15,132,
519 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232, 519 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,
520 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244, 520 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,
521 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252, 521 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,
522 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221, 522 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,
523 216,195,255,248,9,204,248,151,255,139,68,36,20,252,242,15,16,68,36,4,252, 523 216,195,255,248,9,204,248,152,255,139,68,36,20,252,242,15,16,68,36,4,252,
524 242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15, 524 242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,
525 88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193, 525 88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,
526 252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15, 526 252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,
527 89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252, 527 89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,
528 248,5,15,132,244,247,255,15,135,244,248,232,244,145,252,233,244,7,248,1,90, 528 248,5,15,132,244,247,255,15,135,244,248,232,244,146,252,233,244,7,248,1,90,
529 232,244,106,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244, 529 232,244,106,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
530 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244, 530 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,
531 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252, 531 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,
@@ -535,14 +535,14 @@ static const unsigned char build_actionlist[15184] = {
535 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221, 535 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,
536 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, 536 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
537 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 537 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
538 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,145,15,132, 538 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,15,132,
539 244,106,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195, 539 244,106,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
540 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, 540 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
541 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 541 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
542 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, 542 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
543 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 543 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
544 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 544 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
545 244,248,217,201,248,2,221,216,195,255,248,152,156,90,137,209,129,252,242, 545 244,248,217,201,248,2,221,216,195,255,248,153,156,90,137,209,129,252,242,
546 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15, 546 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
547 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249, 547 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249,
548 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244, 548 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,
@@ -593,8 +593,8 @@ static const unsigned char build_actionlist[15184] = {
593 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199, 593 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,
594 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252, 594 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,
595 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, 595 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,
596 12,194,255,221,4,252,234,221,4,194,255,248,153,232,244,145,255,252,233,244, 596 12,194,255,221,4,252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,
597 153,255,232,244,106,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76, 597 154,255,232,244,106,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,
598 36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24, 598 36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24,
599 232,251,1,23,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182, 599 232,251,1,23,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,
600 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, 600 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,
@@ -637,8 +637,8 @@ static const unsigned char build_actionlist[15184] = {
637 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204, 637 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
638 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251, 638 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,
639 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106, 639 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,
640 252,248,139,173,233,139,4,135,252,233,244,154,255,252,247,208,139,106,252, 640 252,248,139,173,233,139,4,135,252,233,244,155,255,252,247,208,139,106,252,
641 248,139,173,233,139,4,135,252,233,244,155,255,15,182,252,236,15,182,192,129, 641 248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,236,15,182,192,129,
642 124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239, 642 124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,
643 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200, 643 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,
644 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233, 644 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233,
@@ -646,9 +646,9 @@ static const unsigned char build_actionlist[15184] = {
646 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198, 646 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,
647 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233, 647 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233,
648 252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255, 648 252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,
649 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,154,255,15,182, 649 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182,
650 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, 650 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
651 244,34,139,44,252,234,248,154,139,141,233,35,136,233,105,201,239,3,141,233, 651 244,34,139,44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233,
652 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253, 652 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,
653 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255, 653 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,
654 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 654 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
@@ -666,10 +666,10 @@ static const unsigned char build_actionlist[15184] = {
666 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 666 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
667 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132, 667 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,
668 244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133, 668 244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
669 244,39,139,4,194,252,233,244,155,248,7,128,165,233,235,139,139,233,137,171, 669 244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,233,137,171,
670 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182, 670 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,
671 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44, 671 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,
672 252,234,248,155,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233, 672 252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,
673 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253, 673 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,
674 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15, 674 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,
675 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15, 675 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,
@@ -730,7 +730,7 @@ static const unsigned char build_actionlist[15184] = {
730 248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131, 730 248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,
731 192,1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1, 731 192,1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1,
732 252,241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1, 732 252,241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,
733 15,132,244,138,255,141,12,202,255,129,121,253,4,239,15,135,244,52,129,121, 733 15,132,244,139,255,141,12,202,255,129,121,253,4,239,15,135,244,52,129,121,
734 253,12,239,15,135,244,52,255,139,105,20,255,129,252,253,239,15,135,244,52, 734 253,12,239,15,135,244,52,255,139,105,20,255,129,252,253,239,15,135,244,52,
735 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15, 735 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,
736 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248, 736 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,
@@ -875,6 +875,7 @@ enum {
875 GLOB_ff_bit_ror, 875 GLOB_ff_bit_ror,
876 GLOB_vm_record, 876 GLOB_vm_record,
877 GLOB_vm_hook, 877 GLOB_vm_hook,
878 GLOB_cont_hook,
878 GLOB_vm_hotloop, 879 GLOB_vm_hotloop,
879 GLOB_vm_hotcall, 880 GLOB_vm_hotcall,
880 GLOB_vm_exit_handler, 881 GLOB_vm_exit_handler,
@@ -1024,6 +1025,7 @@ static const char *const globnames[] = {
1024 "ff_bit_ror", 1025 "ff_bit_ror",
1025 "vm_record", 1026 "vm_record",
1026 "vm_hook", 1027 "vm_hook",
1028 "cont_hook",
1027 "vm_hotloop", 1029 "vm_hotloop",
1028 "vm_hotcall", 1030 "vm_hotcall",
1029 "vm_exit_handler", 1031 "vm_exit_handler",
@@ -1065,7 +1067,7 @@ static const char *const extnames[] = {
1065 "lj_str_new", 1067 "lj_str_new",
1066 "lj_tab_len@4", 1068 "lj_tab_len@4",
1067 "lj_gc_step@4", 1069 "lj_gc_step@4",
1068 "lj_dispatch_ins", 1070 "lj_dispatch_ins@8",
1069 "lj_trace_hot@8", 1071 "lj_trace_hot@8",
1070 "lj_trace_exit@8", 1072 "lj_trace_exit@8",
1071 "lj_meta_cat", 1073 "lj_meta_cat",
@@ -1109,439 +1111,440 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1109 dasm_put(Dst, 280, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE); 1111 dasm_put(Dst, 280, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE);
1110 dasm_put(Dst, 362, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); 1112 dasm_put(Dst, 362, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1111 dasm_put(Dst, 453, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top)); 1113 dasm_put(Dst, 453, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top));
1112 dasm_put(Dst, 532, Dt1(->top), CFRAME_RAWMASK, Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1114 dasm_put(Dst, 532, Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1113 dasm_put(Dst, 637, FRAME_P, LJ_TTRUE, LUA_MINSTACK, Dt9(->bc), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->gate)); 1115 dasm_put(Dst, 634, FRAME_P, LJ_TTRUE, LUA_MINSTACK, Dt9(->bc), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->gate));
1114 dasm_put(Dst, 759, FRAME_C, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE, FRAME_CP); 1116 dasm_put(Dst, 756, FRAME_C, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE, FRAME_CP);
1115 dasm_put(Dst, 864, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); 1117 dasm_put(Dst, 861, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1116 dasm_put(Dst, 957, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR); 1118 dasm_put(Dst, 954, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR);
1117 dasm_put(Dst, 1146, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1119 dasm_put(Dst, 1143, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1118 if (sse) { 1120 if (sse) {
1119 dasm_put(Dst, 1182); 1121 dasm_put(Dst, 1179);
1120 } else { 1122 } else {
1121 dasm_put(Dst, 1195); 1123 dasm_put(Dst, 1192);
1122 } 1124 }
1123 dasm_put(Dst, 1208, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1125 dasm_put(Dst, 1205, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv));
1124 dasm_put(Dst, 1366, LJ_TTAB); 1126 dasm_put(Dst, 1363, LJ_TTAB);
1125 if (sse) { 1127 if (sse) {
1126 dasm_put(Dst, 1182); 1128 dasm_put(Dst, 1179);
1127 } else { 1129 } else {
1128 dasm_put(Dst, 1195); 1130 dasm_put(Dst, 1192);
1129 } 1131 }
1130 dasm_put(Dst, 1386, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1132 dasm_put(Dst, 1383, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base));
1131 dasm_put(Dst, 1593, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1133 dasm_put(Dst, 1590, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1132 dasm_put(Dst, 1704, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1134 dasm_put(Dst, 1701, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC);
1133 dasm_put(Dst, 1833, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1); 1135 dasm_put(Dst, 1830, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1);
1134 dasm_put(Dst, 1993, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1136 dasm_put(Dst, 1990, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1135 if (cmov) { 1137 if (cmov) {
1136 dasm_put(Dst, 2089); 1138 dasm_put(Dst, 2086);
1137 } else { 1139 } else {
1138 dasm_put(Dst, 2093); 1140 dasm_put(Dst, 2090);
1139 } 1141 }
1140 dasm_put(Dst, 2102, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1142 dasm_put(Dst, 2099, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1141 dasm_put(Dst, 2190, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1143 dasm_put(Dst, 2187, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1142 dasm_put(Dst, 2245, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1144 dasm_put(Dst, 2242, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1143 dasm_put(Dst, 2317, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1145 dasm_put(Dst, 2314, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1144 dasm_put(Dst, 2382, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1146 dasm_put(Dst, 2379, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1145 if (sse) { 1147 if (sse) {
1146 dasm_put(Dst, 2473); 1148 dasm_put(Dst, 2470);
1147 } else { 1149 } else {
1148 dasm_put(Dst, 2483); 1150 dasm_put(Dst, 2480);
1149 } 1151 }
1150 dasm_put(Dst, 2490, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1152 dasm_put(Dst, 2487, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1151 dasm_put(Dst, 2552, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1153 dasm_put(Dst, 2549, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1152 dasm_put(Dst, 2642, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1154 dasm_put(Dst, 2639, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1153 dasm_put(Dst, 2748, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1155 dasm_put(Dst, 2745, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1154 if (sse) { 1156 if (sse) {
1155 dasm_put(Dst, 2803); 1157 dasm_put(Dst, 2800);
1156 } else { 1158 } else {
1157 dasm_put(Dst, 2842); 1159 dasm_put(Dst, 2839);
1158 } 1160 }
1159 dasm_put(Dst, 2860, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1161 dasm_put(Dst, 2857, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1160 dasm_put(Dst, 2946, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1162 dasm_put(Dst, 2943, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1161 if (sse) { 1163 if (sse) {
1162 dasm_put(Dst, 2976); 1164 dasm_put(Dst, 2973);
1163 } else { 1165 } else {
1164 dasm_put(Dst, 2986); 1166 dasm_put(Dst, 2983);
1165 } 1167 }
1166 dasm_put(Dst, 2993, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1168 dasm_put(Dst, 2990, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
1167 dasm_put(Dst, 3066, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1169 dasm_put(Dst, 3063, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD);
1168 dasm_put(Dst, 3164, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1170 dasm_put(Dst, 3161, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1169 dasm_put(Dst, 3229, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1171 dasm_put(Dst, 3226, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top));
1170 dasm_put(Dst, 3333, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1172 dasm_put(Dst, 3330, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2);
1171 dasm_put(Dst, 3452, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1173 dasm_put(Dst, 3449, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base));
1172 dasm_put(Dst, 3532, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1174 dasm_put(Dst, 3529, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1173 dasm_put(Dst, 3640, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1175 dasm_put(Dst, 3637, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE);
1174 dasm_put(Dst, 3736, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1176 dasm_put(Dst, 3733, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1175 if (sse) { 1177 if (sse) {
1176 dasm_put(Dst, 3822, 1+1, LJ_TISNUM); 1178 dasm_put(Dst, 3819, 1+1, LJ_TISNUM);
1177 } else { 1179 } else {
1178 dasm_put(Dst, 3883, 1+1, LJ_TISNUM); 1180 dasm_put(Dst, 3880, 1+1, LJ_TISNUM);
1179 } 1181 }
1180 dasm_put(Dst, 3915, 1+1, FRAME_TYPE, LJ_TNIL); 1182 dasm_put(Dst, 3912, 1+1, FRAME_TYPE, LJ_TNIL);
1181 if (sse) { 1183 if (sse) {
1182 dasm_put(Dst, 3996, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1184 dasm_put(Dst, 3993, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1183 dasm_put(Dst, 4058, 1+1, LJ_TISNUM); 1185 dasm_put(Dst, 4055, 1+1, LJ_TISNUM);
1184 } else { 1186 } else {
1185 dasm_put(Dst, 4088, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1187 dasm_put(Dst, 4085, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1186 dasm_put(Dst, 4147, 1+1, LJ_TISNUM); 1188 dasm_put(Dst, 4144, 1+1, LJ_TISNUM);
1187 } 1189 }
1188 dasm_put(Dst, 4174, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1190 dasm_put(Dst, 4171, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1189 dasm_put(Dst, 4243, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1191 dasm_put(Dst, 4240, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1190 dasm_put(Dst, 4300, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1192 dasm_put(Dst, 4297, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1191 dasm_put(Dst, 4363, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1193 dasm_put(Dst, 4360, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1192 dasm_put(Dst, 4453); 1194 dasm_put(Dst, 4450);
1193 if (sse) { 1195 if (sse) {
1194 dasm_put(Dst, 4465, 1+1, LJ_TISNUM); 1196 dasm_put(Dst, 4462, 1+1, LJ_TISNUM);
1195 } else { 1197 } else {
1196 dasm_put(Dst, 4496, 1+1, LJ_TISNUM); 1198 dasm_put(Dst, 4493, 1+1, LJ_TISNUM);
1197 } 1199 }
1198 dasm_put(Dst, 4521); 1200 dasm_put(Dst, 4518);
1199 if (sse) { 1201 if (sse) {
1200 dasm_put(Dst, 4543, 1+1, LJ_TISNUM); 1202 dasm_put(Dst, 4540, 1+1, LJ_TISNUM);
1201 } else { 1203 } else {
1202 dasm_put(Dst, 4574, 1+1, LJ_TISNUM); 1204 dasm_put(Dst, 4571, 1+1, LJ_TISNUM);
1203 } 1205 }
1204 dasm_put(Dst, 4599); 1206 dasm_put(Dst, 4596);
1205 if (sse) { 1207 if (sse) {
1206 dasm_put(Dst, 4621, 1+1, LJ_TISNUM); 1208 dasm_put(Dst, 4618, 1+1, LJ_TISNUM);
1207 } else { 1209 } else {
1208 dasm_put(Dst, 4652, 1+1, LJ_TISNUM); 1210 dasm_put(Dst, 4649, 1+1, LJ_TISNUM);
1209 } 1211 }
1210 dasm_put(Dst, 4677); 1212 dasm_put(Dst, 4674);
1211 if (sse) { 1213 if (sse) {
1212 dasm_put(Dst, 4701, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1214 dasm_put(Dst, 4698, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1213 } else { 1215 } else {
1214 dasm_put(Dst, 4736, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1216 dasm_put(Dst, 4733, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1215 } 1217 }
1216 dasm_put(Dst, 4765, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1218 dasm_put(Dst, 4762, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1217 dasm_put(Dst, 4830, 1+1, LJ_TISNUM); 1219 dasm_put(Dst, 4827, 1+1, LJ_TISNUM);
1218 if (sse) { 1220 if (sse) {
1219 dasm_put(Dst, 4925); 1221 dasm_put(Dst, 4922);
1220 } else { 1222 } else {
1221 dasm_put(Dst, 4931); 1223 dasm_put(Dst, 4928);
1222 } 1224 }
1223 dasm_put(Dst, 4940); 1225 dasm_put(Dst, 4937);
1224 if (sse) { 1226 if (sse) {
1225 dasm_put(Dst, 4965); 1227 dasm_put(Dst, 4962);
1226 } else { 1228 } else {
1227 dasm_put(Dst, 4971); 1229 dasm_put(Dst, 4968);
1228 } 1230 }
1229 dasm_put(Dst, 4974, 1+2); 1231 dasm_put(Dst, 4971, 1+2);
1230 if (sse) { 1232 if (sse) {
1231 dasm_put(Dst, 4983); 1233 dasm_put(Dst, 4980);
1232 } else { 1234 } else {
1233 dasm_put(Dst, 4991); 1235 dasm_put(Dst, 4988);
1234 } 1236 }
1235 dasm_put(Dst, 1590); 1237 dasm_put(Dst, 1587);
1236 if (sse) { 1238 if (sse) {
1237 dasm_put(Dst, 4999); 1239 dasm_put(Dst, 4996);
1238 } else { 1240 } else {
1239 dasm_put(Dst, 5031); 1241 dasm_put(Dst, 5028);
1240 } 1242 }
1241 dasm_put(Dst, 5050); 1243 dasm_put(Dst, 5047);
1242 if (sse) { 1244 if (sse) {
1243 dasm_put(Dst, 5066, 1+1, LJ_TISNUM); 1245 dasm_put(Dst, 5063, 1+1, LJ_TISNUM);
1244 } else { 1246 } else {
1245 dasm_put(Dst, 5091, 1+1, LJ_TISNUM); 1247 dasm_put(Dst, 5088, 1+1, LJ_TISNUM);
1246 } 1248 }
1247 dasm_put(Dst, 5113); 1249 dasm_put(Dst, 5110);
1248 if (sse) { 1250 if (sse) {
1249 dasm_put(Dst, 5131); 1251 dasm_put(Dst, 5128);
1250 } else { 1252 } else {
1251 dasm_put(Dst, 5157); 1253 dasm_put(Dst, 5154);
1252 } 1254 }
1253 dasm_put(Dst, 5174, 1+2); 1255 dasm_put(Dst, 5171, 1+2);
1254 if (sse) { 1256 if (sse) {
1255 dasm_put(Dst, 5214); 1257 dasm_put(Dst, 5211);
1256 } else { 1258 } else {
1257 dasm_put(Dst, 5222); 1259 dasm_put(Dst, 5219);
1258 } 1260 }
1259 dasm_put(Dst, 5232, 2+1, LJ_TISNUM, LJ_TISNUM); 1261 dasm_put(Dst, 5229, 2+1, LJ_TISNUM, LJ_TISNUM);
1260 if (sse) { 1262 if (sse) {
1261 dasm_put(Dst, 5284, 1+1, LJ_TISNUM, LJ_TISNUM); 1263 dasm_put(Dst, 5281, 1+1, LJ_TISNUM, LJ_TISNUM);
1262 } else { 1264 } else {
1263 dasm_put(Dst, 5331, 2+1, LJ_TISNUM, LJ_TISNUM); 1265 dasm_put(Dst, 5328, 2+1, LJ_TISNUM, LJ_TISNUM);
1264 } 1266 }
1265 if (sse) { 1267 if (sse) {
1266 dasm_put(Dst, 5372, 1+1, LJ_TISNUM, LJ_TISNUM); 1268 dasm_put(Dst, 5369, 1+1, LJ_TISNUM, LJ_TISNUM);
1267 } else { 1269 } else {
1268 dasm_put(Dst, 5443, 1+1, LJ_TISNUM, LJ_TISNUM); 1270 dasm_put(Dst, 5440, 1+1, LJ_TISNUM, LJ_TISNUM);
1269 if (cmov) { 1271 if (cmov) {
1270 dasm_put(Dst, 5496); 1272 dasm_put(Dst, 5493);
1271 } else { 1273 } else {
1272 dasm_put(Dst, 5504); 1274 dasm_put(Dst, 5501);
1273 } 1275 }
1274 dasm_put(Dst, 5435); 1276 dasm_put(Dst, 5432);
1275 } 1277 }
1276 if (sse) { 1278 if (sse) {
1277 dasm_put(Dst, 5525, 1+1, LJ_TISNUM, LJ_TISNUM); 1279 dasm_put(Dst, 5522, 1+1, LJ_TISNUM, LJ_TISNUM);
1278 } else { 1280 } else {
1279 dasm_put(Dst, 5596, 1+1, LJ_TISNUM, LJ_TISNUM); 1281 dasm_put(Dst, 5593, 1+1, LJ_TISNUM, LJ_TISNUM);
1280 if (cmov) { 1282 if (cmov) {
1281 dasm_put(Dst, 5649); 1283 dasm_put(Dst, 5646);
1282 } else { 1284 } else {
1283 dasm_put(Dst, 5657); 1285 dasm_put(Dst, 5654);
1284 } 1286 }
1285 dasm_put(Dst, 5435); 1287 dasm_put(Dst, 5432);
1286 } 1288 }
1287 if (!sse) { 1289 if (!sse) {
1288 dasm_put(Dst, 5678); 1290 dasm_put(Dst, 5675);
1289 } 1291 }
1290 dasm_put(Dst, 5687, 1+1, LJ_TSTR); 1292 dasm_put(Dst, 5684, 1+1, LJ_TSTR);
1291 if (sse) { 1293 if (sse) {
1292 dasm_put(Dst, 5709, Dt5(->len)); 1294 dasm_put(Dst, 5706, Dt5(->len));
1293 } else { 1295 } else {
1294 dasm_put(Dst, 5720, Dt5(->len)); 1296 dasm_put(Dst, 5717, Dt5(->len));
1295 } 1297 }
1296 dasm_put(Dst, 5728, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1298 dasm_put(Dst, 5725, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1297 if (sse) { 1299 if (sse) {
1298 dasm_put(Dst, 5762); 1300 dasm_put(Dst, 5759);
1299 } else { 1301 } else {
1300 dasm_put(Dst, 5772); 1302 dasm_put(Dst, 5769);
1301 } 1303 }
1302 dasm_put(Dst, 5785, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1304 dasm_put(Dst, 5782, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1303 if (sse) { 1305 if (sse) {
1304 dasm_put(Dst, 5820); 1306 dasm_put(Dst, 5817);
1305 } else { 1307 } else {
1306 dasm_put(Dst, 5840); 1308 dasm_put(Dst, 5837);
1307 } 1309 }
1308 dasm_put(Dst, 5860, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1310 dasm_put(Dst, 5857, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1309 dasm_put(Dst, 2468); 1311 dasm_put(Dst, 2465);
1310 if (sse) { 1312 if (sse) {
1311 dasm_put(Dst, 5971); 1313 dasm_put(Dst, 5968);
1312 } else { 1314 } else {
1313 dasm_put(Dst, 5982); 1315 dasm_put(Dst, 5979);
1314 } 1316 }
1315 dasm_put(Dst, 5990, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1317 dasm_put(Dst, 5987, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1316 if (sse) { 1318 if (sse) {
1317 dasm_put(Dst, 6020); 1319 dasm_put(Dst, 6017);
1318 } else { 1320 } else {
1319 dasm_put(Dst, 6027); 1321 dasm_put(Dst, 6024);
1320 } 1322 }
1321 dasm_put(Dst, 6039, sizeof(GCstr)-1); 1323 dasm_put(Dst, 6036, sizeof(GCstr)-1);
1322 dasm_put(Dst, 6114, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1324 dasm_put(Dst, 6111, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1323 dasm_put(Dst, 6173, LJ_TSTR, LJ_TISNUM); 1325 dasm_put(Dst, 6170, LJ_TSTR, LJ_TISNUM);
1324 if (sse) { 1326 if (sse) {
1325 dasm_put(Dst, 6198); 1327 dasm_put(Dst, 6195);
1326 } else { 1328 } else {
1327 dasm_put(Dst, 6205); 1329 dasm_put(Dst, 6202);
1328 } 1330 }
1329 dasm_put(Dst, 6217, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1331 dasm_put(Dst, 6214, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1330 dasm_put(Dst, 6282, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1332 dasm_put(Dst, 6279, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1331 dasm_put(Dst, 6349, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1333 dasm_put(Dst, 6346, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1332 dasm_put(Dst, 6424, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1334 dasm_put(Dst, 6421, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1333 dasm_put(Dst, 6509, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1335 dasm_put(Dst, 6506, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1334 dasm_put(Dst, 6583, 1+1, LJ_TTAB); 1336 dasm_put(Dst, 6580, 1+1, LJ_TTAB);
1335 if (sse) { 1337 if (sse) {
1336 dasm_put(Dst, 6659); 1338 dasm_put(Dst, 6656);
1337 } else { 1339 } else {
1338 dasm_put(Dst, 6669); 1340 dasm_put(Dst, 6666);
1339 } 1341 }
1340 if (sse) { 1342 if (sse) {
1341 dasm_put(Dst, 6680, 1+1, LJ_TISNUM); 1343 dasm_put(Dst, 6677, 1+1, LJ_TISNUM);
1342 } else { 1344 } else {
1343 dasm_put(Dst, 6737, 1+1, LJ_TISNUM); 1345 dasm_put(Dst, 6734, 1+1, LJ_TISNUM);
1344 } 1346 }
1345 if (sse) { 1347 if (sse) {
1346 dasm_put(Dst, 6781, 1+1, LJ_TISNUM); 1348 dasm_put(Dst, 6778, 1+1, LJ_TISNUM);
1347 } else { 1349 } else {
1348 dasm_put(Dst, 6829, 1+1, LJ_TISNUM); 1350 dasm_put(Dst, 6826, 1+1, LJ_TISNUM);
1349 } 1351 }
1350 dasm_put(Dst, 6869); 1352 dasm_put(Dst, 6866);
1351 if (sse) { 1353 if (sse) {
1352 dasm_put(Dst, 6879); 1354 dasm_put(Dst, 6876);
1353 } 1355 }
1354 dasm_put(Dst, 6884, LJ_TISNUM); 1356 dasm_put(Dst, 6881, LJ_TISNUM);
1355 if (sse) { 1357 if (sse) {
1356 dasm_put(Dst, 6902); 1358 dasm_put(Dst, 6899);
1357 } else { 1359 } else {
1358 dasm_put(Dst, 6919); 1360 dasm_put(Dst, 6916);
1359 } 1361 }
1360 dasm_put(Dst, 6932); 1362 dasm_put(Dst, 6929);
1361 if (sse) { 1363 if (sse) {
1362 dasm_put(Dst, 6940, 1+1, LJ_TISNUM); 1364 dasm_put(Dst, 6937, 1+1, LJ_TISNUM);
1363 } else { 1365 } else {
1364 dasm_put(Dst, 6988, 1+1, LJ_TISNUM); 1366 dasm_put(Dst, 6985, 1+1, LJ_TISNUM);
1365 } 1367 }
1366 dasm_put(Dst, 6869); 1368 dasm_put(Dst, 6866);
1367 if (sse) { 1369 if (sse) {
1368 dasm_put(Dst, 6879); 1370 dasm_put(Dst, 6876);
1369 } 1371 }
1370 dasm_put(Dst, 6884, LJ_TISNUM); 1372 dasm_put(Dst, 6881, LJ_TISNUM);
1371 if (sse) { 1373 if (sse) {
1372 dasm_put(Dst, 7028); 1374 dasm_put(Dst, 7025);
1373 } else { 1375 } else {
1374 dasm_put(Dst, 7045); 1376 dasm_put(Dst, 7042);
1375 } 1377 }
1376 dasm_put(Dst, 6932); 1378 dasm_put(Dst, 6929);
1377 if (sse) { 1379 if (sse) {
1378 dasm_put(Dst, 7058, 1+1, LJ_TISNUM); 1380 dasm_put(Dst, 7055, 1+1, LJ_TISNUM);
1379 } else { 1381 } else {
1380 dasm_put(Dst, 7106, 1+1, LJ_TISNUM); 1382 dasm_put(Dst, 7103, 1+1, LJ_TISNUM);
1381 } 1383 }
1382 dasm_put(Dst, 6869); 1384 dasm_put(Dst, 6866);
1383 if (sse) { 1385 if (sse) {
1384 dasm_put(Dst, 6879); 1386 dasm_put(Dst, 6876);
1385 } 1387 }
1386 dasm_put(Dst, 6884, LJ_TISNUM); 1388 dasm_put(Dst, 6881, LJ_TISNUM);
1387 if (sse) { 1389 if (sse) {
1388 dasm_put(Dst, 7146); 1390 dasm_put(Dst, 7143);
1389 } else { 1391 } else {
1390 dasm_put(Dst, 7163); 1392 dasm_put(Dst, 7160);
1391 } 1393 }
1392 dasm_put(Dst, 6932); 1394 dasm_put(Dst, 6929);
1393 if (sse) { 1395 if (sse) {
1394 dasm_put(Dst, 7176, 1+1, LJ_TISNUM); 1396 dasm_put(Dst, 7173, 1+1, LJ_TISNUM);
1395 } else { 1397 } else {
1396 dasm_put(Dst, 7224, 1+1, LJ_TISNUM); 1398 dasm_put(Dst, 7221, 1+1, LJ_TISNUM);
1397 } 1399 }
1398 dasm_put(Dst, 7264); 1400 dasm_put(Dst, 7261);
1399 if (sse) { 1401 if (sse) {
1400 dasm_put(Dst, 7271, 1+1, LJ_TISNUM); 1402 dasm_put(Dst, 7268, 1+1, LJ_TISNUM);
1401 } else { 1403 } else {
1402 dasm_put(Dst, 7319, 1+1, LJ_TISNUM); 1404 dasm_put(Dst, 7316, 1+1, LJ_TISNUM);
1403 } 1405 }
1404 dasm_put(Dst, 7359); 1406 dasm_put(Dst, 7356);
1405 if (sse) { 1407 if (sse) {
1406 dasm_put(Dst, 7363); 1408 dasm_put(Dst, 7360);
1407 } else { 1409 } else {
1408 dasm_put(Dst, 7390); 1410 dasm_put(Dst, 7387);
1409 } 1411 }
1410 dasm_put(Dst, 7405); 1412 dasm_put(Dst, 7402);
1411 if (sse) { 1413 if (sse) {
1412 dasm_put(Dst, 6654); 1414 dasm_put(Dst, 6651);
1413 } 1415 }
1414 dasm_put(Dst, 7408); 1416 dasm_put(Dst, 7405);
1415 if (sse) { 1417 if (sse) {
1416 dasm_put(Dst, 7417, 1+1, LJ_TISNUM, LJ_TISNUM); 1418 dasm_put(Dst, 7414, 1+1, LJ_TISNUM, LJ_TISNUM);
1417 } else { 1419 } else {
1418 dasm_put(Dst, 7491, 2+1, LJ_TISNUM, LJ_TISNUM); 1420 dasm_put(Dst, 7488, 2+1, LJ_TISNUM, LJ_TISNUM);
1419 } 1421 }
1420 dasm_put(Dst, 7557); 1422 dasm_put(Dst, 7554);
1421 if (sse) { 1423 if (sse) {
1422 dasm_put(Dst, 7566, 1+1, LJ_TISNUM, LJ_TISNUM); 1424 dasm_put(Dst, 7563, 1+1, LJ_TISNUM, LJ_TISNUM);
1423 } else { 1425 } else {
1424 dasm_put(Dst, 7640, 2+1, LJ_TISNUM, LJ_TISNUM); 1426 dasm_put(Dst, 7637, 2+1, LJ_TISNUM, LJ_TISNUM);
1425 } 1427 }
1426 dasm_put(Dst, 7706); 1428 dasm_put(Dst, 7703);
1427 if (sse) { 1429 if (sse) {
1428 dasm_put(Dst, 7716, 1+1, LJ_TISNUM, LJ_TISNUM); 1430 dasm_put(Dst, 7713, 1+1, LJ_TISNUM, LJ_TISNUM);
1429 } else { 1431 } else {
1430 dasm_put(Dst, 7790, 2+1, LJ_TISNUM, LJ_TISNUM); 1432 dasm_put(Dst, 7787, 2+1, LJ_TISNUM, LJ_TISNUM);
1431 } 1433 }
1432 dasm_put(Dst, 7856); 1434 dasm_put(Dst, 7853);
1433 if (sse) { 1435 if (sse) {
1434 dasm_put(Dst, 7866, 1+1, LJ_TISNUM, LJ_TISNUM); 1436 dasm_put(Dst, 7863, 1+1, LJ_TISNUM, LJ_TISNUM);
1435 } else { 1437 } else {
1436 dasm_put(Dst, 7940, 2+1, LJ_TISNUM, LJ_TISNUM); 1438 dasm_put(Dst, 7937, 2+1, LJ_TISNUM, LJ_TISNUM);
1437 } 1439 }
1438 dasm_put(Dst, 8006); 1440 dasm_put(Dst, 8003);
1439 if (sse) { 1441 if (sse) {
1440 dasm_put(Dst, 8015, 1+1, LJ_TISNUM, LJ_TISNUM); 1442 dasm_put(Dst, 8012, 1+1, LJ_TISNUM, LJ_TISNUM);
1441 } else { 1443 } else {
1442 dasm_put(Dst, 8089, 2+1, LJ_TISNUM, LJ_TISNUM); 1444 dasm_put(Dst, 8086, 2+1, LJ_TISNUM, LJ_TISNUM);
1443 } 1445 }
1444 dasm_put(Dst, 8155, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1446 dasm_put(Dst, 8152, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1445 dasm_put(Dst, 8239, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1447 dasm_put(Dst, 8236, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top));
1446 dasm_put(Dst, 8358, Dt1(->base), Dt1(->top)); 1448 dasm_put(Dst, 8355, Dt1(->base), Dt1(->top));
1447#if LJ_HASJIT 1449#if LJ_HASJIT
1448 dasm_put(Dst, 8399, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1450 dasm_put(Dst, 8396, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1449#endif 1451#endif
1450 dasm_put(Dst, 8430, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base), GG_DISP_STATIC*4); 1452 dasm_put(Dst, 8427, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1453 dasm_put(Dst, 8493, GG_DISP_STATIC*4);
1451#if LJ_HASJIT 1454#if LJ_HASJIT
1452 dasm_put(Dst, 8521, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); 1455 dasm_put(Dst, 8528, Dt1(->base), GG_DISP2J, DISPATCH_J(L));
1453#endif 1456#endif
1454 dasm_put(Dst, 8550); 1457 dasm_put(Dst, 8557);
1455#if LJ_HASJIT 1458#if LJ_HASJIT
1456 dasm_put(Dst, 8553, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); 1459 dasm_put(Dst, 8560, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base));
1457#endif 1460#endif
1458 dasm_put(Dst, 8599); 1461 dasm_put(Dst, 8606);
1459#if LJ_HASJIT 1462#if LJ_HASJIT
1460 dasm_put(Dst, 8602, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); 1463 dasm_put(Dst, 8609, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base));
1461#endif 1464#endif
1462 dasm_put(Dst, 8745); 1465 dasm_put(Dst, 8752);
1463#if LJ_HASJIT 1466#if LJ_HASJIT
1464 dasm_put(Dst, 8748, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1467 dasm_put(Dst, 8755, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1465#endif 1468#endif
1466 dasm_put(Dst, 8788); 1469 dasm_put(Dst, 8795);
1467 if (!sse) { 1470 if (!sse) {
1468 dasm_put(Dst, 8791); 1471 dasm_put(Dst, 8798);
1469 } 1472 }
1470 dasm_put(Dst, 8836); 1473 dasm_put(Dst, 8843);
1471 if (!sse) { 1474 if (!sse) {
1472 dasm_put(Dst, 8938); 1475 dasm_put(Dst, 8945);
1473 } 1476 }
1474 dasm_put(Dst, 8983); 1477 dasm_put(Dst, 8990);
1475 if (!sse) { 1478 if (!sse) {
1476 dasm_put(Dst, 9085); 1479 dasm_put(Dst, 9092);
1477 } 1480 }
1478 dasm_put(Dst, 9124); 1481 dasm_put(Dst, 9131);
1479 if (sse) { 1482 if (sse) {
1480 dasm_put(Dst, 9229); 1483 dasm_put(Dst, 9236);
1481 } else { 1484 } else {
1482 dasm_put(Dst, 9359); 1485 dasm_put(Dst, 9366);
1483 } 1486 }
1484 dasm_put(Dst, 9406); 1487 dasm_put(Dst, 9413);
1485 if (!sse) { 1488 if (!sse) {
1486 dasm_put(Dst, 9480); 1489 dasm_put(Dst, 9487);
1487 if (cmov) { 1490 if (cmov) {
1488 dasm_put(Dst, 9491); 1491 dasm_put(Dst, 9498);
1489 } else { 1492 } else {
1490 dasm_put(Dst, 9495);
1491 }
1492 dasm_put(Dst, 9502); 1493 dasm_put(Dst, 9502);
1493 dasm_put(Dst, 9576); 1494 }
1494 dasm_put(Dst, 9676); 1495 dasm_put(Dst, 9509);
1496 dasm_put(Dst, 9583);
1497 dasm_put(Dst, 9683);
1495 if (cmov) { 1498 if (cmov) {
1496 dasm_put(Dst, 9679); 1499 dasm_put(Dst, 9686);
1497 } else { 1500 } else {
1498 dasm_put(Dst, 9683);
1499 }
1500 dasm_put(Dst, 9690); 1501 dasm_put(Dst, 9690);
1502 }
1503 dasm_put(Dst, 9697);
1501 if (cmov) { 1504 if (cmov) {
1502 dasm_put(Dst, 9491); 1505 dasm_put(Dst, 9498);
1503 } else { 1506 } else {
1504 dasm_put(Dst, 9495); 1507 dasm_put(Dst, 9502);
1505 } 1508 }
1506 dasm_put(Dst, 9708); 1509 dasm_put(Dst, 9715);
1507 } else { 1510 } else {
1508 dasm_put(Dst, 9787); 1511 dasm_put(Dst, 9794);
1509 } 1512 }
1510 dasm_put(Dst, 9790); 1513 dasm_put(Dst, 9797);
1511 dasm_put(Dst, 9875); 1514 dasm_put(Dst, 9882);
1512 dasm_put(Dst, 10006); 1515 dasm_put(Dst, 10013);
1513 dasm_put(Dst, 10205); 1516 dasm_put(Dst, 10212);
1514 if (sse) { 1517 if (sse) {
1515 dasm_put(Dst, 10228); 1518 dasm_put(Dst, 10235);
1516 dasm_put(Dst, 10285); 1519 dasm_put(Dst, 10292);
1517 dasm_put(Dst, 10376); 1520 dasm_put(Dst, 10383);
1518 } else { 1521 } else {
1519 dasm_put(Dst, 10418); 1522 dasm_put(Dst, 10425);
1520 dasm_put(Dst, 10510); 1523 dasm_put(Dst, 10517);
1521 } 1524 }
1522 dasm_put(Dst, 10556); 1525 dasm_put(Dst, 10563);
1523 if (sse) { 1526 if (sse) {
1524 dasm_put(Dst, 10562); 1527 dasm_put(Dst, 10569);
1525 dasm_put(Dst, 10667); 1528 dasm_put(Dst, 10674);
1526 dasm_put(Dst, 10750); 1529 dasm_put(Dst, 10757);
1527 } else { 1530 } else {
1528 dasm_put(Dst, 10822); 1531 dasm_put(Dst, 10829);
1529 dasm_put(Dst, 10905); 1532 dasm_put(Dst, 10912);
1530 if (cmov) { 1533 if (cmov) {
1531 dasm_put(Dst, 10960); 1534 dasm_put(Dst, 10967);
1532 } else { 1535 } else {
1533 dasm_put(Dst, 10979); 1536 dasm_put(Dst, 10986);
1534 } 1537 }
1535 dasm_put(Dst, 10818); 1538 dasm_put(Dst, 10825);
1536 } 1539 }
1537 dasm_put(Dst, 11020); 1540 dasm_put(Dst, 11027);
1538} 1541}
1539 1542
1540/* Generate the code for a single instruction. */ 1543/* Generate the code for a single instruction. */
1541static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1544static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1542{ 1545{
1543 int vk = 0; 1546 int vk = 0;
1544 dasm_put(Dst, 11074, defop); 1547 dasm_put(Dst, 11081, defop);
1545 1548
1546 switch (op) { 1549 switch (op) {
1547 1550
@@ -1550,619 +1553,619 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1550 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1553 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1551 1554
1552 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1555 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1553 dasm_put(Dst, 11076, LJ_TISNUM, LJ_TISNUM); 1556 dasm_put(Dst, 11083, LJ_TISNUM, LJ_TISNUM);
1554 if (sse) { 1557 if (sse) {
1555 dasm_put(Dst, 11097); 1558 dasm_put(Dst, 11104);
1556 } else { 1559 } else {
1557 dasm_put(Dst, 11112); 1560 dasm_put(Dst, 11119);
1558 if (cmov) { 1561 if (cmov) {
1559 dasm_put(Dst, 11122); 1562 dasm_put(Dst, 11129);
1560 } else { 1563 } else {
1561 dasm_put(Dst, 11128); 1564 dasm_put(Dst, 11135);
1562 } 1565 }
1563 } 1566 }
1564 switch (op) { 1567 switch (op) {
1565 case BC_ISLT: 1568 case BC_ISLT:
1566 dasm_put(Dst, 11135); 1569 dasm_put(Dst, 11142);
1567 break; 1570 break;
1568 case BC_ISGE: 1571 case BC_ISGE:
1569 dasm_put(Dst, 10371); 1572 dasm_put(Dst, 10378);
1570 break; 1573 break;
1571 case BC_ISLE: 1574 case BC_ISLE:
1572 dasm_put(Dst, 6578); 1575 dasm_put(Dst, 6575);
1573 break; 1576 break;
1574 case BC_ISGT: 1577 case BC_ISGT:
1575 dasm_put(Dst, 11140); 1578 dasm_put(Dst, 11147);
1576 break; 1579 break;
1577 default: break; /* Shut up GCC. */ 1580 default: break; /* Shut up GCC. */
1578 } 1581 }
1579 dasm_put(Dst, 11145, -BCBIAS_J*4); 1582 dasm_put(Dst, 11152, -BCBIAS_J*4);
1580 break; 1583 break;
1581 1584
1582 case BC_ISEQV: case BC_ISNEV: 1585 case BC_ISEQV: case BC_ISNEV:
1583 vk = op == BC_ISEQV; 1586 vk = op == BC_ISEQV;
1584 dasm_put(Dst, 11178, LJ_TISNUM, LJ_TISNUM); 1587 dasm_put(Dst, 11185, LJ_TISNUM, LJ_TISNUM);
1585 if (sse) { 1588 if (sse) {
1586 dasm_put(Dst, 11204); 1589 dasm_put(Dst, 11211);
1587 } else { 1590 } else {
1588 dasm_put(Dst, 11216); 1591 dasm_put(Dst, 11223);
1589 if (cmov) { 1592 if (cmov) {
1590 dasm_put(Dst, 11122); 1593 dasm_put(Dst, 11129);
1591 } else { 1594 } else {
1592 dasm_put(Dst, 11128); 1595 dasm_put(Dst, 11135);
1593 } 1596 }
1594 } 1597 }
1595 iseqne_fp: 1598 iseqne_fp:
1596 if (vk) { 1599 if (vk) {
1597 dasm_put(Dst, 11223); 1600 dasm_put(Dst, 11230);
1598 } else { 1601 } else {
1599 dasm_put(Dst, 11232); 1602 dasm_put(Dst, 11239);
1600 } 1603 }
1601 iseqne_end: 1604 iseqne_end:
1602 if (vk) { 1605 if (vk) {
1603 dasm_put(Dst, 11241, -BCBIAS_J*4); 1606 dasm_put(Dst, 11248, -BCBIAS_J*4);
1604 } else { 1607 } else {
1605 dasm_put(Dst, 11256, -BCBIAS_J*4); 1608 dasm_put(Dst, 11263, -BCBIAS_J*4);
1606 } 1609 }
1607 dasm_put(Dst, 8580); 1610 dasm_put(Dst, 8587);
1608 if (op == BC_ISEQV || op == BC_ISNEV) { 1611 if (op == BC_ISEQV || op == BC_ISNEV) {
1609 dasm_put(Dst, 11271, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1612 dasm_put(Dst, 11278, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1610 if (vk) { 1613 if (vk) {
1611 dasm_put(Dst, 11329); 1614 dasm_put(Dst, 11336);
1612 } else { 1615 } else {
1613 dasm_put(Dst, 11333); 1616 dasm_put(Dst, 11340);
1614 } 1617 }
1615 dasm_put(Dst, 11339); 1618 dasm_put(Dst, 11346);
1616 } 1619 }
1617 break; 1620 break;
1618 case BC_ISEQS: case BC_ISNES: 1621 case BC_ISEQS: case BC_ISNES:
1619 vk = op == BC_ISEQS; 1622 vk = op == BC_ISEQS;
1620 dasm_put(Dst, 11344, LJ_TSTR); 1623 dasm_put(Dst, 11351, LJ_TSTR);
1621 iseqne_test: 1624 iseqne_test:
1622 if (vk) { 1625 if (vk) {
1623 dasm_put(Dst, 11227); 1626 dasm_put(Dst, 11234);
1624 } else { 1627 } else {
1625 dasm_put(Dst, 10505); 1628 dasm_put(Dst, 10512);
1626 } 1629 }
1627 goto iseqne_end; 1630 goto iseqne_end;
1628 case BC_ISEQN: case BC_ISNEN: 1631 case BC_ISEQN: case BC_ISNEN:
1629 vk = op == BC_ISEQN; 1632 vk = op == BC_ISEQN;
1630 dasm_put(Dst, 11367, LJ_TISNUM); 1633 dasm_put(Dst, 11374, LJ_TISNUM);
1631 if (sse) { 1634 if (sse) {
1632 dasm_put(Dst, 11381); 1635 dasm_put(Dst, 11388);
1633 } else { 1636 } else {
1634 dasm_put(Dst, 11393); 1637 dasm_put(Dst, 11400);
1635 if (cmov) { 1638 if (cmov) {
1636 dasm_put(Dst, 11122); 1639 dasm_put(Dst, 11129);
1637 } else { 1640 } else {
1638 dasm_put(Dst, 11128); 1641 dasm_put(Dst, 11135);
1639 } 1642 }
1640 } 1643 }
1641 goto iseqne_fp; 1644 goto iseqne_fp;
1642 case BC_ISEQP: case BC_ISNEP: 1645 case BC_ISEQP: case BC_ISNEP:
1643 vk = op == BC_ISEQP; 1646 vk = op == BC_ISEQP;
1644 dasm_put(Dst, 11400); 1647 dasm_put(Dst, 11407);
1645 goto iseqne_test; 1648 goto iseqne_test;
1646 1649
1647 /* -- Unary test and copy ops ------------------------------------------- */ 1650 /* -- Unary test and copy ops ------------------------------------------- */
1648 1651
1649 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1652 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1650 dasm_put(Dst, 11411, LJ_TISTRUECOND); 1653 dasm_put(Dst, 11418, LJ_TISTRUECOND);
1651 if (op == BC_IST || op == BC_ISTC) { 1654 if (op == BC_IST || op == BC_ISTC) {
1652 dasm_put(Dst, 11423); 1655 dasm_put(Dst, 11430);
1653 } else { 1656 } else {
1654 dasm_put(Dst, 11428); 1657 dasm_put(Dst, 11435);
1655 } 1658 }
1656 if (op == BC_ISTC || op == BC_ISFC) { 1659 if (op == BC_ISTC || op == BC_ISFC) {
1657 dasm_put(Dst, 11433); 1660 dasm_put(Dst, 11440);
1658 } 1661 }
1659 dasm_put(Dst, 11444, -BCBIAS_J*4); 1662 dasm_put(Dst, 11451, -BCBIAS_J*4);
1660 break; 1663 break;
1661 1664
1662 /* -- Unary ops --------------------------------------------------------- */ 1665 /* -- Unary ops --------------------------------------------------------- */
1663 1666
1664 case BC_MOV: 1667 case BC_MOV:
1665 dasm_put(Dst, 11475); 1668 dasm_put(Dst, 11482);
1666 break; 1669 break;
1667 case BC_NOT: 1670 case BC_NOT:
1668 dasm_put(Dst, 11508, LJ_TISTRUECOND, LJ_TTRUE); 1671 dasm_put(Dst, 11515, LJ_TISTRUECOND, LJ_TTRUE);
1669 break; 1672 break;
1670 case BC_UNM: 1673 case BC_UNM:
1671 dasm_put(Dst, 11543, LJ_TISNUM); 1674 dasm_put(Dst, 11550, LJ_TISNUM);
1672 if (sse) { 1675 if (sse) {
1673 dasm_put(Dst, 11554); 1676 dasm_put(Dst, 11561);
1674 } else { 1677 } else {
1675 dasm_put(Dst, 11584); 1678 dasm_put(Dst, 11591);
1676 } 1679 }
1677 dasm_put(Dst, 8580); 1680 dasm_put(Dst, 8587);
1678 break; 1681 break;
1679 case BC_LEN: 1682 case BC_LEN:
1680 dasm_put(Dst, 11593, LJ_TSTR); 1683 dasm_put(Dst, 11600, LJ_TSTR);
1681 if (sse) { 1684 if (sse) {
1682 dasm_put(Dst, 11607, Dt5(->len)); 1685 dasm_put(Dst, 11614, Dt5(->len));
1683 } else { 1686 } else {
1684 dasm_put(Dst, 11625, Dt5(->len)); 1687 dasm_put(Dst, 11632, Dt5(->len));
1685 } 1688 }
1686 dasm_put(Dst, 11634, LJ_TTAB); 1689 dasm_put(Dst, 11641, LJ_TTAB);
1687 if (sse) { 1690 if (sse) {
1688 dasm_put(Dst, 11674); 1691 dasm_put(Dst, 11681);
1689 } else { 1692 } else {
1690 dasm_put(Dst, 11683); 1693 dasm_put(Dst, 11690);
1691 } 1694 }
1692 dasm_put(Dst, 11693); 1695 dasm_put(Dst, 11700);
1693 break; 1696 break;
1694 1697
1695 /* -- Binary ops -------------------------------------------------------- */ 1698 /* -- Binary ops -------------------------------------------------------- */
1696 1699
1697 1700
1698 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1701 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1699 dasm_put(Dst, 11703); 1702 dasm_put(Dst, 11710);
1700 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1703 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1701 switch (vk) { 1704 switch (vk) {
1702 case 0: 1705 case 0:
1703 dasm_put(Dst, 11711, LJ_TISNUM); 1706 dasm_put(Dst, 11718, LJ_TISNUM);
1704 if (sse) { 1707 if (sse) {
1705 dasm_put(Dst, 11723); 1708 dasm_put(Dst, 11730);
1706 } else { 1709 } else {
1707 dasm_put(Dst, 11737); 1710 dasm_put(Dst, 11744);
1708 } 1711 }
1709 break; 1712 break;
1710 case 1: 1713 case 1:
1711 dasm_put(Dst, 11745, LJ_TISNUM); 1714 dasm_put(Dst, 11752, LJ_TISNUM);
1712 if (sse) { 1715 if (sse) {
1713 dasm_put(Dst, 11757); 1716 dasm_put(Dst, 11764);
1714 } else { 1717 } else {
1715 dasm_put(Dst, 11771); 1718 dasm_put(Dst, 11778);
1716 } 1719 }
1717 break; 1720 break;
1718 default: 1721 default:
1719 dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM); 1722 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
1720 if (sse) { 1723 if (sse) {
1721 dasm_put(Dst, 11801); 1724 dasm_put(Dst, 11808);
1722 } else { 1725 } else {
1723 dasm_put(Dst, 11815); 1726 dasm_put(Dst, 11822);
1724 } 1727 }
1725 break; 1728 break;
1726 } 1729 }
1727 if (sse) { 1730 if (sse) {
1728 dasm_put(Dst, 11577); 1731 dasm_put(Dst, 11584);
1729 } else { 1732 } else {
1730 dasm_put(Dst, 11589); 1733 dasm_put(Dst, 11596);
1731 } 1734 }
1732 dasm_put(Dst, 8580); 1735 dasm_put(Dst, 8587);
1733 break; 1736 break;
1734 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1737 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1735 dasm_put(Dst, 11703); 1738 dasm_put(Dst, 11710);
1736 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1739 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1737 switch (vk) { 1740 switch (vk) {
1738 case 0: 1741 case 0:
1739 dasm_put(Dst, 11711, LJ_TISNUM); 1742 dasm_put(Dst, 11718, LJ_TISNUM);
1740 if (sse) { 1743 if (sse) {
1741 dasm_put(Dst, 11823); 1744 dasm_put(Dst, 11830);
1742 } else { 1745 } else {
1743 dasm_put(Dst, 11837); 1746 dasm_put(Dst, 11844);
1744 } 1747 }
1745 break; 1748 break;
1746 case 1: 1749 case 1:
1747 dasm_put(Dst, 11745, LJ_TISNUM); 1750 dasm_put(Dst, 11752, LJ_TISNUM);
1748 if (sse) { 1751 if (sse) {
1749 dasm_put(Dst, 11845); 1752 dasm_put(Dst, 11852);
1750 } else { 1753 } else {
1751 dasm_put(Dst, 11859); 1754 dasm_put(Dst, 11866);
1752 } 1755 }
1753 break; 1756 break;
1754 default: 1757 default:
1755 dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM); 1758 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
1756 if (sse) { 1759 if (sse) {
1757 dasm_put(Dst, 11867); 1760 dasm_put(Dst, 11874);
1758 } else { 1761 } else {
1759 dasm_put(Dst, 11881); 1762 dasm_put(Dst, 11888);
1760 } 1763 }
1761 break; 1764 break;
1762 } 1765 }
1763 if (sse) { 1766 if (sse) {
1764 dasm_put(Dst, 11577); 1767 dasm_put(Dst, 11584);
1765 } else { 1768 } else {
1766 dasm_put(Dst, 11589); 1769 dasm_put(Dst, 11596);
1767 } 1770 }
1768 dasm_put(Dst, 8580); 1771 dasm_put(Dst, 8587);
1769 break; 1772 break;
1770 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1773 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1771 dasm_put(Dst, 11703); 1774 dasm_put(Dst, 11710);
1772 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1775 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1773 switch (vk) { 1776 switch (vk) {
1774 case 0: 1777 case 0:
1775 dasm_put(Dst, 11711, LJ_TISNUM); 1778 dasm_put(Dst, 11718, LJ_TISNUM);
1776 if (sse) { 1779 if (sse) {
1777 dasm_put(Dst, 11889); 1780 dasm_put(Dst, 11896);
1778 } else { 1781 } else {
1779 dasm_put(Dst, 11903); 1782 dasm_put(Dst, 11910);
1780 } 1783 }
1781 break; 1784 break;
1782 case 1: 1785 case 1:
1783 dasm_put(Dst, 11745, LJ_TISNUM); 1786 dasm_put(Dst, 11752, LJ_TISNUM);
1784 if (sse) { 1787 if (sse) {
1785 dasm_put(Dst, 11911); 1788 dasm_put(Dst, 11918);
1786 } else { 1789 } else {
1787 dasm_put(Dst, 11925); 1790 dasm_put(Dst, 11932);
1788 } 1791 }
1789 break; 1792 break;
1790 default: 1793 default:
1791 dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM); 1794 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
1792 if (sse) { 1795 if (sse) {
1793 dasm_put(Dst, 11933); 1796 dasm_put(Dst, 11940);
1794 } else { 1797 } else {
1795 dasm_put(Dst, 11947); 1798 dasm_put(Dst, 11954);
1796 } 1799 }
1797 break; 1800 break;
1798 } 1801 }
1799 if (sse) { 1802 if (sse) {
1800 dasm_put(Dst, 11577); 1803 dasm_put(Dst, 11584);
1801 } else { 1804 } else {
1802 dasm_put(Dst, 11589); 1805 dasm_put(Dst, 11596);
1803 } 1806 }
1804 dasm_put(Dst, 8580); 1807 dasm_put(Dst, 8587);
1805 break; 1808 break;
1806 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1809 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1807 dasm_put(Dst, 11703); 1810 dasm_put(Dst, 11710);
1808 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1811 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1809 switch (vk) { 1812 switch (vk) {
1810 case 0: 1813 case 0:
1811 dasm_put(Dst, 11711, LJ_TISNUM); 1814 dasm_put(Dst, 11718, LJ_TISNUM);
1812 if (sse) { 1815 if (sse) {
1813 dasm_put(Dst, 11955); 1816 dasm_put(Dst, 11962);
1814 } else { 1817 } else {
1815 dasm_put(Dst, 11969); 1818 dasm_put(Dst, 11976);
1816 } 1819 }
1817 break; 1820 break;
1818 case 1: 1821 case 1:
1819 dasm_put(Dst, 11745, LJ_TISNUM); 1822 dasm_put(Dst, 11752, LJ_TISNUM);
1820 if (sse) { 1823 if (sse) {
1821 dasm_put(Dst, 11977); 1824 dasm_put(Dst, 11984);
1822 } else { 1825 } else {
1823 dasm_put(Dst, 11991); 1826 dasm_put(Dst, 11998);
1824 } 1827 }
1825 break; 1828 break;
1826 default: 1829 default:
1827 dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM); 1830 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
1828 if (sse) { 1831 if (sse) {
1829 dasm_put(Dst, 11999); 1832 dasm_put(Dst, 12006);
1830 } else { 1833 } else {
1831 dasm_put(Dst, 12013); 1834 dasm_put(Dst, 12020);
1832 } 1835 }
1833 break; 1836 break;
1834 } 1837 }
1835 if (sse) { 1838 if (sse) {
1836 dasm_put(Dst, 11577); 1839 dasm_put(Dst, 11584);
1837 } else { 1840 } else {
1838 dasm_put(Dst, 11589); 1841 dasm_put(Dst, 11596);
1839 } 1842 }
1840 dasm_put(Dst, 8580); 1843 dasm_put(Dst, 8587);
1841 break; 1844 break;
1842 case BC_MODVN: 1845 case BC_MODVN:
1843 dasm_put(Dst, 11703); 1846 dasm_put(Dst, 11710);
1844 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1847 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1845 switch (vk) { 1848 switch (vk) {
1846 case 0: 1849 case 0:
1847 dasm_put(Dst, 11711, LJ_TISNUM); 1850 dasm_put(Dst, 11718, LJ_TISNUM);
1848 if (sse) { 1851 if (sse) {
1849 dasm_put(Dst, 12021); 1852 dasm_put(Dst, 12028);
1850 } else { 1853 } else {
1851 dasm_put(Dst, 12035); 1854 dasm_put(Dst, 12042);
1852 } 1855 }
1853 break; 1856 break;
1854 case 1: 1857 case 1:
1855 dasm_put(Dst, 11745, LJ_TISNUM); 1858 dasm_put(Dst, 11752, LJ_TISNUM);
1856 if (sse) { 1859 if (sse) {
1857 dasm_put(Dst, 12043); 1860 dasm_put(Dst, 12050);
1858 } else { 1861 } else {
1859 dasm_put(Dst, 12057); 1862 dasm_put(Dst, 12064);
1860 } 1863 }
1861 break; 1864 break;
1862 default: 1865 default:
1863 dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM); 1866 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
1864 if (sse) { 1867 if (sse) {
1865 dasm_put(Dst, 12065); 1868 dasm_put(Dst, 12072);
1866 } else { 1869 } else {
1867 dasm_put(Dst, 12079); 1870 dasm_put(Dst, 12086);
1868 } 1871 }
1869 break; 1872 break;
1870 } 1873 }
1871 dasm_put(Dst, 12087); 1874 dasm_put(Dst, 12094);
1872 if (sse) { 1875 if (sse) {
1873 dasm_put(Dst, 11577); 1876 dasm_put(Dst, 11584);
1874 } else { 1877 } else {
1875 dasm_put(Dst, 11589); 1878 dasm_put(Dst, 11596);
1876 } 1879 }
1877 dasm_put(Dst, 8580); 1880 dasm_put(Dst, 8587);
1878 break; 1881 break;
1879 case BC_MODNV: case BC_MODVV: 1882 case BC_MODNV: case BC_MODVV:
1880 dasm_put(Dst, 11703); 1883 dasm_put(Dst, 11710);
1881 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1884 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1882 switch (vk) { 1885 switch (vk) {
1883 case 0: 1886 case 0:
1884 dasm_put(Dst, 11711, LJ_TISNUM); 1887 dasm_put(Dst, 11718, LJ_TISNUM);
1885 if (sse) { 1888 if (sse) {
1886 dasm_put(Dst, 12021); 1889 dasm_put(Dst, 12028);
1887 } else { 1890 } else {
1888 dasm_put(Dst, 12035); 1891 dasm_put(Dst, 12042);
1889 } 1892 }
1890 break; 1893 break;
1891 case 1: 1894 case 1:
1892 dasm_put(Dst, 11745, LJ_TISNUM); 1895 dasm_put(Dst, 11752, LJ_TISNUM);
1893 if (sse) { 1896 if (sse) {
1894 dasm_put(Dst, 12043); 1897 dasm_put(Dst, 12050);
1895 } else { 1898 } else {
1896 dasm_put(Dst, 12057); 1899 dasm_put(Dst, 12064);
1897 } 1900 }
1898 break; 1901 break;
1899 default: 1902 default:
1900 dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM); 1903 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
1901 if (sse) { 1904 if (sse) {
1902 dasm_put(Dst, 12065); 1905 dasm_put(Dst, 12072);
1903 } else { 1906 } else {
1904 dasm_put(Dst, 12079); 1907 dasm_put(Dst, 12086);
1905 } 1908 }
1906 break; 1909 break;
1907 } 1910 }
1908 dasm_put(Dst, 12093); 1911 dasm_put(Dst, 12100);
1909 break; 1912 break;
1910 case BC_POW: 1913 case BC_POW:
1911 dasm_put(Dst, 11703); 1914 dasm_put(Dst, 11710);
1912 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1915 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1913 switch (vk) { 1916 switch (vk) {
1914 case 0: 1917 case 0:
1915 dasm_put(Dst, 11711, LJ_TISNUM); 1918 dasm_put(Dst, 11718, LJ_TISNUM);
1916 if (sse) { 1919 if (sse) {
1917 dasm_put(Dst, 12021); 1920 dasm_put(Dst, 12028);
1918 } else { 1921 } else {
1919 dasm_put(Dst, 12035); 1922 dasm_put(Dst, 12042);
1920 } 1923 }
1921 break; 1924 break;
1922 case 1: 1925 case 1:
1923 dasm_put(Dst, 11745, LJ_TISNUM); 1926 dasm_put(Dst, 11752, LJ_TISNUM);
1924 if (sse) { 1927 if (sse) {
1925 dasm_put(Dst, 12043); 1928 dasm_put(Dst, 12050);
1926 } else { 1929 } else {
1927 dasm_put(Dst, 12057); 1930 dasm_put(Dst, 12064);
1928 } 1931 }
1929 break; 1932 break;
1930 default: 1933 default:
1931 dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM); 1934 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
1932 if (sse) { 1935 if (sse) {
1933 dasm_put(Dst, 12065); 1936 dasm_put(Dst, 12072);
1934 } else { 1937 } else {
1935 dasm_put(Dst, 12079); 1938 dasm_put(Dst, 12086);
1936 } 1939 }
1937 break; 1940 break;
1938 } 1941 }
1939 dasm_put(Dst, 12098); 1942 dasm_put(Dst, 12105);
1940 if (sse) { 1943 if (sse) {
1941 dasm_put(Dst, 11577); 1944 dasm_put(Dst, 11584);
1942 } else { 1945 } else {
1943 dasm_put(Dst, 11589); 1946 dasm_put(Dst, 11596);
1944 } 1947 }
1945 dasm_put(Dst, 8580); 1948 dasm_put(Dst, 8587);
1946 break; 1949 break;
1947 1950
1948 case BC_CAT: 1951 case BC_CAT:
1949 dasm_put(Dst, 12102, Dt1(->base), Dt1(->base)); 1952 dasm_put(Dst, 12109, Dt1(->base), Dt1(->base));
1950 break; 1953 break;
1951 1954
1952 /* -- Constant ops ------------------------------------------------------ */ 1955 /* -- Constant ops ------------------------------------------------------ */
1953 1956
1954 case BC_KSTR: 1957 case BC_KSTR:
1955 dasm_put(Dst, 12196, LJ_TSTR); 1958 dasm_put(Dst, 12203, LJ_TSTR);
1956 break; 1959 break;
1957 case BC_KSHORT: 1960 case BC_KSHORT:
1958 if (sse) { 1961 if (sse) {
1959 dasm_put(Dst, 12229); 1962 dasm_put(Dst, 12236);
1960 } else { 1963 } else {
1961 dasm_put(Dst, 12244); 1964 dasm_put(Dst, 12251);
1962 } 1965 }
1963 dasm_put(Dst, 8580); 1966 dasm_put(Dst, 8587);
1964 break; 1967 break;
1965 case BC_KNUM: 1968 case BC_KNUM:
1966 if (sse) { 1969 if (sse) {
1967 dasm_put(Dst, 12252); 1970 dasm_put(Dst, 12259);
1968 } else { 1971 } else {
1969 dasm_put(Dst, 12265); 1972 dasm_put(Dst, 12272);
1970 } 1973 }
1971 dasm_put(Dst, 8580); 1974 dasm_put(Dst, 8587);
1972 break; 1975 break;
1973 case BC_KPRI: 1976 case BC_KPRI:
1974 dasm_put(Dst, 12272); 1977 dasm_put(Dst, 12279);
1975 break; 1978 break;
1976 case BC_KNIL: 1979 case BC_KNIL:
1977 dasm_put(Dst, 12298, LJ_TNIL); 1980 dasm_put(Dst, 12305, LJ_TNIL);
1978 break; 1981 break;
1979 1982
1980 /* -- Upvalue and function ops ------------------------------------------ */ 1983 /* -- Upvalue and function ops ------------------------------------------ */
1981 1984
1982 case BC_UGET: 1985 case BC_UGET:
1983 dasm_put(Dst, 12344, offsetof(GCfuncL, uvptr), DtA(->v)); 1986 dasm_put(Dst, 12351, offsetof(GCfuncL, uvptr), DtA(->v));
1984 break; 1987 break;
1985 case BC_USETV: 1988 case BC_USETV:
1986#define TV2MARKOFS \ 1989#define TV2MARKOFS \
1987 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1990 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1988 dasm_put(Dst, 12388, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1991 dasm_put(Dst, 12395, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1989 dasm_put(Dst, 12478); 1992 dasm_put(Dst, 12485);
1990 break; 1993 break;
1991#undef TV2MARKOFS 1994#undef TV2MARKOFS
1992 case BC_USETS: 1995 case BC_USETS:
1993 dasm_put(Dst, 12490, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1996 dasm_put(Dst, 12497, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1994 break; 1997 break;
1995 case BC_USETN: 1998 case BC_USETN:
1996 dasm_put(Dst, 12581); 1999 dasm_put(Dst, 12588);
1997 if (sse) { 2000 if (sse) {
1998 dasm_put(Dst, 12586); 2001 dasm_put(Dst, 12593);
1999 } else { 2002 } else {
2000 dasm_put(Dst, 11396); 2003 dasm_put(Dst, 11403);
2001 } 2004 }
2002 dasm_put(Dst, 12593, offsetof(GCfuncL, uvptr), DtA(->v)); 2005 dasm_put(Dst, 12600, offsetof(GCfuncL, uvptr), DtA(->v));
2003 if (sse) { 2006 if (sse) {
2004 dasm_put(Dst, 4965); 2007 dasm_put(Dst, 4962);
2005 } else { 2008 } else {
2006 dasm_put(Dst, 4971); 2009 dasm_put(Dst, 4968);
2007 } 2010 }
2008 dasm_put(Dst, 8580); 2011 dasm_put(Dst, 8587);
2009 break; 2012 break;
2010 case BC_USETP: 2013 case BC_USETP:
2011 dasm_put(Dst, 12602, offsetof(GCfuncL, uvptr), DtA(->v)); 2014 dasm_put(Dst, 12609, offsetof(GCfuncL, uvptr), DtA(->v));
2012 break; 2015 break;
2013 case BC_UCLO: 2016 case BC_UCLO:
2014 dasm_put(Dst, 12639, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2017 dasm_put(Dst, 12646, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2015 break; 2018 break;
2016 2019
2017 case BC_FNEW: 2020 case BC_FNEW:
2018 dasm_put(Dst, 12693, Dt1(->base), Dt1(->base), LJ_TFUNC); 2021 dasm_put(Dst, 12700, Dt1(->base), Dt1(->base), LJ_TFUNC);
2019 break; 2022 break;
2020 2023
2021 /* -- Table ops --------------------------------------------------------- */ 2024 /* -- Table ops --------------------------------------------------------- */
2022 2025
2023 case BC_TNEW: 2026 case BC_TNEW:
2024 dasm_put(Dst, 12764, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2027 dasm_put(Dst, 12771, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2025 break; 2028 break;
2026 case BC_TDUP: 2029 case BC_TDUP:
2027 dasm_put(Dst, 12885, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2030 dasm_put(Dst, 12892, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2028 break; 2031 break;
2029 2032
2030 case BC_GGET: 2033 case BC_GGET:
2031 dasm_put(Dst, 12977, Dt7(->env)); 2034 dasm_put(Dst, 12984, Dt7(->env));
2032 break; 2035 break;
2033 case BC_GSET: 2036 case BC_GSET:
2034 dasm_put(Dst, 12995, Dt7(->env)); 2037 dasm_put(Dst, 13002, Dt7(->env));
2035 break; 2038 break;
2036 2039
2037 case BC_TGETV: 2040 case BC_TGETV:
2038 dasm_put(Dst, 13013, LJ_TTAB, LJ_TISNUM); 2041 dasm_put(Dst, 13020, LJ_TTAB, LJ_TISNUM);
2039 if (sse) { 2042 if (sse) {
2040 dasm_put(Dst, 13046); 2043 dasm_put(Dst, 13053);
2041 } else { 2044 } else {
2042 dasm_put(Dst, 13067); 2045 dasm_put(Dst, 13074);
2043 if (cmov) { 2046 if (cmov) {
2044 dasm_put(Dst, 11122); 2047 dasm_put(Dst, 11129);
2045 } else { 2048 } else {
2046 dasm_put(Dst, 11128); 2049 dasm_put(Dst, 11135);
2047 } 2050 }
2048 dasm_put(Dst, 2856); 2051 dasm_put(Dst, 2853);
2049 } 2052 }
2050 dasm_put(Dst, 13077, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2053 dasm_put(Dst, 13084, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2051 dasm_put(Dst, 13169, LJ_TSTR); 2054 dasm_put(Dst, 13176, LJ_TSTR);
2052 break; 2055 break;
2053 case BC_TGETS: 2056 case BC_TGETS:
2054 dasm_put(Dst, 13187, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2057 dasm_put(Dst, 13194, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2055 dasm_put(Dst, 13271, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2058 dasm_put(Dst, 13278, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2056 break; 2059 break;
2057 case BC_TGETB: 2060 case BC_TGETB:
2058 dasm_put(Dst, 13342, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2061 dasm_put(Dst, 13349, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2059 dasm_put(Dst, 11693); 2062 dasm_put(Dst, 11700);
2060 break; 2063 break;
2061 2064
2062 case BC_TSETV: 2065 case BC_TSETV:
2063 dasm_put(Dst, 13441, LJ_TTAB, LJ_TISNUM); 2066 dasm_put(Dst, 13448, LJ_TTAB, LJ_TISNUM);
2064 if (sse) { 2067 if (sse) {
2065 dasm_put(Dst, 13046); 2068 dasm_put(Dst, 13053);
2066 } else { 2069 } else {
2067 dasm_put(Dst, 13067); 2070 dasm_put(Dst, 13074);
2068 if (cmov) { 2071 if (cmov) {
2069 dasm_put(Dst, 11122); 2072 dasm_put(Dst, 11129);
2070 } else { 2073 } else {
2071 dasm_put(Dst, 11128); 2074 dasm_put(Dst, 11135);
2072 } 2075 }
2073 dasm_put(Dst, 2856); 2076 dasm_put(Dst, 2853);
2074 } 2077 }
2075 dasm_put(Dst, 13474, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2078 dasm_put(Dst, 13481, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
2076 dasm_put(Dst, 13557, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2079 dasm_put(Dst, 13564, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2077 break; 2080 break;
2078 case BC_TSETS: 2081 case BC_TSETS:
2079 dasm_put(Dst, 13619, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2082 dasm_put(Dst, 13626, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2080 dasm_put(Dst, 13694, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2083 dasm_put(Dst, 13701, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2081 dasm_put(Dst, 13786, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2084 dasm_put(Dst, 13793, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2082 break; 2085 break;
2083 case BC_TSETB: 2086 case BC_TSETB:
2084 dasm_put(Dst, 13882, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2087 dasm_put(Dst, 13889, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2085 dasm_put(Dst, 13980, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2088 dasm_put(Dst, 13987, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2086 break; 2089 break;
2087 2090
2088 case BC_TSETM: 2091 case BC_TSETM:
2089 dasm_put(Dst, 14026); 2092 dasm_put(Dst, 14033);
2090 if (sse) { 2093 if (sse) {
2091 dasm_put(Dst, 12586); 2094 dasm_put(Dst, 12593);
2092 } else { 2095 } else {
2093 dasm_put(Dst, 14031); 2096 dasm_put(Dst, 14038);
2094 } 2097 }
2095 dasm_put(Dst, 14039, Dt6(->marked), LJ_GC_BLACK); 2098 dasm_put(Dst, 14046, Dt6(->marked), LJ_GC_BLACK);
2096 if (sse) { 2099 if (sse) {
2097 dasm_put(Dst, 14064);
2098 } else {
2099 dasm_put(Dst, 14071); 2100 dasm_put(Dst, 14071);
2101 } else {
2102 dasm_put(Dst, 14078);
2100 } 2103 }
2101 dasm_put(Dst, 14076, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 2104 dasm_put(Dst, 14083, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
2102 dasm_put(Dst, 14204, Dt6(->gclist)); 2105 dasm_put(Dst, 14211, Dt6(->gclist));
2103 break; 2106 break;
2104 2107
2105 /* -- Calls and vararg handling ----------------------------------------- */ 2108 /* -- Calls and vararg handling ----------------------------------------- */
2106 2109
2107 case BC_CALL: case BC_CALLM: 2110 case BC_CALL: case BC_CALLM:
2108 dasm_put(Dst, 11707); 2111 dasm_put(Dst, 11714);
2109 if (op == BC_CALLM) { 2112 if (op == BC_CALLM) {
2110 dasm_put(Dst, 14212); 2113 dasm_put(Dst, 14219);
2111 } 2114 }
2112 dasm_put(Dst, 14217, LJ_TFUNC, Dt7(->gate)); 2115 dasm_put(Dst, 14224, LJ_TFUNC, Dt7(->gate));
2113 break; 2116 break;
2114 2117
2115 case BC_CALLMT: 2118 case BC_CALLMT:
2116 dasm_put(Dst, 14212); 2119 dasm_put(Dst, 14219);
2117 break; 2120 break;
2118 case BC_CALLT: 2121 case BC_CALLT:
2119 dasm_put(Dst, 14240, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 2122 dasm_put(Dst, 14247, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
2120 dasm_put(Dst, 14345, FRAME_TYPE, Dt7(->pt), Dt9(->k)); 2123 dasm_put(Dst, 14352, FRAME_TYPE, Dt7(->pt), Dt9(->k));
2121 break; 2124 break;
2122 2125
2123 case BC_ITERC: 2126 case BC_ITERC:
2124 dasm_put(Dst, 14402, LJ_TFUNC, Dt7(->gate)); 2127 dasm_put(Dst, 14409, LJ_TFUNC, Dt7(->gate));
2125 break; 2128 break;
2126 2129
2127 case BC_VARG: 2130 case BC_VARG:
2128 dasm_put(Dst, 14464, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); 2131 dasm_put(Dst, 14471, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL);
2129 dasm_put(Dst, 14608, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2132 dasm_put(Dst, 14615, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2130 break; 2133 break;
2131 2134
2132 /* -- Returns ----------------------------------------------------------- */ 2135 /* -- Returns ----------------------------------------------------------- */
2133 2136
2134 case BC_RETM: 2137 case BC_RETM:
2135 dasm_put(Dst, 14212); 2138 dasm_put(Dst, 14219);
2136 break; 2139 break;
2137 2140
2138 case BC_RET: case BC_RET0: case BC_RET1: 2141 case BC_RET: case BC_RET0: case BC_RET1:
2139 if (op != BC_RET0) { 2142 if (op != BC_RET0) {
2140 dasm_put(Dst, 14707); 2143 dasm_put(Dst, 14714);
2141 } 2144 }
2142 dasm_put(Dst, 14711, FRAME_TYPE); 2145 dasm_put(Dst, 14718, FRAME_TYPE);
2143 switch (op) { 2146 switch (op) {
2144 case BC_RET: 2147 case BC_RET:
2145 dasm_put(Dst, 14730); 2148 dasm_put(Dst, 14737);
2146 break; 2149 break;
2147 case BC_RET1: 2150 case BC_RET1:
2148 dasm_put(Dst, 14788); 2151 dasm_put(Dst, 14795);
2149 /* fallthrough */ 2152 /* fallthrough */
2150 case BC_RET0: 2153 case BC_RET0:
2151 dasm_put(Dst, 14804); 2154 dasm_put(Dst, 14811);
2152 default: 2155 default:
2153 break; 2156 break;
2154 } 2157 }
2155 dasm_put(Dst, 14815, Dt7(->pt), Dt9(->k)); 2158 dasm_put(Dst, 14822, Dt7(->pt), Dt9(->k));
2156 if (op == BC_RET) { 2159 if (op == BC_RET) {
2157 dasm_put(Dst, 14857, LJ_TNIL); 2160 dasm_put(Dst, 14864, LJ_TNIL);
2158 } else { 2161 } else {
2159 dasm_put(Dst, 14866, LJ_TNIL); 2162 dasm_put(Dst, 14873, LJ_TNIL);
2160 } 2163 }
2161 dasm_put(Dst, 14873); 2164 dasm_put(Dst, 14880);
2162 if (op != BC_RET0) { 2165 if (op != BC_RET0) {
2163 dasm_put(Dst, 14894); 2166 dasm_put(Dst, 14901);
2164 } 2167 }
2165 dasm_put(Dst, 5061); 2168 dasm_put(Dst, 5058);
2166 break; 2169 break;
2167 2170
2168 /* -- Loops and branches ------------------------------------------------ */ 2171 /* -- Loops and branches ------------------------------------------------ */
@@ -2170,7 +2173,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2170 2173
2171 case BC_FORL: 2174 case BC_FORL:
2172#if LJ_HASJIT 2175#if LJ_HASJIT
2173 dasm_put(Dst, 14898, HOTCOUNT_PCMASK, GG_DISP2HOT); 2176 dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT);
2174#endif 2177#endif
2175 break; 2178 break;
2176 2179
@@ -2182,57 +2185,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2182 case BC_FORI: 2185 case BC_FORI:
2183 case BC_IFORL: 2186 case BC_IFORL:
2184 vk = (op == BC_IFORL || op == BC_JFORL); 2187 vk = (op == BC_IFORL || op == BC_JFORL);
2185 dasm_put(Dst, 14919); 2188 dasm_put(Dst, 14926);
2186 if (!vk) { 2189 if (!vk) {
2187 dasm_put(Dst, 14923, LJ_TISNUM, LJ_TISNUM); 2190 dasm_put(Dst, 14930, LJ_TISNUM, LJ_TISNUM);
2188 } 2191 }
2189 dasm_put(Dst, 14942); 2192 dasm_put(Dst, 14949);
2190 if (!vk) { 2193 if (!vk) {
2191 dasm_put(Dst, 14946, LJ_TISNUM); 2194 dasm_put(Dst, 14953, LJ_TISNUM);
2192 } 2195 }
2193 if (sse) { 2196 if (sse) {
2194 dasm_put(Dst, 14955); 2197 dasm_put(Dst, 14962);
2195 if (vk) { 2198 if (vk) {
2196 dasm_put(Dst, 14967); 2199 dasm_put(Dst, 14974);
2197 } else { 2200 } else {
2198 dasm_put(Dst, 14986); 2201 dasm_put(Dst, 14993);
2199 } 2202 }
2200 dasm_put(Dst, 14991); 2203 dasm_put(Dst, 14998);
2201 } else { 2204 } else {
2202 dasm_put(Dst, 15004); 2205 dasm_put(Dst, 15011);
2203 if (vk) { 2206 if (vk) {
2204 dasm_put(Dst, 15010); 2207 dasm_put(Dst, 15017);
2205 } else { 2208 } else {
2206 dasm_put(Dst, 15026); 2209 dasm_put(Dst, 15033);
2207 } 2210 }
2208 dasm_put(Dst, 15034); 2211 dasm_put(Dst, 15041);
2209 if (cmov) { 2212 if (cmov) {
2210 dasm_put(Dst, 11122); 2213 dasm_put(Dst, 11129);
2211 } else { 2214 } else {
2212 dasm_put(Dst, 11128); 2215 dasm_put(Dst, 11135);
2213 } 2216 }
2214 if (!cmov) { 2217 if (!cmov) {
2215 dasm_put(Dst, 15039); 2218 dasm_put(Dst, 15046);
2216 } 2219 }
2217 } 2220 }
2218 if (op == BC_FORI) { 2221 if (op == BC_FORI) {
2219 dasm_put(Dst, 15045, -BCBIAS_J*4); 2222 dasm_put(Dst, 15052, -BCBIAS_J*4);
2220 } else if (op == BC_JFORI) { 2223 } else if (op == BC_JFORI) {
2221 dasm_put(Dst, 15055, -BCBIAS_J*4, BC_JLOOP); 2224 dasm_put(Dst, 15062, -BCBIAS_J*4, BC_JLOOP);
2222 } else if (op == BC_IFORL) { 2225 } else if (op == BC_IFORL) {
2223 dasm_put(Dst, 15069, -BCBIAS_J*4); 2226 dasm_put(Dst, 15076, -BCBIAS_J*4);
2224 } else { 2227 } else {
2225 dasm_put(Dst, 15065, BC_JLOOP); 2228 dasm_put(Dst, 15072, BC_JLOOP);
2226 } 2229 }
2227 dasm_put(Dst, 11157); 2230 dasm_put(Dst, 11164);
2228 if (sse) { 2231 if (sse) {
2229 dasm_put(Dst, 15079); 2232 dasm_put(Dst, 15086);
2230 } 2233 }
2231 break; 2234 break;
2232 2235
2233 case BC_ITERL: 2236 case BC_ITERL:
2234#if LJ_HASJIT 2237#if LJ_HASJIT
2235 dasm_put(Dst, 14898, HOTCOUNT_PCMASK, GG_DISP2HOT); 2238 dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT);
2236#endif 2239#endif
2237 break; 2240 break;
2238 2241
@@ -2241,33 +2244,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2241 break; 2244 break;
2242#endif 2245#endif
2243 case BC_IITERL: 2246 case BC_IITERL:
2244 dasm_put(Dst, 15090, LJ_TNIL); 2247 dasm_put(Dst, 15097, LJ_TNIL);
2245 if (op == BC_JITERL) { 2248 if (op == BC_JITERL) {
2246 dasm_put(Dst, 15105, BC_JLOOP); 2249 dasm_put(Dst, 15112, BC_JLOOP);
2247 } else { 2250 } else {
2248 dasm_put(Dst, 15119, -BCBIAS_J*4); 2251 dasm_put(Dst, 15126, -BCBIAS_J*4);
2249 } 2252 }
2250 dasm_put(Dst, 11454); 2253 dasm_put(Dst, 11461);
2251 break; 2254 break;
2252 2255
2253 case BC_LOOP: 2256 case BC_LOOP:
2254#if LJ_HASJIT 2257#if LJ_HASJIT
2255 dasm_put(Dst, 14898, HOTCOUNT_PCMASK, GG_DISP2HOT); 2258 dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT);
2256#endif 2259#endif
2257 break; 2260 break;
2258 2261
2259 case BC_ILOOP: 2262 case BC_ILOOP:
2260 dasm_put(Dst, 8580); 2263 dasm_put(Dst, 8587);
2261 break; 2264 break;
2262 2265
2263 case BC_JLOOP: 2266 case BC_JLOOP:
2264#if LJ_HASJIT 2267#if LJ_HASJIT
2265 dasm_put(Dst, 15135, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2268 dasm_put(Dst, 15142, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2266#endif 2269#endif
2267 break; 2270 break;
2268 2271
2269 case BC_JMP: 2272 case BC_JMP:
2270 dasm_put(Dst, 15158, -BCBIAS_J*4); 2273 dasm_put(Dst, 15165, -BCBIAS_J*4);
2271 break; 2274 break;
2272 2275
2273 /* ---------------------------------------------------------------------- */ 2276 /* ---------------------------------------------------------------------- */
@@ -2295,7 +2298,7 @@ static int build_backend(BuildCtx *ctx)
2295 2298
2296 build_subroutines(ctx, cmov, sse); 2299 build_subroutines(ctx, cmov, sse);
2297 2300
2298 dasm_put(Dst, 15182); 2301 dasm_put(Dst, 15189);
2299 for (op = 0; op < BC__MAX; op++) 2302 for (op = 0; op < BC__MAX; op++)
2300 build_ins(ctx, (BCOp)op, op, cmov, sse); 2303 build_ins(ctx, (BCOp)op, op, cmov, sse);
2301 2304
diff --git a/src/lj_api.c b/src/lj_api.c
index 4b7847c8..961e5150 100644
--- a/src/lj_api.c
+++ b/src/lj_api.c
@@ -1056,19 +1056,32 @@ LUALIB_API int luaL_callmeta(lua_State *L, int idx, const char *field)
1056LUA_API int lua_yield(lua_State *L, int nresults) 1056LUA_API int lua_yield(lua_State *L, int nresults)
1057{ 1057{
1058 void *cf = L->cframe; 1058 void *cf = L->cframe;
1059 cTValue *f; 1059 global_State *g = G(L);
1060 if (!cframe_canyield(cf)) 1060 if (cframe_canyield(cf)) {
1061 lj_err_msg(L, LJ_ERR_CYIELD); 1061 cf = cframe_raw(cf);
1062 f = L->top - nresults; 1062 if (!hook_active(g)) { /* Regular yield: move results down if needed. */
1063 if (f > L->base) { 1063 cTValue *f = L->top - nresults;
1064 TValue *t = L->base; 1064 if (f > L->base) {
1065 while (--nresults >= 0) copyTV(L, t++, f++); 1065 TValue *t = L->base;
1066 L->top = t; 1066 while (--nresults >= 0) copyTV(L, t++, f++);
1067 L->top = t;
1068 }
1069 } else { /* Yield from hook: add a pseudo-frame. */
1070 TValue *top = L->top;
1071 hook_leave(g);
1072 top->u64 = cframe_multres(cf);
1073 setcont(top+1, lj_cont_hook);
1074 setframe_pc(top+1, cframe_pc(cf)-1);
1075 setframe_gc(top+2, obj2gco(L));
1076 top[2].fr.tp.ftsz = cast_int((char *)(top+3)-(char *)L->base)+FRAME_CONT;
1077 L->top = L->base = top+3;
1078 }
1079 L->cframe = NULL;
1080 L->status = LUA_YIELD;
1081 lj_vm_unwind_c(cf, LUA_YIELD);
1067 } 1082 }
1068 L->cframe = NULL; 1083 lj_err_msg(L, LJ_ERR_CYIELD);
1069 L->status = LUA_YIELD; 1084 return 0; /* unreachable */
1070 lj_vm_unwind_c(cf, LUA_YIELD);
1071 return -1; /* unreachable */
1072} 1085}
1073 1086
1074LUA_API int lua_resume(lua_State *L, int nargs) 1087LUA_API int lua_resume(lua_State *L, int nargs)
diff --git a/src/lj_dispatch.c b/src/lj_dispatch.c
index 3ce09371..2ffe363c 100644
--- a/src/lj_dispatch.c
+++ b/src/lj_dispatch.c
@@ -258,15 +258,16 @@ static BCReg cur_topslot(GCproto *pt, const BCIns *pc, uint32_t nres)
258} 258}
259 259
260/* Instruction dispatch callback for instr/line hooks or when recording. */ 260/* Instruction dispatch callback for instr/line hooks or when recording. */
261void lj_dispatch_ins(lua_State *L, const BCIns *pc, uint32_t nres) 261void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc)
262{ 262{
263 GCfunc *fn = curr_func(L); 263 GCfunc *fn = curr_func(L);
264 GCproto *pt = funcproto(fn); 264 GCproto *pt = funcproto(fn);
265 BCReg slots = cur_topslot(pt, pc, nres);
266 global_State *g = G(L);
267 void *cf = cframe_raw(L->cframe); 265 void *cf = cframe_raw(L->cframe);
268 const BCIns *oldpc = cframe_pc(cf); 266 const BCIns *oldpc = cframe_pc(cf);
267 global_State *g = G(L);
268 BCReg slots;
269 setcframe_pc(cf, pc); 269 setcframe_pc(cf, pc);
270 slots = cur_topslot(pt, pc, cframe_multres(cf));
270 L->top = L->base + slots; /* Fix top. */ 271 L->top = L->base + slots; /* Fix top. */
271#if LJ_HASJIT 272#if LJ_HASJIT
272 { 273 {
diff --git a/src/lj_dispatch.h b/src/lj_dispatch.h
index 298aa166..26c14fb9 100644
--- a/src/lj_dispatch.h
+++ b/src/lj_dispatch.h
@@ -59,6 +59,6 @@ LJ_FUNC void lj_dispatch_init(GG_State *GG);
59LJ_FUNC void lj_dispatch_update(global_State *g); 59LJ_FUNC void lj_dispatch_update(global_State *g);
60 60
61/* Instruction dispatch callback for instr/line hooks or when recording. */ 61/* Instruction dispatch callback for instr/line hooks or when recording. */
62LJ_FUNCA void lj_dispatch_ins(lua_State *L, const BCIns *pc, uint32_t nres); 62LJ_FUNCA void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc);
63 63
64#endif 64#endif
diff --git a/src/lj_err.c b/src/lj_err.c
index da2555f9..ebc9ad12 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -470,7 +470,7 @@ uncaught:
470 L->cframe = NULL; 470 L->cframe = NULL;
471 if (cframe_canyield(cf)) { /* Resume? */ 471 if (cframe_canyield(cf)) { /* Resume? */
472 unwindstack(L, L->top, errcode); 472 unwindstack(L, L->top, errcode);
473 lj_vm_unwind_c(cf, errcode); 473 lj_vm_unwind_c(cframe_raw(cf), errcode);
474 } 474 }
475 /* Better rethrow on main thread than panic. */ 475 /* Better rethrow on main thread than panic. */
476 { 476 {
diff --git a/src/lj_frame.h b/src/lj_frame.h
index 398ec4e5..2704ee40 100644
--- a/src/lj_frame.h
+++ b/src/lj_frame.h
@@ -63,6 +63,7 @@ enum {
63#define CFRAME_OFS_PREV (13*4) 63#define CFRAME_OFS_PREV (13*4)
64#define CFRAME_OFS_L (12*4) 64#define CFRAME_OFS_L (12*4)
65#define CFRAME_OFS_PC (6*4) 65#define CFRAME_OFS_PC (6*4)
66#define CFRAME_OFS_MULTRES (5*4)
66#define CFRAME_SIZE (12*4) 67#define CFRAME_SIZE (12*4)
67#elif LJ_TARGET_X64 68#elif LJ_TARGET_X64
68#if _WIN64 69#if _WIN64
@@ -71,6 +72,7 @@ enum {
71#define CFRAME_OFS_L (32*4) 72#define CFRAME_OFS_L (32*4)
72#define CFRAME_OFS_ERRF (31*4) 73#define CFRAME_OFS_ERRF (31*4)
73#define CFRAME_OFS_NRES (30*4) 74#define CFRAME_OFS_NRES (30*4)
75#define CFRAME_OFS_MULTRES (29*4)
74#define CFRAME_SIZE (14*8) 76#define CFRAME_SIZE (14*8)
75#else 77#else
76#define CFRAME_OFS_PREV (4*8) 78#define CFRAME_OFS_PREV (4*8)
@@ -78,6 +80,7 @@ enum {
78#define CFRAME_OFS_L (4*4) 80#define CFRAME_OFS_L (4*4)
79#define CFRAME_OFS_ERRF (3*4) 81#define CFRAME_OFS_ERRF (3*4)
80#define CFRAME_OFS_NRES (2*4) 82#define CFRAME_OFS_NRES (2*4)
83#define CFRAME_OFS_MULTRES (1*4)
81#define CFRAME_SIZE (12*8) 84#define CFRAME_SIZE (12*8)
82#endif 85#endif
83#else 86#else
@@ -91,6 +94,7 @@ enum {
91#define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF)) 94#define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF))
92#define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES)) 95#define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES))
93#define cframe_prev(cf) (*(void **)(((char *)(cf))+CFRAME_OFS_PREV)) 96#define cframe_prev(cf) (*(void **)(((char *)(cf))+CFRAME_OFS_PREV))
97#define cframe_multres(cf) (*(uint32_t *)(((char *)(cf))+CFRAME_OFS_MULTRES))
94#define cframe_L(cf) \ 98#define cframe_L(cf) \
95 (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th) 99 (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
96#define cframe_pc(cf) \ 100#define cframe_pc(cf) \
diff --git a/src/lj_vm.h b/src/lj_vm.h
index ed375747..3e4ea45c 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -54,6 +54,7 @@ LJ_ASMF void lj_cont_ra(void); /* Store result in RA from instruction. */
54LJ_ASMF void lj_cont_nop(void); /* Do nothing, just continue execution. */ 54LJ_ASMF void lj_cont_nop(void); /* Do nothing, just continue execution. */
55LJ_ASMF void lj_cont_condt(void); /* Branch if result is true. */ 55LJ_ASMF void lj_cont_condt(void); /* Branch if result is true. */
56LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */ 56LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */
57LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */
57 58
58/* Start of the ASM code. */ 59/* Start of the ASM code. */
59LJ_ASMF char lj_vm_asm_begin[]; 60LJ_ASMF char lj_vm_asm_begin[];