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.
Development Snapshot
+- Implement yield from C hooks.
- Add abstract C call handling to IR.
- Improve KNUM fuse vs. load heuristics.
- Drive the GC forward on string allocations in the parser.
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)
|->vm_unwind_c: // Unwind C stack, return from vm_pcall.
| // (void *cframe, int errcode)
|.if X64
- | and CARG1, CFRAME_RAWMASK
| mov eax, CARG2d // Error return status for vm_pcall.
| mov rsp, CARG1
|.else
| mov ecx, [esp+4]
| mov eax, [esp+8] // Error return status for vm_pcall.
- | and ecx, CFRAME_RAWMASK
| mov esp, ecx
|.endif
| mov L:RB, SAVE_L
@@ -2618,24 +2616,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| test RDL, LUA_MASKLINE
| jz >5
|1:
- |.if X64
| mov L:RB, SAVE_L
- | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
- | mov CARG3d, NRESULTS // Dynamic top for *M instructions.
- | mov CARG2d, PC
- | mov CARG1d, L:RB
- |.else
- | mov L:RB, SAVE_L
- | mov RD, NRESULTS // Dynamic top for *M instructions.
- | mov ARG3, RD
| mov L:RB->base, BASE
- | mov ARG2, PC
- | mov ARG1, L:RB
- |.endif
+ | mov FCARG2, PC // Caveat: FCARG2 == BASE
+ | mov FCARG1, L:RB
| // SAVE_PC must hold the _previous_ PC. The callee updates it with PC.
- | call extern lj_dispatch_ins // (lua_State *L, BCIns *pc, int nres)
- |4:
+ | call extern lj_dispatch_ins@8 // (lua_State *L, BCIns *pc)
+ |3:
| mov BASE, L:RB->base
+ |4:
| movzx RA, PC_RA
|5:
| movzx OP, PC_OP
@@ -2646,6 +2635,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| jmp aword [DISPATCH+OP*4+GG_DISP_STATIC*4] // Re-dispatch to static ins.
|.endif
|
+ |->cont_hook: // Continue from hook yield.
+ | add PC, 4
+ | mov RA, [RB-24]
+ | mov NRESULTS, RA // Restore NRESULTS for *M ins.
+ | jmp <4
+ |
|->vm_hotloop: // Hot loop counter underflow.
#if LJ_HASJIT
|.if X64
@@ -2658,7 +2653,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| mov [DISPATCH+DISPATCH_J(L)], L:RB
| mov SAVE_PC, PC
| call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc)
- | jmp <4
+ | jmp <3
|.endif
#endif
|
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 @@
#define DASM_SECTION_CODE_OP 0
#define DASM_SECTION_CODE_SUB 1
#define DASM_MAXSECTION 2
-static const unsigned char build_actionlist[15184] = {
+static const unsigned char build_actionlist[15191] = {
254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233,
139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135,
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] = {
15,135,244,254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7,
133,201,15,132,244,5,41,193,141,20,202,252,233,244,5,248,8,137,149,233,255,
137,68,36,20,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248,
- 23,139,76,36,4,139,68,36,8,129,225,239,137,204,139,108,36,48,139,173,233,
- 199,133,233,237,252,233,244,22,248,24,139,76,36,4,129,225,239,137,204,139,
- 108,36,48,185,252,248,252,255,252,255,252,255,184,237,139,149,233,139,157,
- 233,129,195,239,139,114,252,252,199,66,252,252,237,199,131,233,237,252,233,
- 244,16,248,20,255,252,247,198,237,15,132,244,25,131,230,252,248,41,252,242,
- 141,76,49,252,248,139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186,
- 237,252,233,244,247,248,13,131,232,8,137,202,137,252,249,139,181,233,139,
- 108,36,48,248,11,131,232,4,41,209,193,252,233,3,131,198,4,137,149,233,137,
- 133,233,137,116,36,24,137,202,248,1,137,252,233,232,251,1,0,139,141,233,139,
- 133,233,139,105,252,248,139,113,252,252,41,200,193,232,3,131,192,1,252,255,
- 165,233,248,26,255,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,
- 190,237,49,192,141,188,253,36,233,139,157,233,129,195,239,137,189,233,137,
- 68,36,24,137,68,36,52,56,133,233,15,132,244,249,199,131,233,237,136,133,233,
- 139,149,233,139,133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,
- 137,68,36,20,252,247,198,237,15,132,244,17,252,233,244,18,248,27,85,87,86,
- 83,131,252,236,28,190,237,255,252,233,244,247,248,28,85,87,86,83,131,252,
- 236,28,190,237,248,1,139,108,36,48,139,76,36,52,248,2,139,189,233,137,124,
- 36,52,137,108,36,24,137,165,233,139,157,233,129,195,239,248,3,199,131,233,
- 237,139,149,233,1,206,41,214,139,133,233,41,200,193,232,3,131,192,1,139,105,
- 252,248,129,121,253,252,252,239,15,133,244,29,252,255,165,233,248,30,255,
- 85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,
- 36,60,137,108,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,
- 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,
- 252,255,210,133,192,15,132,244,21,137,193,190,237,252,233,244,2,248,25,1,
- 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,
- 117,252,244,139,77,252,240,139,122,252,248,139,191,233,139,191,233,252,255,
- 225,248,31,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,
- 244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,137,
- 69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20,237,255,
- 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,
- 4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,255,252,242,15,42,
- 192,252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,
- 141,68,36,16,252,233,244,247,248,36,15,182,70,252,254,141,4,194,248,1,15,
- 182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,
- 8,137,44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15,
- 132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,
- 202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,
- 139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,3,0,0,
- 0,252,255,165,233,248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,
- 252,252,235,15,133,244,247,141,139,233,255,137,41,199,65,4,237,137,205,252,
- 233,244,248,248,38,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,
- 39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,
- 2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,
- 24,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108,
- 202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198,
- 4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,
- 253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,
- 252,248,184,4,0,0,0,252,255,165,233,248,41,15,182,110,252,252,141,4,194,141,
- 12,202,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,
- 149,233,137,116,36,24,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,
- 244,42,248,4,255,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,
- 253,134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
- 36,171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,
- 44,129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,
+ 23,139,76,36,4,139,68,36,8,137,204,139,108,36,48,139,173,233,199,133,233,
+ 237,252,233,244,22,248,24,139,76,36,4,129,225,239,137,204,139,108,36,48,185,
+ 252,248,252,255,252,255,252,255,184,237,139,149,233,139,157,233,129,195,239,
+ 139,114,252,252,199,66,252,252,237,199,131,233,237,252,233,244,16,248,20,
+ 255,252,247,198,237,15,132,244,25,131,230,252,248,41,252,242,141,76,49,252,
+ 248,139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233,
+ 244,247,248,13,131,232,8,137,202,137,252,249,139,181,233,139,108,36,48,248,
+ 11,131,232,4,41,209,193,252,233,3,131,198,4,137,149,233,137,133,233,137,116,
+ 36,24,137,202,248,1,137,252,233,232,251,1,0,139,141,233,139,133,233,139,105,
+ 252,248,139,113,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248,26,
+ 255,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192,
+ 141,188,253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68,
+ 36,52,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
+ 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252,
+ 247,198,237,15,132,244,17,252,233,244,18,248,27,85,87,86,83,131,252,236,28,
+ 190,237,255,252,233,244,247,248,28,85,87,86,83,131,252,236,28,190,237,248,
+ 1,139,108,36,48,139,76,36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,
+ 137,165,233,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,
+ 41,214,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,
+ 252,252,239,15,133,244,29,252,255,165,233,248,30,255,85,87,86,83,131,252,
+ 236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,36,60,137,108,36,24,
+ 139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137,
+ 76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,252,255,210,133,192,
+ 15,132,244,21,137,193,190,237,252,233,244,2,248,25,1,209,131,230,252,248,
+ 137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,139,77,
+ 252,240,139,122,252,248,139,191,233,139,191,233,252,255,225,248,31,15,182,
+ 78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,32,252,247,217,
+ 193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,
+ 233,244,33,248,34,137,68,36,16,199,68,36,20,237,255,141,68,36,16,128,126,
+ 252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,
+ 244,248,248,35,15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,
+ 16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244,
+ 247,248,36,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,
+ 234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,
+ 116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,249,248,32,15,182,78,
+ 252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141,
+ 177,233,41,214,139,105,252,248,184,3,0,0,0,252,255,165,233,248,37,137,68,
+ 36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,141,
+ 139,233,255,137,41,199,65,4,237,137,205,252,233,244,248,248,38,15,182,70,
+ 252,254,255,141,68,36,16,252,233,244,247,248,39,15,182,70,252,254,141,4,194,
+ 248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,
+ 137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133,
+ 192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137,
+ 8,248,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
+ 248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194,
+ 137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,184,4,0,0,0,252,255,
+ 165,233,248,41,15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139,
108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,
- 251,1,4,252,233,244,3,248,46,255,141,4,199,252,233,244,247,248,47,141,4,199,
- 141,44,252,234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,
- 248,49,141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,
- 36,48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,
- 149,233,137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,
- 137,193,41,208,137,113,252,244,141,176,233,139,105,252,248,184,3,0,0,0,129,
- 121,253,252,252,239,15,133,244,29,255,252,255,165,233,248,50,139,108,36,48,
- 137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,1,6,139,149,233,
- 252,233,244,42,248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139,
- 108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,
- 251,1,7,139,149,233,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57,
- 215,15,132,244,51,252,255,165,233,248,52,139,108,36,48,137,149,233,137,202,
- 137,252,233,137,116,36,24,232,251,1,8,139,149,233,139,70,252,252,15,182,204,
- 15,182,232,193,232,16,252,255,164,253,171,233,248,53,129,252,248,239,15,130,
- 244,54,255,139,105,4,129,252,253,239,15,131,244,54,137,68,36,20,137,105,252,
- 252,139,41,137,105,252,248,131,232,2,15,132,244,248,137,76,36,16,248,1,131,
- 193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,
- 1,139,76,36,16,248,2,139,68,36,20,252,233,244,55,248,56,129,252,248,239,15,
- 130,244,54,139,105,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,
- 244,247,137,232,248,1,255,139,105,252,248,139,132,253,197,233,199,65,252,
- 252,237,137,65,252,248,252,233,244,57,248,58,129,252,248,239,15,130,244,54,
- 139,105,4,129,252,253,239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,
- 252,237,199,65,252,252,237,15,132,244,57,139,65,252,248,139,131,233,199,65,
- 252,252,237,137,105,252,248,137,76,36,16,139,141,233,255,35,136,233,105,201,
- 239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,
- 251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,57,248,5,139,105,4,
- 129,252,253,239,15,132,244,57,255,139,1,139,76,36,16,137,105,252,252,137,
- 65,252,248,252,233,244,57,248,6,129,252,253,239,15,132,244,1,129,252,253,
- 239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171,233,252,233,
- 244,2,248,59,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,
- 255,139,41,131,189,233,0,15,133,244,54,129,121,253,12,239,15,133,244,54,139,
- 65,8,137,133,233,199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,
- 132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,
- 233,244,57,248,60,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
- 133,244,54,139,1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36,16,
- 131,193,8,137,76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139,64,
- 4,137,105,252,248,137,65,252,252,252,233,244,57,248,61,129,252,248,239,15,
- 133,244,54,129,121,253,4,239,15,135,244,54,255,252,242,15,16,1,252,233,244,
- 62,255,221,1,252,233,244,63,255,248,64,129,252,248,239,15,130,244,54,129,
- 121,253,4,239,15,133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,
- 252,233,244,57,248,3,129,121,253,4,239,15,135,244,54,131,187,233,0,15,133,
- 244,54,139,171,233,59,171,233,255,15,130,244,247,232,244,65,248,1,139,108,
- 36,48,137,141,233,137,113,252,252,137,116,36,24,137,84,36,16,137,202,137,
- 252,233,232,251,1,10,139,141,233,139,84,36,16,252,233,244,2,248,66,129,252,
- 248,239,15,130,244,54,15,132,244,248,248,1,129,121,253,4,239,15,133,244,54,
- 139,41,137,108,36,4,139,108,36,48,137,44,36,137,141,233,255,137,113,252,252,
- 137,84,36,16,131,193,8,137,76,36,8,137,116,36,24,232,251,1,11,139,141,233,
- 139,84,36,16,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252,248,137,
- 65,252,252,139,105,16,139,65,20,137,41,137,65,4,248,67,184,237,252,233,244,
- 68,248,2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,233,244,
- 57,248,69,129,252,248,239,15,130,244,54,129,121,253,4,239,255,15,133,244,
- 54,139,133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,237,252,
- 233,244,68,248,70,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,
- 244,54,129,121,253,12,239,15,135,244,54,255,252,242,15,16,65,8,189,0,0,252,
- 240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,
- 252,242,15,17,65,252,248,255,221,65,8,217,232,222,193,219,20,36,221,89,252,
- 248,139,4,36,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233,248,
- 1,129,120,253,4,239,15,132,244,71,139,40,139,64,4,137,41,137,65,4,252,233,
- 244,67,248,2,131,189,233,0,15,132,244,71,137,84,36,16,135,205,137,194,232,
- 251,1,12,137,252,233,139,84,36,16,133,192,15,133,244,1,248,71,184,237,252,
- 233,244,68,248,72,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
- 133,244,54,139,133,233,199,65,252,252,237,137,65,252,248,255,15,87,192,252,
- 242,15,17,65,8,255,217,252,238,221,89,8,255,184,237,252,233,244,68,248,73,
- 129,252,248,239,15,130,244,54,137,113,252,252,190,237,137,202,131,193,8,131,
- 232,1,139,105,252,248,248,1,252,246,131,233,235,15,133,244,249,248,2,129,
- 121,253,252,252,239,15,133,244,29,252,255,165,233,248,3,131,198,1,252,233,
- 244,2,248,74,255,129,252,248,239,15,130,244,54,129,121,253,12,239,15,133,
- 244,54,137,113,252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113,8,
- 137,105,8,137,49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248,
- 9,139,116,36,24,252,233,244,54,248,75,129,252,248,239,15,130,244,54,139,41,
- 137,113,252,252,137,116,36,24,137,44,36,129,121,253,4,239,15,133,244,9,255,
- 131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,
- 36,4,15,132,244,247,59,181,233,15,132,244,9,248,1,141,116,198,252,240,59,
- 181,233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,131,193,8,137,
- 141,233,255,139,108,36,4,141,76,193,232,41,252,241,57,252,238,15,132,244,
- 249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,
- 8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,
- 199,131,233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,
- 244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,
- 244,252,255,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,
- 248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,
- 5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185,
- 252,248,252,255,252,255,252,255,252,247,198,237,15,132,244,17,252,233,244,
- 18,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,
- 2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,255,139,12,36,137,185,233,
- 137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,9,139,116,
- 36,24,252,233,244,54,248,76,139,173,233,137,113,252,252,137,116,36,24,137,
- 44,36,131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,
- 137,116,36,4,15,132,244,247,59,181,233,255,15,132,244,9,248,1,141,116,198,
- 252,248,59,181,233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,137,
- 141,233,139,108,36,4,141,76,193,252,240,41,252,241,57,252,238,15,132,244,
- 249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,
- 8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,
- 199,131,233,237,139,108,36,48,139,52,36,139,149,233,255,129,252,248,239,15,
- 135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,
- 15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,
- 205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,
- 244,5,248,6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,
- 237,15,132,244,17,255,252,233,244,18,248,8,137,252,242,137,252,233,232,251,
- 1,13,248,9,139,12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,
- 149,233,252,233,244,4,248,77,139,108,36,48,137,113,252,252,252,247,133,233,
- 237,15,132,244,54,137,141,233,141,68,193,252,248,137,133,233,49,192,137,133,
- 233,176,235,136,133,233,252,233,244,22,255,248,63,221,89,252,248,252,233,
- 244,57,248,78,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
- 54,252,242,15,16,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,
- 84,193,248,62,252,242,15,17,65,252,248,255,248,78,129,252,248,239,15,130,
- 244,54,129,121,253,4,239,15,135,244,54,221,1,217,225,248,62,248,63,221,89,
- 252,248,255,248,57,184,237,248,68,137,68,36,20,248,55,252,247,198,237,15,
- 133,244,253,248,5,56,70,252,255,15,135,244,252,139,6,15,182,204,15,182,232,
- 131,198,4,193,232,16,252,255,36,171,248,6,199,68,193,252,244,237,131,192,
- 1,252,233,244,5,248,7,137,202,185,252,248,252,255,252,255,252,255,252,233,
- 244,18,255,248,79,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,
- 244,54,252,242,15,81,1,252,233,244,62,248,80,129,252,248,239,15,130,244,54,
- 129,121,253,4,239,15,135,244,54,252,242,15,16,1,232,244,81,252,233,244,62,
- 248,82,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,
- 252,242,15,16,1,232,244,83,252,233,244,62,255,248,79,129,252,248,239,15,130,
- 244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,250,252,233,244,63,248,
- 80,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,232,
- 244,81,252,233,244,63,248,82,255,129,252,248,239,15,130,244,54,129,121,253,
- 4,239,15,135,244,54,221,1,232,244,83,252,233,244,63,255,248,84,129,252,248,
- 239,15,130,244,54,129,121,253,4,239,15,135,244,54,217,252,237,221,1,217,252,
- 241,252,233,244,63,248,85,129,252,248,239,15,130,244,54,129,121,253,4,239,
- 15,135,244,54,217,252,236,221,1,217,252,241,252,233,244,63,248,86,129,252,
- 248,239,255,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,87,
- 252,233,244,63,248,88,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
- 135,244,54,221,1,217,252,254,252,233,244,63,248,89,129,252,248,239,255,15,
- 130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,255,252,233,244,
- 63,248,90,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
- 1,217,252,242,221,216,252,233,244,63,248,91,129,252,248,239,15,130,244,54,
- 255,129,121,253,4,239,15,135,244,54,221,1,217,192,216,200,217,232,222,225,
- 217,252,250,217,252,243,252,233,244,63,248,92,129,252,248,239,15,130,244,
- 54,129,121,253,4,239,15,135,244,54,221,1,217,192,216,200,217,232,222,225,
- 217,252,250,217,201,217,252,243,252,233,244,63,248,93,129,252,248,239,15,
- 130,244,54,129,121,253,4,239,15,135,244,54,255,221,1,217,232,217,252,243,
- 252,233,244,63,255,248,94,129,252,248,239,15,130,244,54,129,121,253,4,239,
- 15,135,244,54,252,242,15,16,1,252,242,15,17,4,36,255,248,94,129,252,248,239,
- 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,221,28,36,255,137,76,
- 36,16,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233,244,63,255,248,
- 95,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,
- 15,16,1,252,242,15,17,4,36,255,248,95,129,252,248,239,15,130,244,54,129,121,
- 253,4,239,15,135,244,54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,
- 1,15,139,76,36,16,137,252,234,252,233,244,63,255,248,96,129,252,248,239,15,
- 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,17,
- 4,36,255,248,96,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
- 54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,16,139,76,36,16,137,
- 252,234,252,233,244,63,248,97,255,248,98,129,252,248,239,15,130,244,54,129,
- 121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,89,133,233,252,233,
- 244,62,255,248,98,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,
- 244,54,221,1,220,141,233,252,233,244,63,255,248,99,129,252,248,239,15,130,
- 244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,
- 1,221,65,8,217,252,243,252,233,244,63,248,100,129,252,248,239,15,130,244,
- 54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,255,15,135,244,54,221,
- 65,8,221,1,217,252,253,221,217,252,233,244,63,248,101,129,252,248,239,15,
- 130,244,54,139,105,4,129,252,253,239,15,135,244,54,139,1,137,105,252,252,
- 137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,
- 132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,
- 252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,36,16,255,
- 139,105,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,105,
- 252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237,252,233,244,68,248,
- 3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,252,242,15,
- 16,1,189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15,89,193,252,
- 242,15,17,65,252,248,255,221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,
- 252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,102,
+ 251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,42,248,4,255,141,118,4,
+ 15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,43,131,198,4,129,
+ 120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,
+ 244,4,248,45,131,252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,
+ 36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,4,252,233,244,3,248,46,
+ 255,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,234,149,252,233,
+ 244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,4,194,248,1,141,
+ 44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,
+ 70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,
+ 251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,
+ 244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,
+ 244,29,255,252,255,165,233,248,50,139,108,36,48,137,149,233,141,20,194,137,
+ 252,233,137,116,36,24,232,251,1,6,139,149,233,252,233,244,42,248,29,137,76,
+ 36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,
+ 68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,
+ 36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,51,252,255,
+ 165,233,248,52,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,
+ 232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,
+ 255,164,253,171,233,248,53,129,252,248,239,15,130,244,54,255,139,105,4,129,
+ 252,253,239,15,131,244,54,137,68,36,20,137,105,252,252,139,41,137,105,252,
+ 248,131,232,2,15,132,244,248,137,76,36,16,248,1,131,193,8,139,105,4,137,105,
+ 252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,139,76,36,16,248,2,
+ 139,68,36,20,252,233,244,55,248,56,129,252,248,239,15,130,244,54,139,105,
+ 4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,
+ 1,255,139,105,252,248,139,132,253,197,233,199,65,252,252,237,137,65,252,248,
+ 252,233,244,57,248,58,129,252,248,239,15,130,244,54,139,105,4,129,252,253,
+ 239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,252,237,199,65,252,
+ 252,237,15,132,244,57,139,65,252,248,139,131,233,199,65,252,252,237,137,105,
+ 252,248,137,76,36,16,139,141,233,255,35,136,233,105,201,239,3,141,233,248,
+ 3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,
+ 233,133,201,15,133,244,3,252,233,244,57,248,5,139,105,4,129,252,253,239,15,
+ 132,244,57,255,139,1,139,76,36,16,137,105,252,252,137,65,252,248,252,233,
+ 244,57,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253,
+ 189,237,248,7,252,247,213,139,172,253,171,233,252,233,244,2,248,59,129,252,
+ 248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,255,139,41,131,189,
+ 233,0,15,133,244,54,129,121,253,12,239,15,133,244,54,139,65,8,137,133,233,
+ 199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,132,244,247,128,
+ 165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,244,57,248,
+ 60,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,
+ 1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36,16,131,193,8,137,
+ 76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139,64,4,137,105,252,
+ 248,137,65,252,252,252,233,244,57,248,61,129,252,248,239,15,133,244,54,129,
+ 121,253,4,239,15,135,244,54,255,252,242,15,16,1,252,233,244,62,255,221,1,
+ 252,233,244,63,255,248,64,129,252,248,239,15,130,244,54,129,121,253,4,239,
+ 15,133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244,
+ 57,248,3,129,121,253,4,239,15,135,244,54,131,187,233,0,15,133,244,54,139,
+ 171,233,59,171,233,255,15,130,244,247,232,244,65,248,1,139,108,36,48,137,
+ 141,233,137,113,252,252,137,116,36,24,137,84,36,16,137,202,137,252,233,232,
+ 251,1,10,139,141,233,139,84,36,16,252,233,244,2,248,66,129,252,248,239,15,
+ 130,244,54,15,132,244,248,248,1,129,121,253,4,239,15,133,244,54,139,41,137,
+ 108,36,4,139,108,36,48,137,44,36,137,141,233,255,137,113,252,252,137,84,36,
+ 16,131,193,8,137,76,36,8,137,116,36,24,232,251,1,11,139,141,233,139,84,36,
+ 16,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252,248,137,65,252,
+ 252,139,105,16,139,65,20,137,41,137,65,4,248,67,184,237,252,233,244,68,248,
+ 2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,233,244,57,248,
+ 69,129,252,248,239,15,130,244,54,129,121,253,4,239,255,15,133,244,54,139,
+ 133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,237,252,233,244,
+ 68,248,70,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,129,
+ 121,253,12,239,15,135,244,54,255,252,242,15,16,65,8,189,0,0,252,240,63,102,
+ 15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242,
+ 15,17,65,252,248,255,221,65,8,217,232,222,193,219,20,36,221,89,252,248,139,
+ 4,36,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
+ 253,4,239,15,132,244,71,139,40,139,64,4,137,41,137,65,4,252,233,244,67,248,
+ 2,131,189,233,0,15,132,244,71,137,84,36,16,135,205,137,194,232,251,1,12,137,
+ 252,233,139,84,36,16,133,192,15,133,244,1,248,71,184,237,252,233,244,68,248,
+ 72,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,
+ 133,233,199,65,252,252,237,137,65,252,248,255,15,87,192,252,242,15,17,65,
+ 8,255,217,252,238,221,89,8,255,184,237,252,233,244,68,248,73,129,252,248,
+ 239,15,130,244,54,137,113,252,252,190,237,137,202,131,193,8,131,232,1,139,
+ 105,252,248,248,1,252,246,131,233,235,15,133,244,249,248,2,129,121,253,252,
+ 252,239,15,133,244,29,252,255,165,233,248,3,131,198,1,252,233,244,2,248,74,
+ 255,129,252,248,239,15,130,244,54,129,121,253,12,239,15,133,244,54,137,113,
+ 252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113,8,137,105,8,137,
+ 49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248,9,139,116,36,24,
+ 252,233,244,54,248,75,129,252,248,239,15,130,244,54,139,41,137,113,252,252,
+ 137,116,36,24,137,44,36,129,121,253,4,239,15,133,244,9,255,131,189,233,0,
+ 15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,15,132,
+ 244,247,59,181,233,15,132,244,9,248,1,141,116,198,252,240,59,181,233,15,135,
+ 244,9,137,181,233,139,108,36,48,137,141,233,131,193,8,137,141,233,255,139,
+ 108,36,4,141,76,193,232,41,252,241,57,252,238,15,132,244,249,248,2,139,68,
+ 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,
+ 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,199,131,233,237,139,
+ 108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,
+ 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,255,141,
+ 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
+ 4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,
+ 2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,
+ 252,255,252,255,252,247,198,237,15,132,244,17,252,233,244,18,248,8,199,66,
+ 252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,
+ 66,4,184,237,252,233,244,7,248,9,255,139,12,36,137,185,233,137,252,242,137,
+ 252,233,232,251,1,0,139,149,233,252,233,244,4,248,9,139,116,36,24,252,233,
+ 244,54,248,76,139,173,233,137,113,252,252,137,116,36,24,137,44,36,131,189,
+ 233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,
+ 15,132,244,247,59,181,233,255,15,132,244,9,248,1,141,116,198,252,248,59,181,
+ 233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,137,141,233,139,108,
+ 36,4,141,76,193,252,240,41,252,241,57,252,238,15,132,244,249,248,2,139,68,
+ 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,
+ 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,199,131,233,237,139,
+ 108,36,48,139,52,36,139,149,233,255,129,252,248,239,15,135,244,254,248,4,
+ 139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,
+ 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
+ 4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,
+ 1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,17,255,
+ 252,233,244,18,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,12,36,
+ 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,
+ 248,77,139,108,36,48,137,113,252,252,252,247,133,233,237,15,132,244,54,137,
+ 141,233,141,68,193,252,248,137,133,233,49,192,137,133,233,176,235,136,133,
+ 233,252,233,244,22,255,248,63,221,89,252,248,252,233,244,57,248,78,129,252,
+ 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,102,
+ 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,62,252,242,15,
+ 17,65,252,248,255,248,78,129,252,248,239,15,130,244,54,129,121,253,4,239,
+ 15,135,244,54,221,1,217,225,248,62,248,63,221,89,252,248,255,248,57,184,237,
+ 248,68,137,68,36,20,248,55,252,247,198,237,15,133,244,253,248,5,56,70,252,
+ 255,15,135,244,252,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+ 36,171,248,6,199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202,
+ 185,252,248,252,255,252,255,252,255,252,233,244,18,255,248,79,129,252,248,
+ 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,81,1,252,233,
+ 244,62,248,80,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
+ 54,252,242,15,16,1,232,244,81,252,233,244,62,248,82,255,129,252,248,239,15,
+ 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,232,244,83,252,
+ 233,244,62,255,248,79,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
+ 135,244,54,221,1,217,252,250,252,233,244,63,248,80,129,252,248,239,15,130,
+ 244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,81,252,233,244,63,248,
+ 82,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
+ 1,232,244,83,252,233,244,63,255,248,84,129,252,248,239,15,130,244,54,129,
+ 121,253,4,239,15,135,244,54,217,252,237,221,1,217,252,241,252,233,244,63,
+ 248,85,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,217,
+ 252,236,221,1,217,252,241,252,233,244,63,248,86,129,252,248,239,255,15,130,
+ 244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,87,252,233,244,63,248,
+ 88,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,
+ 252,254,252,233,244,63,248,89,129,252,248,239,255,15,130,244,54,129,121,253,
+ 4,239,15,135,244,54,221,1,217,252,255,252,233,244,63,248,90,129,252,248,239,
+ 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,242,221,216,252,
+ 233,244,63,248,91,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,
+ 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
+ 252,233,244,63,248,92,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
+ 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
+ 252,243,252,233,244,63,248,93,129,252,248,239,15,130,244,54,129,121,253,4,
+ 239,15,135,244,54,255,221,1,217,232,217,252,243,252,233,244,63,255,248,94,
129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,
- 16,1,255,248,102,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
- 54,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255,15,132,244,250,
- 255,15,40,224,232,244,103,252,242,15,92,224,248,1,252,242,15,17,65,252,248,
- 252,242,15,17,33,255,217,192,232,244,103,220,252,233,248,1,221,89,252,248,
- 221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,
- 233,244,68,248,3,129,252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,255,
- 15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,104,
- 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,
- 12,239,15,135,244,54,221,65,8,221,1,248,1,217,252,248,223,224,158,15,138,
- 244,1,221,217,252,233,244,63,255,248,105,129,252,248,239,15,130,244,54,129,
- 121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,
- 1,252,242,15,16,73,8,232,244,106,252,233,244,62,255,248,105,129,252,248,239,
- 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,
- 54,221,1,221,65,8,232,244,106,252,233,244,63,255,248,107,129,252,248,239,
- 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,2,0,0,0,
- 248,1,57,197,15,131,244,62,129,124,253,252,233,252,252,239,15,135,244,54,
- 252,242,15,16,76,252,233,252,248,252,242,15,93,193,131,197,1,252,233,244,
- 1,255,248,107,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
+ 16,1,252,242,15,17,4,36,255,248,94,129,252,248,239,15,130,244,54,129,121,
+ 253,4,239,15,135,244,54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,
+ 1,14,139,76,36,16,137,252,234,252,233,244,63,255,248,95,129,252,248,239,15,
+ 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,17,
+ 4,36,255,248,95,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
+ 54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,15,139,76,36,16,137,
+ 252,234,252,233,244,63,255,248,96,129,252,248,239,15,130,244,54,129,121,253,
+ 4,239,15,135,244,54,252,242,15,16,1,252,242,15,17,4,36,255,248,96,129,252,
+ 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,221,28,36,255,
+ 137,76,36,16,137,213,232,251,1,16,139,76,36,16,137,252,234,252,233,244,63,
+ 248,97,255,248,98,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,
+ 244,54,252,242,15,16,1,252,242,15,89,133,233,252,233,244,62,255,248,98,129,
+ 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,220,141,233,
+ 252,233,244,63,255,248,99,129,252,248,239,15,130,244,54,129,121,253,4,239,
+ 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,217,252,243,
+ 252,233,244,63,248,100,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
+ 135,244,54,129,121,253,12,239,255,15,135,244,54,221,65,8,221,1,217,252,253,
+ 221,217,252,233,244,63,248,101,129,252,248,239,15,130,244,54,139,105,4,129,
+ 252,253,239,15,135,244,54,139,1,137,105,252,252,137,65,252,248,209,229,129,
+ 252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,
+ 0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,
+ 242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,105,252,252,129,229,
+ 252,255,252,255,15,128,129,205,0,0,224,63,137,105,252,252,248,2,255,252,242,
+ 15,17,1,255,221,25,255,184,237,252,233,244,68,248,3,255,15,87,192,252,233,
+ 244,2,255,217,252,238,252,233,244,2,255,252,242,15,16,1,189,0,0,80,67,102,
+ 15,110,205,102,15,112,201,81,252,242,15,89,193,252,242,15,17,65,252,248,255,
+ 221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,252,248,255,139,105,252,
+ 252,184,52,4,0,0,209,229,252,233,244,1,255,248,102,129,252,248,239,15,130,
+ 244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,255,248,102,129,252,
+ 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,255,139,105,4,
+ 209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,
+ 103,252,242,15,92,224,248,1,252,242,15,17,65,252,248,252,242,15,17,33,255,
+ 217,192,232,244,103,220,252,233,248,1,221,89,252,248,221,25,255,139,65,252,
+ 252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,233,244,68,248,3,129,
+ 252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,255,15,87,228,252,233,244,
+ 1,255,217,252,238,217,201,252,233,244,1,255,248,104,129,252,248,239,15,130,
+ 244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,
+ 65,8,221,1,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,
+ 63,255,248,105,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
+ 54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,232,
+ 244,106,252,233,244,62,255,248,105,129,252,248,239,15,130,244,54,129,121,
+ 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,232,
+ 244,106,252,233,244,63,255,248,107,129,252,248,239,15,130,244,54,129,121,
+ 253,4,239,15,135,244,54,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,
+ 62,129,124,253,252,233,252,252,239,15,135,244,54,252,242,15,16,76,252,233,
+ 252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,107,129,252,248,
+ 239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,189,2,0,0,0,248,1,
+ 57,197,15,131,244,63,129,124,253,252,233,252,252,239,15,135,244,251,221,68,
+ 252,233,252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,
+ 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,108,129,252,248,
+ 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,2,0,
+ 0,0,248,1,57,197,15,131,244,62,129,124,253,252,233,252,252,239,15,135,244,
+ 54,252,242,15,16,76,252,233,252,248,252,242,15,95,193,131,197,1,252,233,244,
+ 1,255,248,108,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,233,252,252,
- 239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,219,209,221,217,
- 255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,
- 88,255,248,108,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,
- 54,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,62,129,124,253,252,
- 233,252,252,239,15,135,244,54,252,242,15,16,76,252,233,252,248,252,242,15,
- 95,193,131,197,1,252,233,244,1,255,248,108,129,252,248,239,15,130,244,54,
- 129,121,253,4,239,15,135,244,54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,
- 63,129,124,253,252,233,252,252,239,15,135,244,251,221,68,252,233,252,248,
- 255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133,
- 244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244,54,255,248,
- 109,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,41,
- 255,252,242,15,42,133,233,252,233,244,62,255,219,133,233,252,233,244,63,255,
- 248,110,129,252,248,239,15,133,244,54,129,121,253,4,239,15,133,244,54,139,
- 41,131,189,233,1,15,130,244,71,15,182,173,233,255,252,242,15,42,197,252,233,
- 244,62,255,137,108,36,16,219,68,36,16,252,233,244,63,255,248,111,139,171,
- 233,59,171,233,15,130,244,247,232,244,65,248,1,129,252,248,239,15,133,244,
- 54,129,121,253,4,239,15,135,244,54,255,252,242,15,45,1,61,252,255,0,0,0,15,
- 135,244,54,137,68,36,20,255,221,1,219,92,36,20,129,124,36,20,252,255,0,0,
- 0,15,135,244,54,255,199,68,36,8,1,0,0,0,141,68,36,20,137,76,36,16,248,112,
- 139,108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36,24,232,251,1,17,
- 139,76,36,16,139,149,233,199,65,252,252,237,137,65,252,248,252,233,244,57,
- 248,113,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36,
- 16,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,
- 54,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105,16,137,108,36,
- 20,255,221,65,16,219,92,36,20,255,248,1,129,121,253,4,239,15,133,244,54,129,
- 121,253,12,239,15,135,244,54,139,41,137,108,36,12,139,173,233,255,252,242,
- 15,45,73,8,255,221,65,8,219,92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,
- 130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,12,41,200,15,140,
- 244,114,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,
- 112,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,
- 244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,
- 1,0,0,0,252,233,244,3,248,114,49,192,252,233,244,4,248,115,129,252,248,239,
- 15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,255,
- 137,76,36,16,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244,
- 54,139,41,255,252,242,15,45,65,8,255,221,65,8,219,92,36,20,139,68,36,20,255,
- 133,192,15,142,244,114,131,189,233,1,15,130,244,114,15,133,244,116,57,131,
- 233,15,130,244,116,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,
- 131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,112,248,117,129,
- 252,248,239,255,15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244,
- 65,248,1,137,76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233,
- 133,192,15,132,244,114,57,131,233,15,130,244,118,129,197,239,137,116,36,20,
- 137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,
- 6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,112,248,119,129,252,
- 248,239,15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244,65,248,
- 1,137,76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233,57,131,
- 233,255,15,130,244,118,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
- 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,
- 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,
- 244,1,137,252,240,139,116,36,20,252,233,244,112,248,120,129,252,248,239,15,
- 130,244,54,255,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,137,
- 76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233,57,131,233,15,
- 130,244,118,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,
- 249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,
- 15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,
- 137,252,240,139,116,36,20,252,233,244,112,248,121,129,252,248,239,15,130,
- 244,54,129,121,253,4,239,15,133,244,54,137,84,36,16,137,205,139,9,232,251,
- 1,18,137,252,233,139,84,36,16,255,252,242,15,42,192,252,233,244,62,255,137,
- 4,36,219,4,36,252,233,244,63,255,248,122,129,252,248,239,15,130,244,54,129,
- 121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,
- 102,15,112,201,81,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,
- 233,244,62,255,248,122,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
- 135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,219,4,36,
- 252,233,244,63,255,248,123,129,252,248,239,15,130,244,54,129,121,253,4,239,
- 15,135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,
- 81,252,242,15,88,193,102,15,126,197,255,248,123,129,252,248,239,15,130,244,
- 54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,
- 16,221,28,36,139,44,36,255,137,68,36,20,141,68,193,252,240,255,137,84,36,
- 16,255,248,1,57,200,15,134,244,124,129,120,253,4,239,15,135,244,125,255,252,
- 242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,221,0,216,68,36,16,
- 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,126,129,252,248,239,
- 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,
- 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
- 248,126,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
- 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
- 16,0,252,242,15,88,193,102,15,126,194,9,213,255,221,0,216,68,36,16,221,28,
- 36,11,44,36,255,248,127,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
- 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
- 252,242,15,88,193,102,15,126,197,255,248,127,129,252,248,239,15,130,244,54,
- 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,
- 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,
- 49,213,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,128,129,252,248,
+ 239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,218,209,221,217,
+ 255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,
+ 88,255,248,5,221,216,252,233,244,54,255,248,109,129,252,248,239,15,130,244,
+ 54,129,121,253,4,239,15,133,244,54,139,41,255,252,242,15,42,133,233,252,233,
+ 244,62,255,219,133,233,252,233,244,63,255,248,110,129,252,248,239,15,133,
+ 244,54,129,121,253,4,239,15,133,244,54,139,41,131,189,233,1,15,130,244,71,
+ 15,182,173,233,255,252,242,15,42,197,252,233,244,62,255,137,108,36,16,219,
+ 68,36,16,252,233,244,63,255,248,111,139,171,233,59,171,233,15,130,244,247,
+ 232,244,65,248,1,129,252,248,239,15,133,244,54,129,121,253,4,239,15,135,244,
+ 54,255,252,242,15,45,1,61,252,255,0,0,0,15,135,244,54,137,68,36,20,255,221,
+ 1,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,54,255,199,68,36,8,
+ 1,0,0,0,141,68,36,20,137,76,36,16,248,112,139,108,36,48,137,149,233,137,68,
+ 36,4,137,44,36,137,116,36,24,232,251,1,17,139,76,36,16,139,149,233,199,65,
+ 252,252,237,137,65,252,248,252,233,244,57,248,113,139,171,233,59,171,233,
+ 15,130,244,247,232,244,65,248,1,137,76,36,16,199,68,36,20,252,255,252,255,
+ 252,255,252,255,129,252,248,239,15,130,244,54,15,134,244,247,129,121,253,
+ 20,239,255,252,242,15,45,105,16,137,108,36,20,255,221,65,16,219,92,36,20,
+ 255,248,1,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244,54,
+ 139,41,137,108,36,12,139,173,233,255,252,242,15,45,73,8,255,221,65,8,219,
+ 92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,
+ 15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,114,141,172,253,13,233,
+ 131,192,1,248,4,137,68,36,8,137,232,252,233,244,112,248,5,15,140,244,252,
+ 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,
+ 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,
+ 114,49,192,252,233,244,4,248,115,129,252,248,239,15,130,244,54,139,171,233,
+ 59,171,233,15,130,244,247,232,244,65,248,1,255,137,76,36,16,129,121,253,4,
+ 239,15,133,244,54,129,121,253,12,239,15,135,244,54,139,41,255,252,242,15,
+ 45,65,8,255,221,65,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,114,
+ 131,189,233,1,15,130,244,114,15,133,244,116,57,131,233,15,130,244,116,15,
+ 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,
+ 133,244,1,139,131,233,252,233,244,112,248,117,129,252,248,239,255,15,130,
+ 244,54,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,
+ 129,121,253,4,239,15,133,244,54,139,41,139,133,233,133,192,15,132,244,114,
+ 57,131,233,15,130,244,118,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
+ 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,
+ 139,116,36,20,252,233,244,112,248,119,129,252,248,239,15,130,244,54,139,171,
+ 233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,
+ 239,15,133,244,54,139,41,139,133,233,57,131,233,255,15,130,244,118,129,197,
+ 239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,
+ 5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,
+ 32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,
+ 252,233,244,112,248,120,129,252,248,239,15,130,244,54,255,139,171,233,59,
+ 171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,239,15,
+ 133,244,54,139,41,139,133,233,57,131,233,15,130,244,118,129,197,239,137,116,
+ 36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,
+ 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,
+ 2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,
+ 244,112,248,121,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,
+ 54,137,84,36,16,137,205,139,9,232,251,1,18,137,252,233,139,84,36,16,255,252,
+ 242,15,42,192,252,233,244,62,255,137,4,36,219,4,36,252,233,244,63,255,248,
+ 122,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,
+ 15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,
+ 102,15,126,197,252,242,15,42,197,252,233,244,62,255,248,122,129,252,248,239,
+ 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,
+ 89,216,68,36,16,221,28,36,219,4,36,252,233,244,63,255,248,123,129,252,248,
239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,
56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
- 248,128,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
- 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252,
- 233,244,129,255,248,130,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
+ 248,123,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
+ 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,
+ 20,141,68,193,252,240,255,137,84,36,16,255,248,1,57,200,15,134,244,124,129,
+ 120,253,4,239,15,135,244,125,255,252,242,15,16,0,252,242,15,88,193,102,15,
+ 126,194,33,213,255,221,0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,
+ 233,244,1,255,248,126,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
- 252,242,15,88,193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,54,
+ 252,242,15,88,193,102,15,126,197,255,248,126,129,252,248,239,15,130,244,54,
129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,
- 221,28,36,139,44,36,255,252,247,213,255,248,129,252,242,15,42,197,252,233,
- 244,62,248,124,252,242,15,42,197,139,84,36,16,252,233,244,62,255,248,129,
- 248,124,137,44,36,219,4,36,252,233,244,63,255,248,125,255,139,68,36,20,252,
- 233,244,54,255,248,131,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
- 135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,16,
- 73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
- 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,131,129,252,248,
+ 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,
+ 9,213,255,221,0,216,68,36,16,221,28,36,11,44,36,255,248,127,129,252,248,239,
+ 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,
+ 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
+ 248,127,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
+ 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
+ 16,0,252,242,15,88,193,102,15,126,194,49,213,255,221,0,216,68,36,16,221,28,
+ 36,51,44,36,255,248,128,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
+ 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
+ 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,54,
+ 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,
+ 221,28,36,139,44,36,255,15,205,252,233,244,129,255,248,130,129,252,248,239,
+ 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,
+ 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
+ 248,130,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
+ 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,247,213,
+ 255,248,129,252,242,15,42,197,252,233,244,62,248,124,252,242,15,42,197,139,
+ 84,36,16,252,233,244,62,255,248,129,248,124,137,44,36,219,4,36,252,233,244,
+ 63,255,248,125,255,139,68,36,20,252,233,244,54,255,248,131,129,252,248,239,
+ 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,
+ 54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,
+ 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
+ 15,126,201,255,248,131,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
+ 135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,
+ 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,
+ 8,139,44,36,255,211,229,137,193,252,233,244,129,255,248,132,129,252,248,239,
+ 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,
+ 54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,
+ 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
+ 15,126,201,255,248,132,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
+ 135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,
+ 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,
+ 8,139,44,36,255,211,252,237,137,193,252,233,244,129,255,248,133,129,252,248,
239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,
- 244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,
- 68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,193,252,
- 233,244,129,255,248,132,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
- 135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,16,
- 73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
- 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,129,252,248,
- 239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,
- 244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,
- 68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,237,137,193,
- 252,233,244,129,255,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239,
- 15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,
- 16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
- 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133,129,252,
+ 244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,
+ 15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,
+ 102,15,126,201,255,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239,
+ 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,
+ 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,
+ 36,8,139,44,36,255,211,252,253,137,193,252,233,244,129,255,248,134,129,252,
248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,
- 15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
- 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,253,
- 137,193,252,233,244,129,255,248,134,129,252,248,239,15,130,244,54,129,121,
- 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,
- 252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,
- 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,
- 134,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,
- 253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,
- 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
- 197,137,193,252,233,244,129,255,248,135,129,252,248,239,15,130,244,54,129,
- 121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16,
- 1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,
- 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,
- 135,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,
- 253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,
- 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
- 205,137,193,252,233,244,129,248,116,184,237,252,233,244,54,248,118,184,237,
- 248,54,139,108,36,48,41,202,137,113,252,252,137,116,36,24,137,84,36,16,137,
- 141,233,141,68,193,252,248,141,144,233,137,133,233,139,65,252,248,59,149,
- 233,15,135,244,251,137,44,36,252,255,144,233,133,192,15,133,244,249,248,1,
- 139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,139,
- 84,36,16,1,202,57,113,252,252,15,133,244,248,252,255,165,233,248,2,129,121,
- 253,252,252,239,15,133,244,29,252,255,165,233,248,3,139,141,233,139,84,36,
- 16,1,202,252,233,244,68,248,5,186,237,137,252,233,232,251,1,0,252,233,244,
- 1,248,65,93,137,108,36,16,139,108,36,48,41,202,137,84,36,20,137,113,252,252,
- 137,116,36,24,137,141,233,141,68,193,252,248,137,252,233,137,133,233,255,
- 232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192,1,139,113,252,
- 252,139,84,36,20,1,202,139,108,36,16,85,139,105,252,248,195,248,136,255,15,
- 182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,
- 244,247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,233,168,235,
- 15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,
- 235,15,132,244,251,248,1,139,108,36,48,139,68,36,20,137,68,36,8,137,149,233,
- 137,116,36,4,137,44,36,232,251,1,20,248,4,139,149,233,15,182,78,252,253,248,
- 5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,233,248,138,255,
- 139,108,36,48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,
- 24,232,251,1,21,252,233,244,4,255,248,139,255,139,108,36,48,137,149,233,137,
- 252,242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,
- 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,140,255,
+ 15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,
+ 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
+ 126,197,102,15,126,201,255,248,134,129,252,248,239,15,130,244,54,129,121,
+ 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,
+ 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
+ 139,76,36,8,139,44,36,255,211,197,137,193,252,233,244,129,255,248,135,129,
+ 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,
+ 239,15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,
+ 110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,
+ 15,126,197,102,15,126,201,255,248,135,129,252,248,239,15,130,244,54,129,121,
+ 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,
+ 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
+ 139,76,36,8,139,44,36,255,211,205,137,193,252,233,244,129,248,116,184,237,
+ 252,233,244,54,248,118,184,237,248,54,139,108,36,48,41,202,137,113,252,252,
+ 137,116,36,24,137,84,36,16,137,141,233,141,68,193,252,248,141,144,233,137,
+ 133,233,139,65,252,248,59,149,233,15,135,244,251,137,44,36,252,255,144,233,
+ 133,192,15,133,244,249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,
+ 131,192,1,139,105,252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248,
+ 252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,29,252,255,165,233,
+ 248,3,139,141,233,139,84,36,16,1,202,252,233,244,68,248,5,186,237,137,252,
+ 233,232,251,1,0,252,233,244,1,248,65,93,137,108,36,16,139,108,36,48,41,202,
+ 137,84,36,20,137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248,
+ 137,252,233,137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,
+ 232,3,131,192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105,
+ 252,248,195,248,136,255,15,182,131,233,168,235,15,133,244,251,168,235,15,
+ 133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,
+ 137,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,
+ 139,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149,
+ 233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,
+ 252,253,248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,
+ 233,248,138,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,139,255,139,
+ 108,36,48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,
+ 251,1,21,252,233,244,3,255,248,140,255,139,108,36,48,137,149,233,137,252,
+ 242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6,
+ 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,141,255,
85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,
252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,
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] = {
192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,
15,17,69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,
36,16,141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,
- 36,48,255,248,141,255,139,122,252,248,139,191,233,139,191,233,199,131,233,
+ 36,48,255,248,142,255,139,122,252,248,139,191,233,139,191,233,199,131,233,
0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
252,255,36,171,255,248,81,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,
68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,
- 108,36,4,139,68,36,8,195,255,248,142,102,15,252,239,210,102,15,118,210,102,
+ 108,36,4,139,68,36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102,
15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,
15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,
242,15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,
210,81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,
1,195,248,83,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,
37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
- 139,68,36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102,15,115,
+ 139,68,36,8,195,255,248,144,102,15,252,239,210,102,15,118,210,102,15,115,
210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,
202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,
81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,
248,103,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,
- 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,144,
+ 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,145,
102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,
216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,
102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,
63,102,15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,
- 242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,145,255,15,40,232,252,
+ 242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,146,255,15,40,232,252,
242,15,94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,
48,67,102,15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,
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] = {
242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,
255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,
255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,
- 222,252,233,195,255,248,87,217,252,234,222,201,248,146,217,84,36,4,129,124,
+ 222,252,233,195,255,248,87,217,252,234,222,201,248,147,217,84,36,4,129,124,
36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,
- 248,147,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
+ 248,148,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,106,219,
84,36,4,219,68,36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,
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] = {
244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,
244,1,248,7,221,216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,
68,36,4,209,224,61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,
- 244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,147,248,9,
+ 244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,148,248,9,
255,217,232,255,223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,
217,201,248,1,221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,
217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,
249,217,201,248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,
216,221,216,133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,
- 128,127,217,68,36,4,195,255,248,106,255,248,148,252,242,15,45,193,252,242,
- 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,149,131,252,248,
+ 128,127,217,68,36,4,195,255,248,106,255,248,149,252,242,15,45,193,252,242,
+ 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,
1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,
252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,
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] = {
87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,
15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,
255,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,
- 248,150,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,
+ 248,151,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,
15,135,244,248,232,244,81,252,233,244,253,248,1,232,244,83,252,233,244,253,
248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,103,255,252,233,
244,253,248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,
- 248,2,221,68,36,4,131,252,248,5,15,130,244,87,15,132,244,146,248,2,131,252,
+ 248,2,221,68,36,4,131,252,248,5,15,130,244,87,15,132,244,147,248,2,131,252,
248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,
1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,
81,15,132,244,83,131,252,248,3,15,130,244,103,15,135,244,248,217,252,250,
- 195,248,2,131,252,248,5,15,130,244,87,15,132,244,146,131,252,248,7,15,132,
+ 195,248,2,131,252,248,5,15,130,244,87,15,132,244,147,131,252,248,7,15,132,
244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,
217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,
248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,
248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,
- 216,195,255,248,9,204,248,151,255,139,68,36,20,252,242,15,16,68,36,4,252,
+ 216,195,255,248,9,204,248,152,255,139,68,36,20,252,242,15,16,68,36,4,252,
242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,
88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,
252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,
89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,
- 248,5,15,132,244,247,255,15,135,244,248,232,244,145,252,233,244,7,248,1,90,
+ 248,5,15,132,244,247,255,15,135,244,248,232,244,146,252,233,244,7,248,1,90,
232,244,106,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,
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] = {
244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,
68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
- 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,145,15,132,
+ 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,15,132,
244,106,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
- 244,248,217,201,248,2,221,216,195,255,248,152,156,90,137,209,129,252,242,
+ 244,248,217,201,248,2,221,216,195,255,248,153,156,90,137,209,129,252,242,
0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249,
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] = {
221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,
255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,
234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,
- 12,194,255,221,4,252,234,221,4,194,255,248,153,232,244,145,255,252,233,244,
- 153,255,232,244,106,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,
+ 12,194,255,221,4,252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,
+ 154,255,232,244,106,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,
36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24,
232,251,1,23,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,
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] = {
139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,
1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,
- 252,248,139,173,233,139,4,135,252,233,244,154,255,252,247,208,139,106,252,
- 248,139,173,233,139,4,135,252,233,244,155,255,15,182,252,236,15,182,192,129,
+ 252,248,139,173,233,139,4,135,252,233,244,155,255,252,247,208,139,106,252,
+ 248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,236,15,182,192,129,
124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,
15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,
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] = {
139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,
4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233,
252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,
- 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,154,255,15,182,
+ 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182,
252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
- 244,34,139,44,252,234,248,154,139,141,233,35,136,233,105,201,239,3,141,233,
+ 244,34,139,44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233,
248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,
4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,
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] = {
104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,
244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
- 244,39,139,4,194,252,233,244,155,248,7,128,165,233,235,139,139,233,137,171,
+ 244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,233,137,171,
233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,
192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,
- 252,234,248,155,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,
+ 252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,
248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,
4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,
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] = {
248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,
192,1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1,
252,241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,
- 15,132,244,138,255,141,12,202,255,129,121,253,4,239,15,135,244,52,129,121,
+ 15,132,244,139,255,141,12,202,255,129,121,253,4,239,15,135,244,52,129,121,
253,12,239,15,135,244,52,255,139,105,20,255,129,252,253,239,15,135,244,52,
255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,
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 {
GLOB_ff_bit_ror,
GLOB_vm_record,
GLOB_vm_hook,
+ GLOB_cont_hook,
GLOB_vm_hotloop,
GLOB_vm_hotcall,
GLOB_vm_exit_handler,
@@ -1024,6 +1025,7 @@ static const char *const globnames[] = {
"ff_bit_ror",
"vm_record",
"vm_hook",
+ "cont_hook",
"vm_hotloop",
"vm_hotcall",
"vm_exit_handler",
@@ -1065,7 +1067,7 @@ static const char *const extnames[] = {
"lj_str_new",
"lj_tab_len@4",
"lj_gc_step@4",
- "lj_dispatch_ins",
+ "lj_dispatch_ins@8",
"lj_trace_hot@8",
"lj_trace_exit@8",
"lj_meta_cat",
@@ -1109,439 +1111,440 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
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);
dasm_put(Dst, 362, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
dasm_put(Dst, 453, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top));
- 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);
- dasm_put(Dst, 637, FRAME_P, LJ_TTRUE, LUA_MINSTACK, Dt9(->bc), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->gate));
- 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);
- 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));
- dasm_put(Dst, 957, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR);
- dasm_put(Dst, 1146, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+ 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);
+ dasm_put(Dst, 634, FRAME_P, LJ_TTRUE, LUA_MINSTACK, Dt9(->bc), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->gate));
+ 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);
+ 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));
+ dasm_put(Dst, 954, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR);
+ dasm_put(Dst, 1143, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1182);
+ dasm_put(Dst, 1179);
} else {
- dasm_put(Dst, 1195);
+ dasm_put(Dst, 1192);
}
- dasm_put(Dst, 1208, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv));
- dasm_put(Dst, 1366, LJ_TTAB);
+ dasm_put(Dst, 1205, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv));
+ dasm_put(Dst, 1363, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1182);
+ dasm_put(Dst, 1179);
} else {
- dasm_put(Dst, 1195);
+ dasm_put(Dst, 1192);
}
- dasm_put(Dst, 1386, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base));
- dasm_put(Dst, 1593, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
- dasm_put(Dst, 1704, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC);
- 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);
- dasm_put(Dst, 1993, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
+ dasm_put(Dst, 1383, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1590, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+ dasm_put(Dst, 1701, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC);
+ 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);
+ dasm_put(Dst, 1990, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
if (cmov) {
- dasm_put(Dst, 2089);
+ dasm_put(Dst, 2086);
} else {
- dasm_put(Dst, 2093);
+ dasm_put(Dst, 2090);
}
- 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));
- dasm_put(Dst, 2190, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
- dasm_put(Dst, 2245, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
- 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));
- dasm_put(Dst, 2382, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+ 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));
+ dasm_put(Dst, 2187, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
+ dasm_put(Dst, 2242, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
+ 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));
+ dasm_put(Dst, 2379, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2473);
+ dasm_put(Dst, 2470);
} else {
- dasm_put(Dst, 2483);
+ dasm_put(Dst, 2480);
}
- 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));
- dasm_put(Dst, 2552, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
- dasm_put(Dst, 2642, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
- dasm_put(Dst, 2748, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+ 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));
+ dasm_put(Dst, 2549, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
+ dasm_put(Dst, 2639, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2745, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2803);
+ dasm_put(Dst, 2800);
} else {
- dasm_put(Dst, 2842);
+ dasm_put(Dst, 2839);
}
- dasm_put(Dst, 2860, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
- dasm_put(Dst, 2946, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
+ dasm_put(Dst, 2857, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+ dasm_put(Dst, 2943, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
if (sse) {
- dasm_put(Dst, 2976);
+ dasm_put(Dst, 2973);
} else {
- dasm_put(Dst, 2986);
+ dasm_put(Dst, 2983);
}
- dasm_put(Dst, 2993, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
- dasm_put(Dst, 3066, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD);
- dasm_put(Dst, 3164, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
- dasm_put(Dst, 3229, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top));
- dasm_put(Dst, 3333, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2);
- dasm_put(Dst, 3452, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base));
- dasm_put(Dst, 3532, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
- dasm_put(Dst, 3640, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE);
- dasm_put(Dst, 3736, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+ dasm_put(Dst, 2990, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 3063, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD);
+ dasm_put(Dst, 3161, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 3226, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top));
+ dasm_put(Dst, 3330, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2);
+ dasm_put(Dst, 3449, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base));
+ dasm_put(Dst, 3529, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
+ dasm_put(Dst, 3637, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE);
+ dasm_put(Dst, 3733, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
if (sse) {
- dasm_put(Dst, 3822, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3819, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 3883, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3880, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 3915, 1+1, FRAME_TYPE, LJ_TNIL);
+ dasm_put(Dst, 3912, 1+1, FRAME_TYPE, LJ_TNIL);
if (sse) {
- dasm_put(Dst, 3996, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4058, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3993, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4055, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4088, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4147, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4085, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4144, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4174, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4243, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4300, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4363, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4453);
+ dasm_put(Dst, 4171, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4240, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4297, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4360, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4450);
if (sse) {
- dasm_put(Dst, 4465, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4462, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4496, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4493, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4521);
+ dasm_put(Dst, 4518);
if (sse) {
- dasm_put(Dst, 4543, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4540, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4574, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4571, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4599);
+ dasm_put(Dst, 4596);
if (sse) {
- dasm_put(Dst, 4621, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4618, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4652, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4649, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4677);
+ dasm_put(Dst, 4674);
if (sse) {
- dasm_put(Dst, 4701, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4698, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
} else {
- dasm_put(Dst, 4736, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4733, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
}
- dasm_put(Dst, 4765, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
- dasm_put(Dst, 4830, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4762, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4827, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4925);
+ dasm_put(Dst, 4922);
} else {
- dasm_put(Dst, 4931);
+ dasm_put(Dst, 4928);
}
- dasm_put(Dst, 4940);
+ dasm_put(Dst, 4937);
if (sse) {
- dasm_put(Dst, 4965);
+ dasm_put(Dst, 4962);
} else {
- dasm_put(Dst, 4971);
+ dasm_put(Dst, 4968);
}
- dasm_put(Dst, 4974, 1+2);
+ dasm_put(Dst, 4971, 1+2);
if (sse) {
- dasm_put(Dst, 4983);
+ dasm_put(Dst, 4980);
} else {
- dasm_put(Dst, 4991);
+ dasm_put(Dst, 4988);
}
- dasm_put(Dst, 1590);
+ dasm_put(Dst, 1587);
if (sse) {
- dasm_put(Dst, 4999);
+ dasm_put(Dst, 4996);
} else {
- dasm_put(Dst, 5031);
+ dasm_put(Dst, 5028);
}
- dasm_put(Dst, 5050);
+ dasm_put(Dst, 5047);
if (sse) {
- dasm_put(Dst, 5066, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5063, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 5091, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5088, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 5113);
+ dasm_put(Dst, 5110);
if (sse) {
- dasm_put(Dst, 5131);
+ dasm_put(Dst, 5128);
} else {
- dasm_put(Dst, 5157);
+ dasm_put(Dst, 5154);
}
- dasm_put(Dst, 5174, 1+2);
+ dasm_put(Dst, 5171, 1+2);
if (sse) {
- dasm_put(Dst, 5214);
+ dasm_put(Dst, 5211);
} else {
- dasm_put(Dst, 5222);
+ dasm_put(Dst, 5219);
}
- dasm_put(Dst, 5232, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5229, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5284, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5281, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5331, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5328, 2+1, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 5372, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5369, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5443, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5440, 1+1, LJ_TISNUM, LJ_TISNUM);
if (cmov) {
- dasm_put(Dst, 5496);
+ dasm_put(Dst, 5493);
} else {
- dasm_put(Dst, 5504);
+ dasm_put(Dst, 5501);
}
- dasm_put(Dst, 5435);
+ dasm_put(Dst, 5432);
}
if (sse) {
- dasm_put(Dst, 5525, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5522, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5596, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5593, 1+1, LJ_TISNUM, LJ_TISNUM);
if (cmov) {
- dasm_put(Dst, 5649);
+ dasm_put(Dst, 5646);
} else {
- dasm_put(Dst, 5657);
+ dasm_put(Dst, 5654);
}
- dasm_put(Dst, 5435);
+ dasm_put(Dst, 5432);
}
if (!sse) {
- dasm_put(Dst, 5678);
+ dasm_put(Dst, 5675);
}
- dasm_put(Dst, 5687, 1+1, LJ_TSTR);
+ dasm_put(Dst, 5684, 1+1, LJ_TSTR);
if (sse) {
- dasm_put(Dst, 5709, Dt5(->len));
+ dasm_put(Dst, 5706, Dt5(->len));
} else {
- dasm_put(Dst, 5720, Dt5(->len));
+ dasm_put(Dst, 5717, Dt5(->len));
}
- dasm_put(Dst, 5728, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+ dasm_put(Dst, 5725, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
if (sse) {
- dasm_put(Dst, 5762);
+ dasm_put(Dst, 5759);
} else {
- dasm_put(Dst, 5772);
+ dasm_put(Dst, 5769);
}
- dasm_put(Dst, 5785, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5782, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5820);
+ dasm_put(Dst, 5817);
} else {
- dasm_put(Dst, 5840);
+ dasm_put(Dst, 5837);
}
- dasm_put(Dst, 5860, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
- dasm_put(Dst, 2468);
+ dasm_put(Dst, 5857, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+ dasm_put(Dst, 2465);
if (sse) {
- dasm_put(Dst, 5971);
+ dasm_put(Dst, 5968);
} else {
- dasm_put(Dst, 5982);
+ dasm_put(Dst, 5979);
}
- dasm_put(Dst, 5990, LJ_TSTR, LJ_TISNUM, Dt5(->len));
+ dasm_put(Dst, 5987, LJ_TSTR, LJ_TISNUM, Dt5(->len));
if (sse) {
- dasm_put(Dst, 6020);
+ dasm_put(Dst, 6017);
} else {
- dasm_put(Dst, 6027);
+ dasm_put(Dst, 6024);
}
- dasm_put(Dst, 6039, sizeof(GCstr)-1);
- dasm_put(Dst, 6114, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 6173, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 6036, sizeof(GCstr)-1);
+ dasm_put(Dst, 6111, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 6170, LJ_TSTR, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6198);
+ dasm_put(Dst, 6195);
} else {
- dasm_put(Dst, 6205);
+ dasm_put(Dst, 6202);
}
- dasm_put(Dst, 6217, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
- 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));
- dasm_put(Dst, 6349, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
- dasm_put(Dst, 6424, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
- 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));
- dasm_put(Dst, 6583, 1+1, LJ_TTAB);
+ dasm_put(Dst, 6214, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+ 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));
+ dasm_put(Dst, 6346, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+ dasm_put(Dst, 6421, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+ 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));
+ dasm_put(Dst, 6580, 1+1, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 6659);
+ dasm_put(Dst, 6656);
} else {
- dasm_put(Dst, 6669);
+ dasm_put(Dst, 6666);
}
if (sse) {
- dasm_put(Dst, 6680, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6677, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 6737, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6734, 1+1, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 6781, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6778, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 6829, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6826, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 6869);
+ dasm_put(Dst, 6866);
if (sse) {
- dasm_put(Dst, 6879);
+ dasm_put(Dst, 6876);
}
- dasm_put(Dst, 6884, LJ_TISNUM);
+ dasm_put(Dst, 6881, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6902);
+ dasm_put(Dst, 6899);
} else {
- dasm_put(Dst, 6919);
+ dasm_put(Dst, 6916);
}
- dasm_put(Dst, 6932);
+ dasm_put(Dst, 6929);
if (sse) {
- dasm_put(Dst, 6940, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6937, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 6988, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6985, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 6869);
+ dasm_put(Dst, 6866);
if (sse) {
- dasm_put(Dst, 6879);
+ dasm_put(Dst, 6876);
}
- dasm_put(Dst, 6884, LJ_TISNUM);
+ dasm_put(Dst, 6881, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 7028);
+ dasm_put(Dst, 7025);
} else {
- dasm_put(Dst, 7045);
+ dasm_put(Dst, 7042);
}
- dasm_put(Dst, 6932);
+ dasm_put(Dst, 6929);
if (sse) {
- dasm_put(Dst, 7058, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7055, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 7106, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7103, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 6869);
+ dasm_put(Dst, 6866);
if (sse) {
- dasm_put(Dst, 6879);
+ dasm_put(Dst, 6876);
}
- dasm_put(Dst, 6884, LJ_TISNUM);
+ dasm_put(Dst, 6881, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 7146);
+ dasm_put(Dst, 7143);
} else {
- dasm_put(Dst, 7163);
+ dasm_put(Dst, 7160);
}
- dasm_put(Dst, 6932);
+ dasm_put(Dst, 6929);
if (sse) {
- dasm_put(Dst, 7176, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7173, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 7224, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7221, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 7264);
+ dasm_put(Dst, 7261);
if (sse) {
- dasm_put(Dst, 7271, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7268, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 7319, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7316, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 7359);
+ dasm_put(Dst, 7356);
if (sse) {
- dasm_put(Dst, 7363);
+ dasm_put(Dst, 7360);
} else {
- dasm_put(Dst, 7390);
+ dasm_put(Dst, 7387);
+ }
+ dasm_put(Dst, 7402);
+ if (sse) {
+ dasm_put(Dst, 6651);
}
dasm_put(Dst, 7405);
if (sse) {
- dasm_put(Dst, 6654);
- }
- dasm_put(Dst, 7408);
- if (sse) {
- dasm_put(Dst, 7417, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7414, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7491, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7488, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7557);
+ dasm_put(Dst, 7554);
if (sse) {
- dasm_put(Dst, 7566, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7563, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7640, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7637, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7706);
+ dasm_put(Dst, 7703);
if (sse) {
- dasm_put(Dst, 7716, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7713, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7790, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7787, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7856);
+ dasm_put(Dst, 7853);
if (sse) {
- dasm_put(Dst, 7866, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7863, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7940, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7937, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 8006);
+ dasm_put(Dst, 8003);
if (sse) {
- dasm_put(Dst, 8015, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 8012, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 8089, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 8086, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 8155, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
- dasm_put(Dst, 8239, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top));
- dasm_put(Dst, 8358, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 8152, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+ dasm_put(Dst, 8236, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 8355, Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 8399, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+ dasm_put(Dst, 8396, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
#endif
- 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);
+ dasm_put(Dst, 8427, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 8493, GG_DISP_STATIC*4);
#if LJ_HASJIT
- dasm_put(Dst, 8521, Dt1(->base), GG_DISP2J, DISPATCH_J(L));
+ dasm_put(Dst, 8528, Dt1(->base), GG_DISP2J, DISPATCH_J(L));
#endif
- dasm_put(Dst, 8550);
+ dasm_put(Dst, 8557);
#if LJ_HASJIT
- dasm_put(Dst, 8553, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base));
+ dasm_put(Dst, 8560, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base));
#endif
- dasm_put(Dst, 8599);
+ dasm_put(Dst, 8606);
#if LJ_HASJIT
- 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));
+ 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));
#endif
- dasm_put(Dst, 8745);
+ dasm_put(Dst, 8752);
#if LJ_HASJIT
- dasm_put(Dst, 8748, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 8755, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
#endif
- dasm_put(Dst, 8788);
+ dasm_put(Dst, 8795);
if (!sse) {
- dasm_put(Dst, 8791);
+ dasm_put(Dst, 8798);
}
- dasm_put(Dst, 8836);
+ dasm_put(Dst, 8843);
if (!sse) {
- dasm_put(Dst, 8938);
+ dasm_put(Dst, 8945);
}
- dasm_put(Dst, 8983);
+ dasm_put(Dst, 8990);
if (!sse) {
- dasm_put(Dst, 9085);
+ dasm_put(Dst, 9092);
}
- dasm_put(Dst, 9124);
+ dasm_put(Dst, 9131);
if (sse) {
- dasm_put(Dst, 9229);
+ dasm_put(Dst, 9236);
} else {
- dasm_put(Dst, 9359);
+ dasm_put(Dst, 9366);
}
- dasm_put(Dst, 9406);
+ dasm_put(Dst, 9413);
if (!sse) {
- dasm_put(Dst, 9480);
+ dasm_put(Dst, 9487);
if (cmov) {
- dasm_put(Dst, 9491);
+ dasm_put(Dst, 9498);
} else {
- dasm_put(Dst, 9495);
- }
dasm_put(Dst, 9502);
- dasm_put(Dst, 9576);
- dasm_put(Dst, 9676);
- if (cmov) {
- dasm_put(Dst, 9679);
- } else {
+ }
+ dasm_put(Dst, 9509);
+ dasm_put(Dst, 9583);
dasm_put(Dst, 9683);
- }
- dasm_put(Dst, 9690);
if (cmov) {
- dasm_put(Dst, 9491);
+ dasm_put(Dst, 9686);
} else {
- dasm_put(Dst, 9495);
+ dasm_put(Dst, 9690);
}
- dasm_put(Dst, 9708);
+ dasm_put(Dst, 9697);
+ if (cmov) {
+ dasm_put(Dst, 9498);
} else {
- dasm_put(Dst, 9787);
+ dasm_put(Dst, 9502);
}
- dasm_put(Dst, 9790);
- dasm_put(Dst, 9875);
- dasm_put(Dst, 10006);
- dasm_put(Dst, 10205);
+ dasm_put(Dst, 9715);
+ } else {
+ dasm_put(Dst, 9794);
+ }
+ dasm_put(Dst, 9797);
+ dasm_put(Dst, 9882);
+ dasm_put(Dst, 10013);
+ dasm_put(Dst, 10212);
if (sse) {
- dasm_put(Dst, 10228);
- dasm_put(Dst, 10285);
- dasm_put(Dst, 10376);
+ dasm_put(Dst, 10235);
+ dasm_put(Dst, 10292);
+ dasm_put(Dst, 10383);
} else {
- dasm_put(Dst, 10418);
- dasm_put(Dst, 10510);
+ dasm_put(Dst, 10425);
+ dasm_put(Dst, 10517);
}
- dasm_put(Dst, 10556);
+ dasm_put(Dst, 10563);
if (sse) {
- dasm_put(Dst, 10562);
- dasm_put(Dst, 10667);
- dasm_put(Dst, 10750);
+ dasm_put(Dst, 10569);
+ dasm_put(Dst, 10674);
+ dasm_put(Dst, 10757);
} else {
- dasm_put(Dst, 10822);
- dasm_put(Dst, 10905);
+ dasm_put(Dst, 10829);
+ dasm_put(Dst, 10912);
if (cmov) {
- dasm_put(Dst, 10960);
+ dasm_put(Dst, 10967);
} else {
- dasm_put(Dst, 10979);
+ dasm_put(Dst, 10986);
}
- dasm_put(Dst, 10818);
+ dasm_put(Dst, 10825);
}
- dasm_put(Dst, 11020);
+ dasm_put(Dst, 11027);
}
/* Generate the code for a single instruction. */
static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
{
int vk = 0;
- dasm_put(Dst, 11074, defop);
+ dasm_put(Dst, 11081, defop);
switch (op) {
@@ -1550,619 +1553,619 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
/* Remember: all ops branch for a true comparison, fall through otherwise. */
case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
- dasm_put(Dst, 11076, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11083, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11097);
+ dasm_put(Dst, 11104);
} else {
- dasm_put(Dst, 11112);
+ dasm_put(Dst, 11119);
if (cmov) {
- dasm_put(Dst, 11122);
+ dasm_put(Dst, 11129);
} else {
- dasm_put(Dst, 11128);
+ dasm_put(Dst, 11135);
}
}
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 11135);
+ dasm_put(Dst, 11142);
break;
case BC_ISGE:
- dasm_put(Dst, 10371);
+ dasm_put(Dst, 10378);
break;
case BC_ISLE:
- dasm_put(Dst, 6578);
+ dasm_put(Dst, 6575);
break;
case BC_ISGT:
- dasm_put(Dst, 11140);
+ dasm_put(Dst, 11147);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 11145, -BCBIAS_J*4);
+ dasm_put(Dst, 11152, -BCBIAS_J*4);
break;
case BC_ISEQV: case BC_ISNEV:
vk = op == BC_ISEQV;
- dasm_put(Dst, 11178, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11185, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11204);
+ dasm_put(Dst, 11211);
} else {
- dasm_put(Dst, 11216);
+ dasm_put(Dst, 11223);
if (cmov) {
- dasm_put(Dst, 11122);
+ dasm_put(Dst, 11129);
} else {
- dasm_put(Dst, 11128);
+ dasm_put(Dst, 11135);
}
}
iseqne_fp:
if (vk) {
- dasm_put(Dst, 11223);
+ dasm_put(Dst, 11230);
} else {
- dasm_put(Dst, 11232);
+ dasm_put(Dst, 11239);
}
iseqne_end:
if (vk) {
- dasm_put(Dst, 11241, -BCBIAS_J*4);
+ dasm_put(Dst, 11248, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 11256, -BCBIAS_J*4);
+ dasm_put(Dst, 11263, -BCBIAS_J*4);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
if (op == BC_ISEQV || op == BC_ISNEV) {
- dasm_put(Dst, 11271, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<len));
+ dasm_put(Dst, 11614, Dt5(->len));
} else {
- dasm_put(Dst, 11625, Dt5(->len));
+ dasm_put(Dst, 11632, Dt5(->len));
}
- dasm_put(Dst, 11634, LJ_TTAB);
+ dasm_put(Dst, 11641, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 11674);
+ dasm_put(Dst, 11681);
} else {
- dasm_put(Dst, 11683);
+ dasm_put(Dst, 11690);
}
- dasm_put(Dst, 11693);
+ dasm_put(Dst, 11700);
break;
/* -- Binary ops -------------------------------------------------------- */
case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
- dasm_put(Dst, 11703);
+ dasm_put(Dst, 11710);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11711, LJ_TISNUM);
+ dasm_put(Dst, 11718, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11723);
+ dasm_put(Dst, 11730);
} else {
- dasm_put(Dst, 11737);
+ dasm_put(Dst, 11744);
}
break;
case 1:
- dasm_put(Dst, 11745, LJ_TISNUM);
+ dasm_put(Dst, 11752, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11757);
+ dasm_put(Dst, 11764);
} else {
- dasm_put(Dst, 11771);
+ dasm_put(Dst, 11778);
}
break;
default:
- dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11801);
+ dasm_put(Dst, 11808);
} else {
- dasm_put(Dst, 11815);
+ dasm_put(Dst, 11822);
}
break;
}
if (sse) {
- dasm_put(Dst, 11577);
+ dasm_put(Dst, 11584);
} else {
- dasm_put(Dst, 11589);
+ dasm_put(Dst, 11596);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
- dasm_put(Dst, 11703);
+ dasm_put(Dst, 11710);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11711, LJ_TISNUM);
+ dasm_put(Dst, 11718, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11823);
+ dasm_put(Dst, 11830);
} else {
- dasm_put(Dst, 11837);
+ dasm_put(Dst, 11844);
}
break;
case 1:
- dasm_put(Dst, 11745, LJ_TISNUM);
+ dasm_put(Dst, 11752, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11845);
+ dasm_put(Dst, 11852);
} else {
- dasm_put(Dst, 11859);
+ dasm_put(Dst, 11866);
}
break;
default:
- dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11867);
+ dasm_put(Dst, 11874);
} else {
- dasm_put(Dst, 11881);
+ dasm_put(Dst, 11888);
}
break;
}
if (sse) {
- dasm_put(Dst, 11577);
+ dasm_put(Dst, 11584);
} else {
- dasm_put(Dst, 11589);
+ dasm_put(Dst, 11596);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_MULVN: case BC_MULNV: case BC_MULVV:
- dasm_put(Dst, 11703);
+ dasm_put(Dst, 11710);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11711, LJ_TISNUM);
+ dasm_put(Dst, 11718, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11889);
+ dasm_put(Dst, 11896);
} else {
- dasm_put(Dst, 11903);
+ dasm_put(Dst, 11910);
}
break;
case 1:
- dasm_put(Dst, 11745, LJ_TISNUM);
+ dasm_put(Dst, 11752, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11911);
+ dasm_put(Dst, 11918);
} else {
- dasm_put(Dst, 11925);
+ dasm_put(Dst, 11932);
}
break;
default:
- dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11933);
+ dasm_put(Dst, 11940);
} else {
- dasm_put(Dst, 11947);
+ dasm_put(Dst, 11954);
}
break;
}
if (sse) {
- dasm_put(Dst, 11577);
+ dasm_put(Dst, 11584);
} else {
- dasm_put(Dst, 11589);
+ dasm_put(Dst, 11596);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
- dasm_put(Dst, 11703);
+ dasm_put(Dst, 11710);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11711, LJ_TISNUM);
+ dasm_put(Dst, 11718, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11955);
+ dasm_put(Dst, 11962);
} else {
- dasm_put(Dst, 11969);
+ dasm_put(Dst, 11976);
}
break;
case 1:
- dasm_put(Dst, 11745, LJ_TISNUM);
+ dasm_put(Dst, 11752, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11977);
+ dasm_put(Dst, 11984);
} else {
- dasm_put(Dst, 11991);
+ dasm_put(Dst, 11998);
}
break;
default:
- dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11999);
+ dasm_put(Dst, 12006);
} else {
- dasm_put(Dst, 12013);
+ dasm_put(Dst, 12020);
}
break;
}
if (sse) {
- dasm_put(Dst, 11577);
+ dasm_put(Dst, 11584);
} else {
- dasm_put(Dst, 11589);
+ dasm_put(Dst, 11596);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_MODVN:
- dasm_put(Dst, 11703);
+ dasm_put(Dst, 11710);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11711, LJ_TISNUM);
+ dasm_put(Dst, 11718, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12021);
+ dasm_put(Dst, 12028);
} else {
- dasm_put(Dst, 12035);
+ dasm_put(Dst, 12042);
}
break;
case 1:
- dasm_put(Dst, 11745, LJ_TISNUM);
+ dasm_put(Dst, 11752, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12043);
+ dasm_put(Dst, 12050);
} else {
- dasm_put(Dst, 12057);
+ dasm_put(Dst, 12064);
}
break;
default:
- dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12065);
+ dasm_put(Dst, 12072);
} else {
- dasm_put(Dst, 12079);
+ dasm_put(Dst, 12086);
}
break;
}
- dasm_put(Dst, 12087);
+ dasm_put(Dst, 12094);
if (sse) {
- dasm_put(Dst, 11577);
+ dasm_put(Dst, 11584);
} else {
- dasm_put(Dst, 11589);
+ dasm_put(Dst, 11596);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_MODNV: case BC_MODVV:
- dasm_put(Dst, 11703);
+ dasm_put(Dst, 11710);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11711, LJ_TISNUM);
+ dasm_put(Dst, 11718, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12021);
+ dasm_put(Dst, 12028);
} else {
- dasm_put(Dst, 12035);
+ dasm_put(Dst, 12042);
}
break;
case 1:
- dasm_put(Dst, 11745, LJ_TISNUM);
+ dasm_put(Dst, 11752, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12043);
+ dasm_put(Dst, 12050);
} else {
- dasm_put(Dst, 12057);
+ dasm_put(Dst, 12064);
}
break;
default:
- dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12065);
+ dasm_put(Dst, 12072);
} else {
- dasm_put(Dst, 12079);
+ dasm_put(Dst, 12086);
}
break;
}
- dasm_put(Dst, 12093);
+ dasm_put(Dst, 12100);
break;
case BC_POW:
- dasm_put(Dst, 11703);
+ dasm_put(Dst, 11710);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11711, LJ_TISNUM);
+ dasm_put(Dst, 11718, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12021);
+ dasm_put(Dst, 12028);
} else {
- dasm_put(Dst, 12035);
+ dasm_put(Dst, 12042);
}
break;
case 1:
- dasm_put(Dst, 11745, LJ_TISNUM);
+ dasm_put(Dst, 11752, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12043);
+ dasm_put(Dst, 12050);
} else {
- dasm_put(Dst, 12057);
+ dasm_put(Dst, 12064);
}
break;
default:
- dasm_put(Dst, 11779, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12065);
+ dasm_put(Dst, 12072);
} else {
- dasm_put(Dst, 12079);
+ dasm_put(Dst, 12086);
}
break;
}
- dasm_put(Dst, 12098);
+ dasm_put(Dst, 12105);
if (sse) {
- dasm_put(Dst, 11577);
+ dasm_put(Dst, 11584);
} else {
- dasm_put(Dst, 11589);
+ dasm_put(Dst, 11596);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_CAT:
- dasm_put(Dst, 12102, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 12109, Dt1(->base), Dt1(->base));
break;
/* -- Constant ops ------------------------------------------------------ */
case BC_KSTR:
- dasm_put(Dst, 12196, LJ_TSTR);
+ dasm_put(Dst, 12203, LJ_TSTR);
break;
case BC_KSHORT:
if (sse) {
- dasm_put(Dst, 12229);
+ dasm_put(Dst, 12236);
} else {
- dasm_put(Dst, 12244);
+ dasm_put(Dst, 12251);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_KNUM:
if (sse) {
- dasm_put(Dst, 12252);
+ dasm_put(Dst, 12259);
} else {
- dasm_put(Dst, 12265);
+ dasm_put(Dst, 12272);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_KPRI:
- dasm_put(Dst, 12272);
+ dasm_put(Dst, 12279);
break;
case BC_KNIL:
- dasm_put(Dst, 12298, LJ_TNIL);
+ dasm_put(Dst, 12305, LJ_TNIL);
break;
/* -- Upvalue and function ops ------------------------------------------ */
case BC_UGET:
- dasm_put(Dst, 12344, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12351, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_USETV:
#define TV2MARKOFS \
((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
- 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);
- dasm_put(Dst, 12478);
+ 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);
+ dasm_put(Dst, 12485);
break;
#undef TV2MARKOFS
case BC_USETS:
- 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);
+ 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);
break;
case BC_USETN:
- dasm_put(Dst, 12581);
+ dasm_put(Dst, 12588);
if (sse) {
- dasm_put(Dst, 12586);
+ dasm_put(Dst, 12593);
} else {
- dasm_put(Dst, 11396);
+ dasm_put(Dst, 11403);
}
- dasm_put(Dst, 12593, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12600, offsetof(GCfuncL, uvptr), DtA(->v));
if (sse) {
- dasm_put(Dst, 4965);
+ dasm_put(Dst, 4962);
} else {
- dasm_put(Dst, 4971);
+ dasm_put(Dst, 4968);
}
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_USETP:
- dasm_put(Dst, 12602, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12609, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_UCLO:
- dasm_put(Dst, 12639, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 12646, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
break;
case BC_FNEW:
- dasm_put(Dst, 12693, Dt1(->base), Dt1(->base), LJ_TFUNC);
+ dasm_put(Dst, 12700, Dt1(->base), Dt1(->base), LJ_TFUNC);
break;
/* -- Table ops --------------------------------------------------------- */
case BC_TNEW:
- dasm_put(Dst, 12764, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 12771, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_TDUP:
- dasm_put(Dst, 12885, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 12892, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_GGET:
- dasm_put(Dst, 12977, Dt7(->env));
+ dasm_put(Dst, 12984, Dt7(->env));
break;
case BC_GSET:
- dasm_put(Dst, 12995, Dt7(->env));
+ dasm_put(Dst, 13002, Dt7(->env));
break;
case BC_TGETV:
- dasm_put(Dst, 13013, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 13020, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 13046);
+ dasm_put(Dst, 13053);
} else {
- dasm_put(Dst, 13067);
+ dasm_put(Dst, 13074);
if (cmov) {
- dasm_put(Dst, 11122);
+ dasm_put(Dst, 11129);
} else {
- dasm_put(Dst, 11128);
+ dasm_put(Dst, 11135);
}
- dasm_put(Dst, 2856);
+ dasm_put(Dst, 2853);
}
- dasm_put(Dst, 13077, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
- dasm_put(Dst, 13271, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+ dasm_put(Dst, 13278, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
- dasm_put(Dst, 13557, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13481, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+ dasm_put(Dst, 13564, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETS:
- 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);
- dasm_put(Dst, 13694, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
- dasm_put(Dst, 13786, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ 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);
+ dasm_put(Dst, 13701, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
+ dasm_put(Dst, 13793, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETB:
- dasm_put(Dst, 13882, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
- dasm_put(Dst, 13980, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13889, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+ dasm_put(Dst, 13987, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETM:
- dasm_put(Dst, 14026);
+ dasm_put(Dst, 14033);
if (sse) {
- dasm_put(Dst, 12586);
+ dasm_put(Dst, 12593);
} else {
- dasm_put(Dst, 14031);
+ dasm_put(Dst, 14038);
}
- dasm_put(Dst, 14039, Dt6(->marked), LJ_GC_BLACK);
+ dasm_put(Dst, 14046, Dt6(->marked), LJ_GC_BLACK);
if (sse) {
- dasm_put(Dst, 14064);
- } else {
dasm_put(Dst, 14071);
+ } else {
+ dasm_put(Dst, 14078);
}
- 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));
- dasm_put(Dst, 14204, Dt6(->gclist));
+ 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));
+ dasm_put(Dst, 14211, Dt6(->gclist));
break;
/* -- Calls and vararg handling ----------------------------------------- */
case BC_CALL: case BC_CALLM:
- dasm_put(Dst, 11707);
+ dasm_put(Dst, 11714);
if (op == BC_CALLM) {
- dasm_put(Dst, 14212);
+ dasm_put(Dst, 14219);
}
- dasm_put(Dst, 14217, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 14224, LJ_TFUNC, Dt7(->gate));
break;
case BC_CALLMT:
- dasm_put(Dst, 14212);
+ dasm_put(Dst, 14219);
break;
case BC_CALLT:
- dasm_put(Dst, 14240, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
- dasm_put(Dst, 14345, FRAME_TYPE, Dt7(->pt), Dt9(->k));
+ dasm_put(Dst, 14247, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
+ dasm_put(Dst, 14352, FRAME_TYPE, Dt7(->pt), Dt9(->k));
break;
case BC_ITERC:
- dasm_put(Dst, 14402, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 14409, LJ_TFUNC, Dt7(->gate));
break;
case BC_VARG:
- dasm_put(Dst, 14464, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL);
- dasm_put(Dst, 14608, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 14471, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL);
+ dasm_put(Dst, 14615, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
break;
/* -- Returns ----------------------------------------------------------- */
case BC_RETM:
- dasm_put(Dst, 14212);
+ dasm_put(Dst, 14219);
break;
case BC_RET: case BC_RET0: case BC_RET1:
if (op != BC_RET0) {
- dasm_put(Dst, 14707);
+ dasm_put(Dst, 14714);
}
- dasm_put(Dst, 14711, FRAME_TYPE);
+ dasm_put(Dst, 14718, FRAME_TYPE);
switch (op) {
case BC_RET:
- dasm_put(Dst, 14730);
+ dasm_put(Dst, 14737);
break;
case BC_RET1:
- dasm_put(Dst, 14788);
+ dasm_put(Dst, 14795);
/* fallthrough */
case BC_RET0:
- dasm_put(Dst, 14804);
+ dasm_put(Dst, 14811);
default:
break;
}
- dasm_put(Dst, 14815, Dt7(->pt), Dt9(->k));
+ dasm_put(Dst, 14822, Dt7(->pt), Dt9(->k));
if (op == BC_RET) {
- dasm_put(Dst, 14857, LJ_TNIL);
+ dasm_put(Dst, 14864, LJ_TNIL);
} else {
- dasm_put(Dst, 14866, LJ_TNIL);
+ dasm_put(Dst, 14873, LJ_TNIL);
}
- dasm_put(Dst, 14873);
+ dasm_put(Dst, 14880);
if (op != BC_RET0) {
- dasm_put(Dst, 14894);
+ dasm_put(Dst, 14901);
}
- dasm_put(Dst, 5061);
+ dasm_put(Dst, 5058);
break;
/* -- Loops and branches ------------------------------------------------ */
@@ -2170,7 +2173,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORL:
#if LJ_HASJIT
- dasm_put(Dst, 14898, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2182,57 +2185,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORI:
case BC_IFORL:
vk = (op == BC_IFORL || op == BC_JFORL);
- dasm_put(Dst, 14919);
+ dasm_put(Dst, 14926);
if (!vk) {
- dasm_put(Dst, 14923, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 14930, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 14942);
+ dasm_put(Dst, 14949);
if (!vk) {
- dasm_put(Dst, 14946, LJ_TISNUM);
+ dasm_put(Dst, 14953, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 14955);
+ dasm_put(Dst, 14962);
if (vk) {
- dasm_put(Dst, 14967);
+ dasm_put(Dst, 14974);
} else {
- dasm_put(Dst, 14986);
+ dasm_put(Dst, 14993);
}
- dasm_put(Dst, 14991);
+ dasm_put(Dst, 14998);
} else {
- dasm_put(Dst, 15004);
+ dasm_put(Dst, 15011);
if (vk) {
- dasm_put(Dst, 15010);
+ dasm_put(Dst, 15017);
} else {
- dasm_put(Dst, 15026);
+ dasm_put(Dst, 15033);
}
- dasm_put(Dst, 15034);
+ dasm_put(Dst, 15041);
if (cmov) {
- dasm_put(Dst, 11122);
+ dasm_put(Dst, 11129);
} else {
- dasm_put(Dst, 11128);
+ dasm_put(Dst, 11135);
}
if (!cmov) {
- dasm_put(Dst, 15039);
+ dasm_put(Dst, 15046);
}
}
if (op == BC_FORI) {
- dasm_put(Dst, 15045, -BCBIAS_J*4);
+ dasm_put(Dst, 15052, -BCBIAS_J*4);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15055, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 15062, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 15069, -BCBIAS_J*4);
+ dasm_put(Dst, 15076, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 15065, BC_JLOOP);
+ dasm_put(Dst, 15072, BC_JLOOP);
}
- dasm_put(Dst, 11157);
+ dasm_put(Dst, 11164);
if (sse) {
- dasm_put(Dst, 15079);
+ dasm_put(Dst, 15086);
}
break;
case BC_ITERL:
#if LJ_HASJIT
- dasm_put(Dst, 14898, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2241,33 +2244,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IITERL:
- dasm_put(Dst, 15090, LJ_TNIL);
+ dasm_put(Dst, 15097, LJ_TNIL);
if (op == BC_JITERL) {
- dasm_put(Dst, 15105, BC_JLOOP);
+ dasm_put(Dst, 15112, BC_JLOOP);
} else {
- dasm_put(Dst, 15119, -BCBIAS_J*4);
+ dasm_put(Dst, 15126, -BCBIAS_J*4);
}
- dasm_put(Dst, 11454);
+ dasm_put(Dst, 11461);
break;
case BC_LOOP:
#if LJ_HASJIT
- dasm_put(Dst, 14898, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
case BC_ILOOP:
- dasm_put(Dst, 8580);
+ dasm_put(Dst, 8587);
break;
case BC_JLOOP:
#if LJ_HASJIT
- dasm_put(Dst, 15135, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+ dasm_put(Dst, 15142, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
#endif
break;
case BC_JMP:
- dasm_put(Dst, 15158, -BCBIAS_J*4);
+ dasm_put(Dst, 15165, -BCBIAS_J*4);
break;
/* ---------------------------------------------------------------------- */
@@ -2295,7 +2298,7 @@ static int build_backend(BuildCtx *ctx)
build_subroutines(ctx, cmov, sse);
- dasm_put(Dst, 15182);
+ dasm_put(Dst, 15189);
for (op = 0; op < BC__MAX; op++)
build_ins(ctx, (BCOp)op, op, cmov, sse);
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)
LUA_API int lua_yield(lua_State *L, int nresults)
{
void *cf = L->cframe;
- cTValue *f;
- if (!cframe_canyield(cf))
- lj_err_msg(L, LJ_ERR_CYIELD);
- f = L->top - nresults;
- if (f > L->base) {
- TValue *t = L->base;
- while (--nresults >= 0) copyTV(L, t++, f++);
- L->top = t;
+ global_State *g = G(L);
+ if (cframe_canyield(cf)) {
+ cf = cframe_raw(cf);
+ if (!hook_active(g)) { /* Regular yield: move results down if needed. */
+ cTValue *f = L->top - nresults;
+ if (f > L->base) {
+ TValue *t = L->base;
+ while (--nresults >= 0) copyTV(L, t++, f++);
+ L->top = t;
+ }
+ } else { /* Yield from hook: add a pseudo-frame. */
+ TValue *top = L->top;
+ hook_leave(g);
+ top->u64 = cframe_multres(cf);
+ setcont(top+1, lj_cont_hook);
+ setframe_pc(top+1, cframe_pc(cf)-1);
+ setframe_gc(top+2, obj2gco(L));
+ top[2].fr.tp.ftsz = cast_int((char *)(top+3)-(char *)L->base)+FRAME_CONT;
+ L->top = L->base = top+3;
+ }
+ L->cframe = NULL;
+ L->status = LUA_YIELD;
+ lj_vm_unwind_c(cf, LUA_YIELD);
}
- L->cframe = NULL;
- L->status = LUA_YIELD;
- lj_vm_unwind_c(cf, LUA_YIELD);
- return -1; /* unreachable */
+ lj_err_msg(L, LJ_ERR_CYIELD);
+ return 0; /* unreachable */
}
LUA_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)
}
/* Instruction dispatch callback for instr/line hooks or when recording. */
-void lj_dispatch_ins(lua_State *L, const BCIns *pc, uint32_t nres)
+void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc)
{
GCfunc *fn = curr_func(L);
GCproto *pt = funcproto(fn);
- BCReg slots = cur_topslot(pt, pc, nres);
- global_State *g = G(L);
void *cf = cframe_raw(L->cframe);
const BCIns *oldpc = cframe_pc(cf);
+ global_State *g = G(L);
+ BCReg slots;
setcframe_pc(cf, pc);
+ slots = cur_topslot(pt, pc, cframe_multres(cf));
L->top = L->base + slots; /* Fix top. */
#if LJ_HASJIT
{
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);
LJ_FUNC void lj_dispatch_update(global_State *g);
/* Instruction dispatch callback for instr/line hooks or when recording. */
-LJ_FUNCA void lj_dispatch_ins(lua_State *L, const BCIns *pc, uint32_t nres);
+LJ_FUNCA void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc);
#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:
L->cframe = NULL;
if (cframe_canyield(cf)) { /* Resume? */
unwindstack(L, L->top, errcode);
- lj_vm_unwind_c(cf, errcode);
+ lj_vm_unwind_c(cframe_raw(cf), errcode);
}
/* Better rethrow on main thread than panic. */
{
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 {
#define CFRAME_OFS_PREV (13*4)
#define CFRAME_OFS_L (12*4)
#define CFRAME_OFS_PC (6*4)
+#define CFRAME_OFS_MULTRES (5*4)
#define CFRAME_SIZE (12*4)
#elif LJ_TARGET_X64
#if _WIN64
@@ -71,6 +72,7 @@ enum {
#define CFRAME_OFS_L (32*4)
#define CFRAME_OFS_ERRF (31*4)
#define CFRAME_OFS_NRES (30*4)
+#define CFRAME_OFS_MULTRES (29*4)
#define CFRAME_SIZE (14*8)
#else
#define CFRAME_OFS_PREV (4*8)
@@ -78,6 +80,7 @@ enum {
#define CFRAME_OFS_L (4*4)
#define CFRAME_OFS_ERRF (3*4)
#define CFRAME_OFS_NRES (2*4)
+#define CFRAME_OFS_MULTRES (1*4)
#define CFRAME_SIZE (12*8)
#endif
#else
@@ -91,6 +94,7 @@ enum {
#define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF))
#define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES))
#define cframe_prev(cf) (*(void **)(((char *)(cf))+CFRAME_OFS_PREV))
+#define cframe_multres(cf) (*(uint32_t *)(((char *)(cf))+CFRAME_OFS_MULTRES))
#define cframe_L(cf) \
(&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
#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. */
LJ_ASMF void lj_cont_nop(void); /* Do nothing, just continue execution. */
LJ_ASMF void lj_cont_condt(void); /* Branch if result is true. */
LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */
+LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */
/* Start of the ASM code. */
LJ_ASMF char lj_vm_asm_begin[];