diff --git a/doc/api.html b/doc/api.html
index af438ad2..f20e5e21 100644
--- a/doc/api.html
+++ b/doc/api.html
@@ -258,13 +258,12 @@ side traces from the cache.
luaJIT_setmode(L, idx, LUAJIT_MODE_WRAPCFUNC|flag)
-This mode defines a wrapper function for calls to C functions. The
-first time this is called with LUAJIT_MODE_ON, the stack
-index at idx must be a lightuserdata object holding
-a pointer to the wrapper function. All subsequently created C
-functions are called through the wrapper functions. After the initial
-definition idx can be left at 0 when turning the mode
-on or off.
+This mode defines a wrapper function for calls to C functions. If
+called with LUAJIT_MODE_ON, the stack index at idx
+must be a lightuserdata object holding a pointer to the wrapper
+function. From now on all C functions are called through the wrapper
+function. If called with LUAJIT_MODE_OFF this mode is turned
+off and all C functions are directly called.
The wrapper function can be used for debugging purposes or to catch
@@ -291,38 +290,27 @@ static int wrap_exceptions(lua_State *L, lua_CFunction f)
return lua_error(L); // Rethrow as a Lua error.
}
-static int myregister(lua_State *L)
+static int myinit(lua_State *L)
{
...
// Define wrapper function and enable it.
lua_pushlightuserdata(L, (void *)wrap_exceptions);
luaJIT_setmode(L, -1, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_ON);
lua_pop(L, 1);
- luaL_register(L, "mymodule", myfuncs); // Pass luaL_Reg list.
- luaJIT_setmode(L, 0, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_OFF);
- ...
- // Wrap some more C++ functions which might throw an exception.
- luaJIT_setmode(L, 0, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_ON);
- lua_pushcfunction(L, mythrowingfunc1);
- lua_pushcclosure(L, mythrowingfunc2, 1);
- luaJIT_setmode(L, 0, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_OFF);
...
}
Note that you can only define a single global wrapper function,
so be careful when using this mechanism from multiple C++ modules.
-Also note that this mechanism is not without overhead. It should only
-be enabled for definitions of C++ functions that can actually throw
-exceptions. If you're embedding LuaJIT into an application, only
-enable it after running luaL_openlibs.
+Also note that this mechanism is not without overhead.
-LuaJIT already intercepts exception handling for all x64 systems and
-for x86 systems using DWARF2 stack unwinding (e.g. Linux, OSX). This
-is a zero-cost mechanism and always enabled. You don't need to use any
-wrapper functions, except when you want to get a more specific error
-message than "C++ exception".
+LuaJIT already intercepts exception handling for systems using DWARF2
+stack unwinding (e.g. Linux or OSX) and for Windows/x64 (but not
+for Windows/x86). This is a zero-cost mechanism and always enabled.
+You don't need to use any wrapper functions, except when you want to get
+a more specific error message than "C++ exception".
diff --git a/src/Makefile b/src/Makefile
index e3a3fbc2..5fef367a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -412,9 +412,9 @@ $(LJVM_BOUT): $(BUILDVM_T)
$(E) "BUILDVM $@"
$(Q)$(BUILDVM_X) -m $(LJVM_MODE) -o $@
-lj_bcdef.h: $(BUILDVM_T)
+lj_bcdef.h: $(BUILDVM_T) $(LJLIB_C)
$(E) "BUILDVM $@"
- $(Q)$(BUILDVM_X) -m bcdef -o $@
+ $(Q)$(BUILDVM_X) -m bcdef -o $@ $(LJLIB_C)
lj_ffdef.h: $(BUILDVM_T) $(LJLIB_C)
$(E) "BUILDVM $@"
diff --git a/src/Makefile.dep b/src/Makefile.dep
index ef64bd9a..68b4f532 100644
--- a/src/Makefile.dep
+++ b/src/Makefile.dep
@@ -14,7 +14,8 @@ lib_aux.o: lib_aux.c lua.h luaconf.h lauxlib.h lj_obj.h lj_def.h \
lj_arch.h lj_err.h lj_errmsg.h lj_state.h lj_lib.h lj_alloc.h
lib_base.o: lib_base.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h \
- lj_meta.h lj_state.h lj_ff.h lj_ffdef.h lj_ctype.h lj_lib.h lj_libdef.h
+ lj_meta.h lj_state.h lj_bc.h lj_ff.h lj_ffdef.h lj_dispatch.h lj_jit.h \
+ lj_ir.h lj_ctype.h lj_lib.h lj_libdef.h
lib_bit.o: lib_bit.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
lj_arch.h lj_err.h lj_errmsg.h lj_str.h lj_lib.h lj_libdef.h
lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
@@ -22,8 +23,8 @@ lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h
lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \
- lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_lib.h \
- lj_libdef.h
+ lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h lj_traceerr.h \
+ lj_lib.h lj_libdef.h
lib_jit.o: lib_jit.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h \
lj_obj.h lj_def.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_bc.h \
lj_ir.h lj_jit.h lj_iropt.h lj_dispatch.h lj_vm.h lj_vmevent.h lj_lib.h \
@@ -43,7 +44,7 @@ lib_table.o: lib_table.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
lj_alloc.o: lj_alloc.c lj_def.h lua.h luaconf.h lj_arch.h lj_alloc.h
lj_api.o: lj_api.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \
- lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \
+ lj_state.h lj_bc.h lj_frame.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \
lj_traceerr.h lj_vm.h lj_lex.h lj_parse.h
lj_asm.o: lj_asm.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ir.h lj_jit.h lj_iropt.h \
@@ -53,14 +54,15 @@ lj_bc.o: lj_bc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_bc.h \
lj_bcdef.h
lj_ctype.o: lj_ctype.c lj_ctype.h lj_def.h lua.h luaconf.h
lj_dispatch.o: lj_dispatch.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
- lj_err.h lj_errmsg.h lj_state.h lj_frame.h lj_bc.h lj_jit.h lj_ir.h \
- lj_trace.h lj_dispatch.h lj_traceerr.h lj_vm.h luajit.h
+ lj_err.h lj_errmsg.h lj_state.h lj_frame.h lj_bc.h lj_ff.h lj_ffdef.h \
+ lj_jit.h lj_ir.h lj_trace.h lj_dispatch.h lj_traceerr.h lj_vm.h \
+ luajit.h
lj_err.o: lj_err.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_err.h \
lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_state.h lj_frame.h lj_bc.h \
lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h
lj_func.o: lj_func.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
- lj_func.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h \
- lj_vm.h
+ lj_func.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
+ lj_traceerr.h lj_vm.h
lj_gc.o: lj_gc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \
lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \
@@ -70,14 +72,14 @@ lj_gdbjit.o: lj_gdbjit.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_ir.h lj_dispatch.h
lj_ir.o: lj_ir.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
lj_str.h lj_tab.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \
- lj_traceerr.h lj_lib.h
+ lj_bc.h lj_traceerr.h lj_lib.h
lj_lex.o: lj_lex.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
lj_err.h lj_errmsg.h lj_str.h lj_lex.h lj_parse.h lj_ctype.h
lj_lib.o: lj_lib.c lauxlib.h lua.h luaconf.h lj_obj.h lj_def.h lj_arch.h \
- lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_vm.h \
- lj_lib.h
+ lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_bc.h \
+ lj_dispatch.h lj_jit.h lj_ir.h lj_vm.h lj_lib.h
lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
- lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h \
+ lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h lj_bc.h \
lj_traceerr.h
lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_bc.h lj_vm.h
@@ -85,11 +87,11 @@ lj_obj.o: lj_obj.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h
lj_opt_dce.o: lj_opt_dce.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_ir.h lj_jit.h lj_iropt.h
lj_opt_fold.o: lj_opt_fold.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
- lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \
+ lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h lj_bc.h \
lj_traceerr.h lj_vm.h lj_folddef.h
lj_opt_loop.o: lj_opt_loop.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_err.h lj_errmsg.h lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h \
- lj_dispatch.h lj_traceerr.h lj_snap.h lj_vm.h
+ lj_dispatch.h lj_bc.h lj_traceerr.h lj_snap.h lj_vm.h
lj_opt_mem.o: lj_opt_mem.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_tab.h lj_ir.h lj_jit.h lj_iropt.h
lj_opt_narrow.o: lj_opt_narrow.c lj_obj.h lua.h luaconf.h lj_def.h \
@@ -122,21 +124,20 @@ lj_trace.o: lj_trace.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_udata.o: lj_udata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_gc.h lj_udata.h
lj_vmevent.o: lj_vmevent.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
- lj_str.h lj_tab.h lj_state.h lj_dispatch.h lj_jit.h lj_ir.h lj_vm.h \
- lj_vmevent.h
+ lj_str.h lj_tab.h lj_state.h lj_dispatch.h lj_bc.h lj_jit.h lj_ir.h \
+ lj_vm.h lj_vmevent.h
ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \
lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h \
lj_udata.h lj_meta.h lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h \
lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h lj_err.c lj_ctype.c \
lj_ctype.h lj_bc.c lj_bcdef.h lj_obj.c lj_str.c lj_tab.c lj_func.c \
lj_udata.c lj_meta.c lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c \
- luajit.h lj_vmevent.c lj_vmevent.h lj_api.c lj_parse.h lj_lex.c \
- lj_parse.c lj_lib.c lj_lib.h lj_ir.c lj_iropt.h lj_opt_mem.c \
- lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c lj_opt_loop.c \
- lj_snap.h lj_mcode.c lj_mcode.h lj_snap.c lj_target.h lj_target_x86.h \
- lj_record.c lj_ff.h lj_ffdef.h lj_record.h lj_asm.h lj_recdef.h \
- lj_asm.c lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c \
- lib_base.c lualib.h lj_libdef.h lib_math.c lib_string.c lib_table.c \
- lib_io.c lib_os.c lib_package.c lib_debug.c lib_bit.c lib_jit.c \
- lib_init.c
+ lj_ff.h lj_ffdef.h luajit.h lj_vmevent.c lj_vmevent.h lj_api.c \
+ lj_parse.h lj_lex.c lj_parse.c lj_lib.c lj_lib.h lj_ir.c lj_iropt.h \
+ lj_opt_mem.c lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c \
+ lj_opt_loop.c lj_snap.h lj_mcode.c lj_mcode.h lj_snap.c lj_target.h \
+ lj_target_x86.h lj_record.c lj_record.h lj_asm.h lj_recdef.h lj_asm.c \
+ lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c \
+ lualib.h lj_libdef.h lib_math.c lib_string.c lib_table.c lib_io.c \
+ lib_os.c lib_package.c lib_debug.c lib_bit.c lib_jit.c lib_init.c
luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h
diff --git a/src/buildvm.c b/src/buildvm.c
index 44fd2c71..dd0cbcc6 100644
--- a/src/buildvm.c
+++ b/src/buildvm.c
@@ -256,12 +256,12 @@ static void emit_bcdef(BuildCtx *ctx)
{
int i;
fprintf(ctx->fp, "/* This is a generated file. DO NOT EDIT! */\n\n");
- fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_ofs[BC__MAX+1] = {\n ");
+ fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_ofs[] = {\n");
for (i = 0; i < ctx->npc; i++) {
- fprintf(ctx->fp, " %4d,", ctx->sym_ofs[i]);
- if ((i & 7) == 7) fprintf(ctx->fp, "\n ");
+ if (i != 0)
+ fprintf(ctx->fp, ",\n");
+ fprintf(ctx->fp, "%d", ctx->sym_ofs[i]);
}
- fprintf(ctx->fp, " 0\n};\n\n");
}
/* Emit VM definitions as Lua code for debug modules. */
@@ -433,10 +433,12 @@ int main(int argc, char **argv)
break;
case BUILD_bcdef:
emit_bcdef(ctx);
+ emit_lib(ctx);
break;
case BUILD_vmdef:
emit_vmdef(ctx);
- /* fallthrough */
+ emit_lib(ctx);
+ break;
case BUILD_ffdef:
case BUILD_libdef:
case BUILD_recdef:
diff --git a/src/buildvm_lib.c b/src/buildvm_lib.c
index 3cf8f522..e77240c5 100644
--- a/src/buildvm_lib.c
+++ b/src/buildvm_lib.c
@@ -15,7 +15,7 @@ static char modname[80];
static size_t modnamelen;
static char funcname[80];
static int modstate, regfunc;
-static int ffid, recffid;
+static int ffid, recffid, ffasmfunc;
enum {
REGFUNC_OK,
@@ -77,7 +77,8 @@ static void libdef_module(BuildCtx *ctx, char *p, int arg)
libdef_endmodule(ctx);
optr = obuf;
*optr++ = (uint8_t)ffid;
- *optr++ = 0;
+ *optr++ = (uint8_t)ffasmfunc;
+ *optr++ = 0; /* Hash table size. */
modstate = 1;
fprintf(ctx->fp, "#ifdef %sMODULE_%s\n", LIBDEF_PREFIX, p);
fprintf(ctx->fp, "#undef %sMODULE_%s\n", LIBDEF_PREFIX, p);
@@ -108,8 +109,9 @@ static int find_ffofs(BuildCtx *ctx, const char *name)
static void libdef_func(BuildCtx *ctx, char *p, int arg)
{
+ if (arg != LIBINIT_CF)
+ ffasmfunc++;
if (ctx->mode == BUILD_libdef) {
- int ofs = arg != LIBINIT_CF ? find_ffofs(ctx, p) : 0;
if (modstate == 0) {
fprintf(stderr, "Error: no module for function definition %s\n", p);
exit(1);
@@ -126,12 +128,8 @@ static void libdef_func(BuildCtx *ctx, char *p, int arg)
modstate = 2;
fprintf(ctx->fp, " %s%s", arg ? LABEL_PREFIX_FFH : LABEL_PREFIX_CF, p);
}
- if (regfunc != REGFUNC_NOREGUV) obuf[1]++; /* Bump hash table size. */
+ if (regfunc != REGFUNC_NOREGUV) obuf[2]++; /* Bump hash table size. */
libdef_name(regfunc == REGFUNC_NOREGUV ? "" : p, arg);
- if (arg) {
- *optr++ = (uint8_t)ofs;
- *optr++ = (uint8_t)(ofs >> 8);
- }
}
} else if (ctx->mode == BUILD_ffdef) {
fprintf(ctx->fp, "FFDEF(%s)\n", p);
@@ -146,6 +144,9 @@ static void libdef_func(BuildCtx *ctx, char *p, int arg)
for (i = 1; p[i] && modname[i-1]; i++)
if (p[i] == '_') p[i] = '.';
fprintf(ctx->fp, "\"%s\",\n", p);
+ } else if (ctx->mode == BUILD_bcdef) {
+ if (arg != LIBINIT_CF)
+ fprintf(ctx->fp, ",\n%d", find_ffofs(ctx, p));
}
ffid++;
regfunc = REGFUNC_OK;
@@ -253,7 +254,7 @@ static void libdef_set(BuildCtx *ctx, char *p, int arg)
if (p[0] == '!' && p[1] == '\0') p[0] = '\0'; /* Set env. */
libdef_name(p, LIBINIT_STRING);
*optr++ = LIBINIT_SET;
- obuf[1]++; /* Bump hash table size. */
+ obuf[2]++; /* Bump hash table size. */
}
}
@@ -298,6 +299,7 @@ void emit_lib(BuildCtx *ctx)
if (ctx->mode == BUILD_recdef)
fprintf(ctx->fp, "static const uint16_t recff_idmap[] = {\n0,\n0x0100");
recffid = ffid = FF_C+1;
+ ffasmfunc = 0;
while ((fname = *ctx->args++)) {
char buf[256]; /* We don't care about analyzing lines longer than that. */
@@ -347,8 +349,19 @@ void emit_lib(BuildCtx *ctx)
if (ctx->mode == BUILD_ffdef) {
fprintf(ctx->fp, "\n#undef FFDEF\n\n");
+ fprintf(ctx->fp,
+ "#ifndef FF_NUM_ASMFUNC\n#define FF_NUM_ASMFUNC %d\n#endif\n\n",
+ ffasmfunc);
} else if (ctx->mode == BUILD_vmdef) {
fprintf(ctx->fp, "}\n\n");
+ } else if (ctx->mode == BUILD_bcdef) {
+ int i;
+ fprintf(ctx->fp, "\n};\n\n");
+ fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_mode[] = {\n");
+ fprintf(ctx->fp, "BCDEF(BCMODE)\n");
+ for (i = ffasmfunc-1; i > 0; i--)
+ fprintf(ctx->fp, "BCMODE_FF,\n");
+ fprintf(ctx->fp, "BCMODE_FF\n};\n\n");
} else if (ctx->mode == BUILD_recdef) {
char *p = (char *)obuf;
fprintf(ctx->fp, "\n};\n\n");
diff --git a/src/buildvm_peobj.c b/src/buildvm_peobj.c
index 5f4075af..2ff274f9 100644
--- a/src/buildvm_peobj.c
+++ b/src/buildvm_peobj.c
@@ -238,7 +238,7 @@ void emit_peobj(BuildCtx *ctx)
for (relocsyms = 0; ctx->extnames[relocsyms]; relocsyms++) ;
pehdr.nsyms = 1+PEOBJ_NSECTIONS*2 + 1+(ctx->nsym-nzsym) + relocsyms;
#if !LJ_HASJIT
- pehdr.nsyms -= 7;
+ pehdr.nsyms -= 11; /* See below, removes [IJ]* opcode symbols. */
#endif
#if LJ_TARGET_X64
pehdr.nsyms += 1; /* Symbol for lj_err_unwind_win64. */
@@ -353,8 +353,9 @@ void emit_peobj(BuildCtx *ctx)
} else {
#else
} else if (!(pi == BC_JFORI || pi == BC_JFORL || pi == BC_JITERL ||
- pi == BC_JLOOP || pi == BC_IFORL || pi == BC_IITERL ||
- pi == BC_ILOOP)) {
+ pi == BC_JLOOP || pi == BC_JFUNCF || pi == BC_JFUNCV ||
+ pi == BC_IFORL || pi == BC_IITERL || pi == BC_ILOOP ||
+ pi == BC_IFUNCF || pi == BC_IFUNCV)) {
#endif
sprintf(name, PEOBJ_SYM_PREFIX LABEL_PREFIX_BC "%s",
bc_names[pi]);
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 95af6a6c..a9e093bf 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,416 +12,396 @@
#define DASM_SECTION_CODE_OP 0
#define DASM_SECTION_CODE_SUB 1
#define DASM_MAXSECTION 2
-static const unsigned char build_actionlist[13650] = {
- 254,1,248,10,137,202,137,90,252,252,139,157,233,15,182,139,233,68,139,187,
- 233,139,108,36,16,141,12,202,59,141,233,15,135,244,11,15,182,139,233,57,200,
- 15,134,244,249,248,2,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
- 65,252,255,36,252,238,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,
- 244,3,252,233,244,2,248,12,137,89,252,252,141,28,197,237,141,148,253,25,233,
- 137,106,252,248,137,90,252,252,139,157,233,15,182,171,233,68,141,60,252,234,
- 139,108,36,16,68,59,189,233,15,135,244,13,137,208,15,182,171,233,133,252,
- 237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,68,139,121,252,
- 248,68,137,56,68,139,121,252,252,68,137,120,4,131,192,8,199,65,252,252,237,
- 131,252,237,1,15,133,244,1,248,2,68,139,187,233,255,139,3,15,182,204,15,182,
- 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,199,64,4,237,131,192,
- 8,131,252,237,1,15,133,244,3,252,233,244,2,248,14,137,89,252,252,76,139,189,
- 233,139,108,36,16,141,68,193,252,248,137,141,233,141,136,233,137,133,233,
- 59,141,233,76,137,252,254,137,252,239,15,135,244,15,65,199,134,233,237,65,
- 252,255,150,233,65,199,134,233,237,139,149,233,255,141,12,194,252,247,217,
- 3,141,233,248,16,131,192,1,137,68,36,4,252,247,195,237,15,132,244,17,252,
- 233,244,18,248,19,137,89,252,252,76,139,189,233,139,108,36,16,141,68,193,
- 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,252,239,15,135,
- 244,15,65,199,134,233,237,65,252,255,215,65,199,134,233,237,139,149,233,255,
- 141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,4,252,247,195,
- 237,15,132,244,17,248,18,252,247,195,237,15,132,244,20,65,199,134,233,237,
- 131,227,252,248,41,211,252,247,219,131,232,1,15,132,244,248,248,1,139,44,
- 10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,1,15,133,
- 244,1,248,2,139,108,36,16,137,157,233,248,3,139,68,36,4,139,76,36,8,248,4,
- 255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,21,72,139,76,
- 36,32,72,137,141,233,49,192,248,22,72,131,196,40,65,94,65,95,91,93,195,248,
- 6,15,130,244,253,59,149,233,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,255,137,149,233,137,68,36,4,137,206,137,252,239,232,251,1,0,139,
- 149,233,252,233,244,3,248,23,137,252,240,72,137,252,252,248,24,139,108,36,
- 16,139,173,233,199,133,233,237,252,233,244,22,248,25,72,129,231,239,72,137,
- 252,252,248,26,139,108,36,16,72,199,193,252,248,252,255,252,255,252,255,184,
- 237,139,149,233,68,139,181,233,65,129,198,239,139,90,252,252,199,66,252,252,
- 237,65,199,134,233,237,255,252,233,244,16,248,20,252,247,195,237,15,132,244,
- 27,131,227,252,248,41,218,72,141,76,25,252,248,139,90,252,252,199,68,10,4,
- 237,252,233,244,16,248,15,190,237,252,233,244,247,248,13,137,202,248,11,141,
- 68,194,252,248,15,182,139,233,131,195,4,137,149,233,137,133,233,137,92,36,
- 20,137,206,248,1,137,252,239,232,251,1,0,139,141,233,255,139,133,233,139,
- 105,252,248,139,89,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248,
- 28,85,83,65,87,65,86,72,131,252,236,40,137,252,253,137,124,36,16,137,252,
- 241,187,237,49,192,76,141,188,253,36,233,68,139,181,233,65,129,198,239,76,
- 137,189,233,137,68,36,20,72,137,68,36,32,137,68,36,8,137,68,36,12,56,133,
- 233,15,132,244,249,65,199,134,233,237,136,133,233,139,149,233,139,133,233,
- 41,200,193,232,3,131,192,1,41,209,139,90,252,252,137,68,36,4,252,247,195,
- 237,15,132,244,17,252,233,244,18,248,29,255,85,83,65,87,65,86,72,131,252,
- 236,40,187,237,137,76,36,12,252,233,244,247,248,30,85,83,65,87,65,86,72,131,
- 252,236,40,187,237,248,1,137,84,36,8,137,252,253,137,124,36,16,137,252,241,
- 248,2,76,139,189,233,76,137,124,36,32,137,108,36,20,72,137,165,233,68,139,
- 181,233,65,129,198,239,248,3,65,199,134,233,237,139,149,233,1,203,41,211,
- 139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,
- 239,15,133,244,31,252,255,165,233,248,32,255,85,83,65,87,65,86,72,131,252,
- 236,40,137,252,253,137,124,36,16,137,108,36,20,68,139,189,233,68,43,189,233,
- 199,68,36,12,0,0,0,0,68,137,124,36,8,76,139,189,233,76,137,124,36,32,72,137,
- 165,233,252,255,209,133,192,15,132,244,21,137,193,187,237,252,233,244,2,248,
- 27,1,209,131,227,252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,
- 93,252,244,72,99,77,252,240,76,141,61,245,76,1,252,249,68,139,122,252,248,
- 69,139,191,233,69,139,191,233,252,255,225,248,33,15,182,75,252,255,131,252,
- 237,16,141,12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,139,
- 124,36,16,137,151,233,137,202,139,72,4,139,0,137,77,4,137,69,0,137,252,238,
- 252,233,244,35,248,36,255,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,
- 252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137,205,252,233,
- 244,248,248,37,15,182,67,252,254,255,252,242,15,42,192,252,242,15,17,4,36,
- 255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141,4,194,248,1,
- 15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,137,151,233,137,252,
- 238,72,137,194,137,252,253,137,92,36,20,232,251,1,1,139,149,233,133,192,15,
- 132,244,249,248,34,15,182,75,252,253,139,104,4,139,0,137,108,202,4,137,4,
- 202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
- 248,3,139,141,233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,3,
- 0,0,0,252,255,165,233,248,39,137,4,36,199,68,36,4,237,72,141,4,36,128,123,
- 252,252,235,15,133,244,247,65,141,142,233,255,137,41,199,65,4,237,137,205,
- 252,233,244,248,248,40,15,182,67,252,254,255,72,141,4,36,252,233,244,247,
- 248,41,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,
- 248,2,139,124,36,16,137,151,233,137,252,238,72,137,194,137,252,253,137,92,
- 36,20,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,75,252,253,139,
- 108,202,4,139,12,202,137,104,4,137,8,248,42,139,3,15,182,204,15,182,232,131,
- 195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,15,
- 182,67,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,153,233,41,
- 211,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,139,108,36,16,137,
- 149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,20,
- 232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255,141,91,
- 4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3,
- 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,45,131,
- 195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120,253,4,239,
- 252,233,244,4,248,47,131,252,235,4,137,206,137,252,233,139,108,36,16,137,
- 149,233,137,194,137,252,239,137,92,36,20,232,251,1,4,252,233,244,3,248,48,
- 255,65,141,4,199,252,233,244,247,248,49,65,141,4,199,141,44,252,234,149,252,
- 233,244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141,4,194,248,
- 1,141,44,252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,137,193,139,
- 124,36,16,137,151,233,137,252,234,137,252,253,137,92,36,20,232,251,1,5,139,
- 149,233,133,192,15,132,244,42,248,44,137,193,41,208,137,89,252,244,141,152,
- 233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,244,31,255,
- 252,255,165,233,248,52,139,108,36,16,137,149,233,141,52,194,137,252,239,137,
- 92,36,20,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76,36,4,137,4,
- 36,131,252,233,8,139,108,36,16,137,149,233,137,206,141,20,193,137,252,239,
- 137,92,36,20,232,251,1,7,139,149,233,139,76,36,4,139,4,36,139,105,252,248,
- 131,192,1,65,57,215,15,132,244,53,252,255,165,233,248,54,139,108,36,16,137,
- 149,233,137,206,137,252,239,137,92,36,20,232,251,1,8,139,149,233,139,67,252,
- 252,15,182,204,15,182,232,193,232,16,65,252,255,164,253,252,238,233,248,55,
- 129,252,248,239,15,130,244,56,255,139,105,4,129,252,253,239,15,131,244,56,
- 137,68,36,4,137,105,252,252,139,41,137,105,252,248,131,232,2,15,132,244,248,
- 137,12,36,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,12,36,248,2,139,68,36,4,252,233,244,57,248,58,
- 129,252,248,239,15,130,244,56,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,59,248,60,129,252,248,239,
- 15,130,244,56,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,59,139,65,252,248,65,
- 139,134,233,199,65,252,252,237,137,105,252,248,137,12,36,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,
- 59,248,5,139,105,4,129,252,253,239,15,132,244,59,255,139,1,139,12,36,137,
- 105,252,252,137,65,252,248,252,233,244,59,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,65,139,172,253,
- 174,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,129,121,253,4,
- 239,15,133,244,56,255,139,41,131,189,233,0,15,133,244,56,129,121,253,12,239,
- 15,133,244,56,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,65,139,134,233,65,137,174,
- 233,137,133,233,248,1,252,233,244,59,248,62,255,129,252,248,239,15,130,244,
- 56,129,121,253,4,239,15,133,244,56,137,20,36,137,205,139,49,141,81,8,139,
- 124,36,16,232,251,1,9,137,252,233,139,20,36,139,40,139,64,4,137,105,252,248,
- 137,65,252,252,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,121,
- 253,4,239,15,135,244,56,255,252,242,15,16,1,252,233,244,64,255,221,1,252,
- 233,244,65,255,248,66,129,252,248,239,15,130,244,56,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,59,
- 248,3,129,121,253,4,239,15,135,244,56,65,131,190,233,0,15,133,244,56,65,139,
- 174,233,65,59,174,233,255,15,130,244,247,232,244,67,248,1,139,108,36,16,137,
- 141,233,137,89,252,252,137,92,36,20,137,20,36,137,206,137,252,239,232,251,
- 1,10,139,141,233,139,20,36,252,233,244,2,248,68,129,252,248,239,15,130,244,
- 56,15,132,244,248,248,1,129,121,253,4,239,15,133,244,56,137,20,36,139,49,
- 139,108,36,16,137,141,233,255,137,89,252,252,141,81,8,137,252,239,137,92,
- 36,20,232,251,1,11,139,141,233,139,20,36,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,69,184,237,252,233,244,70,248,2,199,65,12,237,252,233,244,1,248,
- 3,199,65,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56,
- 129,121,253,4,239,255,15,133,244,56,139,133,233,199,65,252,252,237,137,65,
- 252,248,199,65,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,255,
- 252,242,15,16,65,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,
- 242,15,45,192,252,242,15,17,65,252,248,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,73,139,40,139,64,4,
- 137,41,137,65,4,252,233,244,69,248,2,131,189,233,0,15,132,244,73,137,20,36,
- 137,252,239,137,205,137,198,232,251,1,12,137,252,233,139,20,36,133,192,15,
- 133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,133,244,56,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,70,248,75,129,252,248,239,15,130,244,56,137,89,252,252,
- 187,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,65,252,246,134,
- 233,235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,31,252,255,
- 165,233,248,3,131,195,1,252,233,244,2,248,76,255,129,252,248,239,15,130,244,
- 56,129,121,253,12,239,15,133,244,56,137,89,252,252,139,105,4,137,105,12,199,
- 65,4,237,139,41,139,89,8,137,105,8,137,25,187,237,137,202,129,193,239,131,
- 232,2,252,233,244,1,248,9,139,92,36,20,252,233,244,56,248,77,129,252,248,
- 239,15,130,244,56,139,41,137,89,252,252,137,92,36,20,137,44,36,129,121,253,
- 4,239,15,133,244,9,255,72,131,189,233,0,15,133,244,9,128,189,233,235,15,135,
- 244,9,139,157,233,137,92,36,4,15,132,244,247,59,157,233,15,132,244,9,248,
- 1,141,92,195,252,240,59,157,233,15,135,244,9,137,157,233,139,108,36,16,137,
- 141,233,131,193,8,137,141,233,255,139,108,36,4,141,76,193,232,72,41,217,57,
- 252,235,15,132,244,249,248,2,139,68,11,4,137,67,252,252,139,4,11,137,67,252,
- 248,131,252,235,8,57,252,235,15,133,244,2,248,3,139,60,36,139,116,36,4,232,
- 244,28,65,199,134,233,237,139,108,36,16,139,28,36,139,149,233,129,252,248,
- 239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68,137,252,
- 251,41,203,15,132,244,252,255,141,4,26,193,252,235,3,59,133,233,15,135,244,
- 255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,
- 68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,139,92,
- 36,20,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,195,
- 237,15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,139,233,131,
- 252,233,8,137,139,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,
- 248,9,255,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,149,
- 233,252,233,244,4,248,9,139,92,36,20,252,233,244,56,248,78,139,173,233,137,
- 89,252,252,137,92,36,20,137,44,36,72,131,189,233,0,15,133,244,9,128,189,233,
- 235,15,135,244,9,139,157,233,137,92,36,4,15,132,244,247,59,157,233,255,15,
- 132,244,9,248,1,141,92,195,252,248,59,157,233,15,135,244,9,137,157,233,139,
- 108,36,16,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,72,41,217,
- 57,252,235,15,132,244,249,248,2,139,68,11,4,137,67,252,252,139,4,11,137,67,
- 252,248,131,252,235,8,57,252,235,15,133,244,2,248,3,139,60,36,139,116,36,
- 4,232,244,28,65,199,134,233,237,139,108,36,16,139,28,36,139,149,233,255,129,
- 252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68,
- 137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,135,
- 244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,
- 8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,20,137,68,36,
- 4,49,201,252,247,195,237,15,132,244,17,255,252,233,244,18,248,8,137,222,137,
- 252,239,232,251,1,13,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,
- 251,1,0,139,149,233,252,233,244,4,248,79,139,108,36,16,137,89,252,252,72,
- 252,247,133,233,237,15,132,244,56,137,141,233,141,68,193,252,248,137,133,
- 233,49,192,72,137,133,233,176,235,136,133,233,252,233,244,22,255,248,65,221,
- 89,252,248,252,233,244,59,248,80,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,252,242,15,16,1,72,184,237,237,102,72,15,110,200,15,84,
- 193,248,64,252,242,15,17,65,252,248,255,248,80,129,252,248,239,15,130,244,
- 56,129,121,253,4,239,15,135,244,56,221,1,217,225,248,64,248,65,221,89,252,
- 248,255,248,59,184,237,248,70,137,68,36,4,248,57,252,247,195,237,15,133,244,
- 253,248,5,56,67,252,255,15,135,244,252,139,3,15,182,204,15,182,232,131,195,
- 4,193,232,16,65,252,255,36,252,238,248,6,199,68,193,252,244,237,131,192,1,
- 252,233,244,5,248,7,137,202,72,199,193,252,248,252,255,252,255,252,255,252,
- 233,244,18,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
- 135,244,56,252,242,15,81,1,252,233,244,64,248,82,129,252,248,239,15,130,244,
- 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,83,252,233,244,
- 64,248,84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,252,242,15,16,1,232,244,85,252,233,244,64,255,248,81,129,252,248,239,15,
- 130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,250,252,233,244,
- 65,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,
- 1,232,244,83,252,233,244,65,248,84,255,129,252,248,239,15,130,244,56,129,
- 121,253,4,239,15,135,244,56,221,1,232,244,85,252,233,244,65,255,248,86,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252,237,221,
- 1,217,252,241,252,233,244,65,248,87,129,252,248,239,15,130,244,56,129,121,
- 253,4,239,15,135,244,56,217,252,236,221,1,217,252,241,252,233,244,65,248,
- 88,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,
- 1,232,244,89,252,233,244,65,248,90,129,252,248,239,15,130,244,56,129,121,
- 253,4,239,15,135,244,56,221,1,217,252,254,252,233,244,65,248,91,129,252,248,
- 239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,255,252,
- 233,244,65,248,92,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
- 244,56,221,1,217,252,242,221,216,252,233,244,65,248,93,129,252,248,239,15,
- 130,244,56,255,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,
- 232,222,225,217,252,250,217,252,243,252,233,244,65,248,94,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,232,
- 222,225,217,252,250,217,201,217,252,243,252,233,244,65,248,95,129,252,248,
- 239,15,130,244,56,129,121,253,4,239,15,135,244,56,255,221,1,217,232,217,252,
- 243,252,233,244,65,255,248,96,129,252,248,239,15,130,244,56,129,121,253,4,
- 239,15,135,244,56,252,242,15,16,1,255,137,12,36,137,213,232,251,1,14,139,
- 12,36,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,244,56,
- 129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,137,12,36,137,213,232,
- 251,1,15,139,12,36,137,252,234,252,233,244,64,255,248,98,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,137,12,
- 36,137,213,232,251,1,16,139,12,36,137,252,234,252,233,244,64,248,99,255,248,
- 100,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,
- 15,16,1,252,242,15,89,133,233,252,233,244,64,255,248,100,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,220,141,233,252,233,244,
- 65,255,248,101,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,217,252,243,252,233,244,
- 65,248,102,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,
- 129,121,253,12,239,255,15,135,244,56,221,65,8,221,1,217,252,253,221,217,252,
- 233,244,65,248,103,129,252,248,239,15,130,244,56,139,105,4,129,252,253,239,
- 15,135,244,56,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,44,36,219,4,36,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,70,248,3,255,15,87,192,252,233,244,2,255,217,252,
- 238,252,233,244,2,255,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,
- 242,15,89,193,252,242,15,17,65,252,248,255,221,1,199,4,36,0,0,128,90,216,
- 12,36,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244,
- 1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,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,105,252,242,15,92,224,248,1,252,242,
- 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,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,70,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,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223,
- 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15,
- 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,
- 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248,
- 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,
- 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248,
- 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,
- 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252,
- 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131,
- 197,1,252,233,244,1,255,248,110,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,
- 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252,
- 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,
- 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,
- 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233,
- 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133,
- 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42,
- 197,252,233,244,64,255,137,44,36,219,4,36,252,233,244,65,255,248,113,65,139,
- 174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,129,252,248,239,15,
- 133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252,255,
- 0,0,0,15,135,244,56,137,68,36,4,255,221,1,219,92,36,4,129,124,36,4,252,255,
- 0,0,0,15,135,244,56,255,199,68,36,24,1,0,0,0,72,141,68,36,4,137,12,36,248,
- 114,139,108,36,16,137,149,233,139,84,36,24,72,137,198,137,252,239,137,92,
- 36,20,232,251,1,17,139,12,36,139,149,233,199,65,252,252,237,137,65,252,248,
- 252,233,244,59,248,115,65,139,174,233,65,59,174,233,15,130,244,247,232,244,
- 67,248,1,137,12,36,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,
- 239,15,130,244,56,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105,
- 16,137,108,36,4,255,221,65,16,219,92,36,4,255,248,1,129,121,253,4,239,15,
- 133,244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36,24,139,173,
- 233,255,252,242,15,45,73,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,
- 201,15,142,244,253,248,3,139,108,36,24,41,200,15,140,244,116,141,172,253,
- 13,233,131,192,1,248,4,137,68,36,24,137,232,252,233,244,114,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,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,65,139,
- 174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,255,137,12,36,129,121,
- 253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255,252,242,
- 15,45,65,8,255,221,65,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,116,
- 131,189,233,1,15,130,244,116,15,133,244,118,65,57,134,233,15,130,244,118,
- 15,182,141,233,65,139,174,233,137,68,36,24,248,1,136,77,0,131,197,1,131,232,
- 1,15,133,244,1,65,139,134,233,252,233,244,114,248,119,129,252,248,239,255,
- 15,130,244,56,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,
- 1,137,12,36,129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15,
- 132,244,116,65,57,134,233,15,130,244,120,129,197,239,137,92,36,4,137,68,36,
- 24,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133,
- 244,1,137,216,139,92,36,4,252,233,244,114,248,121,129,252,248,239,15,130,
- 244,56,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,137,12,
- 36,129,121,253,4,239,15,133,244,56,139,41,139,133,233,65,57,134,233,255,15,
- 130,244,120,129,197,239,137,92,36,4,137,68,36,24,65,139,158,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,3,248,3,131,232,1,15,137,244,1,137,216,
- 139,92,36,4,252,233,244,114,248,122,129,252,248,239,15,130,244,56,255,65,
- 139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,137,12,36,129,121,
- 253,4,239,15,133,244,56,139,41,139,133,233,65,57,134,233,15,130,244,120,129,
- 197,239,137,92,36,4,137,68,36,24,65,139,158,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,3,248,3,131,232,1,15,137,244,1,137,216,139,92,
- 36,4,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4,
- 239,15,133,244,56,137,20,36,137,205,139,57,232,251,1,18,137,252,233,139,20,
- 36,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237,237,102,
- 72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,
- 244,64,255,248,125,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
- 244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
- 102,15,126,197,255,137,68,36,4,141,68,193,252,240,255,137,20,36,255,248,1,
- 57,200,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,
- 0,252,242,15,88,193,102,15,126,194,33,213,255,131,232,8,252,233,244,1,255,
- 248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,
- 242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,
- 197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,255,248,129,
- 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,
- 16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
- 252,242,15,16,0,252,242,15,88,193,102,15,126,194,49,213,255,248,130,129,252,
- 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,
- 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,
- 252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,
- 88,193,102,15,126,197,255,252,247,213,255,248,131,252,242,15,42,197,252,233,
- 244,64,248,126,252,242,15,42,197,139,20,36,252,233,244,64,255,248,127,255,
- 139,68,36,4,252,233,244,56,255,248,133,129,252,248,239,15,130,244,56,129,
- 121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,
- 1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
+static const unsigned char build_actionlist[13578] = {
+ 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
+ 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
+ 252,247,195,237,15,132,244,13,248,14,252,247,195,237,15,132,244,10,65,199,
+ 134,233,237,131,227,252,248,41,211,252,247,219,131,232,1,15,132,244,248,248,
+ 1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
+ 1,15,133,244,1,248,2,255,139,108,36,16,137,157,233,248,3,139,68,36,4,139,
+ 76,36,8,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,15,
+ 72,139,76,36,32,72,137,141,233,49,192,248,16,72,131,196,40,65,94,65,95,91,
+ 93,195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,
+ 131,194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,
+ 20,202,252,233,244,5,248,8,137,149,233,137,68,36,4,137,206,137,252,239,232,
+ 251,1,0,139,149,233,252,233,244,3,248,17,137,252,240,72,137,252,252,248,18,
+ 139,108,36,16,139,173,233,199,133,233,237,252,233,244,16,248,19,72,129,231,
+ 239,72,137,252,252,248,20,139,108,36,16,72,199,193,252,248,252,255,252,255,
+ 252,255,184,237,255,139,149,233,68,139,181,233,65,129,198,239,139,90,252,
+ 252,199,66,252,252,237,65,199,134,233,237,252,233,244,12,248,21,190,237,252,
+ 233,244,248,248,22,131,232,8,252,233,244,247,248,23,141,68,194,252,248,248,
+ 1,15,182,139,233,131,195,4,137,149,233,137,133,233,255,137,92,36,20,137,206,
+ 248,2,137,252,239,232,251,1,0,139,149,233,139,133,233,139,106,252,248,139,
+ 90,252,252,41,208,193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,
+ 182,205,131,195,4,65,252,255,36,252,238,248,24,85,83,65,87,65,86,72,131,252,
+ 236,40,137,252,253,137,124,36,16,137,252,241,187,237,49,192,76,141,188,253,
+ 36,233,68,139,181,233,65,129,198,239,76,137,189,233,137,68,36,20,72,137,68,
+ 36,32,137,68,36,8,137,68,36,12,56,133,233,15,132,244,249,65,199,134,233,237,
+ 136,133,233,139,149,233,139,133,233,41,200,193,232,3,131,192,1,41,209,139,
+ 90,252,252,137,68,36,4,252,247,195,237,15,132,244,13,255,252,233,244,14,248,
+ 25,85,83,65,87,65,86,72,131,252,236,40,187,237,137,76,36,12,252,233,244,247,
+ 248,26,85,83,65,87,65,86,72,131,252,236,40,187,237,248,1,137,84,36,8,137,
+ 252,253,137,124,36,16,137,252,241,248,2,76,139,189,233,76,137,124,36,32,137,
+ 108,36,20,72,137,165,233,68,139,181,233,65,129,198,239,248,3,65,199,134,233,
+ 237,139,149,233,1,203,41,211,139,133,233,41,200,193,232,3,131,192,1,248,27,
+ 255,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,29,137,202,
+ 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,
+ 252,255,36,252,238,248,30,85,83,65,87,65,86,72,131,252,236,40,137,252,253,
+ 137,124,36,16,137,108,36,20,68,139,189,233,68,43,189,233,199,68,36,12,0,0,
+ 0,0,68,137,124,36,8,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,
+ 209,133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,
+ 227,252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,
+ 72,99,77,252,240,76,141,61,245,76,1,252,249,68,139,122,252,248,69,139,191,
+ 233,255,69,139,191,233,252,255,225,248,31,15,182,75,252,255,131,252,237,16,
+ 141,12,202,41,252,233,15,132,244,32,252,247,217,193,252,233,3,139,124,36,
+ 16,137,151,233,137,202,139,72,4,139,0,137,77,4,137,69,0,137,252,238,252,233,
+ 244,33,248,34,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,
+ 133,244,247,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,
+ 35,15,182,67,252,254,255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,
+ 4,36,252,233,244,247,248,36,15,182,67,252,254,141,4,194,248,1,15,182,107,
+ 252,255,141,44,252,234,248,2,139,124,36,16,137,151,233,137,252,238,72,137,
+ 194,137,252,253,137,92,36,20,232,251,1,1,139,149,233,133,192,15,132,244,249,
+ 248,32,15,182,75,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,3,15,
+ 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,
+ 233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,237,252,233,244,
+ 29,248,37,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,
+ 244,247,255,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,
+ 38,15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,39,15,182,67,252,
+ 254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,
+ 137,151,233,137,252,238,72,137,194,137,252,253,137,92,36,20,232,251,1,2,139,
+ 149,233,133,192,15,132,244,249,15,182,75,252,253,139,108,202,4,139,12,202,
+ 137,104,4,137,8,248,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
+ 252,255,36,252,238,248,3,139,141,233,137,89,252,244,15,182,67,252,253,139,
+ 108,194,4,139,4,194,137,105,20,137,65,16,141,153,233,41,211,139,105,252,248,
+ 184,237,252,233,244,29,248,41,139,108,36,16,137,149,233,141,52,202,141,20,
+ 194,137,252,239,15,182,75,252,252,137,92,36,20,232,251,1,3,248,3,139,149,
+ 233,255,131,252,248,1,15,135,244,42,248,4,141,91,4,15,130,244,252,248,5,15,
+ 183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15,182,232,131,
+ 195,4,193,232,16,65,252,255,36,252,238,248,43,131,195,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,235,4,137,206,137,252,233,139,108,36,16,137,149,233,255,137,194,137,
+ 252,239,137,92,36,20,232,251,1,4,252,233,244,3,248,46,65,141,4,199,252,233,
+ 244,247,248,47,65,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,68,15,182,67,252,252,137,206,137,193,139,124,36,16,137,151,233,
+ 137,252,234,137,252,253,137,92,36,20,232,251,1,5,139,149,233,133,192,15,132,
+ 244,40,248,42,137,193,41,208,137,89,252,244,141,152,233,255,184,237,252,233,
+ 244,27,248,50,139,108,36,16,137,149,233,141,52,194,137,252,239,137,92,36,
+ 20,232,251,1,6,139,149,233,252,233,244,42,248,51,141,76,202,8,248,28,137,
+ 76,36,4,137,4,36,131,252,233,8,139,108,36,16,137,149,233,137,206,141,20,193,
+ 137,252,239,137,92,36,20,232,251,1,7,139,149,233,139,76,36,4,139,4,36,139,
+ 105,252,248,131,192,1,65,57,215,15,132,244,52,137,202,137,90,252,252,139,
+ 157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,
+ 248,53,139,108,36,16,137,149,233,137,206,137,252,239,137,92,36,20,232,251,
+ 1,8,139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,
+ 164,253,252,238,233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,
+ 252,253,239,15,131,244,55,139,90,252,252,137,68,36,4,137,106,252,252,139,
+ 42,137,106,252,248,131,232,2,15,132,244,248,137,209,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,248,2,139,
+ 68,36,4,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,
+ 237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,
+ 139,106,252,248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,
+ 66,252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,
+ 139,90,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,
+ 2,133,252,237,199,66,252,252,237,15,132,244,58,65,139,134,233,199,66,252,
+ 252,237,137,106,252,248,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,58,248,5,139,105,4,129,252,253,239,
+ 15,132,244,58,255,139,1,137,106,252,252,137,66,252,248,252,233,244,58,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,65,139,172,253,174,233,252,233,244,2,248,60,129,252,248,239,
+ 15,130,244,55,129,122,253,4,239,15,133,244,55,255,139,42,131,189,233,0,15,
+ 133,244,55,129,122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,90,252,
+ 252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,
+ 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,248,1,252,233,244,
+ 58,248,61,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,
+ 55,137,213,139,50,141,82,8,139,124,36,16,232,251,1,9,137,252,234,139,40,139,
+ 64,4,139,90,252,252,137,106,252,248,137,66,252,252,252,233,244,58,248,62,
+ 129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,
+ 15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,129,252,248,239,
+ 15,130,244,55,139,90,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,
+ 199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,122,253,4,239,
+ 15,135,244,55,65,131,190,233,0,15,133,244,55,65,139,174,233,65,59,174,233,
+ 255,15,130,244,247,232,244,66,248,1,139,108,36,16,137,149,233,137,92,36,20,
+ 137,214,137,252,239,232,251,1,10,139,149,233,252,233,244,2,248,67,129,252,
+ 248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15,133,244,55,
+ 139,108,36,16,137,149,233,255,139,90,252,252,139,50,141,82,8,137,252,239,
+ 137,92,36,20,232,251,1,11,139,149,233,133,192,15,132,244,249,139,106,8,139,
+ 66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,
+ 248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,233,244,1,248,3,199,
+ 66,252,252,237,252,233,244,58,248,70,129,252,248,239,15,130,244,55,139,106,
+ 252,248,129,122,253,4,239,255,15,133,244,55,139,133,233,139,90,252,252,199,
+ 66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,69,248,71,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,129,122,253,
+ 12,239,15,135,244,55,139,90,252,252,255,252,242,15,16,66,8,72,189,237,237,
+ 102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,
+ 248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
+ 253,4,239,15,132,244,72,139,40,139,64,4,137,42,137,66,4,252,233,244,68,248,
+ 2,131,189,233,0,15,132,244,72,137,252,239,137,213,137,198,232,251,1,12,137,
+ 252,234,133,192,15,133,244,1,248,72,184,237,252,233,244,69,248,73,255,129,
+ 252,248,239,15,130,244,55,139,106,252,248,129,122,253,4,239,15,133,244,55,
+ 139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,255,15,87,192,
+ 252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,69,248,
+ 74,129,252,248,239,15,130,244,55,141,74,8,131,232,1,187,237,248,1,65,15,182,
+ 174,233,193,252,237,235,131,229,1,1,252,235,252,233,244,27,248,75,129,252,
+ 248,239,15,130,244,55,129,122,253,12,239,15,133,244,55,255,139,106,4,137,
+ 106,12,199,66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,
+ 187,237,252,233,244,1,248,76,129,252,248,239,15,130,244,55,139,42,139,90,
+ 252,252,137,92,36,20,137,44,36,129,122,253,4,239,15,133,244,55,72,131,189,
+ 233,0,15,133,244,55,128,189,233,235,15,135,244,55,139,141,233,15,132,244,
+ 247,255,59,141,233,15,132,244,55,248,1,141,92,193,252,240,59,157,233,15,135,
+ 244,55,137,157,233,139,108,36,16,137,149,233,131,194,8,137,149,233,141,108,
+ 194,232,72,41,221,57,203,15,132,244,249,248,2,139,68,43,4,137,67,252,252,
+ 139,4,43,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,139,
+ 60,36,232,244,24,65,199,134,233,237,255,139,108,36,16,139,28,36,139,149,233,
+ 129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,
+ 68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,
+ 135,244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,
+ 193,8,68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,
+ 139,92,36,20,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,
+ 195,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,139,
+ 233,131,252,233,8,137,139,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,
+ 244,7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,
+ 149,233,252,233,244,4,248,77,139,106,252,248,139,173,233,139,90,252,252,137,
+ 92,36,20,137,44,36,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,
+ 135,244,55,139,141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,
+ 92,193,252,248,59,157,233,15,135,244,55,137,157,233,139,108,36,16,137,149,
+ 233,137,149,233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,
+ 255,139,68,43,4,137,67,252,252,139,4,43,137,67,252,248,131,252,235,8,57,203,
+ 15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,139,108,
+ 36,16,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,
+ 233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,
+ 26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,139,
+ 1,137,4,41,139,65,4,137,68,41,4,131,193,8,68,57,252,249,15,133,244,5,248,
+ 6,141,67,1,248,7,139,92,36,20,137,68,36,4,49,201,252,247,195,237,15,132,244,
+ 13,252,233,244,14,248,8,137,222,137,252,239,232,251,1,13,248,9,139,12,36,
+ 68,137,185,233,137,222,137,252,239,232,251,1,0,139,149,233,252,233,244,4,
+ 248,78,139,108,36,16,72,252,247,133,233,237,15,132,244,55,255,137,149,233,
+ 141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,
+ 252,233,244,16,255,248,64,139,90,252,252,221,90,252,248,252,233,244,58,248,
+ 79,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
+ 15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,63,139,90,252,252,
+ 252,242,15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,
+ 253,4,239,15,135,244,55,221,2,217,225,248,63,248,64,139,90,252,252,221,90,
+ 252,248,255,248,58,184,237,248,69,137,68,36,4,248,56,252,247,195,237,15,133,
+ 244,253,248,5,56,67,252,255,15,135,244,252,15,182,75,252,253,72,252,247,209,
+ 141,20,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
+ 252,238,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,
+ 193,252,248,252,255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,
+ 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,
+ 244,63,248,81,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,252,242,15,16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,
+ 233,244,63,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,221,2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,
+ 244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,
+ 83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
+ 2,232,244,84,252,233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,
+ 248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,
+ 252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,248,239,255,15,130,
+ 244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,
+ 89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,
+ 252,254,252,233,244,64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,
+ 4,239,15,135,244,55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,
+ 15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,
+ 233,244,64,248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,
+ 135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
+ 252,233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
+ 252,243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,
+ 239,15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
+ 16,2,255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248,96,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,
+ 137,213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129,252,248,239,
+ 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,213,
+ 232,251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129,252,248,239,
+ 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,139,106,252,
+ 248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248,239,15,130,
+ 244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220,141,233,
+ 252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122,253,4,239,
+ 15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217,252,243,
+ 252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217,252,253,
+ 221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139,106,4,129,
+ 252,253,239,15,135,244,55,139,90,252,252,139,2,137,106,252,252,137,66,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,44,36,219,4,36,255,139,106,252,252,129,
+ 229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,
+ 242,15,17,2,255,221,26,255,184,237,252,233,244,69,248,3,255,15,87,192,252,
+ 233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,72,
+ 189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,66,252,248,
+ 255,221,2,199,4,36,0,0,128,90,216,12,36,221,90,252,248,255,139,106,252,252,
+ 184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,248,103,129,252,248,
+ 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,255,139,106,4,139,
+ 90,252,252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,
+ 232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,
+ 34,255,217,192,232,244,104,220,252,233,248,1,221,90,252,248,221,26,255,139,
+ 66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,69,248,
+ 3,129,252,245,0,0,0,128,137,106,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,105,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
+ 55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
+ 233,244,64,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
+ 74,8,232,244,107,252,233,244,63,255,248,106,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,
+ 66,8,232,244,107,252,233,244,64,255,248,108,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,
+ 15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,242,15,16,
+ 76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,109,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
+ 16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,
+ 15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,
+ 1,252,233,244,1,255,248,5,221,216,252,233,244,55,255,248,110,129,252,248,
+ 239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42,255,252,242,15,42,
+ 133,233,252,233,244,63,255,219,133,233,252,233,244,64,255,248,111,129,252,
+ 248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139,42,139,90,252,252,
+ 131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,15,42,197,252,233,
+ 244,63,255,137,44,36,219,4,36,252,233,244,64,255,248,112,65,139,174,233,65,
+ 59,174,233,15,130,244,247,232,244,66,248,1,129,252,248,239,15,133,244,55,
+ 129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61,252,255,0,0,0,15,135,
+ 244,55,137,68,36,4,255,221,2,219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,
+ 244,55,255,199,68,36,24,1,0,0,0,72,141,68,36,4,248,113,139,108,36,16,137,
+ 149,233,139,84,36,24,72,137,198,137,252,239,137,92,36,20,232,251,1,17,139,
+ 149,233,139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,58,248,
+ 114,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,199,68,36,
+ 4,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,55,15,134,244,
+ 247,129,122,253,20,239,255,252,242,15,45,106,16,137,108,36,4,255,221,66,16,
+ 219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,55,129,122,253,12,239,
+ 15,135,244,55,139,42,137,108,36,24,139,173,233,255,252,242,15,45,74,8,255,
+ 139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,
+ 108,36,24,41,200,15,140,244,115,141,172,253,13,233,131,192,1,248,4,137,68,
+ 36,24,137,232,252,233,244,113,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,115,49,192,252,233,244,
+ 4,248,116,129,252,248,239,15,130,244,55,65,139,174,233,65,59,174,233,15,130,
+ 244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,55,129,122,253,
+ 12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,66,8,219,92,36,
+ 4,139,68,36,4,255,133,192,15,142,244,115,131,189,233,1,15,130,244,115,15,
+ 133,244,117,65,57,134,233,15,130,244,117,15,182,141,233,65,139,174,233,137,
+ 68,36,24,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,
+ 233,244,113,248,118,129,252,248,239,255,15,130,244,55,65,139,174,233,65,59,
+ 174,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,
+ 42,139,133,233,133,192,15,132,244,115,65,57,134,233,15,130,244,119,129,197,
+ 239,137,92,36,4,137,68,36,24,65,139,158,233,248,1,255,15,182,77,0,131,197,
+ 1,131,232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,113,248,
+ 120,129,252,248,239,15,130,244,55,65,139,174,233,65,59,174,233,15,130,244,
+ 247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,65,
+ 57,134,233,255,15,130,244,119,129,197,239,137,92,36,4,137,68,36,24,65,139,
+ 158,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,3,248,3,131,232,
+ 1,15,137,244,1,137,216,139,92,36,4,252,233,244,113,248,121,129,252,248,239,
+ 15,130,244,55,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,
+ 248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,65,57,134,233,15,
+ 130,244,119,129,197,239,137,92,36,4,137,68,36,24,65,139,158,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,3,248,3,131,232,1,15,137,244,1,
+ 137,216,139,92,36,4,252,233,244,113,248,122,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,133,244,55,137,213,139,58,232,251,1,18,137,252,234,255,
+ 252,242,15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,
+ 110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,
+ 255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
+ 252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,
+ 126,197,255,137,68,36,4,141,68,194,252,240,248,1,57,208,15,134,244,125,129,
+ 120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,
+ 126,193,33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,
+ 102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,
+ 242,15,88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,
+ 15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,
+ 88,193,102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,
+ 205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,248,130,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
+ 16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
+ 252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,126,139,
+ 68,36,4,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,
+ 253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,
+ 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252,
- 233,244,131,255,248,134,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
- 135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,
- 73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,
+ 233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
+ 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,
137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244,
- 131,255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,
+ 125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,
189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
- 102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,131,255,
- 248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,
- 121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,189,237,
+ 102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,125,255,
+ 248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,
+ 122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,
237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
- 126,197,102,15,126,201,255,211,197,137,193,252,233,244,131,255,248,137,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,
- 239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,189,237,237,102,72,
+ 126,197,102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,135,129,
+ 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,
+ 239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,
15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
- 15,126,201,255,211,205,137,193,252,233,244,131,248,118,184,237,252,233,244,
- 56,248,120,184,237,248,56,139,108,36,16,41,202,137,89,252,252,137,92,36,20,
- 137,20,36,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,252,239,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,20,36,1,202,57,89,252,252,15,133,244,248,252,255,165,233,
- 248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,139,141,
- 233,139,20,36,1,202,252,233,244,70,248,5,190,237,137,252,239,232,251,1,0,
- 252,233,244,1,248,67,93,72,137,108,36,24,139,108,36,16,41,202,137,84,36,4,
- 137,89,252,252,137,92,36,20,137,141,233,141,68,193,252,248,137,252,239,137,
- 133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192,
- 1,139,89,252,252,139,84,36,4,1,202,72,139,108,36,24,85,139,105,252,248,195,
- 248,138,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,133,244,247,
- 168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,248,139,65,
- 15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255,142,
- 233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,16,137,149,233,
- 137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75,252,253,
- 248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252,238,
- 233,248,140,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,141,255,204,
- 255,248,142,255,248,143,255,248,144,255,68,139,122,252,248,69,139,191,233,
- 69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204,
- 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,248,83,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,
- 145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,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,72,184,237,237,102,72,15,110,208,252,
- 242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,
- 85,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,146,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,
- 110,216,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,72,184,237,237,102,72,15,
- 110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,
- 1,195,248,105,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,
- 147,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,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,72,184,237,237,102,72,15,110,216,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,148,255,15,40,232,252,242,15,94,193,72,184,237,237,102,72,15,
- 110,208,72,184,237,237,102,72,15,110,216,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,
- 15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,84,
- 194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,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,
- 89,217,252,234,222,201,248,149,217,84,36,252,248,129,124,36,252,248,0,0,128,
- 127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,15,132,244,248,248,
- 150,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,108,255,248,
- 151,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,
- 244,255,248,152,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,3,248,4,252,242,15,89,193,248,5,195,248,6,15,
- 132,244,5,15,130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,15,94,
- 200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,
- 7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,
- 72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,72,
- 209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,
+ 15,126,201,255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,
+ 55,248,119,184,237,248,55,139,108,36,16,139,90,252,252,137,92,36,20,137,149,
+ 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,
+ 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,133,244,
+ 69,248,1,255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,90,
+ 252,252,15,133,244,248,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
+ 4,65,252,255,36,252,238,248,2,137,209,252,247,195,237,15,133,244,249,15,182,
+ 107,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,221,131,
+ 229,252,248,41,252,234,252,233,244,27,248,5,190,237,137,252,239,232,251,1,
+ 0,139,149,233,252,233,244,1,248,66,93,72,137,108,36,24,139,108,36,16,137,
+ 92,36,20,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232,251,
+ 1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,24,
+ 85,195,248,136,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,133,
+ 244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,248,
+ 137,65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,
+ 255,142,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,16,137,
+ 149,233,137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75,
+ 252,253,248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,
+ 252,238,233,248,138,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,139,
+ 255,204,255,248,140,255,248,141,255,248,142,255,68,139,122,252,248,69,139,
+ 191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,
+ 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,248,82,
+ 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,143,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
+ 216,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,72,184,237,237,102,72,15,110,
+ 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,
+ 195,248,84,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,144,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
+ 72,15,110,216,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,72,184,237,237,102,
+ 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,
+ 193,248,1,195,248,104,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,145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
+ 216,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,72,184,237,237,102,72,15,110,216,
+ 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,146,255,15,40,232,252,242,15,94,193,72,184,237,237,102,
+ 72,15,110,208,72,184,237,237,102,72,15,110,216,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,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,
+ 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,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,88,217,252,234,222,201,248,147,217,84,36,252,248,129,124,36,252,248,0,
+ 0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,15,132,244,248,
+ 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,107,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,3,248,4,252,242,15,89,193,248,5,195,248,
+ 6,15,132,244,5,15,130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,
+ 15,94,200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,
+ 1,248,7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,
+ 224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,
+ 72,209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,
252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,
221,68,36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,
252,240,217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,
@@ -431,27 +411,27 @@ static const unsigned char build_actionlist[13650] = {
102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,
237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,
3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,
- 153,255,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130,244,
- 105,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,
- 221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,89,
- 252,233,244,253,248,1,232,244,149,255,252,233,244,253,248,2,131,252,255,7,
+ 151,255,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130,244,
+ 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,
+ 221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,88,
+ 252,233,244,253,248,1,232,244,147,255,252,233,244,253,248,2,131,252,255,7,
15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,
253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,
15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,
253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,
247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,
248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,
- 221,68,36,4,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130,
- 244,105,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,89,
- 15,132,244,149,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,
+ 221,68,36,4,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130,
+ 244,104,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,88,
+ 15,132,244,147,131,252,255,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,255,
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,255,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,154,255,131,252,
+ 252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,152,255,131,252,
255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,
92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,
- 193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,148,15,
- 132,244,108,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,
+ 193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,146,15,
+ 132,244,107,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,
102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,
84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,
252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,
@@ -461,241 +441,258 @@ static const unsigned char build_actionlist[13650] = {
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,148,15,132,244,108,131,252,248,7,15,132,244,247,15,135,
+ 252,248,5,15,130,244,146,15,132,244,107,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,
- 155,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,129,
- 124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252,
- 242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,194,131,195,
- 4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,
- 255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,
- 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
- 139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,253,202,4,
- 239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,
- 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,
- 247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,2,15,183,
- 67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4,15,133,244,2,
- 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,
- 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,
- 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,
- 72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244,248,139,12,202,
- 65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244,248,255,252,242,
- 65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199,255,72,252,247,
- 208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129,252,253,239,255,
- 15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,
- 255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,204,15,182,232,
- 131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,139,4,194,137,
- 108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
- 255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,
- 4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
- 255,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237,
- 237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,
- 221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,
- 252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,
- 28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
- 252,238,248,2,129,124,253,194,4,239,15,133,244,52,139,60,194,137,213,232,
- 251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252,233,
- 244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,
- 244,48,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,
- 65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,65,15,
- 16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255,129,124,
- 253,252,234,4,239,15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252,
- 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,
- 242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,65,220,36,199,
- 255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,4,199,220,36,
- 252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,
- 220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199,255,221,4,252,
- 234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255,
- 65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
- 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,65,15,94,
- 4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,16,4,199,252,242,
- 15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,
- 252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,
- 234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,4,199,255,252,242,65,
- 15,16,4,199,252,242,15,16,12,252,234,255,65,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,156,232,244,148,255,252,233,244,156,255,232,244,108,255,15,182,252,236,
- 15,182,192,139,124,36,16,137,151,233,141,52,194,137,194,41,252,234,248,35,
- 137,252,253,137,92,36,20,232,251,1,21,139,149,233,133,192,15,133,244,44,15,
- 182,107,252,255,15,182,75,252,253,139,68,252,234,4,139,44,252,234,137,68,
- 202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
- 255,36,252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202,
- 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
- 15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28,
- 202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28,
- 202,255,72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4,
- 193,232,16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137,
- 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15,
- 182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,
- 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,
- 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,
- 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,
- 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,
- 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
- 252,238,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,
- 15,132,244,1,137,252,238,137,213,65,141,190,233,255,232,251,1,22,137,252,
- 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,
- 65,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,
- 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
- 252,238,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,
- 137,213,137,198,65,141,190,233,232,251,1,22,137,252,234,252,233,244,1,255,
- 139,106,252,248,255,252,242,65,15,16,4,199,255,139,172,253,141,233,139,141,
- 233,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,
- 65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
- 255,141,156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149,
- 233,141,52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204,
- 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,
- 139,108,36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,
- 36,20,232,251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,
- 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
- 139,124,36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,
- 252,255,7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65,
- 59,134,233,137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75,
- 252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,
- 193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232,
- 251,1,26,15,183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139,
- 108,36,16,65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244,
- 249,248,2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252,
- 253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,
- 232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252,
- 254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,
- 233,65,139,4,135,252,233,244,157,255,72,252,247,208,139,106,252,248,139,173,
- 233,65,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192,129,124,253,
- 252,234,4,239,15,133,244,38,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,15,133,244,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,
- 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,
- 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,
- 131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,38,
- 15,182,75,252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
- 38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192,72,252,247,208,
- 65,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157,
- 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,
- 67,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182,
- 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,
- 252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,
- 5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,
- 244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
- 37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,
- 4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,
- 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,
- 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37,255,
- 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44,
- 252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133,233,
- 15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,
- 252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,
- 4,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
- 238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,
- 15,132,244,41,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,
- 15,133,244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,65,139,142,
- 233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,
- 252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,
- 15,133,244,39,139,44,252,234,248,158,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,67,252,253,139,108,194,4,139,4,194,137,105,4,137,
- 1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
- 248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,
- 15,132,244,39,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,
- 1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,
- 248,6,137,4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72,
- 141,20,36,137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139,
- 108,36,24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,
- 174,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,
- 252,234,4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,
- 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,
- 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204,
- 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,
- 15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,75,
- 252,253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233,
- 137,141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141,
- 12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,
- 4,255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248,
- 59,133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139,
+ 153,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,249,
+ 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,
+ 41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,
+ 194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,
+ 134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,
+ 233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
+ 252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,
+ 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
+ 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
+ 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,
+ 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4,
+ 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,
+ 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,
+ 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,
+ 233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244,
+ 248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244,
+ 248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199,
+ 255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129,
+ 252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,
+ 194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,
+ 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,
+ 4,139,4,194,137,108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,
+ 193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,
+ 213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
+ 252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,
+ 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,
+ 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,
+ 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,
+ 128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,
+ 16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,
+ 194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,
+ 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,
+ 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,
+ 221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,
+ 252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,
+ 234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,
+ 135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,
+ 234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,
+ 4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,
+ 255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,
+ 4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,
+ 15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,
+ 242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,
+ 234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,
+ 252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,
+ 65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,
+ 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,
+ 255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,
+ 221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,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,154,232,244,146,255,252,233,244,154,255,232,
+ 244,107,255,15,182,252,236,15,182,192,139,124,36,16,137,151,233,141,52,194,
+ 137,194,41,252,234,248,33,137,252,253,137,92,36,20,232,251,1,21,139,149,233,
+ 133,192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,139,68,252,234,
+ 4,139,44,252,234,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,
+ 195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,199,
+ 68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
+ 252,255,36,252,238,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,
+ 223,67,252,254,221,28,202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,
+ 255,65,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,3,15,182,
+ 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,76,202,
+ 12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,
+ 134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
+ 252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,
+ 109,0,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
+ 16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189,
+ 233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,
+ 252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,
+ 195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239,
+ 15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141,
+ 190,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,
+ 106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4,
+ 237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,
+ 131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132,
+ 244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1,
+ 22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199,
+ 255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,
+ 252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,
+ 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,
+ 156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149,233,141,
+ 52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204,15,182,
+ 232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,139,108,
+ 36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,36,20,232,
+ 251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,
+ 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,124,
+ 36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,
+ 7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65,59,134,233,
+ 137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75,252,253,137,
+ 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
+ 252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,
+ 183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139,108,36,16,
+ 65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244,249,248,
+ 2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252,253,137,
+ 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
+ 252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252,254,72,252,
+ 247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
+ 4,135,252,233,244,155,255,72,252,247,208,139,106,252,248,139,173,233,65,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,
+ 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
+ 239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,
+ 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,
+ 233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,
+ 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,155,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,
+ 135,129,124,253,252,234,4,239,15,133,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,67,252,
+ 253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182,204,15,
+ 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,
+ 185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,
+ 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,
+ 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,
+ 44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,
+ 15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,182,
+ 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,
+ 0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,252,
+ 236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,
+ 124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,
+ 39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,
+ 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,
+ 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,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,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
+ 39,139,4,194,252,233,244,156,248,7,128,165,233,235,65,139,142,233,65,137,
+ 174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,
+ 182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,
+ 37,139,44,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,67,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,3,
+ 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,131,
+ 189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,15,132,244,
+ 37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,
+ 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,
+ 4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72,141,20,36,
+ 137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139,108,36,
+ 24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174,
+ 233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,
+ 234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,
+ 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,
+ 244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204,15,
+ 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15,
+ 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,252,
+ 253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233,137,
+ 141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141,12,
+ 202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,4,
+ 255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248,59,
+ 133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139,
41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133,
244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194,
137,252,253,137,92,36,20,232,251,1,29,139,149,233,15,182,75,252,253,252,233,
244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233,
- 252,233,244,2,255,3,68,36,4,255,141,76,202,8,139,105,252,248,129,121,253,
- 252,252,239,15,133,244,31,252,255,165,233,255,141,76,202,8,65,137,215,139,
- 105,252,248,129,121,253,252,252,239,15,133,244,31,248,53,139,90,252,252,252,
- 247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,
- 132,244,249,248,2,139,41,65,137,47,139,105,4,65,137,111,4,65,131,199,8,131,
- 193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1,
- 15,135,244,251,248,4,139,68,36,4,252,255,165,233,248,5,255,252,247,195,237,
- 15,133,244,4,15,182,67,252,253,72,252,247,208,141,20,194,68,139,122,252,248,
- 69,139,191,233,69,139,191,233,252,233,244,4,248,7,15,139,244,1,131,227,252,
- 248,41,218,65,137,215,139,90,252,252,252,233,244,1,255,141,76,202,8,139,105,
- 232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,
- 8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252,
- 248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15,182,252,236,139,
- 66,252,248,141,12,202,139,128,233,15,182,128,233,68,137,60,36,68,141,188,
- 253,194,233,68,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,
- 252,248,65,57,215,15,131,244,248,248,1,65,139,71,252,248,137,1,65,139,71,
- 252,252,65,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,65,57,215,
- 15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,68,
- 139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
- 252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41,252,248,15,134,244,3,255,
- 137,197,193,252,237,3,131,197,1,137,108,36,4,139,108,36,16,1,200,59,133,233,
- 15,135,244,253,248,6,65,139,71,252,248,137,1,65,139,71,252,252,65,131,199,
- 8,137,65,4,131,193,8,65,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,
- 137,141,233,137,92,36,20,65,41,215,139,116,36,4,131,252,238,1,137,252,239,
- 232,251,1,0,139,149,233,139,141,233,65,1,215,252,233,244,6,255,193,225,3,
- 255,248,1,139,90,252,252,137,68,36,4,252,247,195,237,15,133,244,253,255,248,
- 17,65,137,215,131,232,1,15,132,244,249,248,2,65,139,44,15,65,137,111,252,
- 248,65,139,108,15,4,65,137,111,252,252,65,131,199,8,131,232,1,15,133,244,
- 2,248,3,139,68,36,4,15,182,107,252,255,248,5,57,197,15,135,244,252,255,139,
- 108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,67,252,255,
- 15,135,244,252,255,15,182,75,252,253,72,252,247,209,141,20,202,68,139,122,
- 252,248,69,139,191,233,69,139,191,233,139,3,15,182,204,15,182,232,131,195,
- 4,193,232,16,65,252,255,36,252,238,248,6,255,65,199,71,252,252,237,65,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,227,252,248,41,218,255,1,217,255,137,221,209,252,237,129,229,239,
- 102,65,131,172,253,46,233,1,15,132,244,141,255,141,12,202,255,129,121,253,
- 4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139,105,20,255,129,
- 252,253,239,15,135,244,54,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,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,
- 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,
- 247,255,217,201,248,1,255,15,183,67,252,254,255,15,131,244,248,141,156,253,
- 131,233,255,141,156,253,131,233,15,183,67,252,254,15,131,245,255,15,130,244,
- 248,141,156,253,131,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,
- 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137,
- 105,252,248,252,233,245,255,141,156,253,131,233,139,1,137,105,252,252,137,
- 65,252,248,255,65,139,142,233,139,4,129,72,139,128,233,139,108,36,16,65,137,
- 150,233,65,137,174,233,252,255,224,255,141,156,253,131,233,139,3,15,182,204,
- 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,254,0
+ 252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,
+ 51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,
+ 131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,
+ 129,121,253,252,252,239,15,133,244,28,248,52,139,90,252,252,252,247,195,237,
+ 15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,
+ 248,2,139,41,65,137,47,139,105,4,65,137,111,4,65,131,199,8,131,193,8,131,
+ 232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,
+ 244,251,248,4,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,
+ 255,36,252,238,248,5,255,252,247,195,237,15,133,244,4,15,182,75,252,253,72,
+ 252,247,209,141,12,202,68,139,121,252,248,69,139,191,233,69,139,191,233,252,
+ 233,244,4,248,7,15,139,244,1,131,227,252,248,41,218,65,137,215,139,90,252,
+ 252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,
+ 65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,
+ 228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,28,
+ 137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
+ 4,65,252,255,36,252,238,255,15,182,252,236,139,66,252,248,141,12,202,139,
+ 128,233,15,182,128,233,68,137,60,36,68,141,188,253,194,233,68,43,122,252,
+ 252,133,252,237,15,132,244,251,141,108,252,233,252,248,65,57,215,15,131,244,
+ 248,248,1,65,139,71,252,248,137,1,65,139,71,252,252,65,131,199,8,137,65,4,
+ 131,193,8,57,252,233,15,131,244,249,65,57,215,15,130,244,1,248,2,199,65,4,
+ 237,131,193,8,57,252,233,15,130,244,2,248,3,68,139,60,36,139,3,15,182,204,
+ 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,199,68,36,4,1,
+ 0,0,0,137,208,68,41,252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,
+ 1,137,108,36,4,139,108,36,16,1,200,59,133,233,15,135,244,253,248,6,65,139,
+ 71,252,248,137,1,65,139,71,252,252,65,131,199,8,137,65,4,131,193,8,65,57,
+ 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,92,36,20,
+ 65,41,215,139,116,36,4,131,252,238,1,137,252,239,232,251,1,0,139,149,233,
+ 139,141,233,65,1,215,252,233,244,6,255,193,225,3,255,248,1,139,90,252,252,
+ 137,68,36,4,252,247,195,237,15,133,244,253,255,248,13,65,137,215,131,232,
+ 1,15,132,244,249,248,2,65,139,44,15,65,137,111,252,248,65,139,108,15,4,65,
+ 137,111,252,252,65,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,4,15,
+ 182,107,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,
+ 252,139,44,10,137,106,252,248,255,248,5,56,67,252,255,15,135,244,252,255,
+ 15,182,75,252,253,72,252,247,209,141,20,202,68,139,122,252,248,69,139,191,
+ 233,69,139,191,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
+ 255,36,252,238,248,6,255,65,199,71,252,252,237,65,131,199,8,255,199,68,194,
+ 252,244,237,255,131,192,1,252,233,244,5,248,7,15,139,244,14,131,227,252,248,
+ 41,218,255,1,217,255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,
+ 233,1,15,132,244,139,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,
+ 121,253,12,239,15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,
+ 53,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,
+ 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,
+ 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,
+ 15,183,67,252,254,255,15,131,244,248,141,156,253,131,233,255,141,156,253,
+ 131,233,15,183,67,252,254,15,131,245,255,15,130,244,248,141,156,253,131,233,
+ 255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,
+ 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,
+ 255,141,156,253,131,233,139,1,137,105,252,252,137,65,252,248,255,65,139,142,
+ 233,139,4,129,72,139,128,233,139,108,36,16,65,137,150,233,65,137,174,233,
+ 252,255,224,255,141,156,253,131,233,139,3,15,182,204,15,182,232,131,195,4,
+ 193,232,16,65,252,255,36,252,238,255,68,139,187,233,139,108,36,16,141,12,
+ 202,59,141,233,15,135,244,23,15,182,139,233,57,200,15,134,244,249,248,2,255,
+ 15,183,67,252,254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,
+ 57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,
+ 252,248,137,104,252,252,68,137,120,252,248,139,108,36,16,141,12,200,59,141,
+ 233,15,135,244,22,137,209,137,194,15,182,171,233,133,252,237,15,132,244,248,
+ 248,1,131,193,8,57,209,15,131,244,249,68,139,121,252,248,68,137,56,68,139,
+ 121,252,252,68,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
+ 244,1,248,2,255,68,139,187,233,139,3,15,182,204,15,182,232,131,195,4,193,
+ 232,16,65,252,255,36,252,238,255,248,3,199,64,4,237,131,192,8,131,252,237,
+ 1,15,133,244,3,252,233,244,2,255,139,106,252,248,76,139,189,233,139,108,36,
+ 16,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,
+ 137,252,239,255,76,137,252,254,137,252,239,255,15,135,244,21,65,199,134,233,
+ 237,255,65,252,255,215,255,65,252,255,150,233,255,65,199,134,233,237,139,
+ 149,233,141,12,194,252,247,217,3,141,233,139,90,252,252,252,233,244,12,255,
+ 254,0
};
enum {
- GLOB_gate_lf,
- GLOB_gate_lf_growstack,
- GLOB_gate_lv,
- GLOB_gate_lv_growstack,
- GLOB_gate_cwrap,
- GLOB_gate_c_growstack,
+ GLOB_vm_returnp,
+ GLOB_cont_dispatch,
GLOB_vm_returnc,
GLOB_BC_RET_Z,
GLOB_vm_return,
- GLOB_gate_c,
- GLOB_vm_returnp,
GLOB_vm_leave_cp,
GLOB_vm_leave_unw,
GLOB_vm_unwind_c,
GLOB_vm_unwind_c_eh,
GLOB_vm_unwind_ff,
GLOB_vm_unwind_ff_eh,
- GLOB_cont_dispatch,
+ GLOB_vm_growstack_c,
+ GLOB_vm_growstack_v,
+ GLOB_vm_growstack_f,
GLOB_vm_resume,
GLOB_vm_pcall,
GLOB_vm_call,
+ GLOB_vm_call_dispatch,
GLOB_vmeta_call,
+ GLOB_vm_call_dispatch_f,
GLOB_vm_cpcall,
GLOB_cont_cat,
GLOB_cont_ra,
@@ -717,6 +714,7 @@ enum {
GLOB_vmeta_unm,
GLOB_vmeta_arith_vv,
GLOB_vmeta_len,
+ GLOB_vmeta_call_ra,
GLOB_BC_CALLT_Z,
GLOB_vmeta_for,
GLOB_ff_assert,
@@ -790,12 +788,11 @@ enum {
GLOB_ff_table_getn,
GLOB_ff_bit_tobit,
GLOB_ff_bit_band,
- GLOB_fff_resbit_op,
+ GLOB_fff_resbit,
GLOB_fff_fallback_bit_op,
GLOB_ff_bit_bor,
GLOB_ff_bit_bxor,
GLOB_ff_bit_bswap,
- GLOB_fff_resbit,
GLOB_ff_bit_bnot,
GLOB_ff_bit_lshift,
GLOB_ff_bit_rshift,
@@ -826,28 +823,26 @@ enum {
GLOB__MAX
};
static const char *const globnames[] = {
- "gate_lf",
- "gate_lf_growstack",
- "gate_lv",
- "gate_lv_growstack",
- "gate_cwrap",
- "gate_c_growstack",
+ "vm_returnp",
+ "cont_dispatch",
"vm_returnc",
"BC_RET_Z",
"vm_return",
- "gate_c",
- "vm_returnp",
"vm_leave_cp",
"vm_leave_unw",
"vm_unwind_c@8",
"vm_unwind_c_eh",
"vm_unwind_ff@4",
"vm_unwind_ff_eh",
- "cont_dispatch",
+ "vm_growstack_c",
+ "vm_growstack_v",
+ "vm_growstack_f",
"vm_resume",
"vm_pcall",
"vm_call",
+ "vm_call_dispatch",
"vmeta_call",
+ "vm_call_dispatch_f",
"vm_cpcall",
"cont_cat",
"cont_ra",
@@ -869,6 +864,7 @@ static const char *const globnames[] = {
"vmeta_unm",
"vmeta_arith_vv",
"vmeta_len",
+ "vmeta_call_ra",
"BC_CALLT_Z",
"vmeta_for",
"ff_assert",
@@ -942,12 +938,11 @@ static const char *const globnames[] = {
"ff_table_getn",
"ff_bit_tobit",
"ff_bit_band",
- "fff_resbit_op",
+ "fff_resbit",
"fff_fallback_bit_op",
"ff_bit_bor",
"ff_bit_bxor",
"ff_bit_bswap",
- "fff_resbit",
"ff_bit_bnot",
"ff_bit_lshift",
"ff_bit_rshift",
@@ -1033,392 +1028,367 @@ static const char *const extnames[] = {
static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
{
dasm_put(Dst, 0);
- dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams));
-#if LJ_HASJIT
-#endif
- dasm_put(Dst, 48, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams));
- dasm_put(Dst, 161, LJ_TNIL, PC2PROTO(k));
-#if LJ_HASJIT
-#endif
- dasm_put(Dst, 201, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
- dasm_put(Dst, 303, Dt1(->top), FRAME_TYPE, 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));
- dasm_put(Dst, 389, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
- dasm_put(Dst, 495, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
- dasm_put(Dst, 584, Dt1(->top), 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, 688, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
- dasm_put(Dst, 778, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
- dasm_put(Dst, 917, FRAME_CP, 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, 1042, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base));
- dasm_put(Dst, 1226, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+ dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ dasm_put(Dst, 111, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
+ dasm_put(Dst, 202, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
+ dasm_put(Dst, 298, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 367, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
+ dasm_put(Dst, 535, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 648, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
+ dasm_put(Dst, 813, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1271);
+ dasm_put(Dst, 922);
} else {
}
- dasm_put(Dst, 1283, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv));
- dasm_put(Dst, 1441, LJ_TTAB);
+ dasm_put(Dst, 934, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+ dasm_put(Dst, 1085, DISPATCH_GL(tmptv), LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1271);
+ dasm_put(Dst, 922);
} else {
}
- dasm_put(Dst, 1461, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base));
- dasm_put(Dst, 1656, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
- dasm_put(Dst, 1764, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC);
- dasm_put(Dst, 1887, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*8, 1+1);
- dasm_put(Dst, 2042, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
+ dasm_put(Dst, 1109, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1291, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+ dasm_put(Dst, 1390, Dt1(->base), Dt1(->base), FRAME_CONT);
+ dasm_put(Dst, 1513, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+ dasm_put(Dst, 1691, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
if (cmov) {
- dasm_put(Dst, 2136);
+ dasm_put(Dst, 1793);
} else {
- dasm_put(Dst, 2140);
+ dasm_put(Dst, 1797);
}
- dasm_put(Dst, 2149, ((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, 2237, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
- dasm_put(Dst, 2292, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
- dasm_put(Dst, 2364, 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, 2431, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 1806, ((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, 1895, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
+ dasm_put(Dst, 1950, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
+ dasm_put(Dst, 2019, 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, 2090, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2509);
+ dasm_put(Dst, 2166);
} else {
- dasm_put(Dst, 2519);
+ dasm_put(Dst, 2176);
}
- dasm_put(Dst, 2526, 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, 2591, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
- dasm_put(Dst, 2675, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
- dasm_put(Dst, 2775, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 2183, 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, 2252, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
+ dasm_put(Dst, 2321, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2424, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2830, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 2487, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
}
- dasm_put(Dst, 2863, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
- dasm_put(Dst, 2950, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
+ dasm_put(Dst, 2520, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+ dasm_put(Dst, 2601, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
if (sse) {
- dasm_put(Dst, 2980);
+ dasm_put(Dst, 2639);
} else {
- dasm_put(Dst, 2990);
+ dasm_put(Dst, 2649);
}
- dasm_put(Dst, 2997, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
- dasm_put(Dst, 3071, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD);
- dasm_put(Dst, 3169, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
- dasm_put(Dst, 3235, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top));
- dasm_put(Dst, 3339, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2);
- dasm_put(Dst, 3462, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base));
- dasm_put(Dst, 3543, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
- dasm_put(Dst, 3649, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE);
- dasm_put(Dst, 3749, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+ dasm_put(Dst, 2656, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+ dasm_put(Dst, 2721, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+ dasm_put(Dst, 2810, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 2903, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+ dasm_put(Dst, 3023, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+ dasm_put(Dst, 3119, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 3185, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+ dasm_put(Dst, 3280, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+ dasm_put(Dst, 3392, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
if (sse) {
- dasm_put(Dst, 3836, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 3419, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 3892, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3483, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 3924, 1+1, FRAME_TYPE, LJ_TNIL);
+ dasm_put(Dst, 3519, 1+1, FRAME_TYPE, LJ_TNIL);
if (sse) {
- dasm_put(Dst, 4009, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4071, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3614, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3676, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4101, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4160, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3706, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3765, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4187, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4256, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4313, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4376, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4466);
+ dasm_put(Dst, 3792, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3861, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3918, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3981, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4071);
if (sse) {
- dasm_put(Dst, 4478, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4083, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4503);
+ dasm_put(Dst, 4108);
if (sse) {
- dasm_put(Dst, 4523, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4122, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4548);
+ dasm_put(Dst, 4147);
if (sse) {
- dasm_put(Dst, 4568, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4161, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4593);
+ dasm_put(Dst, 4186);
if (sse) {
- dasm_put(Dst, 4615, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4202, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
} else {
- dasm_put(Dst, 4650, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4241, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
}
- dasm_put(Dst, 4679, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
- dasm_put(Dst, 4744, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4274, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4339, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4839);
+ dasm_put(Dst, 4438);
} else {
- dasm_put(Dst, 4845);
+ dasm_put(Dst, 4444);
}
- dasm_put(Dst, 4852);
+ dasm_put(Dst, 4451);
if (sse) {
- dasm_put(Dst, 4877);
+ dasm_put(Dst, 4476);
} else {
- dasm_put(Dst, 4883);
+ dasm_put(Dst, 4482);
}
- dasm_put(Dst, 4886, 1+2);
+ dasm_put(Dst, 4485, 1+2);
if (sse) {
- dasm_put(Dst, 4895);
+ dasm_put(Dst, 4494);
} else {
- dasm_put(Dst, 4903);
+ dasm_put(Dst, 4502);
}
- dasm_put(Dst, 492);
+ dasm_put(Dst, 4510);
if (sse) {
- dasm_put(Dst, 4911, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+ dasm_put(Dst, 4513, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
} else {
- dasm_put(Dst, 4938);
+ dasm_put(Dst, 4540);
}
- dasm_put(Dst, 4955);
+ dasm_put(Dst, 4557);
if (sse) {
- dasm_put(Dst, 4971, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4573, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4996, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4598, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 5018);
+ dasm_put(Dst, 4620);
if (sse) {
- dasm_put(Dst, 5036);
+ dasm_put(Dst, 4642);
} else {
- dasm_put(Dst, 5062);
+ dasm_put(Dst, 4668);
}
- dasm_put(Dst, 5079, 1+2);
+ dasm_put(Dst, 4685, 1+2);
if (sse) {
- dasm_put(Dst, 5119);
+ dasm_put(Dst, 4725);
} else {
- dasm_put(Dst, 5127);
+ dasm_put(Dst, 4733);
}
- dasm_put(Dst, 5137, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4743, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5189, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4795, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5236, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4842, 2+1, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 5277, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4883, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
}
if (sse) {
- dasm_put(Dst, 5348, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4954, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
}
if (!sse) {
- dasm_put(Dst, 5419);
+ dasm_put(Dst, 5025);
}
- dasm_put(Dst, 5428, 1+1, LJ_TSTR);
+ dasm_put(Dst, 5034, 1+1, LJ_TSTR);
if (sse) {
- dasm_put(Dst, 5450, Dt5(->len));
+ dasm_put(Dst, 5056, Dt5(->len));
} else {
- dasm_put(Dst, 5461, Dt5(->len));
+ dasm_put(Dst, 5067, Dt5(->len));
}
- dasm_put(Dst, 5469, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+ dasm_put(Dst, 5075, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
if (sse) {
- dasm_put(Dst, 5503);
+ dasm_put(Dst, 5113);
} else {
- dasm_put(Dst, 5513);
+ dasm_put(Dst, 5123);
}
- dasm_put(Dst, 5524, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5134, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5561);
+ dasm_put(Dst, 5171);
} else {
- dasm_put(Dst, 5581);
+ dasm_put(Dst, 5191);
}
- dasm_put(Dst, 5601, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
- dasm_put(Dst, 2504);
+ dasm_put(Dst, 5211, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+ dasm_put(Dst, 2161);
if (sse) {
- dasm_put(Dst, 5715);
+ dasm_put(Dst, 5320);
} else {
- dasm_put(Dst, 5726);
+ dasm_put(Dst, 5331);
}
- dasm_put(Dst, 5734, LJ_TSTR, LJ_TISNUM, Dt5(->len));
+ dasm_put(Dst, 5339, LJ_TSTR, LJ_TISNUM, Dt5(->len));
if (sse) {
- dasm_put(Dst, 5764);
+ dasm_put(Dst, 5369);
} else {
}
- dasm_put(Dst, 5771, sizeof(GCstr)-1);
- dasm_put(Dst, 5846, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 5907, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 5376, sizeof(GCstr)-1);
+ dasm_put(Dst, 5451, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 5512, LJ_TSTR, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5931);
+ dasm_put(Dst, 5533);
} else {
- dasm_put(Dst, 5938);
+ dasm_put(Dst, 5540);
}
- dasm_put(Dst, 5950, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6018, 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, 6088, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
- dasm_put(Dst, 6164, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6249, 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, 6326, 1+1, LJ_TTAB);
+ dasm_put(Dst, 5552, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 5620, 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, 5687, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+ dasm_put(Dst, 5760, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 5845, 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, 5919, 1+1, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 6399);
+ dasm_put(Dst, 5986);
} else {
}
if (sse) {
- dasm_put(Dst, 6409, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 5996, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
if (sse) {
- dasm_put(Dst, 6461, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6048, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6504);
+ dasm_put(Dst, 6091, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6514);
- }
- dasm_put(Dst, 6518, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 6536);
+ dasm_put(Dst, 6118);
} else {
}
- dasm_put(Dst, 6553);
+ dasm_put(Dst, 6135);
if (sse) {
- dasm_put(Dst, 6561, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6143, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6504);
+ dasm_put(Dst, 6091, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6514);
- }
- dasm_put(Dst, 6518, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 6604);
+ dasm_put(Dst, 6186);
} else {
}
- dasm_put(Dst, 6553);
+ dasm_put(Dst, 6135);
if (sse) {
- dasm_put(Dst, 6621, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6203, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6504);
+ dasm_put(Dst, 6091, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6514);
- }
- dasm_put(Dst, 6518, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 6664);
+ dasm_put(Dst, 6246);
} else {
}
- dasm_put(Dst, 6553);
+ dasm_put(Dst, 6135);
if (sse) {
- dasm_put(Dst, 6681, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6263, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6724);
+ dasm_put(Dst, 6306);
if (sse) {
- dasm_put(Dst, 6731, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6313, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6774);
+ dasm_put(Dst, 6356);
if (sse) {
- dasm_put(Dst, 6778);
+ dasm_put(Dst, 6360);
} else {
}
- dasm_put(Dst, 6804);
+ dasm_put(Dst, 6372);
if (sse) {
- dasm_put(Dst, 6395);
- }
- dasm_put(Dst, 6807);
- if (sse) {
- dasm_put(Dst, 6816, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6383, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6885);
+ dasm_put(Dst, 6452);
if (sse) {
- dasm_put(Dst, 6894, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6461, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6963);
+ dasm_put(Dst, 6530);
if (sse) {
- dasm_put(Dst, 6973, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6540, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 7042);
+ dasm_put(Dst, 6609);
if (sse) {
- dasm_put(Dst, 7052, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6619, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 7121);
+ dasm_put(Dst, 6688);
if (sse) {
- dasm_put(Dst, 7130, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6697, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 7199, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
- dasm_put(Dst, 7282, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top));
- dasm_put(Dst, 7400, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 6766, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+ dasm_put(Dst, 6844, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 6970, Dt1(->top), Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 7442, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+ dasm_put(Dst, 7009, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
#endif
- dasm_put(Dst, 7475, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 7542, BC__MAX*8);
+ dasm_put(Dst, 7042, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 7109, GG_DISP2STATIC);
#if LJ_HASJIT
- dasm_put(Dst, 7579);
+ dasm_put(Dst, 7146);
#endif
- dasm_put(Dst, 7581);
+ dasm_put(Dst, 7148);
#if LJ_HASJIT
- dasm_put(Dst, 7579);
+ dasm_put(Dst, 7146);
#endif
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7151);
#if LJ_HASJIT
- dasm_put(Dst, 7579);
+ dasm_put(Dst, 7146);
#endif
- dasm_put(Dst, 7587);
+ dasm_put(Dst, 7154);
#if LJ_HASJIT
- dasm_put(Dst, 7590, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 7157, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
#endif
- dasm_put(Dst, 7637);
+ dasm_put(Dst, 7204);
if (!sse) {
- dasm_put(Dst, 7640);
+ dasm_put(Dst, 7207);
}
- dasm_put(Dst, 7685, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 7252, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 7771);
+ dasm_put(Dst, 7338);
}
- dasm_put(Dst, 7816, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+ dasm_put(Dst, 7383, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 7902);
+ dasm_put(Dst, 7469);
}
- dasm_put(Dst, 7941, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 7508, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (sse) {
- dasm_put(Dst, 8030, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 7597, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
- dasm_put(Dst, 8144);
+ dasm_put(Dst, 7711);
}
- dasm_put(Dst, 8191);
+ dasm_put(Dst, 7758);
if (!sse) {
} else {
- dasm_put(Dst, 8268);
+ dasm_put(Dst, 7835);
}
- dasm_put(Dst, 8271);
- dasm_put(Dst, 8356, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
- dasm_put(Dst, 8457, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
- dasm_put(Dst, 8631);
+ dasm_put(Dst, 7838);
+ dasm_put(Dst, 7923, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8024, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+ dasm_put(Dst, 8198);
if (sse) {
- dasm_put(Dst, 8672);
- dasm_put(Dst, 8742);
- dasm_put(Dst, 8814);
+ dasm_put(Dst, 8239);
+ dasm_put(Dst, 8309);
+ dasm_put(Dst, 8381);
} else {
- dasm_put(Dst, 8866);
- dasm_put(Dst, 8958);
+ dasm_put(Dst, 8433);
+ dasm_put(Dst, 8525);
}
- dasm_put(Dst, 9004);
+ dasm_put(Dst, 8571);
if (sse) {
- dasm_put(Dst, 9010, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
- dasm_put(Dst, 9095, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 8577, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+ dasm_put(Dst, 8662, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 9223);
- dasm_put(Dst, 9306);
+ dasm_put(Dst, 8790);
+ dasm_put(Dst, 8873);
if (cmov) {
- dasm_put(Dst, 9361);
+ dasm_put(Dst, 8928);
} else {
- dasm_put(Dst, 9380);
+ dasm_put(Dst, 8947);
}
- dasm_put(Dst, 9219);
+ dasm_put(Dst, 8786);
}
- dasm_put(Dst, 9421);
+ dasm_put(Dst, 8988);
}
/* 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, 159, defop);
+ dasm_put(Dst, 9010, defop);
switch (op) {
@@ -1427,602 +1397,602 @@ 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, 9443, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9012, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 9464);
+ dasm_put(Dst, 9033);
} else {
- dasm_put(Dst, 9479);
+ dasm_put(Dst, 9048);
if (cmov) {
- dasm_put(Dst, 9489);
+ dasm_put(Dst, 9058);
} else {
- dasm_put(Dst, 9495);
+ dasm_put(Dst, 9064);
}
}
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 9502);
+ dasm_put(Dst, 9071);
break;
case BC_ISGE:
- dasm_put(Dst, 9301);
+ dasm_put(Dst, 8868);
break;
case BC_ISLE:
- dasm_put(Dst, 6321);
+ dasm_put(Dst, 5914);
break;
case BC_ISGT:
- dasm_put(Dst, 9507);
+ dasm_put(Dst, 9076);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 9512, -BCBIAS_J*4);
+ dasm_put(Dst, 9081, -BCBIAS_J*4);
break;
case BC_ISEQV: case BC_ISNEV:
vk = op == BC_ISEQV;
- dasm_put(Dst, 9547, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9116, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 9573);
+ dasm_put(Dst, 9142);
} else {
- dasm_put(Dst, 9585);
+ dasm_put(Dst, 9154);
if (cmov) {
- dasm_put(Dst, 9489);
+ dasm_put(Dst, 9058);
} else {
- dasm_put(Dst, 9495);
+ dasm_put(Dst, 9064);
}
}
iseqne_fp:
if (vk) {
- dasm_put(Dst, 9592);
+ dasm_put(Dst, 9161);
} else {
- dasm_put(Dst, 9601);
+ dasm_put(Dst, 9170);
}
iseqne_end:
if (vk) {
- dasm_put(Dst, 9610, -BCBIAS_J*4);
+ dasm_put(Dst, 9179, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 9625, -BCBIAS_J*4);
+ dasm_put(Dst, 9194, -BCBIAS_J*4);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
if (op == BC_ISEQV || op == BC_ISNEV) {
- dasm_put(Dst, 9640, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32));
+ dasm_put(Dst, 9503, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
} else {
- dasm_put(Dst, 9959);
+ dasm_put(Dst, 9528);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_LEN:
- dasm_put(Dst, 9968, LJ_TSTR);
+ dasm_put(Dst, 9537, LJ_TSTR);
if (sse) {
- dasm_put(Dst, 9982, Dt5(->len));
+ dasm_put(Dst, 9551, Dt5(->len));
} else {
- dasm_put(Dst, 10000, Dt5(->len));
+ dasm_put(Dst, 9569, Dt5(->len));
}
- dasm_put(Dst, 10009, LJ_TTAB);
+ dasm_put(Dst, 9578, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 10051);
+ dasm_put(Dst, 9620);
} else {
}
- dasm_put(Dst, 10060);
+ dasm_put(Dst, 9629);
break;
/* -- Binary ops -------------------------------------------------------- */
case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
- dasm_put(Dst, 10070);
+ dasm_put(Dst, 9639);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10078, LJ_TISNUM);
+ dasm_put(Dst, 9647, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10090);
+ dasm_put(Dst, 9659);
} else {
- dasm_put(Dst, 10105);
+ dasm_put(Dst, 9674);
}
break;
case 1:
- dasm_put(Dst, 10114, LJ_TISNUM);
+ dasm_put(Dst, 9683, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10126);
+ dasm_put(Dst, 9695);
} else {
- dasm_put(Dst, 10141);
+ dasm_put(Dst, 9710);
}
break;
default:
- dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10172);
+ dasm_put(Dst, 9741);
} else {
- dasm_put(Dst, 10186);
+ dasm_put(Dst, 9755);
}
break;
}
if (sse) {
- dasm_put(Dst, 9952);
+ dasm_put(Dst, 9521);
} else {
- dasm_put(Dst, 9964);
+ dasm_put(Dst, 9533);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
- dasm_put(Dst, 10070);
+ dasm_put(Dst, 9639);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10078, LJ_TISNUM);
+ dasm_put(Dst, 9647, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10194);
+ dasm_put(Dst, 9763);
} else {
- dasm_put(Dst, 10209);
+ dasm_put(Dst, 9778);
}
break;
case 1:
- dasm_put(Dst, 10114, LJ_TISNUM);
+ dasm_put(Dst, 9683, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10218);
+ dasm_put(Dst, 9787);
} else {
- dasm_put(Dst, 10233);
+ dasm_put(Dst, 9802);
}
break;
default:
- dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10242);
+ dasm_put(Dst, 9811);
} else {
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 9825);
}
break;
}
if (sse) {
- dasm_put(Dst, 9952);
+ dasm_put(Dst, 9521);
} else {
- dasm_put(Dst, 9964);
+ dasm_put(Dst, 9533);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_MULVN: case BC_MULNV: case BC_MULVV:
- dasm_put(Dst, 10070);
+ dasm_put(Dst, 9639);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10078, LJ_TISNUM);
+ dasm_put(Dst, 9647, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10264);
+ dasm_put(Dst, 9833);
} else {
- dasm_put(Dst, 10279);
+ dasm_put(Dst, 9848);
}
break;
case 1:
- dasm_put(Dst, 10114, LJ_TISNUM);
+ dasm_put(Dst, 9683, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10288);
+ dasm_put(Dst, 9857);
} else {
- dasm_put(Dst, 10303);
+ dasm_put(Dst, 9872);
}
break;
default:
- dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10312);
+ dasm_put(Dst, 9881);
} else {
- dasm_put(Dst, 10326);
+ dasm_put(Dst, 9895);
}
break;
}
if (sse) {
- dasm_put(Dst, 9952);
+ dasm_put(Dst, 9521);
} else {
- dasm_put(Dst, 9964);
+ dasm_put(Dst, 9533);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
- dasm_put(Dst, 10070);
+ dasm_put(Dst, 9639);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10078, LJ_TISNUM);
+ dasm_put(Dst, 9647, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10334);
+ dasm_put(Dst, 9903);
} else {
- dasm_put(Dst, 10349);
+ dasm_put(Dst, 9918);
}
break;
case 1:
- dasm_put(Dst, 10114, LJ_TISNUM);
+ dasm_put(Dst, 9683, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10358);
+ dasm_put(Dst, 9927);
} else {
- dasm_put(Dst, 10373);
+ dasm_put(Dst, 9942);
}
break;
default:
- dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10382);
+ dasm_put(Dst, 9951);
} else {
- dasm_put(Dst, 10396);
+ dasm_put(Dst, 9965);
}
break;
}
if (sse) {
- dasm_put(Dst, 9952);
+ dasm_put(Dst, 9521);
} else {
- dasm_put(Dst, 9964);
+ dasm_put(Dst, 9533);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_MODVN:
- dasm_put(Dst, 10070);
+ dasm_put(Dst, 9639);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10078, LJ_TISNUM);
+ dasm_put(Dst, 9647, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10404);
+ dasm_put(Dst, 9973);
} else {
- dasm_put(Dst, 10419);
+ dasm_put(Dst, 9988);
}
break;
case 1:
- dasm_put(Dst, 10114, LJ_TISNUM);
+ dasm_put(Dst, 9683, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10428);
+ dasm_put(Dst, 9997);
} else {
- dasm_put(Dst, 10443);
+ dasm_put(Dst, 10012);
}
break;
default:
- dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10452);
+ dasm_put(Dst, 10021);
} else {
- dasm_put(Dst, 10466);
+ dasm_put(Dst, 10035);
}
break;
}
- dasm_put(Dst, 10474);
+ dasm_put(Dst, 10043);
if (sse) {
- dasm_put(Dst, 9952);
+ dasm_put(Dst, 9521);
} else {
- dasm_put(Dst, 9964);
+ dasm_put(Dst, 9533);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_MODNV: case BC_MODVV:
- dasm_put(Dst, 10070);
+ dasm_put(Dst, 9639);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10078, LJ_TISNUM);
+ dasm_put(Dst, 9647, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10404);
+ dasm_put(Dst, 9973);
} else {
- dasm_put(Dst, 10419);
+ dasm_put(Dst, 9988);
}
break;
case 1:
- dasm_put(Dst, 10114, LJ_TISNUM);
+ dasm_put(Dst, 9683, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10428);
+ dasm_put(Dst, 9997);
} else {
- dasm_put(Dst, 10443);
+ dasm_put(Dst, 10012);
}
break;
default:
- dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10452);
+ dasm_put(Dst, 10021);
} else {
- dasm_put(Dst, 10466);
+ dasm_put(Dst, 10035);
}
break;
}
- dasm_put(Dst, 10480);
+ dasm_put(Dst, 10049);
break;
case BC_POW:
- dasm_put(Dst, 10070);
+ dasm_put(Dst, 9639);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10078, LJ_TISNUM);
+ dasm_put(Dst, 9647, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10404);
+ dasm_put(Dst, 9973);
} else {
- dasm_put(Dst, 10419);
+ dasm_put(Dst, 9988);
}
break;
case 1:
- dasm_put(Dst, 10114, LJ_TISNUM);
+ dasm_put(Dst, 9683, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10428);
+ dasm_put(Dst, 9997);
} else {
- dasm_put(Dst, 10443);
+ dasm_put(Dst, 10012);
}
break;
default:
- dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10452);
+ dasm_put(Dst, 10021);
} else {
- dasm_put(Dst, 10466);
+ dasm_put(Dst, 10035);
}
break;
}
- dasm_put(Dst, 10485);
+ dasm_put(Dst, 10054);
if (sse) {
- dasm_put(Dst, 9952);
+ dasm_put(Dst, 9521);
} else {
- dasm_put(Dst, 9964);
+ dasm_put(Dst, 9533);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_CAT:
- dasm_put(Dst, 10489, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 10058, Dt1(->base), Dt1(->base));
break;
/* -- Constant ops ------------------------------------------------------ */
case BC_KSTR:
- dasm_put(Dst, 10580, LJ_TSTR);
+ dasm_put(Dst, 10149, LJ_TSTR);
break;
case BC_KSHORT:
if (sse) {
- dasm_put(Dst, 10617);
+ dasm_put(Dst, 10186);
} else {
- dasm_put(Dst, 10632);
+ dasm_put(Dst, 10201);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_KNUM:
if (sse) {
- dasm_put(Dst, 10640);
+ dasm_put(Dst, 10209);
} else {
- dasm_put(Dst, 10654);
+ dasm_put(Dst, 10223);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_KPRI:
- dasm_put(Dst, 10662);
+ dasm_put(Dst, 10231);
break;
case BC_KNIL:
- dasm_put(Dst, 10691, LJ_TNIL);
+ dasm_put(Dst, 10260, LJ_TNIL);
break;
/* -- Upvalue and function ops ------------------------------------------ */
case BC_UGET:
- dasm_put(Dst, 10739, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 10308, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_USETV:
#define TV2MARKOFS \
((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
- dasm_put(Dst, 10785, 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, 10881);
+ dasm_put(Dst, 10354, 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, 10450);
break;
#undef TV2MARKOFS
case BC_USETS:
- dasm_put(Dst, 10893, 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, 10462, 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, 10989);
+ dasm_put(Dst, 10558);
if (sse) {
- dasm_put(Dst, 10994);
+ dasm_put(Dst, 10563);
} else {
- dasm_put(Dst, 9768);
+ dasm_put(Dst, 9337);
}
- dasm_put(Dst, 11002, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 10571, offsetof(GCfuncL, uvptr), DtA(->v));
if (sse) {
- dasm_put(Dst, 4877);
+ dasm_put(Dst, 10580);
} else {
- dasm_put(Dst, 4883);
+ dasm_put(Dst, 10586);
}
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_USETP:
- dasm_put(Dst, 11011, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 10589, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_UCLO:
- dasm_put(Dst, 11051, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 10629, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
break;
case BC_FNEW:
- dasm_put(Dst, 11107, Dt1(->base), Dt1(->base), LJ_TFUNC);
+ dasm_put(Dst, 10685, Dt1(->base), Dt1(->base), LJ_TFUNC);
break;
/* -- Table ops --------------------------------------------------------- */
case BC_TNEW:
- dasm_put(Dst, 11174, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 10752, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
break;
case BC_TDUP:
- dasm_put(Dst, 11298, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 10876, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_GGET:
- dasm_put(Dst, 11397, Dt7(->env));
+ dasm_put(Dst, 10975, Dt7(->env));
break;
case BC_GSET:
- dasm_put(Dst, 11417, Dt7(->env));
+ dasm_put(Dst, 10995, Dt7(->env));
break;
case BC_TGETV:
- dasm_put(Dst, 11437, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 11015, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11470);
+ dasm_put(Dst, 11048);
} else {
}
- dasm_put(Dst, 11491, 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, 11689, 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, 11267, 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, 11981, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 11474, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+ dasm_put(Dst, 11559, 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, 12045, 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, 12122, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
- dasm_put(Dst, 12214, 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, 11623, 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, 11700, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
+ dasm_put(Dst, 11792, 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, 12306, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
- dasm_put(Dst, 12406, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 11884, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+ dasm_put(Dst, 11984, 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, 12454);
+ dasm_put(Dst, 12032);
if (sse) {
- dasm_put(Dst, 10994);
+ dasm_put(Dst, 10563);
} else {
}
- dasm_put(Dst, 12459, Dt6(->marked), LJ_GC_BLACK);
+ dasm_put(Dst, 12037, Dt6(->marked), LJ_GC_BLACK);
if (sse) {
- dasm_put(Dst, 12484);
+ dasm_put(Dst, 12062);
} else {
}
- dasm_put(Dst, 12492, 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, 12628, Dt6(->gclist));
+ dasm_put(Dst, 12070, 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, 12206, Dt6(->gclist));
break;
/* -- Calls and vararg handling ----------------------------------------- */
case BC_CALL: case BC_CALLM:
- dasm_put(Dst, 10074);
+ dasm_put(Dst, 9643);
if (op == BC_CALLM) {
- dasm_put(Dst, 12636);
+ dasm_put(Dst, 12214);
}
- dasm_put(Dst, 12641, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 12219, LJ_TFUNC, Dt7(->pc));
break;
case BC_CALLMT:
- dasm_put(Dst, 12636);
+ dasm_put(Dst, 12214);
break;
case BC_CALLT:
- dasm_put(Dst, 12664, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
- dasm_put(Dst, 12773, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 12262, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+ dasm_put(Dst, 12386, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
break;
case BC_ITERC:
- dasm_put(Dst, 12834, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 12447, LJ_TFUNC, 2+1, Dt7(->pc));
break;
case BC_VARG:
- dasm_put(Dst, 12896, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
- dasm_put(Dst, 13050, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 12529, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
+ dasm_put(Dst, 12683, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
break;
/* -- Returns ----------------------------------------------------------- */
case BC_RETM:
- dasm_put(Dst, 12636);
+ dasm_put(Dst, 12214);
break;
case BC_RET: case BC_RET0: case BC_RET1:
if (op != BC_RET0) {
- dasm_put(Dst, 13155);
+ dasm_put(Dst, 12788);
}
- dasm_put(Dst, 13159, FRAME_TYPE);
+ dasm_put(Dst, 12792, FRAME_TYPE);
switch (op) {
case BC_RET:
- dasm_put(Dst, 13178);
+ dasm_put(Dst, 12811);
break;
case BC_RET1:
- dasm_put(Dst, 13242);
+ dasm_put(Dst, 12875);
/* fallthrough */
case BC_RET0:
- dasm_put(Dst, 13258);
+ dasm_put(Dst, 12891);
default:
break;
}
- dasm_put(Dst, 13269, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 12902, Dt7(->pc), PC2PROTO(k));
if (op == BC_RET) {
- dasm_put(Dst, 13317, LJ_TNIL);
+ dasm_put(Dst, 12950, LJ_TNIL);
} else {
- dasm_put(Dst, 13328, LJ_TNIL);
+ dasm_put(Dst, 12961, LJ_TNIL);
}
- dasm_put(Dst, 13335);
+ dasm_put(Dst, 12968);
if (op != BC_RET0) {
- dasm_put(Dst, 13355);
+ dasm_put(Dst, 12988);
}
- dasm_put(Dst, 4966);
+ dasm_put(Dst, 4568);
break;
/* -- Loops and branches ------------------------------------------------ */
@@ -2030,7 +2000,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORL:
#if LJ_HASJIT
- dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2042,57 +2012,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, 13379);
+ dasm_put(Dst, 13012);
if (!vk) {
- dasm_put(Dst, 13383, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 13016, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 13402);
+ dasm_put(Dst, 13035);
if (!vk) {
- dasm_put(Dst, 13406, LJ_TISNUM);
+ dasm_put(Dst, 13039, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 13415);
+ dasm_put(Dst, 13048);
if (vk) {
- dasm_put(Dst, 13427);
+ dasm_put(Dst, 13060);
} else {
- dasm_put(Dst, 13446);
+ dasm_put(Dst, 13079);
}
- dasm_put(Dst, 13451);
+ dasm_put(Dst, 13084);
} else {
- dasm_put(Dst, 13464);
+ dasm_put(Dst, 13097);
if (vk) {
- dasm_put(Dst, 13470);
+ dasm_put(Dst, 13103);
} else {
- dasm_put(Dst, 13486);
+ dasm_put(Dst, 13119);
}
- dasm_put(Dst, 13494);
+ dasm_put(Dst, 13127);
if (cmov) {
- dasm_put(Dst, 9489);
+ dasm_put(Dst, 9058);
} else {
- dasm_put(Dst, 9495);
+ dasm_put(Dst, 9064);
}
if (!cmov) {
- dasm_put(Dst, 13499);
+ dasm_put(Dst, 13132);
}
}
if (op == BC_FORI) {
- dasm_put(Dst, 13505, -BCBIAS_J*4);
+ dasm_put(Dst, 13138, -BCBIAS_J*4);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 13515, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 13148, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 13529, -BCBIAS_J*4);
+ dasm_put(Dst, 13162, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 13525, BC_JLOOP);
+ dasm_put(Dst, 13158, BC_JLOOP);
}
- dasm_put(Dst, 9524);
+ dasm_put(Dst, 9093);
if (sse) {
- dasm_put(Dst, 13539);
+ dasm_put(Dst, 13172);
}
break;
case BC_ITERL:
#if LJ_HASJIT
- dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2101,33 +2071,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IITERL:
- dasm_put(Dst, 13550, LJ_TNIL);
+ dasm_put(Dst, 13183, LJ_TNIL);
if (op == BC_JITERL) {
- dasm_put(Dst, 13565, BC_JLOOP);
+ dasm_put(Dst, 13198, BC_JLOOP);
} else {
- dasm_put(Dst, 13579, -BCBIAS_J*4);
+ dasm_put(Dst, 13212, -BCBIAS_J*4);
}
- dasm_put(Dst, 9828);
+ dasm_put(Dst, 9397);
break;
case BC_LOOP:
#if LJ_HASJIT
- dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
case BC_ILOOP:
- dasm_put(Dst, 7616);
+ dasm_put(Dst, 7183);
break;
case BC_JLOOP:
#if LJ_HASJIT
- dasm_put(Dst, 13595, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+ dasm_put(Dst, 13228, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
#endif
break;
case BC_JMP:
- dasm_put(Dst, 13622, -BCBIAS_J*4);
+ dasm_put(Dst, 13255, -BCBIAS_J*4);
+ break;
+
+ /* -- Function headers -------------------------------------------------- */
+
+ /*
+ ** Reminder: A function may be called with func/args above L->maxstack,
+ ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
+ ** too. This means all FUNC* ops (including fast functions) must check
+ ** for stack overflow _before_ adding more slots!
+ */
+
+ case BC_FUNCF:
+#if LJ_HASJIT
+#endif
+ case BC_FUNCV: /* NYI: compiled vararg functions. */
+ break;
+
+ case BC_JFUNCF:
+#if !LJ_HASJIT
+ break;
+#endif
+ case BC_IFUNCF:
+ dasm_put(Dst, 13281, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+ if (op == BC_JFUNCF) {
+ dasm_put(Dst, 13312, BC_JLOOP);
+ } else {
+ dasm_put(Dst, 7183);
+ }
+ dasm_put(Dst, 13321, LJ_TNIL);
+ break;
+
+ case BC_JFUNCV:
+#if !LJ_HASJIT
+ break;
+#endif
+ dasm_put(Dst, 7146);
+ break; /* NYI: compiled vararg functions. */
+
+ case BC_IFUNCV:
+ dasm_put(Dst, 13343, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+ if (op == BC_JFUNCV) {
+ dasm_put(Dst, 13312, BC_JLOOP);
+ } else {
+ dasm_put(Dst, 13440, -4+PC2PROTO(k));
+ }
+ dasm_put(Dst, 13465, LJ_TNIL);
+ break;
+
+ case BC_FUNCC:
+ case BC_FUNCCW:
+ dasm_put(Dst, 13487, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+ if (op == BC_FUNCC) {
+ dasm_put(Dst, 13517);
+ } else {
+ dasm_put(Dst, 13521);
+ }
+ dasm_put(Dst, 13529, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ if (op == BC_FUNCC) {
+ dasm_put(Dst, 13539);
+ } else {
+ dasm_put(Dst, 13544, DISPATCH_GL(wrapf));
+ }
+ dasm_put(Dst, 13550, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
break;
/* ---------------------------------------------------------------------- */
@@ -2155,7 +2188,7 @@ static int build_backend(BuildCtx *ctx)
build_subroutines(ctx, cmov, sse);
- dasm_put(Dst, 13648);
+ dasm_put(Dst, 13576);
for (op = 0; op < BC__MAX; op++)
build_ins(ctx, (BCOp)op, op, cmov, sse);
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index 94d0641f..8784aecf 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,687 +12,680 @@
#define DASM_SECTION_CODE_OP 0
#define DASM_SECTION_CODE_SUB 1
#define DASM_MAXSECTION 2
-static const unsigned char build_actionlist[13496] = {
- 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233,
- 139,108,36,96,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15,
- 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
- 255,36,252,235,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,
- 252,233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137,
- 106,252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139,
- 108,36,96,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15,
- 132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137,
- 56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,
- 133,244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,252,235,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,
- 244,3,252,233,244,2,248,14,137,113,252,252,72,139,189,233,139,108,36,96,141,
- 68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,233,72,137,252,
- 250,137,252,233,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233,
- 237,139,149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,
- 68,36,84,252,247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252,
- 252,72,139,189,233,139,108,36,96,141,68,193,252,248,137,141,233,141,136,233,
- 137,133,233,59,141,233,137,252,233,15,135,244,15,199,131,233,237,252,255,
- 215,199,131,233,237,139,149,233,255,141,12,194,252,247,217,3,141,233,248,
- 16,131,192,1,137,68,36,84,252,247,198,237,15,132,244,17,248,18,252,247,198,
- 237,15,132,244,20,199,131,233,237,131,230,252,248,41,214,252,247,222,131,
- 232,1,15,132,244,248,248,1,139,44,10,137,106,252,248,139,108,10,4,137,106,
- 252,252,131,194,8,131,232,1,15,133,244,1,248,2,139,108,36,96,137,181,233,
- 248,3,139,68,36,84,139,76,36,88,248,4,255,57,193,15,133,244,252,248,5,131,
- 252,234,8,137,149,233,248,21,72,139,76,36,104,72,137,141,233,49,192,248,22,
- 72,131,196,40,91,94,95,93,195,248,6,15,130,244,253,59,149,233,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,255,137,149,233,137,68,36,
- 84,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248,23,137,208,
- 72,137,204,248,24,139,108,36,96,139,173,233,199,133,233,237,252,233,244,22,
- 248,25,72,129,225,239,72,137,204,248,26,139,108,36,96,72,199,193,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,255,252,233,244,16,248,20,252,
- 247,198,237,15,132,244,27,131,230,252,248,41,252,242,72,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,137,202,248,11,141,68,194,252,248,15,182,142,233,131,198,4,137,
- 149,233,137,133,233,137,116,36,100,137,202,248,1,137,252,233,232,251,1,0,
- 139,141,233,255,139,133,233,139,105,252,248,139,113,252,252,41,200,193,232,
- 3,131,192,1,252,255,165,233,248,28,85,87,86,83,72,131,252,236,40,137,205,
- 137,76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233,129,
- 195,239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68,
- 36,92,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
+static const unsigned char build_actionlist[13390] = {
+ 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
+ 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
+ 36,84,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,
+ 199,131,233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,
+ 248,1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,
+ 232,1,15,133,244,1,248,2,255,139,108,36,96,137,181,233,248,3,139,68,36,84,
+ 139,76,36,88,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,
+ 248,15,72,139,76,36,104,72,137,141,233,49,192,248,16,72,131,196,40,91,94,
+ 95,93,195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,
+ 131,194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,
+ 20,202,252,233,244,5,248,8,137,149,233,137,68,36,84,137,202,137,252,233,232,
+ 251,1,0,139,149,233,252,233,244,3,248,17,137,208,72,137,204,248,18,139,108,
+ 36,96,139,173,233,199,133,233,237,252,233,244,16,248,19,72,129,225,239,72,
+ 137,204,248,20,139,108,36,96,72,199,193,252,248,252,255,252,255,252,255,184,
+ 237,255,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,12,248,21,186,237,252,233,244,248,248,22,
+ 131,232,8,252,233,244,247,248,23,141,68,194,252,248,248,1,15,182,142,233,
+ 131,198,4,137,149,233,137,133,233,255,137,116,36,100,137,202,248,2,137,252,
+ 233,232,251,1,0,139,149,233,139,133,233,139,106,252,248,139,114,252,252,41,
+ 208,193,232,3,131,192,1,139,181,233,139,14,15,182,252,233,15,182,205,131,
+ 198,4,252,255,36,252,235,248,24,85,87,86,83,72,131,252,236,40,137,205,137,
+ 76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233,129,195,
+ 239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68,36,
+ 92,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,84,252,
- 247,198,237,15,132,244,17,252,233,244,18,248,29,255,85,87,86,83,72,131,252,
- 236,40,190,237,68,137,76,36,92,252,233,244,247,248,30,85,87,86,83,72,131,
+ 247,198,237,15,132,244,13,255,252,233,244,14,248,25,85,87,86,83,72,131,252,
+ 236,40,190,237,68,137,76,36,92,252,233,244,247,248,26,85,87,86,83,72,131,
252,236,40,190,237,248,1,68,137,68,36,88,137,205,137,76,36,96,137,209,248,
2,72,139,189,233,72,137,124,36,104,137,108,36,100,72,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,31,252,255,165,233,248,32,255,85,87,86,83,72,131,252,236,40,137,205,137,
- 76,36,96,137,108,36,100,139,189,233,43,189,233,199,68,36,92,0,0,0,0,137,124,
- 36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209,133,
- 192,15,132,244,21,137,193,190,237,252,233,244,2,248,27,1,209,131,230,252,
- 248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,72,
- 99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,139,191,233,139,
- 191,233,252,255,225,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41,
- 252,233,15,132,244,34,252,247,217,193,252,233,3,65,137,200,139,76,36,96,137,
- 145,233,139,80,4,139,0,137,85,4,137,69,0,137,252,234,252,233,244,35,248,36,
- 255,137,68,36,80,199,68,36,84,237,72,141,68,36,80,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,37,
- 15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141,
- 68,36,80,252,233,244,247,248,38,15,182,70,252,254,141,4,194,248,1,15,182,
- 110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,
- 137,192,137,205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244,
- 249,248,34,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,252,235,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,39,137,68,36,80,199,68,36,84,237,72,141,68,36,80,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,40,15,182,70,252,254,255,72,141,68,36,80,252,233,244,247,
- 248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,
- 248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,36,
- 100,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,42,139,6,15,182,204,15,182,232,131,
+ 41,200,193,232,3,131,192,1,248,27,255,139,105,252,248,129,121,253,252,252,
+ 239,15,133,244,28,248,29,137,202,137,114,252,252,139,181,233,139,14,15,182,
+ 252,233,15,182,205,131,198,4,252,255,36,252,235,248,30,85,87,86,83,72,131,
+ 252,236,40,137,205,137,76,36,96,137,108,36,100,139,189,233,43,189,233,199,
+ 68,36,92,0,0,0,0,137,124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,
+ 233,65,252,255,209,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,
+ 11,1,209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,
+ 139,117,252,244,72,99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,
+ 139,191,233,255,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,65,137,
+ 200,139,76,36,96,137,145,233,139,80,4,139,0,137,85,4,137,69,0,137,252,234,
+ 252,233,244,33,248,34,137,68,36,80,199,68,36,84,237,72,141,68,36,80,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,
+ 80,255,72,141,68,36,80,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,139,76,36,96,137,145,233,137,
+ 252,234,73,137,192,137,205,137,116,36,100,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,252,235,
+ 248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,
+ 237,252,233,244,29,248,37,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,
+ 126,252,252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,
+ 252,233,244,248,248,38,15,182,70,252,254,255,72,141,68,36,80,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,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,
+ 36,100,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,252,235,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,43,139,108,36,96,137,
- 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116,
- 36,100,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,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,252,235,248,
- 45,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120,
- 253,4,239,252,233,244,4,248,47,131,252,238,4,65,137,192,65,137,252,233,139,
- 108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,4,252,
- 233,244,3,248,48,255,141,4,199,252,233,244,247,248,49,141,4,199,141,44,252,
- 234,149,252,233,244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141,
- 4,194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,
- 70,252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,
- 116,36,100,232,251,1,5,139,149,233,133,192,15,132,244,42,248,44,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,31,255,252,255,165,233,248,52,139,108,36,96,137,149,233,
- 141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149,233,252,233,244,
- 44,248,31,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,96,137,149,233,
- 137,202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,7,139,149,233,139,
- 76,36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,15,132,244,53,252,
- 255,165,233,248,54,139,108,36,96,137,149,233,137,202,137,252,233,137,116,
- 36,100,232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,
- 16,252,255,164,253,252,235,233,248,55,129,252,248,239,15,130,244,56,255,139,
- 105,4,129,252,253,239,15,131,244,56,137,68,36,84,137,105,252,252,139,41,137,
- 105,252,248,131,232,2,15,132,244,248,137,76,36,80,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,
- 80,248,2,139,68,36,84,252,233,244,57,248,58,129,252,248,239,15,130,244,56,
- 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,59,248,60,129,252,248,239,15,130,244,56,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,59,139,65,252,248,139,131,233,199,65,252,252,
- 237,137,105,252,248,137,76,36,80,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,59,248,5,139,105,4,129,252,
- 253,239,15,132,244,59,255,139,1,139,76,36,80,137,105,252,252,137,65,252,248,
- 252,233,244,59,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,61,
- 129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,255,139,41,
- 131,189,233,0,15,133,244,56,129,121,253,12,239,15,133,244,56,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,
- 59,248,62,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,
- 56,137,84,36,80,137,205,139,17,68,141,65,8,139,76,36,96,232,251,1,9,137,252,
- 233,139,84,36,80,139,40,139,64,4,137,105,252,248,137,65,252,252,252,233,244,
- 59,248,63,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,56,255,
- 252,242,15,16,1,252,233,244,64,255,221,1,252,233,244,65,255,248,66,129,252,
- 248,239,15,130,244,56,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,59,248,3,129,121,253,4,239,15,135,
- 244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,15,130,244,
- 247,232,244,67,248,1,139,108,36,96,137,141,233,137,113,252,252,137,116,36,
- 100,137,84,36,80,137,202,137,252,233,232,251,1,10,139,141,233,139,84,36,80,
- 252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129,
- 121,253,4,239,15,133,244,56,137,84,36,80,139,17,139,108,36,96,137,141,233,
- 255,137,113,252,252,68,141,65,8,137,252,233,137,116,36,100,232,251,1,11,139,
- 141,233,139,84,36,80,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,69,184,237,252,
- 233,244,70,248,2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,
- 233,244,59,248,71,129,252,248,239,15,130,244,56,129,121,253,4,239,255,15,
- 133,244,56,139,133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,
- 237,252,233,244,70,248,72,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,133,244,56,129,121,253,12,239,15,135,244,56,255,252,242,15,16,65,8,72,
- 189,237,237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,
- 15,17,65,252,248,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,73,139,40,139,64,4,137,41,137,65,4,252,
- 233,244,69,248,2,131,189,233,0,15,132,244,73,137,84,36,80,135,205,137,194,
- 232,251,1,12,137,252,233,139,84,36,80,133,192,15,133,244,1,248,73,184,237,
- 252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,133,244,56,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,70,248,
- 75,129,252,248,239,15,130,244,56,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,31,252,255,165,233,248,3,131,198,1,252,
- 233,244,2,248,76,255,129,252,248,239,15,130,244,56,129,121,253,12,239,15,
- 133,244,56,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,100,252,233,244,56,248,77,129,252,248,239,15,130,244,56,139,
- 41,137,113,252,252,137,116,36,100,137,108,36,80,129,121,253,4,239,15,133,
- 244,9,255,72,131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,
- 181,233,137,116,36,84,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,96,137,141,233,
- 131,193,8,137,141,233,255,139,108,36,84,141,76,193,232,72,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,139,76,36,80,139,84,36,84,232,
- 244,28,199,131,233,237,139,108,36,96,139,116,36,80,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,72,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,100,
- 137,68,36,84,72,199,193,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,76,36,80,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,100,252,233,244,56,248,78,139,173,233,137,
- 113,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133,244,9,128,
- 189,233,235,15,135,244,9,139,181,233,137,116,36,84,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,96,137,141,233,137,141,233,139,108,36,84,141,76,193,252,
- 240,72,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,139,
- 76,36,80,139,84,36,84,232,244,28,199,131,233,237,139,108,36,96,139,116,36,
- 80,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,72,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,100,137,68,36,84,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,76,36,80,137,185,
- 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,79,
- 139,108,36,96,137,113,252,252,72,252,247,133,233,237,15,132,244,56,137,141,
- 233,141,68,193,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,
- 233,252,233,244,22,255,248,65,221,89,252,248,252,233,244,59,248,80,129,252,
- 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,
- 184,237,237,102,72,15,110,200,15,84,193,248,64,252,242,15,17,65,252,248,255,
- 248,80,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,
- 1,217,225,248,64,248,65,221,89,252,248,255,248,59,184,237,248,70,137,68,36,
- 84,248,57,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,252,235,248,6,
- 199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202,72,199,193,252,
- 248,252,255,252,255,252,255,252,233,244,18,255,248,81,129,252,248,239,15,
- 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,81,1,252,233,244,64,
- 248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,
- 242,15,16,1,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244,
- 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,85,252,233,244,
- 64,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,221,1,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56,
- 129,121,253,4,239,15,135,244,56,221,1,232,244,83,252,233,244,65,248,84,255,
- 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,232,244,
- 85,252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,121,253,4,
- 239,15,135,244,56,217,252,237,221,1,217,252,241,252,233,244,65,248,87,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252,236,221,
- 1,217,252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129,
- 121,253,4,239,15,135,244,56,221,1,232,244,89,252,233,244,65,248,90,129,252,
- 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,254,252,
- 233,244,65,248,91,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,
- 135,244,56,221,1,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,242,221,216,252,233,
- 244,65,248,93,129,252,248,239,15,130,244,56,255,129,121,253,4,239,15,135,
- 244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
- 233,244,65,248,94,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
- 244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
- 243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,135,244,56,255,221,1,217,232,217,252,243,252,233,244,65,255,248,96,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,
- 255,137,76,36,80,137,213,232,251,1,14,139,76,36,80,137,252,234,252,233,244,
- 64,255,248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,252,242,15,16,1,255,137,76,36,80,137,213,232,251,1,15,139,76,36,80,137,
- 252,234,252,233,244,64,255,248,98,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,252,242,15,16,1,255,137,76,36,80,137,213,232,251,1,16,
- 139,76,36,80,137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,
- 89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,121,
- 253,4,239,15,135,244,56,221,1,220,141,233,252,233,244,65,255,248,101,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,
- 239,15,135,244,56,221,1,221,65,8,217,252,243,252,233,244,65,248,102,129,252,
- 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,
- 255,15,135,244,56,221,65,8,221,1,217,252,253,221,217,252,233,244,65,248,103,
- 129,252,248,239,15,130,244,56,139,105,4,129,252,253,239,15,135,244,56,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,
- 80,219,68,36,80,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,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,
- 244,2,255,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,89,
- 193,252,242,15,17,65,252,248,255,221,1,199,68,36,80,0,0,128,90,216,76,36,
- 80,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244,1,
- 255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,
- 252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,135,244,56,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,105,252,242,15,92,224,248,1,252,242,15,
- 17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,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,70,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,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223,
- 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15,
- 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,
- 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248,
- 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,
- 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248,
- 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,
- 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252,
- 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131,
- 197,1,252,233,244,1,255,248,110,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,
- 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252,
- 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,
- 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,
- 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233,
- 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133,
- 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42,
- 197,252,233,244,64,255,137,108,36,80,219,68,36,80,252,233,244,65,255,248,
- 113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,239,
- 15,133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252,
- 255,0,0,0,15,135,244,56,137,68,36,84,255,221,1,219,92,36,84,129,124,36,84,
- 252,255,0,0,0,15,135,244,56,255,199,68,36,32,1,0,0,0,72,141,68,36,84,137,
- 76,36,80,248,114,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,
- 252,233,137,116,36,100,232,251,1,17,139,76,36,80,139,149,233,199,65,252,252,
- 237,137,65,252,248,252,233,244,59,248,115,139,171,233,59,171,233,15,130,244,
- 247,232,244,67,248,1,137,76,36,80,199,68,36,84,252,255,252,255,252,255,252,
- 255,129,252,248,239,15,130,244,56,15,134,244,247,129,121,253,20,239,255,252,
- 242,15,45,105,16,137,108,36,84,255,221,65,16,219,92,36,84,255,248,1,129,121,
- 253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36,
- 32,139,173,233,255,252,242,15,45,73,8,255,139,68,36,84,57,197,15,130,244,
- 251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,116,
- 141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,114,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,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,
- 56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,255,137,76,36,80,
- 129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255,
- 252,242,15,45,65,8,255,221,65,8,219,92,36,84,139,68,36,84,255,133,192,15,
- 142,244,116,131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130,
- 244,118,15,182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1,
- 131,232,1,15,133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239,
- 255,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,
- 137,76,36,80,129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15,
- 132,244,116,57,131,233,15,130,244,120,129,197,239,137,116,36,84,137,68,36,
- 32,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,84,252,233,244,114,248,121,129,252,248,239,15,
- 130,244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,
- 36,80,129,121,253,4,239,15,133,244,56,139,41,139,133,233,57,131,233,255,15,
- 130,244,120,129,197,239,137,116,36,84,137,68,36,32,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,84,252,233,244,114,248,122,129,252,248,239,15,130,244,56,255,
- 139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,36,80,129,121,
- 253,4,239,15,133,244,56,139,41,139,133,233,57,131,233,15,130,244,120,129,
- 197,239,137,116,36,84,137,68,36,32,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,84,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4,
- 239,15,133,244,56,137,84,36,80,137,205,139,9,232,251,1,18,137,252,233,139,
- 84,36,80,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237,
- 237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,
- 252,233,244,64,255,248,125,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,
- 88,193,102,15,126,197,255,137,68,36,84,141,68,193,252,240,255,137,84,36,80,
- 255,248,1,57,200,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,
- 242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,131,232,8,252,233,
- 244,1,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
- 244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
- 102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,
- 255,248,129,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,
- 252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,
- 126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,49,213,255,248,
- 130,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,
- 15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,
- 255,15,205,252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129,
- 121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,
- 205,252,242,15,88,193,102,15,126,197,255,252,247,213,255,248,131,252,242,
- 15,42,197,252,233,244,64,248,126,252,242,15,42,197,139,84,36,80,252,233,244,
- 64,255,248,127,255,139,68,36,84,252,233,244,56,255,248,133,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,
- 56,252,242,15,16,1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,
- 242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,
- 211,229,137,193,252,233,244,131,255,248,134,129,252,248,239,15,130,244,56,
- 129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,
- 15,16,1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
- 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,
- 137,193,252,233,244,131,255,248,135,129,252,248,239,15,130,244,56,129,121,
- 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,
- 252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
- 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,
- 252,233,244,131,255,248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,
- 16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
- 202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,
- 131,255,248,137,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,
+ 214,139,105,252,248,184,237,252,233,244,29,248,41,139,108,36,96,137,149,233,
+ 68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116,36,100,232,
+ 251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,42,248,4,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,252,235,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,65,137,192,65,137,252,233,139,108,36,96,137,
+ 149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,252,233,244,3,
+ 248,46,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,65,137,232,65,137,193,15,182,70,252,252,
+ 137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,
+ 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,255,184,237,252,233,244,27,248,50,139,108,36,96,137,149,
+ 233,141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149,233,252,233,
+ 244,42,248,51,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,252,233,8,
+ 139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137,116,36,100,
+ 232,251,1,7,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,131,192,
+ 1,57,215,15,132,244,52,137,202,137,114,252,252,139,181,233,139,14,15,182,
+ 252,233,15,182,205,131,198,4,252,255,36,252,235,248,53,139,108,36,96,137,
+ 149,233,137,202,137,252,233,137,116,36,100,232,251,1,8,139,149,233,139,70,
+ 252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,248,
+ 54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,239,15,131,244,
+ 55,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,
+ 232,2,15,132,244,248,137,209,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,248,2,139,68,36,84,252,233,244,
+ 56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237,252,247,213,57,
+ 232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,106,252,248,139,
+ 132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,233,
+ 244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,139,114,252,252,129,
+ 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,
+ 66,252,252,237,15,132,244,58,139,131,233,199,66,252,252,237,137,106,252,248,
+ 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,58,248,5,139,105,4,129,252,253,239,15,132,244,58,255,139,1,
+ 137,106,252,252,137,66,252,248,252,233,244,58,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,60,129,252,248,239,15,130,244,55,129,122,253,4,
+ 239,15,133,244,55,255,139,42,131,189,233,0,15,133,244,55,129,122,253,12,239,
+ 15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,
+ 106,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,58,248,61,255,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,133,244,55,137,213,68,141,66,8,139,18,139,
+ 76,36,96,232,251,1,9,137,252,234,139,40,139,64,4,139,114,252,252,137,106,
+ 252,248,137,66,252,252,252,233,244,58,248,62,129,252,248,239,15,133,244,55,
+ 129,122,253,4,239,15,135,244,55,255,252,242,15,16,2,252,233,244,63,255,221,
+ 2,252,233,244,64,255,248,65,129,252,248,239,15,130,244,55,139,114,252,252,
+ 129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,
+ 248,252,233,244,58,248,3,129,122,253,4,239,15,135,244,55,131,187,233,0,15,
+ 133,244,55,139,171,233,59,171,233,255,15,130,244,247,232,244,66,248,1,139,
+ 108,36,96,137,149,233,137,116,36,100,137,252,233,232,251,1,10,139,149,233,
+ 252,233,244,2,248,67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,
+ 122,253,4,239,15,133,244,55,139,108,36,96,137,149,233,255,139,114,252,252,
+ 68,141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,11,139,149,233,133,
+ 192,15,132,244,249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,
+ 106,16,139,66,20,137,42,137,66,4,248,68,184,237,252,233,244,69,248,2,199,
+ 66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,58,248,70,129,
+ 252,248,239,15,130,244,55,139,106,252,248,129,122,253,4,239,255,15,133,244,
+ 55,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,
+ 237,184,237,252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,
+ 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,
+ 252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,
+ 242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248,
+ 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,
+ 137,42,137,66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,
+ 233,137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,
+ 184,237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,106,252,
+ 248,129,122,253,4,239,15,133,244,55,139,133,233,139,114,252,252,199,66,252,
+ 252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,
+ 90,8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,
+ 74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,
+ 238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239,
+ 15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,
+ 106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252,248,
+ 239,15,130,244,55,139,42,139,114,252,252,137,116,36,100,137,108,36,80,129,
+ 122,253,4,239,15,133,244,55,72,131,189,233,0,15,133,244,55,128,189,233,235,
+ 15,135,244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,
+ 1,141,116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,96,
+ 137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,15,
+ 132,244,249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,
+ 252,238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,
+ 233,237,255,139,108,36,96,139,116,36,80,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,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,72,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,100,137,68,36,84,72,
+ 199,193,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244,13,
+ 252,233,244,14,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,139,76,36,80,
+ 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,
+ 248,77,139,106,252,248,139,173,233,139,114,252,252,137,116,36,100,137,108,
+ 36,80,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,135,244,55,139,
+ 141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,116,193,252,248,
+ 59,181,233,15,135,244,55,137,181,233,139,108,36,96,137,149,233,137,149,233,
+ 141,108,194,252,240,72,41,252,245,57,206,15,132,244,249,248,2,255,139,68,
+ 46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,
+ 2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,139,108,36,96,139,
+ 116,36,80,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,141,4,50,193,252,238,
+ 3,59,133,233,15,135,244,255,255,137,213,72,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,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233,244,
+ 14,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,76,36,80,137,185,
+ 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,78,
+ 139,108,36,96,72,252,247,133,233,237,15,132,244,55,255,137,149,233,141,68,
+ 194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,
+ 244,16,255,248,64,139,114,252,252,221,90,252,248,252,233,244,58,248,79,129,
+ 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
+ 72,184,237,237,102,72,15,110,200,15,84,193,248,63,139,114,252,252,252,242,
+ 15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,253,4,239,
+ 15,135,244,55,221,2,217,225,248,63,248,64,139,114,252,252,221,90,252,248,
+ 255,248,58,184,237,248,69,137,68,36,84,248,56,252,247,198,237,15,133,244,
+ 253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,72,252,247,209,141,
+ 20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+ 248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,
+ 248,252,255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,244,63,
+ 248,81,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
+ 242,15,16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,233,244,
+ 63,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,221,2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,83,255,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,
+ 84,252,233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,122,253,4,
+ 239,15,135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,248,86,129,
+ 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,236,221,
+ 2,217,252,241,252,233,244,64,248,87,129,252,248,239,255,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,89,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,254,252,
+ 233,244,64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,15,130,
+ 244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,233,
+ 244,64,248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,135,
+ 244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
+ 233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
+ 244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
+ 243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,239,
+ 15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,129,
+ 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
+ 255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248,96,129,252,248,
+ 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,
+ 213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,213,232,
+ 251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,139,106,252,248,
+ 252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220,141,233,252,
+ 233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217,252,243,252,
+ 233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
+ 244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217,252,253,221,
+ 217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139,106,4,129,252,
+ 253,239,15,135,244,55,139,114,252,252,139,2,137,106,252,252,137,66,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,80,219,68,36,80,255,139,106,252,
+ 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,
+ 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,69,248,3,255,15,
+ 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,
+ 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,
+ 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248,
+ 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,
+ 248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
+ 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,
+ 244,250,255,15,40,224,232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,
+ 252,248,252,242,15,17,34,255,217,192,232,244,104,220,252,233,248,1,221,90,
+ 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,
+ 237,252,233,244,69,248,3,129,252,245,0,0,0,128,137,106,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,
+ 105,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
+ 253,12,239,15,135,244,55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
+ 138,244,1,221,217,252,233,244,64,255,248,106,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
+ 15,16,2,252,242,15,16,74,8,232,244,107,252,233,244,63,255,248,106,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
+ 15,135,244,55,221,2,221,66,8,232,244,107,252,233,244,64,255,248,108,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,
+ 2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,
+ 244,55,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,
+ 244,1,255,248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
+ 244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,
+ 252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,
+ 15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,55,255,248,
+ 110,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42,
+ 255,252,242,15,42,133,233,252,233,244,63,255,219,133,233,252,233,244,64,255,
+ 248,111,129,252,248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139,
+ 42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,
+ 15,42,197,252,233,244,63,255,137,108,36,80,219,68,36,80,252,233,244,64,255,
+ 248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,252,248,
+ 239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61,
+ 252,255,0,0,0,15,135,244,55,137,68,36,84,255,221,2,219,92,36,84,129,124,36,
+ 84,252,255,0,0,0,15,135,244,55,255,199,68,36,32,1,0,0,0,72,141,68,36,84,248,
+ 113,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233,137,
+ 116,36,100,232,251,1,17,139,149,233,139,114,252,252,199,66,252,252,237,137,
+ 66,252,248,252,233,244,58,248,114,139,171,233,59,171,233,15,130,244,247,232,
+ 244,66,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,239,
+ 15,130,244,55,15,134,244,247,129,122,253,20,239,255,252,242,15,45,106,16,
+ 137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133,
+ 244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,32,139,173,233,
+ 255,252,242,15,45,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133,201,
+ 15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,115,141,172,253,13,233,
+ 131,192,1,248,4,137,68,36,32,137,232,252,233,244,113,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,
+ 115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244,55,139,171,233,
+ 59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,
+ 55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,
+ 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,115,131,189,233,1,15,
+ 130,244,115,15,133,244,117,57,131,233,15,130,244,117,15,182,141,233,139,171,
+ 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,
+ 233,252,233,244,113,248,118,129,252,248,239,255,15,130,244,55,139,171,233,
+ 59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,
+ 139,42,139,133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,129,197,
+ 239,137,116,36,84,137,68,36,32,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,84,252,233,244,113,
+ 248,120,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,
+ 232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,
+ 233,255,15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,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,84,252,233,244,113,248,121,129,252,248,239,15,
+ 130,244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,
+ 122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119,
+ 129,197,239,137,116,36,84,137,68,36,32,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,84,252,233,244,113,248,122,129,252,248,239,15,130,244,55,129,122,
+ 253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242,
+ 15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,244,55,129,122,
+ 253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
+ 252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,255,248,
+ 124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
+ 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,
+ 255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244,125,129,120,253,
+ 4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
+ 33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,
+ 15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,
+ 88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,
+ 205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,
+ 102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,55,129,122,253,
+ 4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
+ 242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,248,130,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,
+ 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,247,
+ 213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,126,139,68,36,84,
+ 252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,239,
+ 15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,
+ 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
+ 202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252,233,244,
+ 125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,
189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
- 102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,244,131,248,118,
- 184,237,252,233,244,56,248,120,184,237,248,56,139,108,36,96,41,202,137,113,
- 252,252,137,116,36,100,137,84,36,80,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,252,233,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,80,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,31,252,
- 255,165,233,248,3,139,141,233,139,84,36,80,1,202,252,233,244,70,248,5,186,
- 237,137,252,233,232,251,1,0,252,233,244,1,248,67,93,72,137,108,36,32,139,
- 108,36,96,41,202,137,84,36,84,137,113,252,252,137,116,36,100,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,84,1,202,72,
- 139,108,36,32,85,139,105,252,248,195,248,138,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,139,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,96,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,252,235,233,248,140,131,198,4,139,77,232,137,76,36,84,
- 252,233,244,4,248,141,255,204,255,248,142,255,248,143,255,248,144,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,252,235,255,248,83,
- 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,145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
- 216,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,72,184,237,237,102,72,15,110,
- 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,
- 195,248,85,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,146,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
- 72,15,110,216,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,72,184,237,237,102,
- 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,
- 193,248,1,195,248,105,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,147,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
- 216,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,72,184,237,237,102,72,15,110,216,
- 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,148,255,15,40,232,252,242,15,94,193,72,184,237,237,102,
- 72,15,110,208,72,184,237,237,102,72,15,110,216,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,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,
- 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,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,89,217,252,234,222,201,248,149,217,84,36,8,129,124,36,8,0,0,128,127,15,
- 132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,248,150,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,108,255,248,151,252,242,15,
- 45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,
- 152,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,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,
- 130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,15,94,200,88,15,40,
- 193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,72,184,237,
- 237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12,
- 72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,72,209,224,15,132,
- 244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,
- 36,16,252,242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,
- 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,
- 217,221,92,36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,
- 110,208,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,
- 237,102,72,15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,
- 15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,
- 15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,
- 80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,
- 132,244,3,15,87,192,195,248,153,255,131,252,250,1,15,130,244,83,15,132,244,
- 85,131,252,250,3,15,130,244,105,15,135,244,248,252,242,15,81,192,195,248,
- 2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132,
- 244,247,232,244,89,80,252,233,244,253,248,1,232,244,149,255,80,252,233,244,
- 253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,
- 217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,252,233,244,
- 253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252,236,217,201,
- 217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,253,248,2,131,
- 252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233,244,253,248,
- 1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,
- 84,36,12,221,68,36,4,131,252,250,1,15,130,244,83,15,132,244,85,131,252,250,
- 3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,
- 244,89,15,132,244,149,131,252,250,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,250,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,250,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,154,255,
- 65,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,
- 1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,
- 248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,
- 5,15,130,244,148,15,132,244,108,65,131,252,248,7,15,132,244,247,15,135,244,
- 248,72,184,237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,
- 102,72,15,110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,
- 242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,
- 244,247,217,252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,
- 201,217,252,253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,
- 247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,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,148,15,132,244,108,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,
- 155,137,200,86,72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,
- 94,195,255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,
- 244,43,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,
- 4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,
- 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,
- 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
- 235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,
- 202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,
- 4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,
- 244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,
- 183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,
- 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,
- 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,
- 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,
- 72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,
- 59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,
- 15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131,
- 198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,
- 244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,
- 183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,
- 198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,139,4,194,137,108,202,
- 4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
- 235,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,
- 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,
- 253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237,237,102,72,
- 15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,
- 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,
- 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,
- 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,
- 2,129,124,253,194,4,239,15,133,244,52,139,12,194,137,213,232,251,1,18,255,
- 252,242,15,42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,
- 182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48,255,252,
- 242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,
- 124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242,15,88,
- 4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,
- 244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252,234,252,
- 242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,
- 242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,
- 242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,
- 234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,
- 252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,
- 4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,
- 16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,
- 15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,
- 242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,
- 252,242,15,16,4,252,234,252,242,15,94,4,194,255,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,156,232,244,148,255,252,233,244,156,255,232,244,108,255,
- 15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192,
- 65,41,232,248,35,137,205,137,116,36,100,232,251,1,21,139,149,233,133,192,
- 15,133,244,44,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,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,68,202,4,237,137,
- 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
- 255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,
- 28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,
- 255,72,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,
- 252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,
- 232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,
- 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,
- 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,
- 139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,
- 77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,
- 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,
- 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,
- 213,141,139,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,
- 208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,
- 64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,
- 232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,
- 132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,
- 1,22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,
- 255,139,172,253,141,233,139,141,233,255,72,252,247,208,139,106,252,248,139,
- 172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,
- 4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,
- 189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,23,
- 139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
- 36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,
- 139,20,135,137,252,233,137,116,36,100,232,251,1,24,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,252,235,255,139,76,36,96,137,145,233,248,1,65,137,192,
- 37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,248,2,137,
- 194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,232,251,
- 1,25,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,252,235,248,3,184,1,8,0,0,
- 252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252,233,244,
- 1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,
- 137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,27,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,252,235,248,3,137,252,233,232,251,
- 1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,
- 106,252,248,139,173,233,139,4,135,252,233,244,157,255,72,252,247,208,139,
- 106,252,248,139,173,233,139,4,135,252,233,244,158,255,15,182,252,236,15,182,
- 192,129,124,253,252,234,4,239,15,133,244,38,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,15,133,244,38,59,133,233,15,131,244,38,193,224,3,
- 3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,
+ 102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244,125,255,
+ 248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,
+ 122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,
+ 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
+ 126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,125,255,248,134,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,
+ 12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,
+ 72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,
+ 102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248,
+ 239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,
+ 244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
+ 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,
+ 255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,119,
+ 184,237,248,55,139,108,36,96,139,114,252,252,137,116,36,100,137,149,233,141,
+ 68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,
+ 251,137,252,233,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,255,
+ 139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,15,
+ 133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,
+ 36,252,235,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,
+ 72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,
+ 248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,
+ 233,252,233,244,1,248,66,93,72,137,108,36,32,139,108,36,96,137,116,36,100,
+ 137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,
+ 149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,32,85,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,96,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,252,235,233,248,
+ 138,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,139,255,204,255,248,
+ 140,255,248,141,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,252,235,255,248,82,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,143,72,184,237,237,102,72,15,
+ 110,208,72,184,237,237,102,72,15,110,216,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,72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,
+ 194,252,242,15,92,200,15,40,193,248,1,195,248,84,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,144,72,184,237,
+ 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,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,72,184,237,237,102,72,15,110,208,252,242,15,194,193,
+ 6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,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,145,72,184,237,237,102,72,
+ 15,110,208,72,184,237,237,102,72,15,110,216,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,72,184,237,237,102,72,15,110,216,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,146,255,15,40,232,
+ 252,242,15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,
+ 15,110,216,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,15,86,226,72,184,237,237,102,
+ 72,15,110,208,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,
+ 197,252,242,15,89,204,252,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,88,217,252,234,222,201,
+ 248,147,217,84,36,8,129,124,36,8,0,0,128,127,15,132,244,247,129,124,36,8,
+ 0,0,128,252,255,15,132,244,248,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,107,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,3,248,4,
+ 252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,72,184,237,
+ 237,102,72,15,110,200,252,242,15,94,200,88,15,40,193,252,247,216,131,252,
+ 248,1,15,132,244,5,252,233,244,1,248,7,72,184,237,237,102,72,15,110,192,195,
+ 248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15,
+ 132,244,248,255,102,72,15,126,192,72,209,224,15,132,244,250,72,193,192,12,
+ 72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,15,17,
+ 68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,252,
+ 233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,8,252,
+ 242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,
+ 15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,
+ 102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,
+ 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,
+ 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,
+ 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,
+ 151,255,131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,
+ 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,8,221,
+ 68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,88,80,252,
+ 233,244,253,248,1,232,244,147,255,80,252,233,244,253,248,2,131,252,250,7,
+ 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,
+ 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9,
+ 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,
+ 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244,
+ 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,
+ 248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4,
+ 131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,104,15,
+ 135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,88,15,132,244,
+ 147,131,252,250,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,250,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,250,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,152,255,65,131,252,248,
+ 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
+ 193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,
+ 193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,146,
+ 15,132,244,107,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237,
+ 237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,
+ 200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68,
+ 36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,252,
+ 243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,253,
+ 221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,255,
+ 252,242,15,93,193,195,248,1,252,242,15,95,193,195,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,146,
+ 15,132,244,107,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,153,137,200,86,72,137,214,
+ 83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,255,249,255,129,124,
+ 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,
+ 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,
+ 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,
+ 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,
+ 4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,
+ 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,
+ 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
+ 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
+ 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,
+ 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,
+ 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,
+ 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,72,252,247,208,
+ 131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,
+ 198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,
+ 46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131,198,4,57,68,202,4,
+ 255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,
+ 244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,
+ 180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+ 255,36,252,235,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,
+ 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,
+ 237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,
+ 135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,15,87,
+ 193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,
+ 194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,
+ 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,
+ 4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,
+ 137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,
+ 192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,
+ 252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,
+ 239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,
+ 4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,
+ 194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,
+ 221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,
+ 221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,
+ 255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,
+ 194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,
+ 4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,
+ 4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,
+ 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,
+ 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,
+ 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,
+ 234,252,242,15,94,4,194,255,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,154,
+ 232,244,146,255,252,233,244,154,255,232,244,107,255,15,182,252,236,15,182,
+ 192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,
+ 137,116,36,100,232,251,1,21,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,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+ 255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,
+ 15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,
+ 16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,
137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
- 252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,
- 15,132,244,38,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,194,4,
- 239,15,133,244,38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192,
- 72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,
- 234,248,157,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,252,235,248,3,15,
- 182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,
- 1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,
- 252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,
- 133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,
- 120,253,4,239,15,132,244,248,248,1,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,252,235,248,
- 2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37,
- 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,
- 44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133,
- 233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
- 1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,
- 4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
- 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,
- 244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
- 244,41,139,4,194,252,233,244,158,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,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139,
- 44,252,234,248,158,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,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,
- 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,39,
- 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,
- 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137,
- 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,
- 36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233,139,108,
- 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,
- 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,
- 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133,
- 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
- 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,
- 232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,
- 1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,78,252,253,252,
- 233,244,1,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,137,124,36,80,255,248,1,141,12,202,139,105,252,
- 248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252,242,15,
- 45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,244,251,
- 41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,
- 111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,137,
- 145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,29,139,149,
- 233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,131,233,137,
- 171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,141,76,202,8,139,
- 105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,233,255,141,
- 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,31,248,
- 53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
- 68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,4,
- 131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209,
- 128,189,233,1,15,135,244,251,248,4,139,68,36,84,252,255,165,233,248,5,255,
- 252,247,198,237,15,133,244,4,15,182,70,252,253,72,252,247,208,141,20,194,
- 139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,244,1,
- 131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,141,
- 76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,
- 252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,
- 252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15,
- 182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124,
- 36,80,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108,
- 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,
- 252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,
- 244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,
- 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
- 248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,255,137,197,193,
- 252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,
- 253,248,6,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,
- 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,
- 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,
- 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,
- 137,68,36,84,252,247,198,237,15,133,244,253,255,248,17,137,215,131,232,1,
- 15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,
- 131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,
- 5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,
- 252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,
- 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,252,255,36,252,235,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,141,255,141,12,
- 202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,
- 255,139,105,20,255,129,252,253,239,15,135,244,54,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,1,252,242,15,17,65,24,255,
- 221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,
- 255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,
- 15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,
- 254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,
- 193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,
- 255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,
- 233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,
- 128,233,139,108,36,96,137,147,233,137,171,233,252,255,224,255,141,180,253,
- 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
- 255,254,0
+ 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,
+ 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,
+ 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,
+ 233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,
+ 233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,
+ 132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
+ 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,
+ 248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,
+ 255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,
+ 248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,
+ 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
+ 232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,
+ 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,22,137,252,234,252,
+ 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,
+ 233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,
+ 252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,
+ 36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,
+ 251,1,23,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,
+ 66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,1,24,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,252,235,255,139,76,36,96,137,145,233,248,
+ 1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,
+ 248,2,137,194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,
+ 232,251,1,25,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,252,235,248,3,184,
+ 1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252,
+ 233,244,1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,
+ 139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,
+ 27,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,252,235,248,3,137,252,233,
+ 232,251,1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,
+ 208,139,106,252,248,139,173,233,139,4,135,252,233,244,155,255,72,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,15,133,244,36,59,133,233,15,131,244,36,
+ 193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,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,252,235,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,155,255,15,182,252,236,15,182,
+ 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,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,252,235,
+ 248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,
+ 133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,
+ 244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
+ 239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,
+ 233,129,120,253,4,239,15,132,244,248,248,1,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,252,
+ 235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,
+ 244,35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
+ 39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,
+ 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
+ 249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,
+ 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+ 36,252,235,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,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,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
+ 244,37,139,44,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,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,
+ 189,233,0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,
+ 244,37,139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,
+ 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,
+ 248,6,137,68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,
+ 76,141,68,36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233,
+ 139,108,36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,
+ 171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,
+ 252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,
+ 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,
+ 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,
+ 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,
+ 253,252,233,244,1,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,137,124,36,80,255,248,1,141,12,202,139,
+ 105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252,
+ 242,15,45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,
+ 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,
+ 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,
+ 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,
+ 76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,
+ 1,29,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
+ 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,129,
+ 124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,
+ 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,
+ 141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,
+ 248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,
+ 137,68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,
+ 4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,
+ 36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,
+ 15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,
+ 244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139,191,
+ 233,139,191,233,252,233,244,4,248,7,15,139,244,1,131,230,252,248,41,252,242,
+ 137,215,139,114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,
+ 252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,
+ 139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,
+ 237,15,133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,
+ 15,182,205,131,198,4,252,255,36,252,235,255,15,182,252,236,139,66,252,248,
+ 141,12,202,139,128,233,15,182,128,233,137,124,36,80,141,188,253,194,233,43,
+ 122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,
+ 131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,
+ 131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,
+ 131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,
+ 182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,
+ 0,137,208,41,252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,1,137,
+ 108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,139,71,252,
+ 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
+ 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,
+ 36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,
+ 252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,
+ 198,237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,
+ 139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,
+ 1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,
+ 244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,
+ 5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
+ 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
+ 198,4,193,232,16,252,255,36,252,235,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,
+ 14,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,139,255,141,12,202,255,129,121,
+ 253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,105,20,255,
+ 129,252,253,239,15,135,244,53,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,1,252,242,15,17,65,24,255,221,65,8,221,1,255,
+ 220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,
+ 244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248,141,180,
+ 253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,
+ 244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,
+ 12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,
+ 137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,
+ 137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,
+ 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,190,233,139,108,
+ 36,96,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,244,
+ 249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,252,
+ 237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,
+ 194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,96,141,12,
+ 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,
+ 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
+ 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
+ 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,
+ 244,3,252,233,244,2,255,139,106,252,248,72,139,189,233,139,108,36,96,141,
+ 68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,252,
+ 233,255,72,137,252,250,137,252,233,255,15,135,244,21,199,131,233,237,255,
+ 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,
+ 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
};
enum {
- GLOB_gate_lf,
- GLOB_gate_lf_growstack,
- GLOB_gate_lv,
- GLOB_gate_lv_growstack,
- GLOB_gate_cwrap,
- GLOB_gate_c_growstack,
+ GLOB_vm_returnp,
+ GLOB_cont_dispatch,
GLOB_vm_returnc,
GLOB_BC_RET_Z,
GLOB_vm_return,
- GLOB_gate_c,
- GLOB_vm_returnp,
GLOB_vm_leave_cp,
GLOB_vm_leave_unw,
GLOB_vm_unwind_c,
GLOB_vm_unwind_c_eh,
GLOB_vm_unwind_ff,
GLOB_vm_unwind_ff_eh,
- GLOB_cont_dispatch,
+ GLOB_vm_growstack_c,
+ GLOB_vm_growstack_v,
+ GLOB_vm_growstack_f,
GLOB_vm_resume,
GLOB_vm_pcall,
GLOB_vm_call,
+ GLOB_vm_call_dispatch,
GLOB_vmeta_call,
+ GLOB_vm_call_dispatch_f,
GLOB_vm_cpcall,
GLOB_cont_cat,
GLOB_cont_ra,
@@ -714,6 +707,7 @@ enum {
GLOB_vmeta_unm,
GLOB_vmeta_arith_vv,
GLOB_vmeta_len,
+ GLOB_vmeta_call_ra,
GLOB_BC_CALLT_Z,
GLOB_vmeta_for,
GLOB_ff_assert,
@@ -787,12 +781,11 @@ enum {
GLOB_ff_table_getn,
GLOB_ff_bit_tobit,
GLOB_ff_bit_band,
- GLOB_fff_resbit_op,
+ GLOB_fff_resbit,
GLOB_fff_fallback_bit_op,
GLOB_ff_bit_bor,
GLOB_ff_bit_bxor,
GLOB_ff_bit_bswap,
- GLOB_fff_resbit,
GLOB_ff_bit_bnot,
GLOB_ff_bit_lshift,
GLOB_ff_bit_rshift,
@@ -823,28 +816,26 @@ enum {
GLOB__MAX
};
static const char *const globnames[] = {
- "gate_lf",
- "gate_lf_growstack",
- "gate_lv",
- "gate_lv_growstack",
- "gate_cwrap",
- "gate_c_growstack",
+ "vm_returnp",
+ "cont_dispatch",
"vm_returnc",
"BC_RET_Z",
"vm_return",
- "gate_c",
- "vm_returnp",
"vm_leave_cp",
"vm_leave_unw",
"vm_unwind_c@8",
"vm_unwind_c_eh",
"vm_unwind_ff@4",
"vm_unwind_ff_eh",
- "cont_dispatch",
+ "vm_growstack_c",
+ "vm_growstack_v",
+ "vm_growstack_f",
"vm_resume",
"vm_pcall",
"vm_call",
+ "vm_call_dispatch",
"vmeta_call",
+ "vm_call_dispatch_f",
"vm_cpcall",
"cont_cat",
"cont_ra",
@@ -866,6 +857,7 @@ static const char *const globnames[] = {
"vmeta_unm",
"vmeta_arith_vv",
"vmeta_len",
+ "vmeta_call_ra",
"BC_CALLT_Z",
"vmeta_for",
"ff_assert",
@@ -939,12 +931,11 @@ static const char *const globnames[] = {
"ff_table_getn",
"ff_bit_tobit",
"ff_bit_band",
- "fff_resbit_op",
+ "fff_resbit",
"fff_fallback_bit_op",
"ff_bit_bor",
"ff_bit_bxor",
"ff_bit_bswap",
- "fff_resbit",
"ff_bit_bnot",
"ff_bit_lshift",
"ff_bit_rshift",
@@ -1030,392 +1021,367 @@ static const char *const extnames[] = {
static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
{
dasm_put(Dst, 0);
- dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams));
-#if LJ_HASJIT
-#endif
- dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams));
- dasm_put(Dst, 157, LJ_TNIL, PC2PROTO(k));
-#if LJ_HASJIT
-#endif
- dasm_put(Dst, 192, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
- dasm_put(Dst, 290, Dt1(->top), FRAME_TYPE, 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));
- dasm_put(Dst, 373, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
- dasm_put(Dst, 478, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
- dasm_put(Dst, 565, Dt1(->top), 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, 663, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
- dasm_put(Dst, 754, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
- dasm_put(Dst, 886, FRAME_CP, 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, 1004, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base));
- dasm_put(Dst, 1182, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+ dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ dasm_put(Dst, 111, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
+ dasm_put(Dst, 200, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
+ dasm_put(Dst, 293, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 359, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
+ dasm_put(Dst, 519, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 625, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
+ dasm_put(Dst, 783, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1228);
+ dasm_put(Dst, 893);
} else {
}
- dasm_put(Dst, 1241, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv));
- dasm_put(Dst, 1399, LJ_TTAB);
+ dasm_put(Dst, 906, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+ dasm_put(Dst, 1058, DISPATCH_GL(tmptv), LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1228);
+ dasm_put(Dst, 893);
} else {
}
- dasm_put(Dst, 1419, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base));
- dasm_put(Dst, 1615, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
- dasm_put(Dst, 1724, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC);
- dasm_put(Dst, 1849, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*8, 1+1);
- dasm_put(Dst, 2005, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
+ dasm_put(Dst, 1081, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1264, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+ dasm_put(Dst, 1364, Dt1(->base), Dt1(->base), FRAME_CONT);
+ dasm_put(Dst, 1489, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+ dasm_put(Dst, 1667, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
if (cmov) {
- dasm_put(Dst, 2101);
+ dasm_put(Dst, 1769);
} else {
- dasm_put(Dst, 2105);
+ dasm_put(Dst, 1773);
}
- dasm_put(Dst, 2114, ((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, 2202, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
- dasm_put(Dst, 2257, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
- dasm_put(Dst, 2329, 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, 2394, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 1782, ((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, 1870, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
+ dasm_put(Dst, 1925, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
+ dasm_put(Dst, 1993, 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, 2062, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2475);
+ dasm_put(Dst, 2139);
} else {
- dasm_put(Dst, 2485);
+ dasm_put(Dst, 2149);
}
- dasm_put(Dst, 2492, 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, 2554, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
- dasm_put(Dst, 2641, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
- dasm_put(Dst, 2743, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 2156, 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, 2222, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
+ dasm_put(Dst, 2289, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2393, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2798, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 2456, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
}
- dasm_put(Dst, 2831, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
- dasm_put(Dst, 2917, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
+ dasm_put(Dst, 2489, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+ dasm_put(Dst, 2570, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
if (sse) {
- dasm_put(Dst, 2947);
+ dasm_put(Dst, 2608);
} else {
- dasm_put(Dst, 2957);
+ dasm_put(Dst, 2618);
}
- dasm_put(Dst, 2964, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
- dasm_put(Dst, 3037, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD);
- dasm_put(Dst, 3136, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
- dasm_put(Dst, 3202, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top));
- dasm_put(Dst, 3306, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2);
- dasm_put(Dst, 3428, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base));
- dasm_put(Dst, 3511, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
- dasm_put(Dst, 3619, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE);
- dasm_put(Dst, 3716, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+ dasm_put(Dst, 2625, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+ dasm_put(Dst, 2689, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+ dasm_put(Dst, 2779, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 2873, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+ dasm_put(Dst, 2991, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+ dasm_put(Dst, 3089, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 3156, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+ dasm_put(Dst, 3250, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+ dasm_put(Dst, 3363, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
if (sse) {
- dasm_put(Dst, 3805, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 3390, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 3861, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3454, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 3893, 1+1, FRAME_TYPE, LJ_TNIL);
+ dasm_put(Dst, 3490, 1+1, FRAME_TYPE, LJ_TNIL);
if (sse) {
- dasm_put(Dst, 3977, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4039, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3584, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3646, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4069, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4128, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3676, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3735, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4155, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4224, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4281, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4344, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4434);
+ dasm_put(Dst, 3762, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3831, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3888, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3951, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4041);
if (sse) {
- dasm_put(Dst, 4446, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4053, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4471);
+ dasm_put(Dst, 4078);
if (sse) {
- dasm_put(Dst, 4493, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4092, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4518);
+ dasm_put(Dst, 4117);
if (sse) {
- dasm_put(Dst, 4540, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4131, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4565);
+ dasm_put(Dst, 4156);
if (sse) {
- dasm_put(Dst, 4589, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4172, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
} else {
- dasm_put(Dst, 4624, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4211, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
}
- dasm_put(Dst, 4653, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
- dasm_put(Dst, 4718, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4244, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4309, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4813);
+ dasm_put(Dst, 4408);
} else {
- dasm_put(Dst, 4819);
+ dasm_put(Dst, 4414);
}
- dasm_put(Dst, 4828);
+ dasm_put(Dst, 4423);
if (sse) {
- dasm_put(Dst, 4853);
+ dasm_put(Dst, 4448);
} else {
- dasm_put(Dst, 4859);
+ dasm_put(Dst, 4454);
}
- dasm_put(Dst, 4862, 1+2);
+ dasm_put(Dst, 4457, 1+2);
if (sse) {
- dasm_put(Dst, 4871);
+ dasm_put(Dst, 4466);
} else {
- dasm_put(Dst, 4879);
+ dasm_put(Dst, 4474);
}
- dasm_put(Dst, 475);
+ dasm_put(Dst, 4482);
if (sse) {
- dasm_put(Dst, 4887, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+ dasm_put(Dst, 4485, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
} else {
- dasm_put(Dst, 4914);
+ dasm_put(Dst, 4512);
}
- dasm_put(Dst, 4933);
+ dasm_put(Dst, 4531);
if (sse) {
- dasm_put(Dst, 4949, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4547, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4974, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4572, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4996);
+ dasm_put(Dst, 4594);
if (sse) {
- dasm_put(Dst, 5014);
+ dasm_put(Dst, 4616);
} else {
- dasm_put(Dst, 5040);
+ dasm_put(Dst, 4642);
}
- dasm_put(Dst, 5057, 1+2);
+ dasm_put(Dst, 4659, 1+2);
if (sse) {
+ dasm_put(Dst, 4699);
+ } else {
+ dasm_put(Dst, 4707);
+ }
+ dasm_put(Dst, 4717, 2+1, LJ_TISNUM, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 4769, 1+1, LJ_TISNUM, LJ_TISNUM);
+ } else {
+ dasm_put(Dst, 4816, 2+1, LJ_TISNUM, LJ_TISNUM);
+ }
+ if (sse) {
+ dasm_put(Dst, 4857, 1+1, LJ_TISNUM, LJ_TISNUM);
+ } else {
+ }
+ if (sse) {
+ dasm_put(Dst, 4928, 1+1, LJ_TISNUM, LJ_TISNUM);
+ } else {
+ }
+ if (!sse) {
+ dasm_put(Dst, 4999);
+ }
+ dasm_put(Dst, 5008, 1+1, LJ_TSTR);
+ if (sse) {
+ dasm_put(Dst, 5030, Dt5(->len));
+ } else {
+ dasm_put(Dst, 5041, Dt5(->len));
+ }
+ dasm_put(Dst, 5049, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+ if (sse) {
+ dasm_put(Dst, 5087);
+ } else {
dasm_put(Dst, 5097);
- } else {
- dasm_put(Dst, 5105);
}
- dasm_put(Dst, 5115, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5110, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5167, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5145);
} else {
- dasm_put(Dst, 5214, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5165);
}
+ dasm_put(Dst, 5185, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+ dasm_put(Dst, 2134);
if (sse) {
- dasm_put(Dst, 5255, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5293);
+ } else {
+ dasm_put(Dst, 5304);
+ }
+ dasm_put(Dst, 5312, LJ_TSTR, LJ_TISNUM, Dt5(->len));
+ if (sse) {
+ dasm_put(Dst, 5342);
+ } else {
+ }
+ dasm_put(Dst, 5349, sizeof(GCstr)-1);
+ dasm_put(Dst, 5424, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 5483, LJ_TSTR, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 5504);
+ } else {
+ dasm_put(Dst, 5511);
+ }
+ dasm_put(Dst, 5523, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 5588, 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, 5651, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+ dasm_put(Dst, 5722, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 5807, 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, 5877, 1+1, LJ_TTAB);
+ if (sse) {
+ dasm_put(Dst, 5945);
} else {
}
if (sse) {
- dasm_put(Dst, 5326, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5955, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
+ if (sse) {
+ dasm_put(Dst, 6007, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6050, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 6077);
+ } else {
+ }
+ dasm_put(Dst, 6094);
+ if (sse) {
+ dasm_put(Dst, 6102, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6050, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 6145);
+ } else {
+ }
+ dasm_put(Dst, 6094);
+ if (sse) {
+ dasm_put(Dst, 6162, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6050, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 6205);
+ } else {
+ }
+ dasm_put(Dst, 6094);
+ if (sse) {
+ dasm_put(Dst, 6222, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6265);
+ if (sse) {
+ dasm_put(Dst, 6272, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6315);
+ if (sse) {
+ dasm_put(Dst, 6319);
+ } else {
+ }
+ dasm_put(Dst, 6331);
+ if (sse) {
+ dasm_put(Dst, 6342, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6411);
+ if (sse) {
+ dasm_put(Dst, 6420, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6489);
+ if (sse) {
+ dasm_put(Dst, 6499, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6568);
+ if (sse) {
+ dasm_put(Dst, 6578, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6647);
+ if (sse) {
+ dasm_put(Dst, 6656, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
+ }
+ dasm_put(Dst, 6725, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+ dasm_put(Dst, 6803, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 6929, Dt1(->top), Dt1(->base), Dt1(->top));
+#if LJ_HASJIT
+ dasm_put(Dst, 6968, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+#endif
+ dasm_put(Dst, 6999, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 7065, GG_DISP2STATIC);
+#if LJ_HASJIT
+ dasm_put(Dst, 7101);
+#endif
+ dasm_put(Dst, 7103);
+#if LJ_HASJIT
+ dasm_put(Dst, 7101);
+#endif
+ dasm_put(Dst, 7106);
+#if LJ_HASJIT
+ dasm_put(Dst, 7101);
+#endif
+ dasm_put(Dst, 7109);
+#if LJ_HASJIT
+ dasm_put(Dst, 7112, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+#endif
+ dasm_put(Dst, 7153);
if (!sse) {
- dasm_put(Dst, 5397);
+ dasm_put(Dst, 7156);
}
- dasm_put(Dst, 5406, 1+1, LJ_TSTR);
- if (sse) {
- dasm_put(Dst, 5428, Dt5(->len));
- } else {
- dasm_put(Dst, 5439, Dt5(->len));
- }
- dasm_put(Dst, 5447, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
- if (sse) {
- dasm_put(Dst, 5481);
- } else {
- dasm_put(Dst, 5491);
- }
- dasm_put(Dst, 5504, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 5539);
- } else {
- dasm_put(Dst, 5559);
- }
- dasm_put(Dst, 5579, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
- dasm_put(Dst, 2470);
- if (sse) {
- dasm_put(Dst, 5695);
- } else {
- dasm_put(Dst, 5706);
- }
- dasm_put(Dst, 5714, LJ_TSTR, LJ_TISNUM, Dt5(->len));
- if (sse) {
- dasm_put(Dst, 5744);
- } else {
- }
- dasm_put(Dst, 5751, sizeof(GCstr)-1);
- dasm_put(Dst, 5826, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 5885, LJ_TSTR, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 5910);
- } else {
- dasm_put(Dst, 5917);
- }
- dasm_put(Dst, 5929, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 5994, 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, 6061, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
- dasm_put(Dst, 6136, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6221, 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, 6295, 1+1, LJ_TTAB);
- if (sse) {
- dasm_put(Dst, 6371);
- } else {
- }
- if (sse) {
- dasm_put(Dst, 6381, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- if (sse) {
- dasm_put(Dst, 6433, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 6476);
- if (sse) {
- dasm_put(Dst, 6486);
- }
- dasm_put(Dst, 6491, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 6509);
- } else {
- }
- dasm_put(Dst, 6526);
- if (sse) {
- dasm_put(Dst, 6534, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 6476);
- if (sse) {
- dasm_put(Dst, 6486);
- }
- dasm_put(Dst, 6491, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 6577);
- } else {
- }
- dasm_put(Dst, 6526);
- if (sse) {
- dasm_put(Dst, 6594, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 6476);
- if (sse) {
- dasm_put(Dst, 6486);
- }
- dasm_put(Dst, 6491, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 6637);
- } else {
- }
- dasm_put(Dst, 6526);
- if (sse) {
- dasm_put(Dst, 6654, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 6697);
- if (sse) {
- dasm_put(Dst, 6704, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 6747);
- if (sse) {
- dasm_put(Dst, 6751);
- } else {
- }
- dasm_put(Dst, 6778);
- if (sse) {
- dasm_put(Dst, 6366);
- }
- dasm_put(Dst, 6781);
- if (sse) {
- dasm_put(Dst, 6790, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 6859);
- if (sse) {
- dasm_put(Dst, 6868, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 6937);
- if (sse) {
- dasm_put(Dst, 6947, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 7016);
- if (sse) {
- dasm_put(Dst, 7026, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 7095);
- if (sse) {
- dasm_put(Dst, 7104, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- }
- dasm_put(Dst, 7173, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
- dasm_put(Dst, 7257, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top));
- dasm_put(Dst, 7377, Dt1(->base), Dt1(->top));
-#if LJ_HASJIT
- dasm_put(Dst, 7419, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
-#endif
- dasm_put(Dst, 7450, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 7516, BC__MAX*8);
-#if LJ_HASJIT
- dasm_put(Dst, 7552);
-#endif
- dasm_put(Dst, 7554);
-#if LJ_HASJIT
- dasm_put(Dst, 7552);
-#endif
- dasm_put(Dst, 7557);
-#if LJ_HASJIT
- dasm_put(Dst, 7552);
-#endif
- dasm_put(Dst, 7560);
-#if LJ_HASJIT
- dasm_put(Dst, 7563, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
-#endif
- dasm_put(Dst, 7604);
+ dasm_put(Dst, 7201, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 7607);
+ dasm_put(Dst, 7287);
}
- dasm_put(Dst, 7652, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 7332, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 7738);
+ dasm_put(Dst, 7418);
}
- dasm_put(Dst, 7783, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
- if (!sse) {
- dasm_put(Dst, 7869);
- }
- dasm_put(Dst, 7908, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 7457, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (sse) {
- dasm_put(Dst, 7997, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 7546, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
- dasm_put(Dst, 8111);
+ dasm_put(Dst, 7660);
}
- dasm_put(Dst, 8158);
+ dasm_put(Dst, 7707);
if (!sse) {
} else {
- dasm_put(Dst, 8232);
+ dasm_put(Dst, 7781);
}
- dasm_put(Dst, 8235);
- dasm_put(Dst, 8320, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
- dasm_put(Dst, 8421, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
- dasm_put(Dst, 8589);
+ dasm_put(Dst, 7784);
+ dasm_put(Dst, 7869, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 7970, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+ dasm_put(Dst, 8138);
if (sse) {
- dasm_put(Dst, 8630);
- dasm_put(Dst, 8700);
- dasm_put(Dst, 8773);
+ dasm_put(Dst, 8179);
+ dasm_put(Dst, 8249);
+ dasm_put(Dst, 8322);
} else {
- dasm_put(Dst, 8823);
- dasm_put(Dst, 8915);
+ dasm_put(Dst, 8372);
+ dasm_put(Dst, 8464);
}
- dasm_put(Dst, 8961);
+ dasm_put(Dst, 8510);
if (sse) {
- dasm_put(Dst, 8967, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
- dasm_put(Dst, 9056, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 8516, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+ dasm_put(Dst, 8605, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 9180);
- dasm_put(Dst, 9263);
+ dasm_put(Dst, 8729);
+ dasm_put(Dst, 8812);
if (cmov) {
- dasm_put(Dst, 9318);
+ dasm_put(Dst, 8867);
} else {
- dasm_put(Dst, 9337);
+ dasm_put(Dst, 8886);
}
- dasm_put(Dst, 9176);
+ dasm_put(Dst, 8725);
}
- dasm_put(Dst, 9378);
+ dasm_put(Dst, 8927);
}
/* 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, 155, defop);
+ dasm_put(Dst, 8953, defop);
switch (op) {
@@ -1424,602 +1390,602 @@ 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, 9404, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 8955, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 9425);
+ dasm_put(Dst, 8976);
} else {
- dasm_put(Dst, 9440);
+ dasm_put(Dst, 8991);
if (cmov) {
- dasm_put(Dst, 9450);
+ dasm_put(Dst, 9001);
} else {
- dasm_put(Dst, 9456);
+ dasm_put(Dst, 9007);
}
}
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 9463);
+ dasm_put(Dst, 9014);
break;
case BC_ISGE:
- dasm_put(Dst, 9258);
+ dasm_put(Dst, 8807);
break;
case BC_ISLE:
- dasm_put(Dst, 6290);
+ dasm_put(Dst, 5872);
break;
case BC_ISGT:
- dasm_put(Dst, 9468);
+ dasm_put(Dst, 9019);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 9473, -BCBIAS_J*4);
+ dasm_put(Dst, 9024, -BCBIAS_J*4);
break;
case BC_ISEQV: case BC_ISNEV:
vk = op == BC_ISEQV;
- dasm_put(Dst, 9507, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9058, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 9533);
+ dasm_put(Dst, 9084);
} else {
- dasm_put(Dst, 9545);
+ dasm_put(Dst, 9096);
if (cmov) {
- dasm_put(Dst, 9450);
+ dasm_put(Dst, 9001);
} else {
- dasm_put(Dst, 9456);
+ dasm_put(Dst, 9007);
}
}
iseqne_fp:
if (vk) {
- dasm_put(Dst, 9552);
+ dasm_put(Dst, 9103);
} else {
- dasm_put(Dst, 9561);
+ dasm_put(Dst, 9112);
}
iseqne_end:
if (vk) {
- dasm_put(Dst, 9570, -BCBIAS_J*4);
+ dasm_put(Dst, 9121, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 9585, -BCBIAS_J*4);
+ dasm_put(Dst, 9136, -BCBIAS_J*4);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
if (op == BC_ISEQV || op == BC_ISNEV) {
- dasm_put(Dst, 9600, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32));
+ dasm_put(Dst, 9439, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
} else {
- dasm_put(Dst, 9913);
+ dasm_put(Dst, 9464);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_LEN:
- dasm_put(Dst, 9922, LJ_TSTR);
+ dasm_put(Dst, 9473, LJ_TSTR);
if (sse) {
- dasm_put(Dst, 9936, Dt5(->len));
+ dasm_put(Dst, 9487, Dt5(->len));
} else {
- dasm_put(Dst, 9954, Dt5(->len));
+ dasm_put(Dst, 9505, Dt5(->len));
}
- dasm_put(Dst, 9963, LJ_TTAB);
+ dasm_put(Dst, 9514, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 10004);
+ dasm_put(Dst, 9555);
} else {
}
- dasm_put(Dst, 10013);
+ dasm_put(Dst, 9564);
break;
/* -- Binary ops -------------------------------------------------------- */
case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
- dasm_put(Dst, 10023);
+ dasm_put(Dst, 9574);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10031, LJ_TISNUM);
+ dasm_put(Dst, 9582, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10043);
+ dasm_put(Dst, 9594);
} else {
- dasm_put(Dst, 10057);
+ dasm_put(Dst, 9608);
}
break;
case 1:
- dasm_put(Dst, 10065, LJ_TISNUM);
+ dasm_put(Dst, 9616, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10077);
+ dasm_put(Dst, 9628);
} else {
- dasm_put(Dst, 10091);
+ dasm_put(Dst, 9642);
}
break;
default:
- dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10121);
+ dasm_put(Dst, 9672);
} else {
- dasm_put(Dst, 10135);
+ dasm_put(Dst, 9686);
}
break;
}
if (sse) {
- dasm_put(Dst, 9906);
+ dasm_put(Dst, 9457);
} else {
- dasm_put(Dst, 9918);
+ dasm_put(Dst, 9469);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
- dasm_put(Dst, 10023);
+ dasm_put(Dst, 9574);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10031, LJ_TISNUM);
+ dasm_put(Dst, 9582, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10143);
+ dasm_put(Dst, 9694);
} else {
- dasm_put(Dst, 10157);
+ dasm_put(Dst, 9708);
}
break;
case 1:
- dasm_put(Dst, 10065, LJ_TISNUM);
+ dasm_put(Dst, 9616, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10165);
+ dasm_put(Dst, 9716);
} else {
- dasm_put(Dst, 10179);
+ dasm_put(Dst, 9730);
}
break;
default:
- dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10187);
+ dasm_put(Dst, 9738);
} else {
- dasm_put(Dst, 10201);
+ dasm_put(Dst, 9752);
}
break;
}
if (sse) {
- dasm_put(Dst, 9906);
+ dasm_put(Dst, 9457);
} else {
- dasm_put(Dst, 9918);
+ dasm_put(Dst, 9469);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_MULVN: case BC_MULNV: case BC_MULVV:
- dasm_put(Dst, 10023);
+ dasm_put(Dst, 9574);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10031, LJ_TISNUM);
+ dasm_put(Dst, 9582, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10209);
+ dasm_put(Dst, 9760);
} else {
- dasm_put(Dst, 10223);
+ dasm_put(Dst, 9774);
}
break;
case 1:
- dasm_put(Dst, 10065, LJ_TISNUM);
+ dasm_put(Dst, 9616, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10231);
+ dasm_put(Dst, 9782);
} else {
- dasm_put(Dst, 10245);
+ dasm_put(Dst, 9796);
}
break;
default:
- dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10253);
+ dasm_put(Dst, 9804);
} else {
- dasm_put(Dst, 10267);
+ dasm_put(Dst, 9818);
}
break;
}
if (sse) {
- dasm_put(Dst, 9906);
+ dasm_put(Dst, 9457);
} else {
- dasm_put(Dst, 9918);
+ dasm_put(Dst, 9469);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
- dasm_put(Dst, 10023);
+ dasm_put(Dst, 9574);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10031, LJ_TISNUM);
+ dasm_put(Dst, 9582, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10275);
+ dasm_put(Dst, 9826);
} else {
- dasm_put(Dst, 10289);
+ dasm_put(Dst, 9840);
}
break;
case 1:
- dasm_put(Dst, 10065, LJ_TISNUM);
+ dasm_put(Dst, 9616, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10297);
+ dasm_put(Dst, 9848);
} else {
- dasm_put(Dst, 10311);
+ dasm_put(Dst, 9862);
}
break;
default:
- dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10319);
+ dasm_put(Dst, 9870);
} else {
- dasm_put(Dst, 10333);
+ dasm_put(Dst, 9884);
}
break;
}
if (sse) {
- dasm_put(Dst, 9906);
+ dasm_put(Dst, 9457);
} else {
- dasm_put(Dst, 9918);
+ dasm_put(Dst, 9469);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_MODVN:
- dasm_put(Dst, 10023);
+ dasm_put(Dst, 9574);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10031, LJ_TISNUM);
+ dasm_put(Dst, 9582, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10341);
+ dasm_put(Dst, 9892);
} else {
- dasm_put(Dst, 10355);
+ dasm_put(Dst, 9906);
}
break;
case 1:
- dasm_put(Dst, 10065, LJ_TISNUM);
+ dasm_put(Dst, 9616, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10363);
+ dasm_put(Dst, 9914);
} else {
- dasm_put(Dst, 10377);
+ dasm_put(Dst, 9928);
}
break;
default:
- dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10385);
+ dasm_put(Dst, 9936);
} else {
- dasm_put(Dst, 10399);
+ dasm_put(Dst, 9950);
}
break;
}
- dasm_put(Dst, 10407);
+ dasm_put(Dst, 9958);
if (sse) {
- dasm_put(Dst, 9906);
+ dasm_put(Dst, 9457);
} else {
- dasm_put(Dst, 9918);
+ dasm_put(Dst, 9469);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_MODNV: case BC_MODVV:
- dasm_put(Dst, 10023);
+ dasm_put(Dst, 9574);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10031, LJ_TISNUM);
+ dasm_put(Dst, 9582, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10341);
+ dasm_put(Dst, 9892);
} else {
- dasm_put(Dst, 10355);
+ dasm_put(Dst, 9906);
}
break;
case 1:
- dasm_put(Dst, 10065, LJ_TISNUM);
+ dasm_put(Dst, 9616, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10363);
+ dasm_put(Dst, 9914);
} else {
- dasm_put(Dst, 10377);
+ dasm_put(Dst, 9928);
}
break;
default:
- dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10385);
+ dasm_put(Dst, 9936);
} else {
- dasm_put(Dst, 10399);
+ dasm_put(Dst, 9950);
}
break;
}
- dasm_put(Dst, 10413);
+ dasm_put(Dst, 9964);
break;
case BC_POW:
- dasm_put(Dst, 10023);
+ dasm_put(Dst, 9574);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 10031, LJ_TISNUM);
+ dasm_put(Dst, 9582, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10341);
+ dasm_put(Dst, 9892);
} else {
- dasm_put(Dst, 10355);
+ dasm_put(Dst, 9906);
}
break;
case 1:
- dasm_put(Dst, 10065, LJ_TISNUM);
+ dasm_put(Dst, 9616, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10363);
+ dasm_put(Dst, 9914);
} else {
- dasm_put(Dst, 10377);
+ dasm_put(Dst, 9928);
}
break;
default:
- dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10385);
+ dasm_put(Dst, 9936);
} else {
- dasm_put(Dst, 10399);
+ dasm_put(Dst, 9950);
}
break;
}
- dasm_put(Dst, 10418);
+ dasm_put(Dst, 9969);
if (sse) {
- dasm_put(Dst, 9906);
+ dasm_put(Dst, 9457);
} else {
- dasm_put(Dst, 9918);
+ dasm_put(Dst, 9469);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_CAT:
- dasm_put(Dst, 10422, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 9973, Dt1(->base), Dt1(->base));
break;
/* -- Constant ops ------------------------------------------------------ */
case BC_KSTR:
- dasm_put(Dst, 10512, LJ_TSTR);
+ dasm_put(Dst, 10063, LJ_TSTR);
break;
case BC_KSHORT:
if (sse) {
- dasm_put(Dst, 10547);
+ dasm_put(Dst, 10098);
} else {
- dasm_put(Dst, 10562);
+ dasm_put(Dst, 10113);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_KNUM:
if (sse) {
- dasm_put(Dst, 10570);
+ dasm_put(Dst, 10121);
} else {
- dasm_put(Dst, 10583);
+ dasm_put(Dst, 10134);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_KPRI:
- dasm_put(Dst, 10590);
+ dasm_put(Dst, 10141);
break;
case BC_KNIL:
- dasm_put(Dst, 10618, LJ_TNIL);
+ dasm_put(Dst, 10169, LJ_TNIL);
break;
/* -- Upvalue and function ops ------------------------------------------ */
case BC_UGET:
- dasm_put(Dst, 10665, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 10216, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_USETV:
#define TV2MARKOFS \
((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
- dasm_put(Dst, 10710, 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, 10801);
+ dasm_put(Dst, 10261, 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, 10352);
break;
#undef TV2MARKOFS
case BC_USETS:
- dasm_put(Dst, 10813, 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, 10364, 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, 10906);
+ dasm_put(Dst, 10457);
if (sse) {
- dasm_put(Dst, 10911);
+ dasm_put(Dst, 10462);
} else {
- dasm_put(Dst, 9726);
+ dasm_put(Dst, 9277);
}
- dasm_put(Dst, 10918, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 10469, offsetof(GCfuncL, uvptr), DtA(->v));
if (sse) {
- dasm_put(Dst, 4853);
+ dasm_put(Dst, 10478);
} else {
- dasm_put(Dst, 4859);
+ dasm_put(Dst, 10484);
}
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_USETP:
- dasm_put(Dst, 10927, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 10487, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_UCLO:
- dasm_put(Dst, 10966, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 10526, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
break;
case BC_FNEW:
- dasm_put(Dst, 11021, Dt1(->base), Dt1(->base), LJ_TFUNC);
+ dasm_put(Dst, 10581, Dt1(->base), Dt1(->base), LJ_TFUNC);
break;
/* -- Table ops --------------------------------------------------------- */
case BC_TNEW:
- dasm_put(Dst, 11087, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 10647, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
break;
case BC_TDUP:
- dasm_put(Dst, 11208, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 10768, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_GGET:
- dasm_put(Dst, 11303, Dt7(->env));
+ dasm_put(Dst, 10863, Dt7(->env));
break;
case BC_GSET:
- dasm_put(Dst, 11322, Dt7(->env));
+ dasm_put(Dst, 10882, Dt7(->env));
break;
case BC_TGETV:
- dasm_put(Dst, 11341, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 10901, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11374);
+ dasm_put(Dst, 10934);
} else {
}
- dasm_put(Dst, 11395, 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, 11591, 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, 11151, 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, 11880, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 11356, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+ dasm_put(Dst, 11440, 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, 11942, 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, 12018, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
- dasm_put(Dst, 12111, 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, 11502, 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, 11578, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
+ dasm_put(Dst, 11671, 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, 12202, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
- dasm_put(Dst, 12301, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 11762, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+ dasm_put(Dst, 11861, 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, 12347);
+ dasm_put(Dst, 11907);
if (sse) {
- dasm_put(Dst, 10911);
+ dasm_put(Dst, 10462);
} else {
}
- dasm_put(Dst, 12352, Dt6(->marked), LJ_GC_BLACK);
+ dasm_put(Dst, 11912, Dt6(->marked), LJ_GC_BLACK);
if (sse) {
- dasm_put(Dst, 12377);
+ dasm_put(Dst, 11937);
} else {
}
- dasm_put(Dst, 12384, 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, 12510, Dt6(->gclist));
+ dasm_put(Dst, 11944, 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, 12070, Dt6(->gclist));
break;
/* -- Calls and vararg handling ----------------------------------------- */
case BC_CALL: case BC_CALLM:
- dasm_put(Dst, 10027);
+ dasm_put(Dst, 9578);
if (op == BC_CALLM) {
- dasm_put(Dst, 12518);
+ dasm_put(Dst, 12078);
}
- dasm_put(Dst, 12523, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 12083, LJ_TFUNC, Dt7(->pc));
break;
case BC_CALLMT:
- dasm_put(Dst, 12518);
+ dasm_put(Dst, 12078);
break;
case BC_CALLT:
- dasm_put(Dst, 12546, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
- dasm_put(Dst, 12651, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 12125, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+ dasm_put(Dst, 12244, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
break;
case BC_ITERC:
- dasm_put(Dst, 12709, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 12302, LJ_TFUNC, 2+1, Dt7(->pc));
break;
case BC_VARG:
- dasm_put(Dst, 12771, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
- dasm_put(Dst, 12916, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 12383, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
+ dasm_put(Dst, 12528, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
break;
/* -- Returns ----------------------------------------------------------- */
case BC_RETM:
- dasm_put(Dst, 12518);
+ dasm_put(Dst, 12078);
break;
case BC_RET: case BC_RET0: case BC_RET1:
if (op != BC_RET0) {
- dasm_put(Dst, 13015);
+ dasm_put(Dst, 12627);
}
- dasm_put(Dst, 13019, FRAME_TYPE);
+ dasm_put(Dst, 12631, FRAME_TYPE);
switch (op) {
case BC_RET:
- dasm_put(Dst, 13038);
+ dasm_put(Dst, 12650);
break;
case BC_RET1:
- dasm_put(Dst, 13096);
+ dasm_put(Dst, 12708);
/* fallthrough */
case BC_RET0:
- dasm_put(Dst, 13112);
+ dasm_put(Dst, 12724);
default:
break;
}
- dasm_put(Dst, 13123, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 12735, Dt7(->pc), PC2PROTO(k));
if (op == BC_RET) {
- dasm_put(Dst, 13167, LJ_TNIL);
+ dasm_put(Dst, 12779, LJ_TNIL);
} else {
- dasm_put(Dst, 13176, LJ_TNIL);
+ dasm_put(Dst, 12788, LJ_TNIL);
}
- dasm_put(Dst, 13183);
+ dasm_put(Dst, 12795);
if (op != BC_RET0) {
- dasm_put(Dst, 13204);
+ dasm_put(Dst, 12816);
}
- dasm_put(Dst, 4944);
+ dasm_put(Dst, 4542);
break;
/* -- Loops and branches ------------------------------------------------ */
@@ -2027,7 +1993,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORL:
#if LJ_HASJIT
- dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2039,57 +2005,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, 13229);
+ dasm_put(Dst, 12841);
if (!vk) {
- dasm_put(Dst, 13233, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 12845, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 13252);
+ dasm_put(Dst, 12864);
if (!vk) {
- dasm_put(Dst, 13256, LJ_TISNUM);
+ dasm_put(Dst, 12868, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 13265);
+ dasm_put(Dst, 12877);
if (vk) {
- dasm_put(Dst, 13277);
+ dasm_put(Dst, 12889);
} else {
- dasm_put(Dst, 13296);
+ dasm_put(Dst, 12908);
}
- dasm_put(Dst, 13301);
+ dasm_put(Dst, 12913);
} else {
- dasm_put(Dst, 13314);
+ dasm_put(Dst, 12926);
if (vk) {
- dasm_put(Dst, 13320);
+ dasm_put(Dst, 12932);
} else {
- dasm_put(Dst, 13336);
+ dasm_put(Dst, 12948);
}
- dasm_put(Dst, 13344);
+ dasm_put(Dst, 12956);
if (cmov) {
- dasm_put(Dst, 9450);
+ dasm_put(Dst, 9001);
} else {
- dasm_put(Dst, 9456);
+ dasm_put(Dst, 9007);
}
if (!cmov) {
- dasm_put(Dst, 13349);
+ dasm_put(Dst, 12961);
}
}
if (op == BC_FORI) {
- dasm_put(Dst, 13355, -BCBIAS_J*4);
+ dasm_put(Dst, 12967, -BCBIAS_J*4);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 13365, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 12977, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 13379, -BCBIAS_J*4);
+ dasm_put(Dst, 12991, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 13375, BC_JLOOP);
+ dasm_put(Dst, 12987, BC_JLOOP);
}
- dasm_put(Dst, 9485);
+ dasm_put(Dst, 9036);
if (sse) {
- dasm_put(Dst, 13389);
+ dasm_put(Dst, 13001);
}
break;
case BC_ITERL:
#if LJ_HASJIT
- dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2098,33 +2064,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IITERL:
- dasm_put(Dst, 13400, LJ_TNIL);
+ dasm_put(Dst, 13012, LJ_TNIL);
if (op == BC_JITERL) {
- dasm_put(Dst, 13415, BC_JLOOP);
+ dasm_put(Dst, 13027, BC_JLOOP);
} else {
- dasm_put(Dst, 13429, -BCBIAS_J*4);
+ dasm_put(Dst, 13041, -BCBIAS_J*4);
}
- dasm_put(Dst, 9785);
+ dasm_put(Dst, 9336);
break;
case BC_LOOP:
#if LJ_HASJIT
- dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
case BC_ILOOP:
- dasm_put(Dst, 7584);
+ dasm_put(Dst, 7133);
break;
case BC_JLOOP:
#if LJ_HASJIT
- dasm_put(Dst, 13445, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+ dasm_put(Dst, 13057, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
#endif
break;
case BC_JMP:
- dasm_put(Dst, 13469, -BCBIAS_J*4);
+ dasm_put(Dst, 13081, -BCBIAS_J*4);
+ break;
+
+ /* -- Function headers -------------------------------------------------- */
+
+ /*
+ ** Reminder: A function may be called with func/args above L->maxstack,
+ ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
+ ** too. This means all FUNC* ops (including fast functions) must check
+ ** for stack overflow _before_ adding more slots!
+ */
+
+ case BC_FUNCF:
+#if LJ_HASJIT
+#endif
+ case BC_FUNCV: /* NYI: compiled vararg functions. */
+ break;
+
+ case BC_JFUNCF:
+#if !LJ_HASJIT
+ break;
+#endif
+ case BC_IFUNCF:
+ dasm_put(Dst, 13106, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+ if (op == BC_JFUNCF) {
+ dasm_put(Dst, 13136, BC_JLOOP);
+ } else {
+ dasm_put(Dst, 7133);
+ }
+ dasm_put(Dst, 13145, LJ_TNIL);
+ break;
+
+ case BC_JFUNCV:
+#if !LJ_HASJIT
+ break;
+#endif
+ dasm_put(Dst, 7101);
+ break; /* NYI: compiled vararg functions. */
+
+ case BC_IFUNCV:
+ dasm_put(Dst, 13167, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+ if (op == BC_JFUNCV) {
+ dasm_put(Dst, 13136, BC_JLOOP);
+ } else {
+ dasm_put(Dst, 13258, -4+PC2PROTO(k));
+ }
+ dasm_put(Dst, 13281, LJ_TNIL);
+ break;
+
+ case BC_FUNCC:
+ case BC_FUNCCW:
+ dasm_put(Dst, 13303, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+ if (op == BC_FUNCC) {
+ dasm_put(Dst, 13333);
+ } else {
+ dasm_put(Dst, 13337);
+ }
+ dasm_put(Dst, 13345, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ if (op == BC_FUNCC) {
+ dasm_put(Dst, 13354);
+ } else {
+ dasm_put(Dst, 13358, DISPATCH_GL(wrapf));
+ }
+ dasm_put(Dst, 13363, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
break;
/* ---------------------------------------------------------------------- */
@@ -2152,7 +2181,7 @@ static int build_backend(BuildCtx *ctx)
build_subroutines(ctx, cmov, sse);
- dasm_put(Dst, 13494);
+ dasm_put(Dst, 13388);
for (op = 0; op < BC__MAX; op++)
build_ins(ctx, (BCOp)op, op, cmov, sse);
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index fdbefb83..b970278e 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -40,6 +40,7 @@
|.endif
|
|.define RA, ecx
+|.define RAH, ch
|.define RAL, cl
|.define RB, ebp // Must be ebp (C callee-save).
|.define RC, eax // Must be eax (fcomparepp and others).
@@ -282,6 +283,27 @@
| .endmacro
|.endif
|
+|// Call decode and dispatch.
+|.macro ins_callt
+| // BASE = new base, RB = LFUNC, RD = nargs+1, [BASE-4] = PC
+| mov PC, LFUNC:RB->pc
+| mov RA, [PC]
+| movzx OP, RAL
+| movzx RA, RAH
+| add PC, 4
+|.if X64
+| jmp aword [DISPATCH+OP*8]
+|.else
+| jmp aword [DISPATCH+OP*4]
+|.endif
+|.endmacro
+|
+|.macro ins_call
+| // BASE = new base, RB = LFUNC, RD = nargs+1
+| mov [BASE-4], PC
+| ins_callt
+|.endmacro
+|
|//-----------------------------------------------------------------------
|
|// Macros to test operand types.
@@ -394,156 +416,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.code_sub
|
|//-----------------------------------------------------------------------
- |//-- Call and return handling -------------------------------------------
+ |//-- Return handling ----------------------------------------------------
|//-----------------------------------------------------------------------
|
- |// Reminder: A call gate may be called with func/args above L->maxstack,
- |// i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
- |// too. This means all call gates (L*, C and fast functions) must check
- |// for stack overflow _before_ adding more slots!
+ |->vm_returnp:
+ | test PC, FRAME_P
+ | jz ->cont_dispatch
|
- |//-- Call gates ---------------------------------------------------------
+ | // Return from pcall or xpcall fast func.
+ | and PC, -8
+ | sub BASE, PC // Restore caller base.
+ | lea RAa, [RA+PC-8] // Rebase RA and prepend one result.
+ | mov PC, [BASE-4] // Fetch PC of previous frame.
+ | // Prepending may overwrite the pcall frame, so do it at the end.
+ | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results.
|
- |->gate_lf: // Call gate for fixarg Lua functions.
- | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = old base), PC = return
- | // DISPATCH initialized
- | mov BASE, RA
- | mov [BASE-4], PC // Store caller PC.
- | mov PC, LFUNC:RB->pc
- | movzx RA, byte [PC+PC2PROTO(framesize)]
- | mov KBASE, [PC+PC2PROTO(k)]
- | mov L:RB, SAVE_L
- | lea RA, [BASE+RA*8] // Top of frame.
- | cmp RA, L:RB->maxstack
- | ja ->gate_lf_growstack
- | movzx RA, byte [PC+PC2PROTO(numparams)]
- | cmp NARGS:RC, RA // Check for missing parameters.
- | jbe >3
- |2:
-#if LJ_HASJIT
- | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
- | // hotcall RB
-#endif
- | ins_next
- |
- |3: // Clear missing parameters.
- | mov dword [BASE+NARGS:RC*8-4], LJ_TNIL
- | add NARGS:RC, 1
- | cmp NARGS:RC, RA // Check for missing parameters.
- | jbe <3
- | jmp <2
- |
- |->gate_lv: // Call gate for vararg Lua functions.
- | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = old base), PC = return
- | // DISPATCH initialized
- | mov [RA-4], PC // Store caller PC.
- | lea PC, [NARGS:RC*8+FRAME_VARG]
- | lea BASE, [RA+PC-FRAME_VARG]
- | mov [BASE-8], LFUNC:RB // Store copy of LFUNC.
- | mov [BASE-4], PC // Store delta + FRAME_VARG.
- | mov PC, LFUNC:RB->pc
- | movzx RB, byte [PC+PC2PROTO(framesize)]
- | lea KBASE, [BASE+RB*8]
- | mov L:RB, SAVE_L
- | cmp KBASE, L:RB->maxstack
- | ja ->gate_lv_growstack // Need to grow stack.
- | mov RC, BASE
- | movzx RB, byte [PC+PC2PROTO(numparams)]
- | test RB, RB
- | jz >2
- |1: // Copy fixarg slots up to new frame.
- | add RA, 8
- | cmp RA, BASE
- | jnb >3 // Less args than parameters?
- | mov KBASE, [RA-8]
- | mov [RC], KBASE
- | mov KBASE, [RA-4]
- | mov [RC+4], KBASE
- | add RC, 8
- | mov dword [RA-4], LJ_TNIL // Clear old fixarg slot (help the GC).
- | sub RB, 1
- | jnz <1
- |2:
- | mov KBASE, [PC+PC2PROTO(k)]
-#if LJ_HASJIT
- | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
- | // hotcall RB
-#endif
- | ins_next
- |
- |3: // Clear missing parameters.
- | mov dword [RC+4], LJ_TNIL
- | add RC, 8
- | sub RB, 1
- | jnz <3
- | jmp <2
- |
- |->gate_cwrap: // Call gate for wrapped C functions.
- | // RA = new base, RB = CFUNC, RC = nargs+1, (BASE = old base), PC = return
- | mov [RA-4], PC
- | mov KBASEa, CFUNC:RB->f
- | mov L:RB, SAVE_L
- | lea RC, [RA+NARGS:RC*8-8]
- | mov L:RB->base, RA
- | lea RA, [RC+8*LUA_MINSTACK]
- | mov L:RB->top, RC
- | cmp RA, L:RB->maxstack
- |.if X64
- | mov CARG2, KBASEa
- | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
- |.else
- | mov ARG2, KBASEa
- | mov ARG1, L:RB
- |.endif
- | ja ->gate_c_growstack // Need to grow stack.
- | set_vmstate C
- | // (lua_State *L, lua_CFunction f)
- | call aword [DISPATCH+DISPATCH_GL(wrapf)]
- | set_vmstate INTERP
- | // nresults returned in eax (RD).
- | mov BASE, L:RB->base
- | lea RA, [BASE+RD*8]
- | neg RA
- | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
|->vm_returnc:
| add RD, 1 // RD = nresults+1
| mov MULTRES, RD
| test PC, FRAME_TYPE
| jz ->BC_RET_Z // Handle regular return to Lua.
- | jmp ->vm_return
- |
- |->gate_c: // Call gate for C functions.
- | // RA = new base, RB = CFUNC, RC = nargs+1, (BASE = old base), PC = return
- | mov [RA-4], PC
- | mov KBASEa, CFUNC:RB->f
- | mov L:RB, SAVE_L
- | lea RC, [RA+NARGS:RC*8-8]
- | mov L:RB->base, RA
- | lea RA, [RC+8*LUA_MINSTACK]
- | mov L:RB->top, RC
- | cmp RA, L:RB->maxstack
- |.if X64
- | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
- |.else
- | mov ARG1, L:RB
- |.endif
- | ja ->gate_c_growstack // Need to grow stack.
- | set_vmstate C
- | call KBASEa // (lua_State *L)
- | set_vmstate INTERP
- | // nresults returned in eax (RD).
- | mov BASE, L:RB->base
- | lea RA, [BASE+RD*8]
- | neg RA
- | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
- |->vm_returnc:
- | add RD, 1 // RD = nresults+1
- | mov MULTRES, RD
- | test PC, FRAME_TYPE
- | jz ->BC_RET_Z // Handle regular return to Lua.
- | // Fallthrough.
- |
- |//-- Return handling (non-inline) ---------------------------------------
|
|->vm_return:
| // BASE = base, RA = resultofs, RD = nresults+1 (= MULTRES), PC = return
@@ -654,51 +546,41 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| set_vmstate INTERP
| jmp ->vm_returnc // Increments RD/MULTRES and returns.
|
- |->vm_returnp:
- | test PC, FRAME_P
- | jz ->cont_dispatch
+ |//-----------------------------------------------------------------------
+ |//-- Grow stack for calls -----------------------------------------------
+ |//-----------------------------------------------------------------------
|
- | // Return from pcall or xpcall fast func.
- | and PC, -8
- | sub BASE, PC // Restore caller base.
- | lea RAa, [RA+PC-8] // Rebase RA and prepend one result.
- | mov PC, [BASE-4] // Fetch PC of previous frame.
- | // Prepending may overwrite the pcall frame, so do it at the end.
- | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results.
- | jmp ->vm_returnc // Increments RD/MULTRES and returns.
- |
- |//-- Grow stack on-demand -----------------------------------------------
- |
- |->gate_c_growstack: // Grow stack for C function.
+ |->vm_growstack_c: // Grow stack for C function.
| mov FCARG2, LUA_MINSTACK
+ | jmp >2
+ |
+ |->vm_growstack_v: // Grow stack for vararg Lua function.
+ | sub RD, 8
| jmp >1
|
- |->gate_lv_growstack: // Grow stack for vararg Lua function.
- | mov BASE, RA // Drop vararg frame again.
- |
- |->gate_lf_growstack: // Grow stack for fixarg Lua function.
- | // BASE = new base, RC = nargs+1, RB = L, PC = first PC
- | lea RC, [BASE+NARGS:RC*8-8]
- | movzx RA, byte [PC+PC2PROTO(framesize)]
+ |->vm_growstack_f: // Grow stack for fixarg Lua function.
+ | // BASE = new base, RD = nargs+1, RB = L, PC = first PC
+ | lea RD, [BASE+NARGS:RD*8-8]
+ |1:
+ | movzx RA, byte [PC-4+PC2PROTO(framesize)]
| add PC, 4 // Must point after first instruction.
| mov L:RB->base, BASE
- | mov L:RB->top, RC
+ | mov L:RB->top, RD
| mov SAVE_PC, PC
| mov FCARG2, RA
- |1:
+ |2:
+ | // RB = L, L->base = new base, L->top = top
| mov FCARG1, L:RB
- | // L:RB = L, L->base = new base, L->top = top
- | // SAVE_PC = initial PC+1 (undefined for C functions)
| call extern lj_state_growstack@8 // (lua_State *L, int n)
- | mov RA, L:RB->base
- | mov RC, L:RB->top
- | mov LFUNC:RB, [RA-8]
- | mov PC, [RA-4]
- | sub RC, RA
- | shr RC, 3
- | add NARGS:RC, 1
- | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = invalid), PC restored.
- | jmp aword LFUNC:RB->gate // Just retry call.
+ | mov BASE, L:RB->base
+ | mov RD, L:RB->top
+ | mov LFUNC:RB, [BASE-8]
+ | mov PC, [BASE-4]
+ | sub RD, BASE
+ | shr RD, 3
+ | add NARGS:RD, 1
+ | // BASE = new base, RB = LFUNC, RD = nargs+1, PC restored.
+ | ins_callt // Just retry the call.
|
|//-----------------------------------------------------------------------
|//-- Entry points into the assembler VM ---------------------------------
@@ -789,16 +671,20 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| add PC, RA
| sub PC, BASE // PC = frame delta + frame type
|
- | mov RC, L:RB->top
- | sub RC, RA
- | shr NARGS:RC, 3
- | add NARGS:RC, 1 // RC = nargs+1
+ | mov RD, L:RB->top
+ | sub RD, RA
+ | shr NARGS:RD, 3
+ | add NARGS:RD, 1 // RD = nargs+1
|
+ |->vm_call_dispatch:
| mov LFUNC:RB, [RA-8]
| cmp dword [RA-4], LJ_TFUNC
- | jne ->vmeta_call // Ensure KBASE defined and != BASE.
- | jmp aword LFUNC:RB->gate
- | // RA = new base, RB = LFUNC/CFUNC, RC = nargs+1.
+ | jne ->vmeta_call // Ensure KBASE defined and != BASE.
+ |
+ |->vm_call_dispatch_f:
+ | mov BASE, RA
+ | ins_call
+ | // BASE = new base, RD = nargs+1
|
|->vm_cpcall: // Setup protected C frame, call C.
| // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp)
@@ -979,8 +865,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| lea PC, [RA+FRAME_CONT]
| sub PC, BASE
| mov LFUNC:RB, [RA-8] // Guaranteed to be a function here.
- | mov NARGS:RC, 3 // 2+1 args for func(t, k).
- | jmp aword LFUNC:RB->gate
+ | mov NARGS:RD, 2+1 // 2 args for func(t, k).
+ | jmp ->vm_call_dispatch_f
|
|//-----------------------------------------------------------------------
|
@@ -1058,8 +944,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| lea PC, [RA+FRAME_CONT]
| sub PC, BASE
| mov LFUNC:RB, [RA-8] // Guaranteed to be a function here.
- | mov NARGS:RC, 4 // 3+1 args for func(t, k, v).
- | jmp aword LFUNC:RB->gate
+ | mov NARGS:RD, 3+1 // 3 args for func(t, k, v).
+ | jmp ->vm_call_dispatch_f
|
|//-- Comparison metamethods ---------------------------------------------
|
@@ -1206,11 +1092,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| sub RC, BASE
| mov [RA-12], PC // [cont|PC]
| lea PC, [RC+FRAME_CONT]
- | mov LFUNC:RB, [RA-8]
- | mov NARGS:RC, 3 // 2+1 args for func(o1, o2).
- | cmp dword [RA-4], LJ_TFUNC
- | jne ->vmeta_call
- | jmp aword LFUNC:RB->gate
+ | mov NARGS:RD, 2+1 // 2 args for func(o1, o2).
+ | jmp ->vm_call_dispatch
|
|->vmeta_len:
| mov L:RB, SAVE_L
@@ -1225,19 +1108,21 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|//-- Call metamethod ----------------------------------------------------
|
+ |->vmeta_call_ra:
+ | lea RA, [BASE+RA*8+8]
|->vmeta_call: // Resolve and call __call metamethod.
- | // RA = new base, RC = nargs+1, BASE = old base, PC = return
+ | // BASE = old base, RA = new base, RC = nargs+1, PC = return
| mov TMP2, RA // Save RA, RC for us.
- | mov TMP1, NARGS:RC
+ | mov TMP1, NARGS:RD
| sub RA, 8
|.if X64
| mov L:RB, SAVE_L
| mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
| mov CARG2d, RA
- | lea CARG3d, [RA+NARGS:RC*8]
+ | lea CARG3d, [RA+NARGS:RD*8]
| mov CARG1d, L:RB // Caveat: CARG1d may be RA.
|.else
- | lea RC, [RA+NARGS:RC*8]
+ | lea RC, [RA+NARGS:RD*8]
| mov L:RB, SAVE_L
| mov ARG2, RA
| mov ARG3, RC
@@ -1248,13 +1133,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| call extern lj_meta_call // (lua_State *L, TValue *func, TValue *top)
| mov BASE, L:RB->base
| mov RA, TMP2
- | mov NARGS:RC, TMP1
+ | mov NARGS:RD, TMP1
| mov LFUNC:RB, [RA-8]
- | add NARGS:RC, 1
+ | add NARGS:RD, 1
| // This is fragile. L->base must not move, KBASE must always be defined.
| cmp KBASE, BASE // Continue with CALLT if flag set.
| je ->BC_CALLT_Z
- | jmp aword LFUNC:RB->gate // Otherwise call resolved metamethod.
+ | mov BASE, RA
+ | ins_call // Otherwise call resolved metamethod.
|
|//-- Argument coercion for 'for' statement ------------------------------
|
@@ -1271,9 +1157,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| movzx OP, RCL
| shr RC, 16
|.if X64
- | jmp aword [DISPATCH+OP*8+BC__MAX*8] // Retry FORI or JFORI.
+ | jmp aword [DISPATCH+OP*8+GG_DISP2STATIC] // Retry FORI or JFORI.
|.else
- | jmp aword [DISPATCH+OP*4+BC__MAX*4] // Retry FORI or JFORI.
+ | jmp aword [DISPATCH+OP*4+GG_DISP2STATIC] // Retry FORI or JFORI.
|.endif
|
|//-----------------------------------------------------------------------
@@ -1286,31 +1172,31 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|.macro .ffunc_1, name
|->ff_ .. name:
- | cmp NARGS:RC, 1+1; jb ->fff_fallback
+ | cmp NARGS:RD, 1+1; jb ->fff_fallback
|.endmacro
|
|.macro .ffunc_2, name
|->ff_ .. name:
- | cmp NARGS:RC, 2+1; jb ->fff_fallback
+ | cmp NARGS:RD, 2+1; jb ->fff_fallback
|.endmacro
|
|.macro .ffunc_n, name
| .ffunc_1 name
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
- | fld qword [RA]
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
+ | fld qword [BASE]
|.endmacro
|
|.macro .ffunc_n, name, op
| .ffunc_1 name
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
| op
- | fld qword [RA]
+ | fld qword [BASE]
|.endmacro
|
|.macro .ffunc_nsse, name, op
| .ffunc_1 name
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
- | op xmm0, qword [RA]
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
+ | op xmm0, qword [BASE]
|.endmacro
|
|.macro .ffunc_nsse, name
@@ -1319,26 +1205,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|.macro .ffunc_nn, name
| .ffunc_2 name
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
- | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback
- | fld qword [RA]
- | fld qword [RA+8]
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
+ | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
+ | fld qword [BASE]
+ | fld qword [BASE+8]
|.endmacro
|
|.macro .ffunc_nnsse, name
| .ffunc_1 name
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
- | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback
- | movsd xmm0, qword [RA]
- | movsd xmm1, qword [RA+8]
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
+ | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
+ | movsd xmm0, qword [BASE]
+ | movsd xmm1, qword [BASE+8]
|.endmacro
|
|.macro .ffunc_nnr, name
| .ffunc_2 name
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
- | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback
- | fld qword [RA+8]
- | fld qword [RA]
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
+ | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
+ | fld qword [BASE+8]
+ | fld qword [BASE]
|.endmacro
|
|// Inlined GC threshold check. Caveat: uses label 1.
@@ -1353,15 +1239,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|//-- Base library: checks -----------------------------------------------
|
|.ffunc_1 assert
- | mov RB, [RA+4]
+ | mov RB, [BASE+4]
| cmp RB, LJ_TISTRUECOND; jae ->fff_fallback
+ | mov PC, [BASE-4]
| mov MULTRES, RD
- | mov [RA-4], RB
- | mov RB, [RA]
- | mov [RA-8], RB
+ | mov [BASE-4], RB
+ | mov RB, [BASE]
+ | mov [BASE-8], RB
| sub RD, 2
| jz >2
- | mov TMP1, RA
+ | mov RA, BASE
|1:
| add RA, 8
| mov RB, [RA+4]
@@ -1370,13 +1257,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| mov [RA-8], RB
| sub RD, 1
| jnz <1
- | mov RA, TMP1
|2:
| mov RD, MULTRES
| jmp ->fff_res_
|
|.ffunc_1 type
- | mov RB, [RA+4]
+ | mov RB, [BASE+4]
| mov RC, ~LJ_TNUMX
| not RB
| cmp RC, RB
@@ -1385,29 +1271,29 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
||} else {
| jbe >1; mov RC, RB; 1:
||}
- | mov CFUNC:RB, [RA-8]
+ | mov CFUNC:RB, [BASE-8]
| mov STR:RC, [CFUNC:RB+RC*8+((char *)(&((GCfuncC *)0)->upvalue))]
- | mov dword [RA-4], LJ_TSTR
- | mov [RA-8], STR:RC
+ | mov PC, [BASE-4]
+ | mov dword [BASE-4], LJ_TSTR
+ | mov [BASE-8], STR:RC
| jmp ->fff_res1
|
|//-- Base library: getters and setters ---------------------------------
|
|.ffunc_1 getmetatable
- | mov RB, [RA+4]
+ | mov RB, [BASE+4]
+ | mov PC, [BASE-4]
| cmp RB, LJ_TTAB; jne >6
|1: // Field metatable must be at same offset for GCtab and GCudata!
- | mov TAB:RB, [RA]
+ | mov TAB:RB, [BASE]
| mov TAB:RB, TAB:RB->metatable
|2:
| test TAB:RB, TAB:RB
- | mov dword [RA-4], LJ_TNIL
+ | mov dword [BASE-4], LJ_TNIL
| jz ->fff_res1
- | mov CFUNC:RC, [RA-8]
| mov STR:RC, [DISPATCH+DISPATCH_GL(mmname)+4*MM_metatable]
- | mov dword [RA-4], LJ_TTAB // Store metatable as default result.
- | mov [RA-8], TAB:RB
- | mov TMP1, RA // Save result pointer.
+ | mov dword [BASE-4], LJ_TTAB // Store metatable as default result.
+ | mov [BASE-8], TAB:RB
| mov RA, TAB:RB->hmask
| and RA, STR:RC->hash
| imul RA, #NODE
@@ -1424,11 +1310,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| jmp ->fff_res1 // Not found, keep default result.
|5:
| mov RB, [RA+4]
- | cmp RB, LJ_TNIL; je ->fff_res1 // Dito for nil value.
+ | cmp RB, LJ_TNIL; je ->fff_res1 // Ditto for nil value.
| mov RC, [RA]
- | mov RA, TMP1 // Restore result pointer.
- | mov [RA-4], RB // Return value of mt.__metatable.
- | mov [RA-8], RC
+ | mov [BASE-4], RB // Return value of mt.__metatable.
+ | mov [BASE-8], RC
| jmp ->fff_res1
|
|6:
@@ -1441,15 +1326,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| jmp <2
|
|.ffunc_2 setmetatable
- | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
+ | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
| // Fast path: no mt for table yet and not clearing the mt.
- | mov TAB:RB, [RA]
+ | mov TAB:RB, [BASE]
| cmp dword TAB:RB->metatable, 0; jne ->fff_fallback
- | cmp dword [RA+12], LJ_TTAB; jne ->fff_fallback
- | mov TAB:RC, [RA+8]
+ | cmp dword [BASE+12], LJ_TTAB; jne ->fff_fallback
+ | mov TAB:RC, [BASE+8]
| mov TAB:RB->metatable, TAB:RC
- | mov dword [RA-4], LJ_TTAB // Return original table.
- | mov [RA-8], TAB:RB
+ | mov PC, [BASE-4]
+ | mov dword [BASE-4], LJ_TTAB // Return original table.
+ | mov [BASE-8], TAB:RB
| test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table)
| jz >1
| // Possible write barrier. Table is black, but skip iswhite(mt) check.
@@ -1458,70 +1344,73 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| jmp ->fff_res1
|
|.ffunc_2 rawget
- | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
- |.if X64
- | mov TMP1, BASE // Save BASE and RA.
- | mov RB, RA
- | mov CARG2d, [RA]
- | lea CARG3d, [RA+8]
- | mov CARG1d, SAVE_L // Caveat: CARG1d may be RA.
+ | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
+ |.if X64WIN
+ | mov RB, BASE // Save BASE.
+ | lea CARG3d, [BASE+8]
+ | mov CARG2d, [BASE] // Caveat: CARG2d == BASE.
+ | mov CARG1d, SAVE_L
+ |.elif X64
+ | mov RB, BASE // Save BASE.
+ | mov CARG2d, [BASE]
+ | lea CARG3d, [BASE+8] // Caveat: CARG3d == BASE.
+ | mov CARG1d, SAVE_L
|.else
- | mov TAB:RC, [RA]
+ | mov TAB:RD, [BASE]
| mov L:RB, SAVE_L
- | mov ARG2, TAB:RC
+ | mov ARG2, TAB:RD
| mov ARG1, L:RB
- | mov RB, RA
- | mov TMP1, BASE // Save BASE and RA.
- | add RA, 8
- | mov ARG3, RA
+ | mov RB, BASE // Save BASE.
+ | add BASE, 8
+ | mov ARG3, BASE
|.endif
| call extern lj_tab_get // (lua_State *L, GCtab *t, cTValue *key)
- | // cTValue * returned in eax (RC).
- | mov RA, RB
- | mov BASE, TMP1
- | mov RB, [RC] // Copy table slot.
- | mov RC, [RC+4]
- | mov [RA-8], RB
- | mov [RA-4], RC
+ | // cTValue * returned in eax (RD).
+ | mov BASE, RB // Restore BASE.
+ | mov RB, [RD] // Copy table slot.
+ | mov RD, [RD+4]
+ | mov PC, [BASE-4]
+ | mov [BASE-8], RB
+ | mov [BASE-4], RD
| jmp ->fff_res1
|
|//-- Base library: conversions ------------------------------------------
|
|.ffunc tonumber
| // Only handles the number case inline (without a base argument).
- | cmp NARGS:RC, 1+1; jne ->fff_fallback // Exactly one argument.
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
+ | cmp NARGS:RD, 1+1; jne ->fff_fallback // Exactly one argument.
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
if (sse) {
- | movsd xmm0, qword [RA]; jmp ->fff_resxmm0
+ | movsd xmm0, qword [BASE]; jmp ->fff_resxmm0
} else {
- | fld qword [RA]; jmp ->fff_resn
+ | fld qword [BASE]; jmp ->fff_resn
}
|
|.ffunc_1 tostring
| // Only handles the string or number case inline.
- | cmp dword [RA+4], LJ_TSTR; jne >3
+ | mov PC, [BASE-4]
+ | cmp dword [BASE+4], LJ_TSTR; jne >3
| // A __tostring method in the string base metatable is ignored.
- | mov STR:RC, [RA]
+ | mov STR:RD, [BASE]
|2:
- | mov dword [RA-4], LJ_TSTR
- | mov [RA-8], STR:RC
+ | mov dword [BASE-4], LJ_TSTR
+ | mov [BASE-8], STR:RD
| jmp ->fff_res1
|3: // Handle numbers inline, unless a number base metatable is present.
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
| cmp dword [DISPATCH+DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM])], 0
| jne ->fff_fallback
| ffgccheck // Caveat: uses label 1.
| mov L:RB, SAVE_L
- | mov L:RB->base, RA // Add frame since C call can throw.
- | mov [RA-4], PC
+ | mov L:RB->base, BASE // Add frame since C call can throw.
| mov SAVE_PC, PC // Redundant (but a defined value).
- | mov TMP1, BASE // Save BASE.
- | mov FCARG2, RA // Caveat: FCARG2 == BASE
- | mov L:FCARG1, L:RB // Caveat: FCARG1 == RA
+ |.if X64 and not X64WIN
+ | mov FCARG2, BASE // Otherwise: FCARG2 == BASE
+ |.endif
+ | mov L:FCARG1, L:RB
| call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np)
- | // GCstr returned in eax (RC).
- | mov RA, L:RB->base
- | mov BASE, TMP1
+ | // GCstr returned in eax (RD).
+ | mov BASE, L:RB->base
| jmp <2
|
|//-- Base library: iterators -------------------------------------------
@@ -1529,120 +1418,117 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.ffunc_1 next
| je >2 // Missing 2nd arg?
|1:
- | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
- |.if X64
- | mov TMP1, BASE // Save BASE.
- | mov CARG2d, [RA]
+ | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
| mov L:RB, SAVE_L
- | mov L:RB->base, RA // Add frame since C call can throw.
- | mov [RA-4], PC
- | lea CARG3d, [RA+8]
- | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
+ | mov L:RB->base, BASE // Add frame since C call can throw.
+ | mov PC, [BASE-4]
+ |.if X64WIN
+ | lea CARG3d, [BASE+8]
+ | mov CARG2d, [BASE] // Caveat: CARG2d == BASE.
+ | mov CARG1d, L:RB
+ |.elif X64
+ | mov CARG2d, [BASE]
+ | lea CARG3d, [BASE+8] // Caveat: CARG3d == BASE.
+ | mov CARG1d, L:RB
|.else
- | mov TAB:RB, [RA]
- | mov ARG2, TAB:RB
- | mov L:RB, SAVE_L
+ | mov TAB:RD, [BASE]
+ | mov ARG2, TAB:RD
| mov ARG1, L:RB
- | mov L:RB->base, RA // Add frame since C call can throw.
- | mov [RA-4], PC
- | mov TMP1, BASE // Save BASE.
- | add RA, 8
- | mov ARG3, RA
+ | add BASE, 8
+ | mov ARG3, BASE
|.endif
| mov SAVE_PC, PC // Redundant (but a defined value).
| call extern lj_tab_next // (lua_State *L, GCtab *t, TValue *key)
- | // Flag returned in eax (RC).
- | mov RA, L:RB->base
- | mov BASE, TMP1
- | test RC, RC; jz >3 // End of traversal?
- | mov RB, [RA+8] // Copy key and value to results.
- | mov RC, [RA+12]
- | mov [RA-8], RB
- | mov [RA-4], RC
- | mov RB, [RA+16]
- | mov RC, [RA+20]
- | mov [RA], RB
- | mov [RA+4], RC
+ | // Flag returned in eax (RD).
+ | mov BASE, L:RB->base
+ | test RD, RD; jz >3 // End of traversal?
+ | mov RB, [BASE+8] // Copy key and value to results.
+ | mov RD, [BASE+12]
+ | mov [BASE-8], RB
+ | mov [BASE-4], RD
+ | mov RB, [BASE+16]
+ | mov RD, [BASE+20]
+ | mov [BASE], RB
+ | mov [BASE+4], RD
|->fff_res2:
| mov RD, 1+2
| jmp ->fff_res
|2: // Set missing 2nd arg to nil.
- | mov dword [RA+12], LJ_TNIL
+ | mov dword [BASE+12], LJ_TNIL
| jmp <1
|3: // End of traversal: return nil.
- | mov dword [RA-4], LJ_TNIL
+ | mov dword [BASE-4], LJ_TNIL
| jmp ->fff_res1
|
|.ffunc_1 pairs
- | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
- | mov CFUNC:RC, CFUNC:RB->upvalue[0]
- | mov dword [RA-4], LJ_TFUNC
- | mov [RA-8], CFUNC:RC
- | mov dword [RA+12], LJ_TNIL
+ | mov CFUNC:RB, [BASE-8]
+ | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
+ | mov CFUNC:RD, CFUNC:RB->upvalue[0]
+ | mov PC, [BASE-4]
+ | mov dword [BASE-4], LJ_TFUNC
+ | mov [BASE-8], CFUNC:RD
+ | mov dword [BASE+12], LJ_TNIL
| mov RD, 1+3
| jmp ->fff_res
|
|.ffunc_1 ipairs_aux
- | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
- | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback
+ | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
+ | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
+ | mov PC, [BASE-4]
if (sse) {
- | movsd xmm0, qword [RA+8]
+ | movsd xmm0, qword [BASE+8]
| sseconst_1 xmm1, RBa
| addsd xmm0, xmm1
- | cvtsd2si RC, xmm0
- | movsd qword [RA-8], xmm0
+ | cvtsd2si RD, xmm0
+ | movsd qword [BASE-8], xmm0
} else {
|.if not X64
- | fld qword [RA+8]
+ | fld qword [BASE+8]
| fld1
| faddp st1
| fist ARG1
- | fstp qword [RA-8]
- | mov RC, ARG1
+ | fstp qword [BASE-8]
+ | mov RD, ARG1
|.endif
}
- | mov TAB:RB, [RA]
- | cmp RC, TAB:RB->asize; jae >2 // Not in array part?
- | shl RC, 3
- | add RC, TAB:RB->array
+ | mov TAB:RB, [BASE]
+ | cmp RD, TAB:RB->asize; jae >2 // Not in array part?
+ | shl RD, 3
+ | add RD, TAB:RB->array
|1:
- | cmp dword [RC+4], LJ_TNIL; je ->fff_res0
- | mov RB, [RC] // Copy array slot.
- | mov RC, [RC+4]
- | mov [RA], RB
- | mov [RA+4], RC
+ | cmp dword [RD+4], LJ_TNIL; je ->fff_res0
+ | mov RB, [RD] // Copy array slot.
+ | mov RD, [RD+4]
+ | mov [BASE], RB
+ | mov [BASE+4], RD
| jmp ->fff_res2
|2: // Check for empty hash part first. Otherwise call C function.
| cmp dword TAB:RB->hmask, 0; je ->fff_res0
- | mov TMP1, BASE // Save BASE and RA.
- |.if X64 and not X64WIN
| mov FCARG1, TAB:RB
- | mov RB, RA
- |.else
- | xchg FCARG1, TAB:RB // Caveat: FCARG1 == RA
- |.endif
- | mov FCARG2, RC
+ | mov RB, BASE // Save BASE.
+ | mov FCARG2, RD // Caveat: FCARG2 == BASE
| call extern lj_tab_getinth@8 // (GCtab *t, int32_t key)
- | // cTValue * or NULL returned in eax (RC).
- | mov RA, RB
- | mov BASE, TMP1
- | test RC, RC
+ | // cTValue * or NULL returned in eax (RD).
+ | mov BASE, RB
+ | test RD, RD
| jnz <1
|->fff_res0:
| mov RD, 1+0
| jmp ->fff_res
|
|.ffunc_1 ipairs
- | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
- | mov CFUNC:RC, CFUNC:RB->upvalue[0]
- | mov dword [RA-4], LJ_TFUNC
- | mov [RA-8], CFUNC:RC
+ | mov CFUNC:RB, [BASE-8]
+ | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
+ | mov CFUNC:RD, CFUNC:RB->upvalue[0]
+ | mov PC, [BASE-4]
+ | mov dword [BASE-4], LJ_TFUNC
+ | mov [BASE-8], CFUNC:RD
if (sse) {
| xorps xmm0, xmm0
- | movsd qword [RA+8], xmm0
+ | movsd qword [BASE+8], xmm0
} else {
| fldz
- | fstp qword [RA+8]
+ | fstp qword [BASE+8]
}
| mov RD, 1+3
| jmp ->fff_res
@@ -1650,54 +1536,42 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|//-- Base library: catch errors ----------------------------------------
|
|.ffunc_1 pcall
- | mov [RA-4], PC
+ | lea RA, [BASE+8]
+ | sub NARGS:RD, 1
| mov PC, 8+FRAME_PCALL
- | mov BASE, RA
- | add RA, 8
- | sub NARGS:RC, 1
- | mov LFUNC:RB, [RA-8]
|1:
- | test byte [DISPATCH+DISPATCH_GL(hookmask)], HOOK_ACTIVE
- | jnz >3 // Hook active before pcall?
- |2:
- | cmp dword [RA-4], LJ_TFUNC
- | jne ->vmeta_call // Ensure KBASE defined and != BASE.
- | jmp aword LFUNC:RB->gate
- |3:
- | add PC, 1 // Use FRAME_PCALLH if hook was active.
- | jmp <2
+ | movzx RB, byte [DISPATCH+DISPATCH_GL(hookmask)]
+ | shr RB, HOOK_ACTIVE_SHIFT
+ | and RB, 1
+ | add PC, RB // Remember active hook before pcall.
+ | jmp ->vm_call_dispatch
|
|.ffunc_2 xpcall
- | cmp dword [RA+12], LJ_TFUNC; jne ->fff_fallback
- | mov [RA-4], PC
- | mov RB, [RA+4] // Swap function and traceback.
- | mov [RA+12], RB
- | mov dword [RA+4], LJ_TFUNC
- | mov LFUNC:RB, [RA]
- | mov PC, [RA+8]
- | mov [RA+8], LFUNC:RB
- | mov [RA], PC
- | mov PC, 2*8+FRAME_PCALL
- | mov BASE, RA
- | add RA, 2*8
- | sub NARGS:RC, 2
+ | cmp dword [BASE+12], LJ_TFUNC; jne ->fff_fallback
+ | mov RB, [BASE+4] // Swap function and traceback.
+ | mov [BASE+12], RB
+ | mov dword [BASE+4], LJ_TFUNC
+ | mov LFUNC:RB, [BASE]
+ | mov PC, [BASE+8]
+ | mov [BASE+8], LFUNC:RB
+ | mov [BASE], PC
+ | lea RA, [BASE+16]
+ | sub NARGS:RD, 2
+ | mov PC, 16+FRAME_PCALL
| jmp <1
|
|//-- Coroutine library --------------------------------------------------
|
|.macro coroutine_resume_wrap, resume
- |9: // Need to restore PC for fallback handler.
- | mov PC, SAVE_PC
- | jmp ->fff_fallback
- |
|.if resume
|.ffunc_1 coroutine_resume
- | mov L:RB, [RA]
+ | mov L:RB, [BASE]
|.else
|.ffunc coroutine_wrap_aux
+ | mov CFUNC:RB, [BASE-8]
| mov L:RB, CFUNC:RB->upvalue[0].gcr
|.endif
- | mov [RA-4], PC
+ | mov PC, [BASE-4]
| mov SAVE_PC, PC
|.if X64
| mov TMP1, L:RB
@@ -1705,60 +1579,52 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| mov ARG1, L:RB
|.endif
|.if resume
- | cmp dword [RA+4], LJ_TTHREAD; jne <9
- |.endif
- | cmp aword L:RB->cframe, 0; jne <9
- | cmp byte L:RB->status, LUA_YIELD; ja <9
- | mov PC, L:RB->top
- |.if X64
- | mov TMP2, PC
- |.else
- | mov ARG2, PC
+ | cmp dword [BASE+4], LJ_TTHREAD; jne ->fff_fallback
|.endif
+ | cmp aword L:RB->cframe, 0; jne ->fff_fallback
+ | cmp byte L:RB->status, LUA_YIELD; ja ->fff_fallback
+ | mov RA, L:RB->top
| je >1 // Status != LUA_YIELD (i.e. 0)?
- | cmp PC, L:RB->base; je <9 // Check for presence of initial func.
+ | cmp RA, L:RB->base // Check for presence of initial func.
+ | je ->fff_fallback
|1:
|.if resume
- | lea PC, [PC+NARGS:RC*8-16] // Check stack space (-1-thread).
+ | lea PC, [RA+NARGS:RD*8-16] // Check stack space (-1-thread).
|.else
- | lea PC, [PC+NARGS:RC*8-8] // Check stack space (-1).
+ | lea PC, [RA+NARGS:RD*8-8] // Check stack space (-1).
|.endif
- | cmp PC, L:RB->maxstack; ja <9
+ | cmp PC, L:RB->maxstack; ja ->fff_fallback
| mov L:RB->top, PC
|
| mov L:RB, SAVE_L
- | mov L:RB->base, RA
+ | mov L:RB->base, BASE
|.if resume
- | add RA, 8 // Keep resumed thread in stack for GC.
- |.endif
- | mov L:RB->top, RA
- |.if X64
- | mov RB, TMP2
- |.else
- | mov RB, ARG2
+ | add BASE, 8 // Keep resumed thread in stack for GC.
|.endif
+ | mov L:RB->top, BASE
|.if resume
- | lea RA, [RA+NARGS:RC*8-24] // RA = end of source for stack move.
+ | lea RB, [BASE+NARGS:RD*8-24] // RB = end of source for stack move.
|.else
- | lea RA, [RA+NARGS:RC*8-16] // RA = end of source for stack move.
+ | lea RB, [BASE+NARGS:RD*8-16] // RB = end of source for stack move.
|.endif
- | sub RAa, PCa // Relative to PC.
+ | sub RBa, PCa // Relative to PC.
|
- | cmp PC, RB
+ | cmp PC, RA
| je >3
|2: // Move args to coroutine.
- | mov RC, [PC+RA+4]
+ | mov RC, [PC+RB+4]
| mov [PC-4], RC
- | mov RC, [PC+RA]
+ | mov RC, [PC+RB]
| mov [PC-8], RC
| sub PC, 8
- | cmp PC, RB
+ | cmp PC, RA
| jne <2
|3:
|.if X64
+ | mov CARG2d, RA
| mov CARG1d, TMP1
- | mov CARG2d, TMP2
|.else
+ | mov ARG2, RA
| xor RA, RA
| mov ARG4, RA
| mov ARG3, RA
@@ -1854,12 +1720,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|.ffunc coroutine_yield
| mov L:RB, SAVE_L
- | mov [RA-4], PC
| test aword L:RB->cframe, CFRAME_RESUME
| jz ->fff_fallback
- | mov L:RB->base, RA
- | lea RC, [RA+NARGS:RC*8-8]
- | mov L:RB->top, RC
+ | mov L:RB->base, BASE
+ | lea RD, [BASE+NARGS:RD*8-8]
+ | mov L:RB->top, RD
| xor RD, RD
| mov aword L:RB->cframe, RDa
| mov al, LUA_YIELD
@@ -1870,14 +1735,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
if (sse) {
|->fff_resn:
- | fstp qword [RA-8]
+ | mov PC, [BASE-4]
+ | fstp qword [BASE-8]
| jmp ->fff_res1
|
|.ffunc_nsse math_abs
| sseconst_abs xmm1, RDa
| andps xmm0, xmm1
|->fff_resxmm0:
- | movsd qword [RA-8], xmm0
+ | mov PC, [BASE-4]
+ | movsd qword [BASE-8], xmm0
| // fallthrough
} else {
|.ffunc_n math_abs
@@ -1885,7 +1752,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| // fallthrough
|->fff_resxmm0: // Dummy.
|->fff_resn:
- | fstp qword [RA-8]
+ | mov PC, [BASE-4]
+ | fstp qword [BASE-8]
}
|->fff_res1:
| mov RD, 1+1
@@ -1897,16 +1765,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|5:
| cmp PC_RB, RDL // More results expected?
| ja >6
- | // BASE and KBASE are assumed to be set for the calling frame.
+ | // Adjust BASE. KBASE is assumed to be set for the calling frame.
+ | movzx RA, PC_RA
+ | not RAa // Note: ~RA = -(RA+1)
+ | lea BASE, [BASE+RA*8] // base = base - (RA+1)*8
| ins_next
|
|6: // Fill up results with nil.
- | mov dword [RA+RD*8-12], LJ_TNIL
+ | mov dword [BASE+RD*8-12], LJ_TNIL
| add RD, 1
| jmp <5
|
|7: // Non-standard return case.
- | mov BASE, RA
| mov RAa, -8 // Results start at BASE+RA = BASE-8.
| jmp ->vm_return
|
@@ -1948,10 +1818,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| fstp FPARG1
| .endif
||}
- | mov TMP1, RA
| mov RB, BASE
| call extern lj_wrapper_ .. func
- | mov RA, TMP1
| mov BASE, RB
| .if X64
| jmp ->fff_resxmm0
@@ -1967,10 +1835,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|->ff_math_deg:
if (sse) {
|.ffunc_nsse math_rad
+ | mov CFUNC:RB, [BASE-8]
| mulsd xmm0, qword CFUNC:RB->upvalue[0]
| jmp ->fff_resxmm0
} else {
|.ffunc_n math_rad
+ | mov CFUNC:RB, [BASE-8]
| fmul qword CFUNC:RB->upvalue[0]
| jmp ->fff_resn
}
@@ -1979,10 +1849,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.ffunc_nnr math_ldexp; fscale; fpop1; jmp ->fff_resn
|
|.ffunc_1 math_frexp
- | mov RB, [RA+4]
+ | mov RB, [BASE+4]
| cmp RB, LJ_TISNUM; ja ->fff_fallback
- | mov RC, [RA]
- | mov [RA-4], RB; mov [RA-8], RC
+ | mov PC, [BASE-4]
+ | mov RC, [BASE]
+ | mov [BASE-4], RB; mov [BASE-8], RC
| shl RB, 1; cmp RB, 0xffe00000; jae >3
| or RC, RB; jz >3
| mov RC, 1022
@@ -1994,15 +1865,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
} else {
| mov TMP1, RB; fild TMP1
}
- | mov RB, [RA-4]
+ | mov RB, [BASE-4]
| and RB, 0x800fffff // Mask off exponent.
| or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0.
- | mov [RA-4], RB
+ | mov [BASE-4], RB
|2:
if (sse) {
- | movsd qword [RA], xmm0
+ | movsd qword [BASE], xmm0
} else {
- | fstp qword [RA]
+ | fstp qword [BASE]
}
| mov RD, 1+2
| jmp ->fff_res
@@ -2014,46 +1885,48 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
}
|4: // Handle denormals by multiplying with 2^54 and adjusting the bias.
if (sse) {
- | movsd xmm0, qword [RA]
+ | movsd xmm0, qword [BASE]
| sseconst_hi xmm1, RBa, 43500000 // 2^54.
| mulsd xmm0, xmm1
- | movsd qword [RA-8], xmm0
+ | movsd qword [BASE-8], xmm0
} else {
- | fld qword [RA]
+ | fld qword [BASE]
| mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54
- | fstp qword [RA-8]
+ | fstp qword [BASE-8]
}
- | mov RB, [RA-4]; mov RC, 1076; shl RB, 1; jmp <1
+ | mov RB, [BASE-4]; mov RC, 1076; shl RB, 1; jmp <1
|
if (sse) {
|.ffunc_nsse math_modf
} else {
|.ffunc_n math_modf
}
- | mov RB, [RA+4]
+ | mov RB, [BASE+4]
+ | mov PC, [BASE-4]
| shl RB, 1; cmp RB, 0xffe00000; je >4 // +-Inf?
if (sse) {
| movaps xmm4, xmm0
| call ->vm_trunc
| subsd xmm4, xmm0
|1:
- | movsd qword [RA-8], xmm0
- | movsd qword [RA], xmm4
+ | movsd qword [BASE-8], xmm0
+ | movsd qword [BASE], xmm4
} else {
| fdup
| call ->vm_trunc
| fsub st1, st0
|1:
- | fstp qword [RA-8]
- | fstp qword [RA]
+ | fstp qword [BASE-8]
+ | fstp qword [BASE]
}
- | mov RC, [RA-4]; mov RB, [RA+4]
+ | mov RC, [BASE-4]; mov RB, [BASE+4]
| xor RC, RB; js >3 // Need to adjust sign?
|2:
| mov RD, 1+2
| jmp ->fff_res
|3:
- | xor RB, 0x80000000; mov [RA+4], RB; jmp <2 // Flip sign of fraction.
+ | xor RB, 0x80000000; mov [BASE+4], RB // Flip sign of fraction.
+ | jmp <2
|4:
if (sse) {
| xorps xmm4, xmm4; jmp <1 // Return +-Inf and +-0.
@@ -2079,8 +1952,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|1:
| cmp RB, RD
| jae ->fff_resxmm0
- | cmp dword [RA+RB*8-4], LJ_TISNUM; ja ->fff_fallback
- | movsd xmm1, qword [RA+RB*8-8]
+ | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja ->fff_fallback
+ | movsd xmm1, qword [BASE+RB*8-8]
| sseop xmm0, xmm1
| add RB, 1
| jmp <1
@@ -2091,8 +1964,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|1:
| cmp RB, RD
| jae ->fff_resn
- | cmp dword [RA+RB*8-4], LJ_TISNUM; ja >5
- | fld qword [RA+RB*8-8]
+ | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja >5
+ | fld qword [BASE+RB*8-8]
||if (cmov) {
| fucomi st1; cmovop st1; fpop1
||} else {
@@ -2116,8 +1989,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|//-- String library -----------------------------------------------------
|
|.ffunc_1 string_len
- | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback
- | mov STR:RB, [RA]
+ | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
+ | mov STR:RB, [BASE]
if (sse) {
| cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0
} else {
@@ -2125,9 +1998,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
}
|
|.ffunc string_byte // Only handle the 1-arg case here.
- | cmp NARGS:RC, 1+1; jne ->fff_fallback
- | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback
- | mov STR:RB, [RA]
+ | cmp NARGS:RD, 1+1; jne ->fff_fallback
+ | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
+ | mov STR:RB, [BASE]
+ | mov PC, [BASE-4]
| cmp dword STR:RB->len, 1
| jb ->fff_res0 // Return no results for empty string.
| movzx RB, byte STR:RB[1]
@@ -2139,14 +2013,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|.ffunc string_char // Only handle the 1-arg case here.
| ffgccheck
- | cmp NARGS:RC, 1+1; jne ->fff_fallback // *Exactly* 1 arg.
- | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback
+ | cmp NARGS:RD, 1+1; jne ->fff_fallback // *Exactly* 1 arg.
+ | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
if (sse) {
- | cvtsd2si RC, qword [RA]
+ | cvtsd2si RC, qword [BASE]
| cmp RC, 255; ja ->fff_fallback
| mov TMP2, RC
} else {
- | fld qword [RA]
+ | fld qword [BASE]
| fistp TMP2
| cmp TMP2, 255; ja ->fff_fallback
}
@@ -2156,7 +2030,6 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| mov ARG3, 1
|.endif
| lea RDa, TMP2 // Points to stack. Little-endian.
- | mov TMP1, RA // Save RA.
|->fff_newstr:
| mov L:RB, SAVE_L
| mov L:RB->base, BASE
@@ -2170,38 +2043,37 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.endif
| mov SAVE_PC, PC
| call extern lj_str_new // (lua_State *L, char *str, size_t l)
- | // GCstr * returned in eax (RC).
- | mov RA, TMP1
+ | // GCstr * returned in eax (RD).
| mov BASE, L:RB->base
- | mov dword [RA-4], LJ_TSTR
- | mov [RA-8], STR:RC
+ | mov PC, [BASE-4]
+ | mov dword [BASE-4], LJ_TSTR
+ | mov [BASE-8], STR:RD
| jmp ->fff_res1
|
|.ffunc string_sub
| ffgccheck
- | mov TMP1, RA // Save RA.
| mov TMP2, -1
- | cmp NARGS:RC, 1+2; jb ->fff_fallback
+ | cmp NARGS:RD, 1+2; jb ->fff_fallback
| jna >1
- | cmp dword [RA+20], LJ_TISNUM; ja ->fff_fallback
+ | cmp dword [BASE+20], LJ_TISNUM; ja ->fff_fallback
if (sse) {
- | cvtsd2si RB, qword [RA+16]
+ | cvtsd2si RB, qword [BASE+16]
| mov TMP2, RB
} else {
- | fld qword [RA+16]
+ | fld qword [BASE+16]
| fistp TMP2
}
|1:
- | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback
- | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback
- | mov STR:RB, [RA]
+ | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
+ | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
+ | mov STR:RB, [BASE]
| mov TMP3, STR:RB
| mov RB, STR:RB->len
if (sse) {
- | cvtsd2si RA, qword [RA+8]
+ | cvtsd2si RA, qword [BASE+8]
} else {
|.if not X64
- | fld qword [RA+8]
+ | fld qword [BASE+8]
| fistp ARG3
| mov RA, ARG3
|.endif
@@ -2250,14 +2122,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|.ffunc_2 string_rep // Only handle the 1-char case inline.
| ffgccheck
- | mov TMP1, RA // Save RA.
- | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback
- | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback
- | mov STR:RB, [RA]
+ | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
+ | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
+ | mov STR:RB, [BASE]
if (sse) {
- | cvtsd2si RC, qword [RA+8]
+ | cvtsd2si RC, qword [BASE+8]
} else {
- | fld qword [RA+8]
+ | fld qword [BASE+8]
| fistp TMP2
| mov RC, TMP2
}
@@ -2284,9 +2155,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|.ffunc_1 string_reverse
| ffgccheck
- | mov TMP1, RA // Save RA.
- | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback
- | mov STR:RB, [RA]
+ | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
+ | mov STR:RB, [BASE]
| mov RC, STR:RB->len
| test RC, RC
| jz ->fff_emptystr // Zero length string?
@@ -2312,9 +2182,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.macro ffstring_case, name, lo, hi
| .ffunc_1 name
| ffgccheck
- | mov TMP1, RA // Save RA.
- | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback
- | mov STR:RB, [RA]
+ | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
+ | mov STR:RB, [BASE]
| mov RC, STR:RB->len
| cmp [DISPATCH+DISPATCH_GL(tmpbuf.sz)], RC; jb ->fff_fallback_1
| add RB, #STR
@@ -2349,19 +2218,17 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|//-- Table library ------------------------------------------------------
|
|.ffunc_1 table_getn
- | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
- | mov TMP1, BASE // Save RA and BASE.
- | mov RB, RA
- | mov TAB:FCARG1, [RA] // Caveat: FCARG1 == RA
+ | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
+ | mov RB, BASE // Save BASE.
+ | mov TAB:FCARG1, [BASE]
| call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t)
- | // Length of table returned in eax (RC).
- | mov RA, RB // Restore RA and BASE.
- | mov BASE, TMP1
+ | // Length of table returned in eax (RD).
+ | mov BASE, RB // Restore BASE.
if (sse) {
- | cvtsi2sd xmm0, RC; jmp ->fff_resxmm0
+ | cvtsi2sd xmm0, RD; jmp ->fff_resxmm0
} else {
|.if not X64
- | mov ARG1, RC; fild ARG1; jmp ->fff_resn
+ | mov ARG1, RD; fild ARG1; jmp ->fff_resn
|.endif
}
|
@@ -2406,29 +2273,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|
|.macro .ffunc_bit_op, name, ins
| .ffunc_bit name
- | mov TMP2, NARGS:RC // Save for fallback.
- | lea RC, [RA+NARGS:RC*8-16]
- ||if (sse) {
- | mov TMP1, BASE // Need BASE as a scratch register.
- ||}
+ | mov TMP2, NARGS:RD // Save for fallback.
+ | lea RD, [BASE+NARGS:RD*8-16]
|1:
- | cmp RC, RA
- | jbe ->fff_resbit_op
- | cmp dword [RC+4], LJ_TISNUM; ja ->fff_fallback_bit_op
+ | cmp RD, BASE
+ | jbe ->fff_resbit
+ | cmp dword [RD+4], LJ_TISNUM; ja ->fff_fallback_bit_op
||if (sse) {
- | movsd xmm0, qword [RC]
+ | movsd xmm0, qword [RD]
| addsd xmm0, xmm1
- | movd BASE, xmm0
- | ins RB, BASE
+ | movd RA, xmm0
+ | ins RB, RA
||} else {
|.if not X64
- | fld qword [RC]
+ | fld qword [RD]
| fadd TMP1
| fstp FPARG1
| ins RB, ARG1
|.endif
||}
- | sub RC, 8
+ | sub RD, 8
| jmp <1
|.endmacro
|
@@ -2446,14 +2310,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|->fff_resbit:
| cvtsi2sd xmm0, RB
| jmp ->fff_resxmm0
- |->fff_resbit_op:
- | cvtsi2sd xmm0, RB
- | mov BASE, TMP1
- | jmp ->fff_resxmm0
} else {
|.if not X64
|->fff_resbit:
- |->fff_resbit_op:
| mov ARG1, RB
| fild ARG1
| jmp ->fff_resn
@@ -2461,10 +2320,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
}
|
|->fff_fallback_bit_op:
- if (sse) {
- | mov BASE, TMP1
- }
- | mov NARGS:RC, TMP2 // Restore for fallback
+ | mov NARGS:RD, TMP2 // Restore for fallback
| jmp ->fff_fallback
|
|.macro .ffunc_bit_sh, name, ins
@@ -2503,86 +2359,80 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|//-----------------------------------------------------------------------
|
|->fff_fallback_2:
- | mov NARGS:RC, 1+2 // Other args are ignored, anyway.
+ | mov NARGS:RD, 1+2 // Other args are ignored, anyway.
| jmp ->fff_fallback
|->fff_fallback_1:
- | mov NARGS:RC, 1+1 // Other args are ignored, anyway.
+ | mov NARGS:RD, 1+1 // Other args are ignored, anyway.
|->fff_fallback: // Call fast function fallback handler.
- | // RA = new base, RC = nargs+1
+ | // BASE = new base, RD = nargs+1
| mov L:RB, SAVE_L
- | sub BASE, RA
- | mov [RA-4], PC
+ | mov PC, [BASE-4] // Fallback may overwrite PC.
| mov SAVE_PC, PC // Redundant (but a defined value).
- | mov TMP1, BASE // Save old BASE (relative).
- | mov L:RB->base, RA
- | lea RC, [RA+NARGS:RC*8-8]
- | lea BASE, [RC+8*LUA_MINSTACK] // Ensure enough space for handler.
- | mov L:RB->top, RC
- | mov CFUNC:RC, [RA-8]
- | cmp BASE, L:RB->maxstack
+ | mov L:RB->base, BASE
+ | lea RD, [BASE+NARGS:RD*8-8]
+ | lea RA, [RD+8*LUA_MINSTACK] // Ensure enough space for handler.
+ | mov L:RB->top, RD
+ | mov CFUNC:RD, [BASE-8]
+ | cmp RA, L:RB->maxstack
| ja >5 // Need to grow stack.
|.if X64
| mov CARG1d, L:RB
|.else
| mov ARG1, L:RB
|.endif
- | call aword CFUNC:RC->f // (lua_State *L)
+ | call aword CFUNC:RD->f // (lua_State *L)
+ | mov BASE, L:RB->base
| // Either throws an error or recovers and returns 0 or MULTRES (+1).
- | test RC, RC; jnz >3
+ | test RD, RD; jnz ->fff_res // Returned MULTRES (already in RD).
|1: // Returned 0: retry fast path.
- | mov RA, L:RB->base
- | mov RC, L:RB->top
- | sub RC, RA
- | shr RC, 3
- | add NARGS:RC, 1
- | mov LFUNC:RB, [RA-8]
- | mov BASE, TMP1 // Restore old BASE.
- | add BASE, RA
- | cmp [RA-4], PC; jne >2 // Callable modified by handler?
- | jmp aword LFUNC:RB->gate // Retry the call.
+ | mov RD, L:RB->top
+ | sub RD, BASE
+ | shr RD, 3
+ | add NARGS:RD, 1
+ | mov LFUNC:RB, [BASE-8]
+ | cmp dword [BASE-4], PC
+ | jne >2 // Tailcalled?
+ | ins_callt // Retry the call.
|
- |2: // Run modified callable.
- | cmp dword [RA-4], LJ_TFUNC
- | jne ->vmeta_call
- | jmp aword LFUNC:RB->gate // Retry the call.
- |
- |3: // Returned MULTRES (already in RC/RD).
- | mov RA, L:RB->base
- | mov BASE, TMP1 // Restore old BASE.
- | add BASE, RA
- | jmp ->fff_res
+ |2: // Reconstruct previous base for vmeta_call.
+ | mov RA, BASE
+ | test PC, FRAME_TYPE
+ | jnz >3
+ | movzx RB, PC_RA
+ | not RBa // Note: ~RB = -(RB+1)
+ | lea BASE, [BASE+RB*8] // base = base - (RB+1)*8
+ | jmp ->vm_call_dispatch // Resolve again.
+ |3:
+ | mov RB, PC
+ | and RB, -8
+ | sub BASE, RB
+ | jmp ->vm_call_dispatch // Resolve again.
|
|5: // Grow stack for fallback handler.
| mov FCARG2, LUA_MINSTACK
| mov FCARG1, L:RB
| call extern lj_state_growstack@8 // (lua_State *L, int n)
+ | mov BASE, L:RB->base
| jmp <1 // Dumb retry (goes through ff first).
|
|->fff_gcstep: // Call GC step function.
- | // RA = new base, RC = nargs+1
+ | // BASE = new base, RD = nargs+1
| pop RBa // Must keep stack at same level.
| mov TMPa, RBa // Save return address
| mov L:RB, SAVE_L
- | sub BASE, RA
- | mov TMP2, BASE // Save old BASE (relative).
- | mov [RA-4], PC
| mov SAVE_PC, PC // Redundant (but a defined value).
- | mov L:RB->base, RA
- | lea RC, [RA+NARGS:RC*8-8]
+ | mov L:RB->base, BASE
+ | lea RD, [BASE+NARGS:RD*8-8]
| mov FCARG1, L:RB
- | mov L:RB->top, RC
+ | mov L:RB->top, RD
| call extern lj_gc_step@4 // (lua_State *L)
- | mov RA, L:RB->base
- | mov RC, L:RB->top
- | sub RC, RA
- | shr RC, 3
- | add NARGS:RC, 1
- | mov PC, [RA-4]
- | mov BASE, TMP2 // Restore old BASE.
- | add BASE, RA
+ | mov BASE, L:RB->base
+ | mov RD, L:RB->top
+ | sub RD, BASE
+ | shr RD, 3
+ | add NARGS:RD, 1
| mov RBa, TMPa
| push RBa // Restore return address.
- | mov LFUNC:RB, [RA-8]
| ret
|
|//-----------------------------------------------------------------------
@@ -2629,9 +2479,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| movzx OP, PC_OP
| movzx RD, PC_RD
|.if X64
- | jmp aword [DISPATCH+OP*8+BC__MAX*8] // Re-dispatch to static ins.
+ | jmp aword [DISPATCH+OP*8+GG_DISP2STATIC] // Re-dispatch to static ins.
|.else
- | jmp aword [DISPATCH+OP*4+BC__MAX*4] // Re-dispatch to static ins.
+ | jmp aword [DISPATCH+OP*4+GG_DISP2STATIC] // Re-dispatch to static ins.
|.endif
|
|->cont_hook: // Continue from hook yield.
@@ -2645,8 +2495,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.if X64
| int3 // NYI
|.else
+ | mov LFUNC:RB, [BASE-8] // Same as curr_topL(L).
+ | mov RB, LFUNC:RB->pc
+ | movzx RD, byte [RB+PC2PROTO(framesize)]
+ | lea RD, [BASE+RD*8]
| mov L:RB, SAVE_L
| mov L:RB->base, BASE
+ | mov L:RB->top, RD
| mov FCARG2, PC
| lea FCARG1, [DISPATCH+GG_DISP2J]
| mov [DISPATCH+DISPATCH_J(L)], L:RB
@@ -2661,16 +2516,22 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.if X64
| int3 // NYI
|.else
+ | lea RD, [BASE+NARGS:RD*8-8]
| mov L:RB, SAVE_L
| mov L:RB->base, BASE
+ | mov L:RB->top, RD
| mov FCARG2, PC
| lea FCARG1, [DISPATCH+GG_DISP2J]
| mov [DISPATCH+DISPATCH_J(L)], L:RB
| mov SAVE_PC, PC
| call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc)
| mov BASE, L:RB->base
- | // Dispatch the first instruction and optionally record it.
- | ins_next
+ | mov RD, L:RB->top
+ | sub RD, BASE
+ | shr RD, 3
+ | add NARGS:RD, 1
+ | mov LFUNC:RB, [BASE-8]
+ | ins_callt
|.endif
#endif
|
@@ -4403,13 +4264,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_CALL: case BC_CALLM:
| ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs
if (op == BC_CALLM) {
- | add NARGS:RC, MULTRES
+ | add NARGS:RD, MULTRES
}
- | lea RA, [BASE+RA*8+8]
- | mov LFUNC:RB, [RA-8]
- | cmp dword [RA-4], LJ_TFUNC
- | jne ->vmeta_call
- | jmp aword LFUNC:RB->gate
+ | cmp dword [BASE+RA*8+4], LJ_TFUNC
+ | mov LFUNC:RB, [BASE+RA*8]
+ | jne ->vmeta_call_ra
+ | lea BASE, [BASE+RA*8+8]
+ | ins_call
break;
case BC_CALLMT:
@@ -4445,20 +4306,19 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
|
| mov LFUNC:RB, [BASE-8]
|3:
- | mov RA, BASE // BASE is ignored, except when ...
+ | mov NARGS:RD, MULTRES
| cmp byte LFUNC:RB->ffid, 1 // (> FF_C) Calling a fast function?
| ja >5
|4:
- | mov NARGS:RD, MULTRES
- | jmp aword LFUNC:RB->gate
+ | ins_callt
|
|5: // Tailcall to a fast function.
| test PC, FRAME_TYPE // Lua frame below?
| jnz <4
- | movzx RD, PC_RA // Need to prepare BASE/KBASE.
- | not RDa
- | lea BASE, [BASE+RD*8]
- | mov LFUNC:KBASE, [BASE-8]
+ | movzx RA, PC_RA
+ | not RAa
+ | lea RA, [BASE+RA*8]
+ | mov LFUNC:KBASE, [RA-8] // Need to prepare KBASE.
| mov KBASE, LFUNC:KBASE->pc
| mov KBASE, [KBASE+PC2PROTO(k)]
| jmp <4
@@ -4488,9 +4348,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
| mov [RA-8], LFUNC:RB
| mov [RA-4], RC
| cmp RC, LJ_TFUNC // Handle like a regular 2-arg call.
- | mov NARGS:RC, 3
+ | mov NARGS:RD, 2+1
| jne ->vmeta_call
- | jmp aword LFUNC:RB->gate
+ | mov BASE, RA
+ | ins_call
break;
case BC_VARG:
@@ -4799,6 +4660,150 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
| ins_next
break;
+ /* -- Function headers -------------------------------------------------- */
+
+ /*
+ ** Reminder: A function may be called with func/args above L->maxstack,
+ ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
+ ** too. This means all FUNC* ops (including fast functions) must check
+ ** for stack overflow _before_ adding more slots!
+ */
+
+ case BC_FUNCF:
+#if LJ_HASJIT
+ | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
+ | // hotcall RB
+#endif
+ case BC_FUNCV: /* NYI: compiled vararg functions. */
+ | // Fall through. Assumes BC_IFUNCF/BC_IFUNCV follow and ins_AD is a no-op.
+ break;
+
+ case BC_JFUNCF:
+#if !LJ_HASJIT
+ break;
+#endif
+ case BC_IFUNCF:
+ | ins_AD // BASE = new base, RA = framesize, RD = nargs+1
+ | mov KBASE, [PC-4+PC2PROTO(k)]
+ | mov L:RB, SAVE_L
+ | lea RA, [BASE+RA*8] // Top of frame.
+ | cmp RA, L:RB->maxstack
+ | ja ->vm_growstack_f
+ | movzx RA, byte [PC-4+PC2PROTO(numparams)]
+ | cmp NARGS:RD, RA // Check for missing parameters.
+ | jbe >3
+ |2:
+ if (op == BC_JFUNCF) {
+ | movzx RD, PC_RD
+ | jmp =>BC_JLOOP
+ } else {
+ | ins_next
+ }
+ |
+ |3: // Clear missing parameters.
+ | mov dword [BASE+NARGS:RD*8-4], LJ_TNIL
+ | add NARGS:RD, 1
+ | cmp NARGS:RD, RA
+ | jbe <3
+ | jmp <2
+ break;
+
+ case BC_JFUNCV:
+#if !LJ_HASJIT
+ break;
+#endif
+ | int3 // NYI: compiled vararg functions
+ break; /* NYI: compiled vararg functions. */
+
+ case BC_IFUNCV:
+ | ins_AD // BASE = new base, RA = framesize, RD = nargs+1
+ | lea RB, [NARGS:RD*8+FRAME_VARG]
+ | lea RD, [BASE+NARGS:RD*8]
+ | mov LFUNC:KBASE, [BASE-8]
+ | mov [RD-4], RB // Store delta + FRAME_VARG.
+ | mov [RD-8], LFUNC:KBASE // Store copy of LFUNC.
+ | mov L:RB, SAVE_L
+ | lea RA, [RD+RA*8]
+ | cmp RA, L:RB->maxstack
+ | ja ->vm_growstack_v // Need to grow stack.
+ | mov RA, BASE
+ | mov BASE, RD
+ | movzx RB, byte [PC-4+PC2PROTO(numparams)]
+ | test RB, RB
+ | jz >2
+ |1: // Copy fixarg slots up to new frame.
+ | add RA, 8
+ | cmp RA, BASE
+ | jnb >3 // Less args than parameters?
+ | mov KBASE, [RA-8]
+ | mov [RD], KBASE
+ | mov KBASE, [RA-4]
+ | mov [RD+4], KBASE
+ | add RD, 8
+ | mov dword [RA-4], LJ_TNIL // Clear old fixarg slot (help the GC).
+ | sub RB, 1
+ | jnz <1
+ |2:
+ if (op == BC_JFUNCV) {
+ | movzx RD, PC_RD
+ | jmp =>BC_JLOOP
+ } else {
+ | mov KBASE, [PC-4+PC2PROTO(k)]
+ | ins_next
+ }
+ |
+ |3: // Clear missing parameters.
+ | mov dword [RD+4], LJ_TNIL
+ | add RD, 8
+ | sub RB, 1
+ | jnz <3
+ | jmp <2
+ break;
+
+ case BC_FUNCC:
+ case BC_FUNCCW:
+ | ins_AD // BASE = new base, RA = ins RA|RD (unused), RD = nargs+1
+ | mov CFUNC:RB, [BASE-8]
+ | mov KBASEa, CFUNC:RB->f
+ | mov L:RB, SAVE_L
+ | lea RD, [BASE+NARGS:RD*8-8]
+ | mov L:RB->base, BASE
+ | lea RA, [RD+8*LUA_MINSTACK]
+ | cmp RA, L:RB->maxstack
+ | mov L:RB->top, RD
+ if (op == BC_FUNCC) {
+ |.if X64
+ | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
+ |.else
+ | mov ARG1, L:RB
+ |.endif
+ } else {
+ |.if X64
+ | mov CARG2, KBASEa
+ | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
+ |.else
+ | mov ARG2, KBASEa
+ | mov ARG1, L:RB
+ |.endif
+ }
+ | ja ->vm_growstack_c // Need to grow stack.
+ | set_vmstate C
+ if (op == BC_FUNCC) {
+ | call KBASEa // (lua_State *L)
+ } else {
+ | // (lua_State *L, lua_CFunction f)
+ | call aword [DISPATCH+DISPATCH_GL(wrapf)]
+ }
+ | set_vmstate INTERP
+ | // nresults returned in eax (RD).
+ | mov BASE, L:RB->base
+ | lea RA, [BASE+RD*8]
+ | neg RA
+ | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
+ | mov PC, [BASE-4] // Fetch PC of caller.
+ | jmp ->vm_returnc
+ break;
+
/* ---------------------------------------------------------------------- */
default:
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 6fd8eb00..f50d16b8 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,575 +12,557 @@
#define DASM_SECTION_CODE_OP 0
#define DASM_SECTION_CODE_SUB 1
#define DASM_MAXSECTION 2
-static const unsigned char build_actionlist[15199] = {
- 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233,
- 139,108,36,48,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15,
- 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
- 255,36,171,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,
- 233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137,106,
- 252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139,108,
- 36,48,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15,132,
- 244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137,56,
- 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
- 244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193,232,
- 16,252,255,36,171,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,
- 252,233,244,2,248,14,137,113,252,252,139,189,233,139,108,36,48,141,68,193,
- 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,124,36,4,137,44,
- 36,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233,237,139,149,
- 233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,252,
- 247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252,252,139,189,233,
- 139,108,36,48,141,68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,
- 233,137,44,36,15,135,244,15,199,131,233,237,252,255,215,199,131,233,237,139,
- 149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,
- 252,247,198,237,15,132,244,17,248,18,252,247,198,237,15,132,244,20,199,131,
- 233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,1,
- 139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
- 1,15,133,244,1,248,2,139,108,36,48,137,181,233,248,3,139,68,36,20,139,76,
- 36,56,248,4,255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,
- 21,139,76,36,52,137,141,233,49,192,248,22,131,196,28,91,94,95,93,195,248,
+static const unsigned char build_actionlist[15137] = {
+ 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
+ 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
+ 20,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,199,
+ 131,233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,
+ 1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
+ 1,15,133,244,1,248,2,255,139,108,36,48,137,181,233,248,3,139,68,36,20,139,
+ 76,36,56,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,
+ 15,139,76,36,52,137,141,233,49,192,248,16,131,196,28,91,94,95,93,195,248,
6,15,130,244,253,59,149,233,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,255,137,149,233,137,68,36,20,137,202,137,252,233,232,251,1,0,
- 139,149,233,252,233,244,3,248,23,137,208,137,204,248,24,139,108,36,48,139,
- 173,233,199,133,233,237,252,233,244,22,248,25,129,225,239,137,204,248,26,
- 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,255,
- 252,233,244,16,248,20,252,247,198,237,15,132,244,27,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,137,202,248,11,141,68,194,252,248,15,182,
- 142,233,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,255,139,133,233,139,105,252,248,139,113,252,
- 252,41,200,193,232,3,131,192,1,252,255,165,233,248,28,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,29,255,85,87,86,83,131,252,236,28,190,237,252,233,244,
- 247,248,30,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,
- 31,252,255,165,233,248,32,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,27,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,33,15,182,78,252,255,131,252,237,16,141,
- 12,202,41,252,233,15,132,244,34,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,35,248,36,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,37,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,38,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,34,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,39,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,40,15,182,70,252,254,255,141,68,36,16,
- 252,233,244,247,248,41,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,42,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,43,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,44,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,45,131,198,4,129,120,253,4,239,15,130,
- 244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,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,48,255,141,4,199,252,233,
- 244,247,248,49,141,4,199,141,44,252,234,149,252,233,244,248,248,50,141,4,
- 194,137,197,252,233,244,248,248,51,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,42,248,44,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,31,255,252,255,
- 165,233,248,52,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,44,248,31,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,53,252,255,165,233,248,54,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,
- 55,129,252,248,239,15,130,244,56,255,139,105,4,129,252,253,239,15,131,244,
- 56,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,
- 57,248,58,129,252,248,239,15,130,244,56,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,59,248,60,129,
- 252,248,239,15,130,244,56,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,59,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,59,248,5,139,105,4,129,252,253,239,15,132,244,59,255,139,1,139,
- 76,36,16,137,105,252,252,137,65,252,248,252,233,244,59,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,61,129,252,248,239,15,130,244,56,129,
- 121,253,4,239,15,133,244,56,255,139,41,131,189,233,0,15,133,244,56,129,121,
- 253,12,239,15,133,244,56,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,59,248,62,255,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,133,244,56,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,59,
- 248,63,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,56,255,
- 252,242,15,16,1,252,233,244,64,255,221,1,252,233,244,65,255,248,66,129,252,
- 248,239,15,130,244,56,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,59,248,3,129,121,253,4,239,15,135,
- 244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,15,130,244,
- 247,232,244,67,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,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129,
- 121,253,4,239,15,133,244,56,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,69,184,237,252,233,244,70,248,2,199,65,12,237,252,233,244,1,248,
- 3,199,65,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56,
- 129,121,253,4,239,255,15,133,244,56,139,133,233,199,65,252,252,237,137,65,
- 252,248,199,65,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,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,73,139,40,
- 139,64,4,137,41,137,65,4,252,233,244,69,248,2,131,189,233,0,15,132,244,73,
- 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,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15,
- 130,244,56,129,121,253,4,239,15,133,244,56,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,70,248,75,129,252,248,239,15,130,244,56,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,31,252,255,
- 165,233,248,3,131,198,1,252,233,244,2,248,76,255,129,252,248,239,15,130,244,
- 56,129,121,253,12,239,15,133,244,56,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,56,248,77,129,252,
- 248,239,15,130,244,56,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,28,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,56,248,78,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,28,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,79,139,108,36,48,137,113,252,
- 252,252,247,133,233,237,15,132,244,56,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,65,
- 221,89,252,248,252,233,244,59,248,80,129,252,248,239,15,130,244,56,129,121,
- 253,4,239,15,135,244,56,252,242,15,16,1,102,15,252,239,201,102,15,118,201,
- 102,15,115,209,1,15,84,193,248,64,252,242,15,17,65,252,248,255,248,80,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,225,248,
- 64,248,65,221,89,252,248,255,248,59,184,237,248,70,137,68,36,20,248,57,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,81,129,252,248,239,15,130,244,56,129,121,253,4,
- 239,15,135,244,56,252,242,15,81,1,252,233,244,64,248,82,129,252,248,239,15,
- 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,83,252,
- 233,244,64,248,84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
- 135,244,56,252,242,15,16,1,232,244,85,252,233,244,64,255,248,81,129,252,248,
- 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,250,252,233,
- 244,65,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,221,1,232,244,83,252,233,244,65,248,84,255,129,252,248,239,15,130,244,
- 56,129,121,253,4,239,15,135,244,56,221,1,232,244,85,252,233,244,65,255,248,
- 86,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252,
- 237,221,1,217,252,241,252,233,244,65,248,87,129,252,248,239,15,130,244,56,
- 129,121,253,4,239,15,135,244,56,217,252,236,221,1,217,252,241,252,233,244,
- 65,248,88,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,221,1,232,244,89,252,233,244,65,248,90,129,252,248,239,15,130,244,56,129,
- 121,253,4,239,15,135,244,56,221,1,217,252,254,252,233,244,65,248,91,129,252,
- 248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,255,
- 252,233,244,65,248,92,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
- 135,244,56,221,1,217,252,242,221,216,252,233,244,65,248,93,129,252,248,239,
- 15,130,244,56,255,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,
- 232,222,225,217,252,250,217,252,243,252,233,244,65,248,94,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,232,
- 222,225,217,252,250,217,201,217,252,243,252,233,244,65,248,95,129,252,248,
- 239,15,130,244,56,129,121,253,4,239,15,135,244,56,255,221,1,217,232,217,252,
- 243,252,233,244,65,255,248,96,129,252,248,239,15,130,244,56,129,121,253,4,
- 239,15,135,244,56,252,242,15,16,1,252,242,15,17,4,36,255,248,96,129,252,248,
- 239,15,130,244,56,129,121,253,4,239,15,135,244,56,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,65,255,
- 248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,
- 242,15,16,1,252,242,15,17,4,36,255,248,97,129,252,248,239,15,130,244,56,129,
- 121,253,4,239,15,135,244,56,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,65,255,248,98,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,
- 17,4,36,255,248,98,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
- 244,56,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,65,248,99,255,248,100,129,252,248,239,15,130,244,
- 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,89,133,233,
- 252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,121,253,4,239,
- 15,135,244,56,221,1,220,141,233,252,233,244,65,255,248,101,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,
- 56,221,1,221,65,8,217,252,243,252,233,244,65,248,102,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,255,15,135,244,
- 56,221,65,8,221,1,217,252,253,221,217,252,233,244,65,248,103,129,252,248,
- 239,15,130,244,56,139,105,4,129,252,253,239,15,135,244,56,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,70,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,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,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,105,252,242,15,92,224,248,1,252,242,
- 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,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,70,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,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223,
- 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15,
- 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,
- 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248,
- 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,
- 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248,
- 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,
- 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252,
- 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131,
- 197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57,197,15,131,244,65,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,110,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,
- 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252,
- 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,110,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57,
- 197,15,131,244,65,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,
- 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,
- 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233,
- 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133,
- 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42,
- 197,252,233,244,64,255,137,108,36,16,219,68,36,16,252,233,244,65,255,248,
- 113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,239,
- 15,133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252,
- 255,0,0,0,15,135,244,56,137,68,36,20,255,221,1,219,92,36,20,129,124,36,20,
- 252,255,0,0,0,15,135,244,56,255,199,68,36,8,1,0,0,0,141,68,36,20,137,76,36,
- 16,248,114,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,59,248,115,139,171,233,59,171,233,15,130,244,247,232,244,67,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,56,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,56,129,121,253,12,239,15,135,244,56,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,116,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,
- 232,252,233,244,114,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,116,49,192,252,233,244,4,248,117,
- 129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,244,
- 67,248,1,255,137,76,36,16,129,121,253,4,239,15,133,244,56,129,121,253,12,
- 239,15,135,244,56,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,116,131,189,233,1,15,130,244,116,15,133,
- 244,118,57,131,233,15,130,244,118,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,114,
- 248,119,129,252,248,239,255,15,130,244,56,139,171,233,59,171,233,15,130,244,
- 247,232,244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,
- 139,133,233,133,192,15,132,244,116,57,131,233,15,130,244,120,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,114,248,
- 121,129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,
- 244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133,
- 233,57,131,233,255,15,130,244,120,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,114,248,122,129,252,
- 248,239,15,130,244,56,255,139,171,233,59,171,233,15,130,244,247,232,244,67,
- 248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133,233,57,
- 131,233,15,130,244,120,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,114,248,123,129,252,248,
- 239,15,130,244,56,129,121,253,4,239,15,133,244,56,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,
- 64,255,137,4,36,219,4,36,252,233,244,65,255,248,124,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,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,64,255,248,124,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,
- 219,4,36,252,233,244,65,255,248,125,129,252,248,239,15,130,244,56,129,121,
- 253,4,239,15,135,244,56,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,125,129,252,248,239,
- 15,130,244,56,129,121,253,4,239,15,135,244,56,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,126,129,120,253,4,239,15,135,244,
- 127,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,128,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,
+ 192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,20,202,252,
+ 233,244,5,248,8,137,149,233,137,68,36,20,137,202,137,252,233,232,251,1,0,
+ 139,149,233,252,233,244,3,248,17,137,208,137,204,248,18,139,108,36,48,139,
+ 173,233,199,133,233,237,252,233,244,16,248,19,129,225,239,137,204,248,20,
+ 139,108,36,48,185,252,248,252,255,252,255,252,255,184,237,255,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,12,248,21,186,237,252,233,244,248,248,22,131,232,8,252,233,244,
+ 247,248,23,141,68,194,252,248,248,1,15,182,142,233,131,198,4,137,149,233,
+ 137,133,233,255,137,116,36,24,137,202,248,2,137,252,233,232,251,1,0,139,149,
+ 233,139,133,233,139,106,252,248,139,114,252,252,41,208,193,232,3,131,192,
+ 1,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,
+ 24,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,13,255,252,233,244,14,248,25,85,87,86,83,131,252,236,
+ 28,190,237,252,233,244,247,248,26,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,248,27,255,139,105,252,248,
+ 129,121,253,252,252,239,15,133,244,28,248,29,137,202,137,114,252,252,139,
+ 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,30,
+ 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,15,137,193,190,237,252,233,244,2,248,11,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,255,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,
+ 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,237,252,
+ 233,244,29,248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,
+ 252,235,15,133,244,247,255,141,139,233,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,237,252,233,244,29,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,255,131,252,248,1,15,135,
+ 244,42,248,4,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,255,137,116,36,24,232,
+ 251,1,4,252,233,244,3,248,46,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,255,184,237,252,233,244,27,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,51,141,76,202,8,248,28,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,52,137,202,137,114,252,
+ 252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
+ 248,53,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,54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,
+ 239,15,131,244,55,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137,
+ 106,252,248,131,232,2,15,132,244,248,137,209,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,248,2,139,68,36,
+ 20,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237,
+ 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,
+ 106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,
+ 252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,139,
+ 114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,
+ 133,252,237,199,66,252,252,237,15,132,244,58,139,131,233,199,66,252,252,237,
+ 137,106,252,248,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,58,248,5,139,105,4,129,252,253,239,15,132,244,
+ 58,255,139,1,137,106,252,252,137,66,252,248,252,233,244,58,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,60,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,133,244,55,255,139,42,131,189,233,0,15,133,244,55,129,
+ 122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,
+ 252,252,237,137,106,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,58,248,61,255,129,
+ 252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,2,139,108,36,
+ 48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,1,9,137,252,
+ 234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252,252,252,233,
+ 244,58,248,62,129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,
+ 55,255,252,242,15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,
+ 129,252,248,239,15,130,244,55,139,114,252,252,129,122,253,4,239,15,133,244,
+ 249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,
+ 122,253,4,239,15,135,244,55,131,187,233,0,15,133,244,55,139,171,233,59,171,
+ 233,255,15,130,244,247,232,244,66,248,1,139,108,36,48,137,149,233,137,116,
+ 36,24,137,252,233,232,251,1,10,139,149,233,252,233,244,2,248,67,129,252,248,
+ 239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15,133,244,55,139,
+ 108,36,48,137,149,233,255,139,114,252,252,139,2,137,68,36,4,137,44,36,131,
+ 194,8,137,84,36,8,137,116,36,24,232,251,1,11,139,149,233,133,192,15,132,244,
+ 249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,
+ 20,137,42,137,66,4,248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,
+ 233,244,1,248,3,199,66,252,252,237,252,233,244,58,248,70,129,252,248,239,
+ 15,130,244,55,139,106,252,248,129,122,253,4,239,255,15,133,244,55,139,133,
+ 233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,
+ 252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 133,244,55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,252,242,15,
+ 16,66,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,66,252,248,255,221,66,8,217,232,222,193,
+ 219,20,36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,
+ 224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,137,
+ 42,137,66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,233,
+ 137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,184,
+ 237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,106,252,248,
+ 129,122,253,4,239,15,133,244,55,139,133,233,139,114,252,252,199,66,252,252,
+ 237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,
+ 8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,74,
+ 8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,
+ 238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239,
+ 15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,
+ 106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252,248,
+ 239,15,130,244,55,139,42,139,114,252,252,137,116,36,24,137,44,36,129,122,
+ 253,4,239,15,133,244,55,131,189,233,0,15,133,244,55,128,189,233,235,15,135,
+ 244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,1,141,
+ 116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,48,137,149,
+ 233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206,15,132,244,249,
+ 248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,
+ 206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,
+ 24,199,131,233,237,255,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,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,255,15,132,244,13,252,
+ 233,244,14,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,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,106,252,248,139,173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,
+ 233,0,15,133,244,55,255,128,189,233,235,15,135,244,55,139,141,233,15,132,
+ 244,247,59,141,233,15,132,244,55,248,1,141,116,193,252,248,59,181,233,15,
+ 135,244,55,137,181,233,139,108,36,48,137,149,233,137,149,233,141,108,194,
+ 252,240,41,252,245,57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,
+ 252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,
+ 36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,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,141,4,50,193,252,
+ 238,3,59,133,233,15,135,244,255,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,13,252,233,244,14,
+ 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,78,139,108,
+ 36,48,252,247,133,233,237,15,132,244,55,255,137,149,233,141,68,194,252,248,
+ 137,133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,255,248,
+ 64,139,114,252,252,221,90,252,248,252,233,244,58,248,79,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,102,15,252,239,
+ 201,102,15,118,201,102,15,115,209,1,15,84,193,248,63,139,114,252,252,252,
+ 242,15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,253,
+ 4,239,15,135,244,55,221,2,217,225,248,63,248,64,139,114,252,252,221,90,252,
+ 248,255,248,58,184,237,248,69,137,68,36,20,248,56,252,247,198,237,15,133,
+ 244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,252,247,209,
+ 141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
+ 248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,252,248,252,
+ 255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,244,63,248,81,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
+ 16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,233,244,63,255,
+ 248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
+ 2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,244,55,129,122,
+ 253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,83,255,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,84,252,
+ 233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,248,86,129,252,248,
+ 239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,236,221,2,217,252,
+ 241,252,233,244,64,248,87,129,252,248,239,255,15,130,244,55,129,122,253,4,
+ 239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,89,129,252,248,239,
+ 15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,254,252,233,244,
+ 64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,233,244,64,
+ 248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,135,244,55,
+ 221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,
+ 64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
+ 2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,
+ 244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,129,252,248,239,
+ 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15,
+ 17,4,36,255,248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
+ 244,55,221,2,221,28,36,255,137,213,232,251,1,14,137,252,234,252,233,244,64,
+ 255,248,96,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
+ 252,242,15,16,2,252,242,15,17,4,36,255,248,96,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,221,2,221,28,36,255,137,213,232,251,1,
+ 15,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15,17,4,36,255,248,97,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,221,28,
+ 36,255,137,213,232,251,1,16,137,252,234,252,233,244,64,248,98,255,248,99,
+ 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
+ 16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,
+ 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,
+ 248,220,141,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,
+ 66,8,217,252,243,252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,
+ 221,2,217,252,253,221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,
+ 55,139,106,4,129,252,253,239,15,135,244,55,139,114,252,252,139,2,137,106,
+ 252,252,137,66,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,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,
+ 63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
+ 244,69,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
+ 248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,102,15,112,201,81,
+ 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,
+ 90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,
+ 233,244,1,255,248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,252,242,15,16,2,255,248,103,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,221,2,255,139,106,4,139,114,252,252,209,229,129,
+ 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,104,252,242,
+ 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
+ 244,104,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
+ 4,49,232,15,136,244,249,248,2,184,237,252,233,244,69,248,3,129,252,245,0,
+ 0,0,128,137,106,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,105,129,252,248,239,15,130,244,55,129,
+ 122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,66,8,221,
+ 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,64,255,248,
+ 106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
+ 253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,232,244,107,252,
+ 233,244,63,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,232,244,107,252,
+ 233,244,64,255,248,108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,
+ 253,252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,
+ 242,15,93,193,131,197,1,252,233,244,1,255,248,108,129,252,248,239,15,130,
+ 244,55,129,122,253,4,239,15,135,244,55,221,2,189,2,0,0,0,248,1,57,197,15,
+ 131,244,64,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234,
+ 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,109,129,252,248,239,15,
+ 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,
+ 1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,
+ 242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,1,252,233,244,1,255,
+ 248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
+ 2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,
+ 15,135,244,251,221,68,252,234,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,55,255,248,110,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,133,244,55,139,42,255,252,242,15,42,133,233,252,233,
+ 244,63,255,219,133,233,252,233,244,64,255,248,111,129,252,248,239,15,133,
+ 244,55,129,122,253,4,239,15,133,244,55,139,42,139,114,252,252,131,189,233,
+ 1,15,130,244,72,15,182,173,233,255,252,242,15,42,197,252,233,244,63,255,137,
+ 108,36,16,219,68,36,16,252,233,244,64,255,248,112,139,171,233,59,171,233,
+ 15,130,244,247,232,244,66,248,1,129,252,248,239,15,133,244,55,129,122,253,
+ 4,239,15,135,244,55,255,252,242,15,45,2,61,252,255,0,0,0,15,135,244,55,137,
+ 68,36,20,255,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,55,
+ 255,199,68,36,8,1,0,0,0,141,68,36,20,248,113,139,108,36,48,137,149,233,137,
+ 68,36,4,137,44,36,137,116,36,24,232,251,1,17,139,149,233,139,114,252,252,
+ 199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,139,171,233,59,171,
+ 233,15,130,244,247,232,244,66,248,1,199,68,36,20,252,255,252,255,252,255,
+ 252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,255,
+ 252,242,15,45,106,16,137,108,36,20,255,221,66,16,219,92,36,20,255,248,1,129,
+ 122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,
+ 36,12,139,173,233,255,252,242,15,45,74,8,255,221,66,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,115,141,172,253,13,233,131,192,1,248,
+ 4,137,68,36,8,137,232,252,233,244,113,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,115,49,192,252,
+ 233,244,4,248,116,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,
+ 130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,55,129,122,
+ 253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,66,8,219,92,
+ 36,20,139,68,36,20,255,133,192,15,142,244,115,131,189,233,1,15,130,244,115,
+ 15,133,244,117,57,131,233,15,130,244,117,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,113,248,118,129,252,248,239,255,15,130,244,55,139,171,233,59,171,233,
+ 15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,
+ 133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,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,113,248,120,
+ 129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,232,244,
+ 66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,255,
+ 15,130,244,119,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,113,248,121,129,252,248,239,15,130,
+ 244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,
+ 253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119,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,113,248,122,129,252,248,239,15,130,244,55,129,122,253,4,
+ 239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242,15,
+ 42,192,252,233,244,63,255,137,4,36,219,4,36,252,233,244,64,255,248,123,129,
+ 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
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,56,129,121,253,4,239,15,135,244,
- 56,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,129,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,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,129,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,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,130,129,
- 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,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,56,129,121,253,4,239,15,135,244,
- 56,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,131,255,248,132,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,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,132,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,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,131,252,242,15,42,197,
- 252,233,244,64,248,126,252,242,15,42,197,139,84,36,16,252,233,244,64,255,
- 248,131,248,126,137,44,36,219,4,36,252,233,244,65,255,248,127,255,139,68,
- 36,20,252,233,244,56,255,248,133,129,252,248,239,15,130,244,56,129,121,253,
- 4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,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,56,129,121,253,4,239,15,135,244,56,129,121,253,
- 12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,
+ 197,252,242,15,42,197,252,233,244,63,255,248,123,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,
+ 16,221,28,36,219,4,36,252,233,244,64,255,248,124,129,252,248,239,15,130,244,
+ 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,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,124,129,252,
+ 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,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,194,252,
+ 240,248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255,252,
+ 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,
+ 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,
+ 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,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,55,129,122,253,4,239,15,135,244,55,221,
+ 2,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,193,9,205,255,221,0,216,68,36,16,221,28,
+ 36,11,44,36,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,252,242,15,16,2,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,55,
+ 129,122,253,4,239,15,135,244,55,221,2,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,193,
+ 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,129,129,252,248,
+ 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,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,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
+ 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252,
+ 233,244,125,255,248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
+ 135,244,55,252,242,15,16,2,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,55,
+ 129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,
+ 221,28,36,139,44,36,255,252,247,213,255,248,125,252,242,15,42,197,252,233,
+ 244,63,255,248,125,137,44,36,219,4,36,252,233,244,64,255,248,126,139,68,36,
+ 20,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,
+ 239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,
+ 15,16,74,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,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
+ 15,135,244,55,221,2,221,66,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,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,
+ 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
+ 242,15,16,74,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,55,129,122,253,4,239,15,135,244,55,129,122,253,
+ 12,239,15,135,244,55,221,2,221,66,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,131,255,248,134,129,252,248,239,15,130,244,56,129,
- 121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,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,56,129,121,253,4,239,15,135,244,56,129,121,
- 253,12,239,15,135,244,56,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,131,255,248,135,129,252,248,239,15,130,244,56,
- 129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,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,237,137,193,252,233,244,125,255,248,133,129,252,248,239,15,130,244,55,
+ 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
+ 15,16,2,252,242,15,16,74,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,56,129,121,253,4,239,15,135,244,56,
- 129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,
+ 255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
+ 129,122,253,12,239,15,135,244,55,221,2,221,66,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,131,255,248,136,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,
- 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
+ 255,211,252,253,137,193,252,233,244,125,255,248,134,129,252,248,239,15,130,
+ 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,
+ 242,15,16,2,252,242,15,16,74,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,136,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,
+ 201,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,129,122,253,12,239,15,135,244,55,221,2,221,66,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,131,255,248,137,129,252,248,239,15,130,
- 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,
- 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
+ 36,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248,239,15,130,
+ 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,
+ 242,15,16,2,252,242,15,16,74,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,137,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
- 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,
+ 201,255,248,135,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
+ 55,129,122,253,12,239,15,135,244,55,221,2,221,66,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,131,248,118,184,237,252,233,244,56,248,
- 120,184,237,248,56,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,31,252,255,165,233,248,3,139,141,
- 233,139,84,36,16,1,202,252,233,244,70,248,5,186,237,137,252,233,232,251,1,
- 0,252,233,244,1,248,67,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,138,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,139,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,
- 140,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,141,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,142,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,143,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,17,125,
- 216,252,242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,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,144,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,83,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,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,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,85,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,146,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
+ 36,255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,
+ 119,184,237,248,55,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,
+ 141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,
+ 244,251,137,44,36,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,
+ 255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,
+ 15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,
+ 255,36,171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,
+ 252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,
+ 41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,
+ 252,233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,
+ 233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,149,233,
+ 139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,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,106,252,248,139,173,233,15,
+ 182,133,233,141,4,194,139,108,36,48,137,149,233,137,133,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,141,68,194,252,248,139,108,36,48,137,149,233,137,133,233,137,252,242,
+ 141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,133,233,
+ 41,208,193,232,3,131,192,1,139,106,252,248,139,181,233,139,14,15,182,252,
+ 233,15,182,205,131,198,4,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,17,125,216,252,
+ 242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,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,
+ 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,82,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,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,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,105,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,147,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,148,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,15,86,226,184,
- 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102,
- 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,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,89,217,252,234,222,201,248,149,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,150,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,108,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,1,169,1,0,0,
- 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
- 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233,
- 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,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,150,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,108,255,248,151,252,242,15,45,193,252,242,15,42,208,102,
- 15,46,202,15,133,244,254,15,138,244,255,248,152,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,3,248,4,252,
- 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252,
- 240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252,
- 247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63,
- 102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242,
- 15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0,
- 224,252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68,
- 36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68,
- 36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217,
- 252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68,
- 36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,
- 46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15,
- 118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208,
- 102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,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,153,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,83,252,233,244,253,248,1,232,244,85,252,233,244,253,248,2,131,
- 252,248,3,15,132,244,247,15,135,244,248,232,244,105,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,89,15,132,244,149,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,83,15,132,
- 244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,
- 131,252,248,5,15,130,244,89,15,132,244,149,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,154,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,148,252,233,244,7,248,1,90,232,244,108,
- 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,233,244,7,248,
- 2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247,
- 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,252,242,15,93,193,252,233,244,7,248,1,252,242,
+ 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,84,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,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,104,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,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,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,15,86,226,184,0,0,252,240,
+ 63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,
+ 242,15,92,224,15,40,197,252,242,15,89,204,252,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,88,
+ 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,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,107,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,1,169,1,0,0,0,15,133,
+ 244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,
+ 248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,
+ 4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,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,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,107,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,3,248,4,252,242,
+ 15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252,240,
+ 63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252,247,
+ 216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63,102,
+ 15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242,15,
+ 17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0,224,
+ 252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68,36,
+ 8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68,36,
+ 12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,
+ 240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68,36,4,
+ 195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194,
+ 15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15,118,210,
+ 102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208,102,15,112,
+ 210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,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,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,82,252,233,244,253,248,1,232,244,84,252,233,244,253,248,2,131,252,248,
+ 3,15,132,244,247,15,135,244,248,232,244,104,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,88,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,82,15,132,244,84,
+ 131,252,248,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252,
+ 248,5,15,130,244,88,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,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,146,252,233,244,7,248,1,90,232,244,107,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,233,244,7,248,2,255,
+ 131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247,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,252,242,15,93,193,252,233,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,148,15,132,244,108,131,252,
+ 1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,15,132,244,107,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,155,156,90,137,209,129,252,242,0,0,32,0,
+ 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,129,124,253,202,
- 4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252,242,15,16,
- 4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223,
- 252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131,
- 244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,
- 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,
- 198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,
- 255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,
- 244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,
- 70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180,
- 253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15,
- 131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,
- 244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,
- 2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,252,247,208,131,198,
- 4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4,
- 129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4,
- 202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,
+ 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,41,255,252,242,
+ 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,
+ 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,
+ 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,
+ 131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,
+ 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,
+ 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
+ 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
+ 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,
+ 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,
+ 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,
+ 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131,
+ 198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,
+ 4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,
+ 4,202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,
108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,
255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,
134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
171,255,139,108,194,4,139,4,194,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,255,49,252,237,129,124,253,
194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
- 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,50,255,252,
+ 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,48,255,252,
242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,
252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,
4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,
252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,
15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,
- 15,133,244,52,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,
+ 15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,
234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1,
- 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48,
+ 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,
255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,
- 255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242,
+ 255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,
15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,
- 15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252,
+ 15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,
234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,
234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,
199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,
@@ -594,10 +576,10 @@ static const unsigned char build_actionlist[15199] = {
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,156,232,244,148,255,252,233,244,156,255,232,244,
- 108,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,
- 8,248,35,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,44,15,182,110,252,255,15,182,78,252,253,139,68,
+ 252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,154,255,232,244,
+ 107,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,15,182,204,15,182,
232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,
202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
@@ -619,96 +601,99 @@ static const unsigned char build_actionlist[15199] = {
4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,
233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252,
233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,
- 233,139,141,233,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,
- 233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
- 171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,
- 149,233,141,20,202,137,252,233,232,251,1,25,139,149,233,248,1,139,6,15,182,
- 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,
- 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,
- 233,137,116,36,24,232,251,1,26,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,255,137,197,37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,132,244,
- 249,248,2,137,108,36,8,139,108,36,48,137,68,36,4,137,116,36,24,139,131,233,
- 137,44,36,59,131,233,137,149,233,15,131,244,251,248,1,232,251,1,27,139,149,
+ 233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,
+ 248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48,
+ 131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,
+ 25,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+ 255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76,
+ 36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,26,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,184,1,8,0,0,252,233,244,2,248,
- 5,137,252,233,232,251,1,28,252,233,244,1,255,252,247,208,139,108,36,48,139,
- 139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,
- 135,137,252,233,232,251,1,29,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,157,
- 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158,255,
- 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,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,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,
- 253,4,239,15,132,244,248,248,1,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,38,15,182,78,
- 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,38,139,4,
- 194,252,233,244,157,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,
- 124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157,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,171,248,3,15,182,70,252,253,185,237,252,233,
- 244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,
- 132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,36,255,15,182,252,
- 236,15,182,192,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,59,
- 133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,
- 248,1,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,37,255,15,182,252,236,15,182,192,129,
- 124,253,252,234,4,239,15,133,244,41,139,44,252,234,129,124,253,194,4,239,
- 15,135,244,251,255,15,133,244,41,59,133,233,15,131,244,41,193,224,3,3,133,
+ 232,131,198,4,193,232,16,252,255,36,171,255,137,197,37,252,255,7,0,0,193,
+ 252,237,11,61,252,255,7,0,0,15,132,244,249,248,2,137,108,36,8,139,108,36,
+ 48,137,68,36,4,137,116,36,24,139,131,233,137,44,36,59,131,233,137,149,233,
+ 15,131,244,251,248,1,232,251,1,27,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,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,28,252,
+ 233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,
+ 233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,29,
+ 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,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,
+ 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,
+ 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,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,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,
+ 171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,
+ 15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,
+ 133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,
+ 4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,
+ 233,129,120,253,4,239,15,132,244,248,248,1,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,
+ 35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,
+ 139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,
+ 133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,
+ 248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,
+ 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,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,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,
+ 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,
+ 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,
+ 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,
+ 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,
+ 68,36,20,237,137,108,36,12,141,68,36,16,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,30,139,149,233,139,108,
+ 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,
+ 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,
+ 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
253,248,2,139,108,202,4,139,12,202,137,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,41,15,182,78,252,253,252,233,
- 244,1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,158,
- 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,39,139,44,252,234,248,158,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,182,232,131,198,4,193,232,16,
- 252,255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233,
- 252,246,129,233,235,15,132,244,39,139,76,36,16,252,233,244,2,248,5,139,137,
- 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,
- 233,235,15,132,244,39,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,
- 68,36,16,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,30,139,149,233,139,108,36,12,137,193,252,233,244,2,248,
- 7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15,
- 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252,
- 234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132,
- 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,
- 12,202,137,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,255,139,141,233,252,246,129,233,
- 235,15,132,244,40,15,182,78,252,253,252,233,244,1,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,137,124,
- 36,16,255,221,4,199,219,92,36,12,255,248,1,141,12,202,139,105,252,248,252,
- 246,133,233,235,15,133,244,253,248,2,139,68,36,20,255,252,242,15,45,252,248,
- 255,139,124,36,12,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,
- 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,
- 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,
- 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,
- 36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,
- 1,31,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
- 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,20,255,141,
- 76,202,8,139,105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,
- 233,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,
- 244,31,248,53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,
- 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,
- 4,137,111,4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,
- 3,137,209,128,189,233,1,15,135,244,251,248,4,139,68,36,20,252,255,165,233,
- 248,5,255,252,247,198,237,15,133,244,4,15,182,70,252,253,252,247,208,141,
- 20,194,139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,
+ 255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,
+ 244,1,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,137,124,36,16,255,221,4,199,219,92,36,12,255,248,
+ 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
+ 68,36,20,255,252,242,15,45,252,248,255,139,124,36,12,255,131,232,1,15,132,
+ 244,250,1,252,248,59,133,233,15,131,244,251,41,252,248,193,231,3,3,189,233,
+ 248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,
+ 133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,149,233,137,68,36,
+ 8,137,44,36,137,116,36,24,232,251,1,31,139,149,233,15,182,78,252,253,252,
+ 233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133,233,252,
+ 233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,139,44,202,15,133,244,
+ 51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
+ 205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,139,105,252,248,129,
+ 121,253,252,252,239,15,133,244,28,248,52,139,114,252,252,252,247,198,237,
+ 15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,244,249,
+ 248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232,1,15,
+ 133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,1,15,135,244,251,
+ 248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
+ 248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,252,247,209,141,
+ 12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,
244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,
141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,
65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,
- 65,252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,
+ 65,252,252,129,252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,
+ 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,
15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124,
36,16,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108,
252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,
@@ -721,7 +706,7 @@ static const unsigned char build_actionlist[15199] = {
215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,
41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,
141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,
- 36,20,252,247,198,237,15,133,244,253,255,248,17,137,215,131,232,1,15,132,
+ 36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,
244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,
199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,
57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,
@@ -729,10 +714,10 @@ static const unsigned char build_actionlist[15199] = {
247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,
15,182,232,131,198,4,193,232,16,252,255,36,171,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,141,255,141,12,202,255,
- 129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139,
- 105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16,
+ 139,244,14,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,139,255,141,12,202,255,
+ 129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,
+ 105,20,255,129,252,253,239,15,135,244,53,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,1,252,242,15,17,65,24,255,221,65,8,221,
1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,
@@ -743,32 +728,44 @@ static const unsigned char build_actionlist[15199] = {
252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,
105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,
36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,
- 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,254,0
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,190,233,139,
+ 108,36,48,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,
+ 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,
+ 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,
+ 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,
+ 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,
+ 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
+ 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
+ 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,
+ 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,
+ 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,
+ 137,124,36,4,137,44,36,255,15,135,244,21,199,131,233,237,255,252,255,215,
+ 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,
+ 3,141,233,139,114,252,252,252,233,244,12,255,254,0
};
enum {
- GLOB_gate_lf,
- GLOB_gate_lf_growstack,
- GLOB_gate_lv,
- GLOB_gate_lv_growstack,
- GLOB_gate_cwrap,
- GLOB_gate_c_growstack,
+ GLOB_vm_returnp,
+ GLOB_cont_dispatch,
GLOB_vm_returnc,
GLOB_BC_RET_Z,
GLOB_vm_return,
- GLOB_gate_c,
- GLOB_vm_returnp,
GLOB_vm_leave_cp,
GLOB_vm_leave_unw,
GLOB_vm_unwind_c,
GLOB_vm_unwind_c_eh,
GLOB_vm_unwind_ff,
GLOB_vm_unwind_ff_eh,
- GLOB_cont_dispatch,
+ GLOB_vm_growstack_c,
+ GLOB_vm_growstack_v,
+ GLOB_vm_growstack_f,
GLOB_vm_resume,
GLOB_vm_pcall,
GLOB_vm_call,
+ GLOB_vm_call_dispatch,
GLOB_vmeta_call,
+ GLOB_vm_call_dispatch_f,
GLOB_vm_cpcall,
GLOB_cont_cat,
GLOB_cont_ra,
@@ -790,6 +787,7 @@ enum {
GLOB_vmeta_unm,
GLOB_vmeta_arith_vv,
GLOB_vmeta_len,
+ GLOB_vmeta_call_ra,
GLOB_BC_CALLT_Z,
GLOB_vmeta_for,
GLOB_ff_assert,
@@ -863,12 +861,11 @@ enum {
GLOB_ff_table_getn,
GLOB_ff_bit_tobit,
GLOB_ff_bit_band,
- GLOB_fff_resbit_op,
+ GLOB_fff_resbit,
GLOB_fff_fallback_bit_op,
GLOB_ff_bit_bor,
GLOB_ff_bit_bxor,
GLOB_ff_bit_bswap,
- GLOB_fff_resbit,
GLOB_ff_bit_bnot,
GLOB_ff_bit_lshift,
GLOB_ff_bit_rshift,
@@ -899,28 +896,26 @@ enum {
GLOB__MAX
};
static const char *const globnames[] = {
- "gate_lf",
- "gate_lf_growstack",
- "gate_lv",
- "gate_lv_growstack",
- "gate_cwrap",
- "gate_c_growstack",
+ "vm_returnp",
+ "cont_dispatch",
"vm_returnc",
"BC_RET_Z",
"vm_return",
- "gate_c",
- "vm_returnp",
"vm_leave_cp",
"vm_leave_unw",
"vm_unwind_c@8",
"vm_unwind_c_eh",
"vm_unwind_ff@4",
"vm_unwind_ff_eh",
- "cont_dispatch",
+ "vm_growstack_c",
+ "vm_growstack_v",
+ "vm_growstack_f",
"vm_resume",
"vm_pcall",
"vm_call",
+ "vm_call_dispatch",
"vmeta_call",
+ "vm_call_dispatch_f",
"vm_cpcall",
"cont_cat",
"cont_ra",
@@ -942,6 +937,7 @@ static const char *const globnames[] = {
"vmeta_unm",
"vmeta_arith_vv",
"vmeta_len",
+ "vmeta_call_ra",
"BC_CALLT_Z",
"vmeta_for",
"ff_assert",
@@ -1015,12 +1011,11 @@ static const char *const globnames[] = {
"ff_table_getn",
"ff_bit_tobit",
"ff_bit_band",
- "fff_resbit_op",
+ "fff_resbit",
"fff_fallback_bit_op",
"ff_bit_bor",
"ff_bit_bxor",
"ff_bit_bswap",
- "fff_resbit",
"ff_bit_bnot",
"ff_bit_lshift",
"ff_bit_rshift",
@@ -1108,451 +1103,426 @@ static const char *const extnames[] = {
static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
{
dasm_put(Dst, 0);
- dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams));
-#if LJ_HASJIT
-#endif
- dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams));
- dasm_put(Dst, 156, LJ_TNIL, PC2PROTO(k));
-#if LJ_HASJIT
-#endif
- dasm_put(Dst, 191, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
- dasm_put(Dst, 287, Dt1(->top), FRAME_TYPE, 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));
- dasm_put(Dst, 369, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
- dasm_put(Dst, 474, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
- dasm_put(Dst, 558, Dt1(->top), 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, 651, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
- dasm_put(Dst, 741, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
- dasm_put(Dst, 861, FRAME_CP, 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, 964, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k), LJ_TSTR);
- dasm_put(Dst, 1153, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+ dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ dasm_put(Dst, 110, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
+ dasm_put(Dst, 196, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
+ dasm_put(Dst, 284, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 350, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
+ dasm_put(Dst, 497, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 588, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 760, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1189);
+ dasm_put(Dst, 856);
} else {
- dasm_put(Dst, 1202);
+ dasm_put(Dst, 869);
}
- dasm_put(Dst, 1215, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv));
- dasm_put(Dst, 1373, LJ_TTAB);
+ dasm_put(Dst, 882, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+ dasm_put(Dst, 1034, DISPATCH_GL(tmptv), LJ_TTAB);
if (sse) {
- dasm_put(Dst, 1189);
+ dasm_put(Dst, 856);
} else {
- dasm_put(Dst, 1202);
+ dasm_put(Dst, 869);
}
- dasm_put(Dst, 1393, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base));
- dasm_put(Dst, 1600, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
- dasm_put(Dst, 1711, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC);
- dasm_put(Dst, 1840, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*4, 1+1);
- dasm_put(Dst, 2000, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
+ dasm_put(Dst, 1057, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+ dasm_put(Dst, 1358, Dt1(->base), Dt1(->base), FRAME_CONT);
+ dasm_put(Dst, 1482, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+ dasm_put(Dst, 1663, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
if (cmov) {
- dasm_put(Dst, 2096);
+ dasm_put(Dst, 1765);
} else {
- dasm_put(Dst, 2100);
+ dasm_put(Dst, 1769);
}
- dasm_put(Dst, 2109, ((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, 2197, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
- dasm_put(Dst, 2252, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
- dasm_put(Dst, 2324, 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, 2389, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 1778, ((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, 1866, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
+ dasm_put(Dst, 1921, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
+ dasm_put(Dst, 1989, 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, 2058, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2480);
+ dasm_put(Dst, 2145);
} else {
- dasm_put(Dst, 2490);
+ dasm_put(Dst, 2155);
}
- dasm_put(Dst, 2497, 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, 2559, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
- dasm_put(Dst, 2649, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
- dasm_put(Dst, 2755, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 2162, 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, 2228, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
+ dasm_put(Dst, 2295, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2406, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 2810);
+ dasm_put(Dst, 2469);
} else {
- dasm_put(Dst, 2849);
+ dasm_put(Dst, 2508);
}
- dasm_put(Dst, 2867, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
- dasm_put(Dst, 2953, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
+ dasm_put(Dst, 2526, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+ dasm_put(Dst, 2607, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
if (sse) {
- dasm_put(Dst, 2983);
+ dasm_put(Dst, 2645);
} else {
- dasm_put(Dst, 2993);
+ dasm_put(Dst, 2655);
}
- dasm_put(Dst, 3000, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
- dasm_put(Dst, 3073, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD);
- dasm_put(Dst, 3171, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
- dasm_put(Dst, 3236, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top));
- dasm_put(Dst, 3340, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2);
- dasm_put(Dst, 3459, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base));
- dasm_put(Dst, 3539, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
- dasm_put(Dst, 3647, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE);
- dasm_put(Dst, 3743, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+ dasm_put(Dst, 2662, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+ dasm_put(Dst, 2726, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+ dasm_put(Dst, 2814, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 2915, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+ dasm_put(Dst, 3029, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+ dasm_put(Dst, 3124, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 3190, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+ dasm_put(Dst, 3291, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+ dasm_put(Dst, 3401, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
if (sse) {
- dasm_put(Dst, 3829, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3427, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 3890, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3496, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 3922, 1+1, FRAME_TYPE, LJ_TNIL);
+ dasm_put(Dst, 3532, 1+1, FRAME_TYPE, LJ_TNIL);
if (sse) {
- dasm_put(Dst, 4003, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4065, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3622, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3684, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4095, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4154, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3714, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3773, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4181, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4250, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4307, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4370, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4460);
+ dasm_put(Dst, 3800, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3869, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3926, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 3989, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4079);
if (sse) {
- dasm_put(Dst, 4472, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4091, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4503, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4122, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4528);
+ dasm_put(Dst, 4147);
if (sse) {
- dasm_put(Dst, 4550, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4161, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4581, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4192, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4606);
+ dasm_put(Dst, 4217);
if (sse) {
- dasm_put(Dst, 4628, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4231, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4659, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4262, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4684);
+ dasm_put(Dst, 4287);
if (sse) {
- dasm_put(Dst, 4708, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4303, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
} else {
- dasm_put(Dst, 4743, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4342, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
}
- dasm_put(Dst, 4772, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
- dasm_put(Dst, 4837, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4375, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4440, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4932);
+ dasm_put(Dst, 4539);
} else {
- dasm_put(Dst, 4938);
+ dasm_put(Dst, 4545);
}
- dasm_put(Dst, 4947);
+ dasm_put(Dst, 4554);
if (sse) {
- dasm_put(Dst, 4972);
+ dasm_put(Dst, 4579);
} else {
- dasm_put(Dst, 4978);
+ dasm_put(Dst, 4585);
}
- dasm_put(Dst, 4981, 1+2);
+ dasm_put(Dst, 4588, 1+2);
if (sse) {
- dasm_put(Dst, 4990);
+ dasm_put(Dst, 4597);
} else {
- dasm_put(Dst, 4998);
+ dasm_put(Dst, 4605);
}
- dasm_put(Dst, 471);
+ dasm_put(Dst, 4613);
if (sse) {
- dasm_put(Dst, 5006);
+ dasm_put(Dst, 4616);
} else {
- dasm_put(Dst, 5038);
+ dasm_put(Dst, 4648);
}
- dasm_put(Dst, 5057);
+ dasm_put(Dst, 4667);
if (sse) {
- dasm_put(Dst, 5073, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4683, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 5098, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4708, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 5120);
+ dasm_put(Dst, 4730);
if (sse) {
- dasm_put(Dst, 5138);
+ dasm_put(Dst, 4752);
} else {
- dasm_put(Dst, 5164);
+ dasm_put(Dst, 4778);
}
- dasm_put(Dst, 5181, 1+2);
+ dasm_put(Dst, 4795, 1+2);
if (sse) {
- dasm_put(Dst, 5221);
+ dasm_put(Dst, 4835);
} else {
- dasm_put(Dst, 5229);
+ dasm_put(Dst, 4843);
}
- dasm_put(Dst, 5239, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4853, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5291, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4905, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5338, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4952, 2+1, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 5379, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4993, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5450, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5064, 1+1, LJ_TISNUM, LJ_TISNUM);
if (cmov) {
- dasm_put(Dst, 5503);
+ dasm_put(Dst, 5117);
} else {
- dasm_put(Dst, 5511);
+ dasm_put(Dst, 5125);
}
- dasm_put(Dst, 5442);
+ dasm_put(Dst, 5056);
}
if (sse) {
- dasm_put(Dst, 5532, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5146, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5603, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5217, 1+1, LJ_TISNUM, LJ_TISNUM);
if (cmov) {
- dasm_put(Dst, 5656);
+ dasm_put(Dst, 5270);
} else {
- dasm_put(Dst, 5664);
+ dasm_put(Dst, 5278);
}
- dasm_put(Dst, 5442);
+ dasm_put(Dst, 5056);
}
if (!sse) {
- dasm_put(Dst, 5685);
+ dasm_put(Dst, 5299);
}
- dasm_put(Dst, 5694, 1+1, LJ_TSTR);
+ dasm_put(Dst, 5308, 1+1, LJ_TSTR);
if (sse) {
- dasm_put(Dst, 5716, Dt5(->len));
+ dasm_put(Dst, 5330, Dt5(->len));
} else {
- dasm_put(Dst, 5727, Dt5(->len));
+ dasm_put(Dst, 5341, Dt5(->len));
}
- dasm_put(Dst, 5735, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+ dasm_put(Dst, 5349, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
if (sse) {
- dasm_put(Dst, 5769);
+ dasm_put(Dst, 5387);
} else {
- dasm_put(Dst, 5779);
+ dasm_put(Dst, 5397);
}
- dasm_put(Dst, 5792, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5410, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 5827);
+ dasm_put(Dst, 5445);
} else {
- dasm_put(Dst, 5847);
+ dasm_put(Dst, 5465);
}
- dasm_put(Dst, 5867, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
- dasm_put(Dst, 2475);
+ dasm_put(Dst, 5485, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+ dasm_put(Dst, 2140);
if (sse) {
- dasm_put(Dst, 5978);
+ dasm_put(Dst, 5588);
} else {
- dasm_put(Dst, 5989);
+ dasm_put(Dst, 5599);
}
- dasm_put(Dst, 5997, LJ_TSTR, LJ_TISNUM, Dt5(->len));
+ dasm_put(Dst, 5607, LJ_TSTR, LJ_TISNUM, Dt5(->len));
if (sse) {
- dasm_put(Dst, 6027);
+ dasm_put(Dst, 5637);
} else {
- dasm_put(Dst, 6034);
+ dasm_put(Dst, 5644);
}
- dasm_put(Dst, 6046, sizeof(GCstr)-1);
- dasm_put(Dst, 6121, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 6180, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 5656, sizeof(GCstr)-1);
+ dasm_put(Dst, 5731, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 5790, LJ_TSTR, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6205);
+ dasm_put(Dst, 5811);
} else {
- dasm_put(Dst, 6212);
+ dasm_put(Dst, 5818);
}
- dasm_put(Dst, 6224, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6289, 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, 6356, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
- dasm_put(Dst, 6431, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6516, 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, 6590, 1+1, LJ_TTAB);
+ dasm_put(Dst, 5830, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 5895, 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, 5958, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+ dasm_put(Dst, 6029, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 6114, 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, 6184, 1+1, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 6666);
+ dasm_put(Dst, 6252);
} else {
- dasm_put(Dst, 6676);
+ dasm_put(Dst, 6262);
}
if (sse) {
- dasm_put(Dst, 6687, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6273, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 6744, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6330, 1+1, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 6788, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6374, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 6836, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6422, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 6876);
+ dasm_put(Dst, 6462, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6886);
- }
- dasm_put(Dst, 6891, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 6909);
+ dasm_put(Dst, 6489);
} else {
- dasm_put(Dst, 6926);
+ dasm_put(Dst, 6506);
}
- dasm_put(Dst, 6939);
+ dasm_put(Dst, 6519);
if (sse) {
- dasm_put(Dst, 6947, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6527, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 6995, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6575, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 6876);
+ dasm_put(Dst, 6462, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6886);
- }
- dasm_put(Dst, 6891, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 7035);
+ dasm_put(Dst, 6615);
} else {
- dasm_put(Dst, 7052);
+ dasm_put(Dst, 6632);
}
- dasm_put(Dst, 6939);
+ dasm_put(Dst, 6519);
if (sse) {
- dasm_put(Dst, 7065, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6645, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 7113, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6693, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 6876);
+ dasm_put(Dst, 6462, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 6886);
- }
- dasm_put(Dst, 6891, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 7153);
+ dasm_put(Dst, 6733);
} else {
- dasm_put(Dst, 7170);
+ dasm_put(Dst, 6750);
}
- dasm_put(Dst, 6939);
+ dasm_put(Dst, 6519);
if (sse) {
- dasm_put(Dst, 7183, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6763, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 7231, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6811, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 7271);
+ dasm_put(Dst, 6851);
if (sse) {
- dasm_put(Dst, 7278, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6858, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 7326, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6906, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 7366);
+ dasm_put(Dst, 6946);
if (sse) {
- dasm_put(Dst, 7370);
+ dasm_put(Dst, 6950);
} else {
- dasm_put(Dst, 7397);
+ dasm_put(Dst, 6962);
}
- dasm_put(Dst, 7412);
+ dasm_put(Dst, 6975);
if (sse) {
- dasm_put(Dst, 6661);
- }
- dasm_put(Dst, 7415);
- if (sse) {
- dasm_put(Dst, 7424, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 6986, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7498, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7060, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7564);
+ dasm_put(Dst, 7126);
if (sse) {
- dasm_put(Dst, 7573, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7135, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7647, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7209, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7713);
+ dasm_put(Dst, 7275);
if (sse) {
- dasm_put(Dst, 7723, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7285, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7797, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7359, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7863);
+ dasm_put(Dst, 7425);
if (sse) {
- dasm_put(Dst, 7873, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7435, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7947, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7509, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 8013);
+ dasm_put(Dst, 7575);
if (sse) {
- dasm_put(Dst, 8022, 1+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7584, 1+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 8096, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7658, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 8162, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
- dasm_put(Dst, 8246, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top));
- dasm_put(Dst, 8365, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7724, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+ dasm_put(Dst, 7802, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 7925, Dt1(->top), Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 8406, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+ dasm_put(Dst, 7963, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
#endif
- dasm_put(Dst, 8437, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 8503, BC__MAX*4);
+ dasm_put(Dst, 7994, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 8060, GG_DISP2STATIC);
#if LJ_HASJIT
- dasm_put(Dst, 8538, Dt1(->base), GG_DISP2J, DISPATCH_J(L));
+ dasm_put(Dst, 8095, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
#endif
- dasm_put(Dst, 8567);
+ dasm_put(Dst, 8141);
#if LJ_HASJIT
- dasm_put(Dst, 8570, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base));
+ dasm_put(Dst, 8144, Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L), Dt1(->base), Dt1(->top), Dt7(->pc));
#endif
- dasm_put(Dst, 8616);
+ dasm_put(Dst, 8214);
#if LJ_HASJIT
- dasm_put(Dst, 8619, 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, 8217, 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, 8762);
+ dasm_put(Dst, 8360);
#if LJ_HASJIT
- dasm_put(Dst, 8765, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 8363, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
#endif
- dasm_put(Dst, 8805);
+ dasm_put(Dst, 8403);
if (!sse) {
- dasm_put(Dst, 8808);
+ dasm_put(Dst, 8406);
}
- dasm_put(Dst, 8853);
+ dasm_put(Dst, 8451);
if (!sse) {
- dasm_put(Dst, 8955);
+ dasm_put(Dst, 8553);
}
- dasm_put(Dst, 9000);
+ dasm_put(Dst, 8598);
if (!sse) {
- dasm_put(Dst, 9102);
+ dasm_put(Dst, 8700);
}
- dasm_put(Dst, 9141);
+ dasm_put(Dst, 8739);
if (sse) {
- dasm_put(Dst, 9246);
+ dasm_put(Dst, 8844);
} else {
- dasm_put(Dst, 9376);
+ dasm_put(Dst, 8974);
}
- dasm_put(Dst, 9423);
+ dasm_put(Dst, 9021);
if (!sse) {
- dasm_put(Dst, 9497);
+ dasm_put(Dst, 9095);
if (cmov) {
- dasm_put(Dst, 9508);
+ dasm_put(Dst, 9106);
} else {
- dasm_put(Dst, 9512);
+ dasm_put(Dst, 9110);
}
- dasm_put(Dst, 9519);
- dasm_put(Dst, 9593);
- dasm_put(Dst, 9693);
+ dasm_put(Dst, 9117);
+ dasm_put(Dst, 9191);
+ dasm_put(Dst, 9291);
if (cmov) {
- dasm_put(Dst, 9696);
+ dasm_put(Dst, 9294);
} else {
- dasm_put(Dst, 9700);
+ dasm_put(Dst, 9298);
}
- dasm_put(Dst, 9707);
+ dasm_put(Dst, 9305);
if (cmov) {
- dasm_put(Dst, 9508);
+ dasm_put(Dst, 9106);
} else {
- dasm_put(Dst, 9512);
+ dasm_put(Dst, 9110);
}
- dasm_put(Dst, 9725);
+ dasm_put(Dst, 9323);
} else {
- dasm_put(Dst, 9804);
+ dasm_put(Dst, 9402);
}
- dasm_put(Dst, 9807);
- dasm_put(Dst, 9892);
- dasm_put(Dst, 10023);
- dasm_put(Dst, 10222);
+ dasm_put(Dst, 9405);
+ dasm_put(Dst, 9490);
+ dasm_put(Dst, 9621);
+ dasm_put(Dst, 9820);
if (sse) {
- dasm_put(Dst, 10245);
- dasm_put(Dst, 10302);
- dasm_put(Dst, 10393);
+ dasm_put(Dst, 9843);
+ dasm_put(Dst, 9900);
+ dasm_put(Dst, 9991);
} else {
- dasm_put(Dst, 10435);
- dasm_put(Dst, 10527);
+ dasm_put(Dst, 10033);
+ dasm_put(Dst, 10125);
}
- dasm_put(Dst, 10573);
+ dasm_put(Dst, 10171);
if (sse) {
- dasm_put(Dst, 10579);
- dasm_put(Dst, 10684);
- dasm_put(Dst, 10767);
+ dasm_put(Dst, 10177);
+ dasm_put(Dst, 10282);
+ dasm_put(Dst, 10365);
} else {
- dasm_put(Dst, 10839);
- dasm_put(Dst, 10922);
+ dasm_put(Dst, 10437);
+ dasm_put(Dst, 10520);
if (cmov) {
- dasm_put(Dst, 10977);
+ dasm_put(Dst, 10575);
} else {
- dasm_put(Dst, 10996);
+ dasm_put(Dst, 10594);
}
- dasm_put(Dst, 10835);
+ dasm_put(Dst, 10433);
}
- dasm_put(Dst, 11037);
+ dasm_put(Dst, 10635);
}
/* 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, 154, defop);
+ dasm_put(Dst, 10689, defop);
switch (op) {
@@ -1561,619 +1531,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, 11091, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10691, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11112);
+ dasm_put(Dst, 10712);
} else {
- dasm_put(Dst, 11127);
+ dasm_put(Dst, 10727);
if (cmov) {
- dasm_put(Dst, 11137);
+ dasm_put(Dst, 10737);
} else {
- dasm_put(Dst, 11143);
+ dasm_put(Dst, 10743);
}
}
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 11150);
+ dasm_put(Dst, 10750);
break;
case BC_ISGE:
- dasm_put(Dst, 10388);
+ dasm_put(Dst, 9986);
break;
case BC_ISLE:
- dasm_put(Dst, 6585);
+ dasm_put(Dst, 6179);
break;
case BC_ISGT:
- dasm_put(Dst, 11155);
+ dasm_put(Dst, 10755);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 11160, -BCBIAS_J*4);
+ dasm_put(Dst, 10760, -BCBIAS_J*4);
break;
case BC_ISEQV: case BC_ISNEV:
vk = op == BC_ISEQV;
- dasm_put(Dst, 11193, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10793, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11219);
+ dasm_put(Dst, 10819);
} else {
- dasm_put(Dst, 11231);
+ dasm_put(Dst, 10831);
if (cmov) {
- dasm_put(Dst, 11137);
+ dasm_put(Dst, 10737);
} else {
- dasm_put(Dst, 11143);
+ dasm_put(Dst, 10743);
}
}
iseqne_fp:
if (vk) {
- dasm_put(Dst, 11238);
+ dasm_put(Dst, 10838);
} else {
- dasm_put(Dst, 11247);
+ dasm_put(Dst, 10847);
}
iseqne_end:
if (vk) {
- dasm_put(Dst, 11256, -BCBIAS_J*4);
+ dasm_put(Dst, 10856, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 11271, -BCBIAS_J*4);
+ dasm_put(Dst, 10871, -BCBIAS_J*4);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
if (op == BC_ISEQV || op == BC_ISNEV) {
- dasm_put(Dst, 11286, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<len));
+ dasm_put(Dst, 11222, Dt5(->len));
} else {
- dasm_put(Dst, 11640, Dt5(->len));
+ dasm_put(Dst, 11240, Dt5(->len));
}
- dasm_put(Dst, 11649, LJ_TTAB);
+ dasm_put(Dst, 11249, LJ_TTAB);
if (sse) {
- dasm_put(Dst, 11689);
+ dasm_put(Dst, 11289);
} else {
- dasm_put(Dst, 11698);
+ dasm_put(Dst, 11298);
}
- dasm_put(Dst, 11708);
+ dasm_put(Dst, 11308);
break;
/* -- Binary ops -------------------------------------------------------- */
case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
- dasm_put(Dst, 11718);
+ dasm_put(Dst, 11318);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11726, LJ_TISNUM);
+ dasm_put(Dst, 11326, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11738);
+ dasm_put(Dst, 11338);
} else {
- dasm_put(Dst, 11752);
+ dasm_put(Dst, 11352);
}
break;
case 1:
- dasm_put(Dst, 11760, LJ_TISNUM);
+ dasm_put(Dst, 11360, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11772);
+ dasm_put(Dst, 11372);
} else {
- dasm_put(Dst, 11786);
+ dasm_put(Dst, 11386);
}
break;
default:
- dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11816);
+ dasm_put(Dst, 11416);
} else {
- dasm_put(Dst, 11830);
+ dasm_put(Dst, 11430);
}
break;
}
if (sse) {
- dasm_put(Dst, 11592);
+ dasm_put(Dst, 11192);
} else {
- dasm_put(Dst, 11604);
+ dasm_put(Dst, 11204);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
- dasm_put(Dst, 11718);
+ dasm_put(Dst, 11318);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11726, LJ_TISNUM);
+ dasm_put(Dst, 11326, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11838);
+ dasm_put(Dst, 11438);
} else {
- dasm_put(Dst, 11852);
+ dasm_put(Dst, 11452);
}
break;
case 1:
- dasm_put(Dst, 11760, LJ_TISNUM);
+ dasm_put(Dst, 11360, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11860);
+ dasm_put(Dst, 11460);
} else {
- dasm_put(Dst, 11874);
+ dasm_put(Dst, 11474);
}
break;
default:
- dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11882);
+ dasm_put(Dst, 11482);
} else {
- dasm_put(Dst, 11896);
+ dasm_put(Dst, 11496);
}
break;
}
if (sse) {
- dasm_put(Dst, 11592);
+ dasm_put(Dst, 11192);
} else {
- dasm_put(Dst, 11604);
+ dasm_put(Dst, 11204);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_MULVN: case BC_MULNV: case BC_MULVV:
- dasm_put(Dst, 11718);
+ dasm_put(Dst, 11318);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11726, LJ_TISNUM);
+ dasm_put(Dst, 11326, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11904);
+ dasm_put(Dst, 11504);
} else {
- dasm_put(Dst, 11918);
+ dasm_put(Dst, 11518);
}
break;
case 1:
- dasm_put(Dst, 11760, LJ_TISNUM);
+ dasm_put(Dst, 11360, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11926);
+ dasm_put(Dst, 11526);
} else {
- dasm_put(Dst, 11940);
+ dasm_put(Dst, 11540);
}
break;
default:
- dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11948);
+ dasm_put(Dst, 11548);
} else {
- dasm_put(Dst, 11962);
+ dasm_put(Dst, 11562);
}
break;
}
if (sse) {
- dasm_put(Dst, 11592);
+ dasm_put(Dst, 11192);
} else {
- dasm_put(Dst, 11604);
+ dasm_put(Dst, 11204);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
- dasm_put(Dst, 11718);
+ dasm_put(Dst, 11318);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11726, LJ_TISNUM);
+ dasm_put(Dst, 11326, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11970);
+ dasm_put(Dst, 11570);
} else {
- dasm_put(Dst, 11984);
+ dasm_put(Dst, 11584);
}
break;
case 1:
- dasm_put(Dst, 11760, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 11992);
- } else {
- dasm_put(Dst, 12006);
- }
- break;
- default:
- dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 12014);
- } else {
- dasm_put(Dst, 12028);
- }
- break;
- }
+ dasm_put(Dst, 11360, LJ_TISNUM);
if (sse) {
dasm_put(Dst, 11592);
} else {
- dasm_put(Dst, 11604);
+ dasm_put(Dst, 11606);
}
- dasm_put(Dst, 8597);
+ break;
+ default:
+ dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 11614);
+ } else {
+ dasm_put(Dst, 11628);
+ }
+ break;
+ }
+ if (sse) {
+ dasm_put(Dst, 11192);
+ } else {
+ dasm_put(Dst, 11204);
+ }
+ dasm_put(Dst, 8384);
break;
case BC_MODVN:
- dasm_put(Dst, 11718);
+ dasm_put(Dst, 11318);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11726, LJ_TISNUM);
+ dasm_put(Dst, 11326, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12036);
+ dasm_put(Dst, 11636);
} else {
- dasm_put(Dst, 12050);
+ dasm_put(Dst, 11650);
}
break;
case 1:
- dasm_put(Dst, 11760, LJ_TISNUM);
+ dasm_put(Dst, 11360, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12058);
+ dasm_put(Dst, 11658);
} else {
- dasm_put(Dst, 12072);
+ dasm_put(Dst, 11672);
}
break;
default:
- dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12080);
+ dasm_put(Dst, 11680);
} else {
- dasm_put(Dst, 12094);
+ dasm_put(Dst, 11694);
}
break;
}
- dasm_put(Dst, 12102);
+ dasm_put(Dst, 11702);
if (sse) {
- dasm_put(Dst, 11592);
+ dasm_put(Dst, 11192);
} else {
- dasm_put(Dst, 11604);
+ dasm_put(Dst, 11204);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_MODNV: case BC_MODVV:
- dasm_put(Dst, 11718);
+ dasm_put(Dst, 11318);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11726, LJ_TISNUM);
+ dasm_put(Dst, 11326, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12036);
+ dasm_put(Dst, 11636);
} else {
- dasm_put(Dst, 12050);
+ dasm_put(Dst, 11650);
}
break;
case 1:
- dasm_put(Dst, 11760, LJ_TISNUM);
+ dasm_put(Dst, 11360, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12058);
+ dasm_put(Dst, 11658);
} else {
- dasm_put(Dst, 12072);
+ dasm_put(Dst, 11672);
}
break;
default:
- dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12080);
+ dasm_put(Dst, 11680);
} else {
- dasm_put(Dst, 12094);
+ dasm_put(Dst, 11694);
}
break;
}
- dasm_put(Dst, 12108);
+ dasm_put(Dst, 11708);
break;
case BC_POW:
- dasm_put(Dst, 11718);
+ dasm_put(Dst, 11318);
vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
switch (vk) {
case 0:
- dasm_put(Dst, 11726, LJ_TISNUM);
+ dasm_put(Dst, 11326, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12036);
+ dasm_put(Dst, 11636);
} else {
- dasm_put(Dst, 12050);
+ dasm_put(Dst, 11650);
}
break;
case 1:
- dasm_put(Dst, 11760, LJ_TISNUM);
+ dasm_put(Dst, 11360, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12058);
+ dasm_put(Dst, 11658);
} else {
- dasm_put(Dst, 12072);
+ dasm_put(Dst, 11672);
}
break;
default:
- dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12080);
+ dasm_put(Dst, 11680);
} else {
- dasm_put(Dst, 12094);
+ dasm_put(Dst, 11694);
}
break;
}
- dasm_put(Dst, 12113);
+ dasm_put(Dst, 11713);
if (sse) {
- dasm_put(Dst, 11592);
+ dasm_put(Dst, 11192);
} else {
- dasm_put(Dst, 11604);
+ dasm_put(Dst, 11204);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_CAT:
- dasm_put(Dst, 12117, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 11717, Dt1(->base), Dt1(->base));
break;
/* -- Constant ops ------------------------------------------------------ */
case BC_KSTR:
- dasm_put(Dst, 12211, LJ_TSTR);
+ dasm_put(Dst, 11811, LJ_TSTR);
break;
case BC_KSHORT:
if (sse) {
- dasm_put(Dst, 12244);
+ dasm_put(Dst, 11844);
} else {
- dasm_put(Dst, 12259);
+ dasm_put(Dst, 11859);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_KNUM:
if (sse) {
- dasm_put(Dst, 12267);
+ dasm_put(Dst, 11867);
} else {
- dasm_put(Dst, 12280);
+ dasm_put(Dst, 11880);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_KPRI:
- dasm_put(Dst, 12287);
+ dasm_put(Dst, 11887);
break;
case BC_KNIL:
- dasm_put(Dst, 12313, LJ_TNIL);
+ dasm_put(Dst, 11913, LJ_TNIL);
break;
/* -- Upvalue and function ops ------------------------------------------ */
case BC_UGET:
- dasm_put(Dst, 12359, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 11959, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_USETV:
#define TV2MARKOFS \
((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
- dasm_put(Dst, 12403, 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, 12493);
+ dasm_put(Dst, 12003, 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, 12093);
break;
#undef TV2MARKOFS
case BC_USETS:
- dasm_put(Dst, 12505, 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, 12105, 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, 12596);
+ dasm_put(Dst, 12196);
if (sse) {
- dasm_put(Dst, 12601);
+ dasm_put(Dst, 12201);
} else {
- dasm_put(Dst, 11411);
+ dasm_put(Dst, 11011);
}
- dasm_put(Dst, 12608, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12208, offsetof(GCfuncL, uvptr), DtA(->v));
if (sse) {
- dasm_put(Dst, 4972);
+ dasm_put(Dst, 12217);
} else {
- dasm_put(Dst, 4978);
+ dasm_put(Dst, 12223);
}
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_USETP:
- dasm_put(Dst, 12617, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12226, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_UCLO:
- dasm_put(Dst, 12654, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 12263, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
break;
case BC_FNEW:
- dasm_put(Dst, 12708, Dt1(->base), Dt1(->base), LJ_TFUNC);
+ dasm_put(Dst, 12317, Dt1(->base), Dt1(->base), LJ_TFUNC);
break;
/* -- Table ops --------------------------------------------------------- */
case BC_TNEW:
- dasm_put(Dst, 12779, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 12388, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_TDUP:
- dasm_put(Dst, 12900, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 12509, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_GGET:
- dasm_put(Dst, 12992, Dt7(->env));
+ dasm_put(Dst, 12601, Dt7(->env));
break;
case BC_GSET:
- dasm_put(Dst, 13010, Dt7(->env));
+ dasm_put(Dst, 12619, Dt7(->env));
break;
case BC_TGETV:
- dasm_put(Dst, 13028, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 12637, LJ_TTAB, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 13061);
+ dasm_put(Dst, 12670);
} else {
- dasm_put(Dst, 13082);
+ dasm_put(Dst, 12691);
if (cmov) {
- dasm_put(Dst, 11137);
+ dasm_put(Dst, 10737);
} else {
- dasm_put(Dst, 11143);
+ dasm_put(Dst, 10743);
}
- dasm_put(Dst, 2863);
+ dasm_put(Dst, 2522);
}
- dasm_put(Dst, 13092, 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, 13286, 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, 12895, 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, 13572, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13098, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+ dasm_put(Dst, 13181, 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, 13634, 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, 13709, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
- dasm_put(Dst, 13801, 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, 13243, 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, 13318, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
+ dasm_put(Dst, 13410, 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, 13897, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
- dasm_put(Dst, 13995, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13506, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+ dasm_put(Dst, 13604, 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, 14041);
+ dasm_put(Dst, 13650);
if (sse) {
- dasm_put(Dst, 12601);
+ dasm_put(Dst, 12201);
} else {
- dasm_put(Dst, 14046);
+ dasm_put(Dst, 13655);
}
- dasm_put(Dst, 14054, Dt6(->marked), LJ_GC_BLACK);
+ dasm_put(Dst, 13663, Dt6(->marked), LJ_GC_BLACK);
if (sse) {
- dasm_put(Dst, 14079);
+ dasm_put(Dst, 13688);
} else {
- dasm_put(Dst, 14086);
+ dasm_put(Dst, 13695);
}
- dasm_put(Dst, 14091, 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, 14219, Dt6(->gclist));
+ dasm_put(Dst, 13700, 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, 13828, Dt6(->gclist));
break;
/* -- Calls and vararg handling ----------------------------------------- */
case BC_CALL: case BC_CALLM:
- dasm_put(Dst, 11722);
+ dasm_put(Dst, 11322);
if (op == BC_CALLM) {
- dasm_put(Dst, 14227);
+ dasm_put(Dst, 13836);
}
- dasm_put(Dst, 14232, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 13841, LJ_TFUNC, Dt7(->pc));
break;
case BC_CALLMT:
- dasm_put(Dst, 14227);
+ dasm_put(Dst, 13836);
break;
case BC_CALLT:
- dasm_put(Dst, 14255, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
- dasm_put(Dst, 14360, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 13882, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+ dasm_put(Dst, 14000, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
break;
case BC_ITERC:
- dasm_put(Dst, 14417, LJ_TFUNC, Dt7(->gate));
+ dasm_put(Dst, 14057, LJ_TFUNC, 2+1, Dt7(->pc));
break;
case BC_VARG:
- dasm_put(Dst, 14479, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
- dasm_put(Dst, 14623, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 14137, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
+ dasm_put(Dst, 14281, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
break;
/* -- Returns ----------------------------------------------------------- */
case BC_RETM:
- dasm_put(Dst, 14227);
+ dasm_put(Dst, 13836);
break;
case BC_RET: case BC_RET0: case BC_RET1:
if (op != BC_RET0) {
- dasm_put(Dst, 14722);
+ dasm_put(Dst, 14380);
}
- dasm_put(Dst, 14726, FRAME_TYPE);
+ dasm_put(Dst, 14384, FRAME_TYPE);
switch (op) {
case BC_RET:
- dasm_put(Dst, 14745);
+ dasm_put(Dst, 14403);
break;
case BC_RET1:
- dasm_put(Dst, 14803);
+ dasm_put(Dst, 14461);
/* fallthrough */
case BC_RET0:
- dasm_put(Dst, 14819);
+ dasm_put(Dst, 14477);
default:
break;
}
- dasm_put(Dst, 14830, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 14488, Dt7(->pc), PC2PROTO(k));
if (op == BC_RET) {
- dasm_put(Dst, 14872, LJ_TNIL);
+ dasm_put(Dst, 14530, LJ_TNIL);
} else {
- dasm_put(Dst, 14881, LJ_TNIL);
+ dasm_put(Dst, 14539, LJ_TNIL);
}
- dasm_put(Dst, 14888);
+ dasm_put(Dst, 14546);
if (op != BC_RET0) {
- dasm_put(Dst, 14909);
+ dasm_put(Dst, 14567);
}
- dasm_put(Dst, 5068);
+ dasm_put(Dst, 4678);
break;
/* -- Loops and branches ------------------------------------------------ */
@@ -2181,7 +2151,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORL:
#if LJ_HASJIT
- dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2193,57 +2163,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, 14934);
+ dasm_put(Dst, 14592);
if (!vk) {
- dasm_put(Dst, 14938, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 14596, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 14957);
+ dasm_put(Dst, 14615);
if (!vk) {
- dasm_put(Dst, 14961, LJ_TISNUM);
+ dasm_put(Dst, 14619, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 14970);
+ dasm_put(Dst, 14628);
if (vk) {
- dasm_put(Dst, 14982);
+ dasm_put(Dst, 14640);
} else {
- dasm_put(Dst, 15001);
+ dasm_put(Dst, 14659);
}
- dasm_put(Dst, 15006);
+ dasm_put(Dst, 14664);
} else {
- dasm_put(Dst, 15019);
+ dasm_put(Dst, 14677);
if (vk) {
- dasm_put(Dst, 15025);
+ dasm_put(Dst, 14683);
} else {
- dasm_put(Dst, 15041);
+ dasm_put(Dst, 14699);
}
- dasm_put(Dst, 15049);
+ dasm_put(Dst, 14707);
if (cmov) {
- dasm_put(Dst, 11137);
+ dasm_put(Dst, 10737);
} else {
- dasm_put(Dst, 11143);
+ dasm_put(Dst, 10743);
}
if (!cmov) {
- dasm_put(Dst, 15054);
+ dasm_put(Dst, 14712);
}
}
if (op == BC_FORI) {
- dasm_put(Dst, 15060, -BCBIAS_J*4);
+ dasm_put(Dst, 14718, -BCBIAS_J*4);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15070, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 14728, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 15084, -BCBIAS_J*4);
+ dasm_put(Dst, 14742, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 15080, BC_JLOOP);
+ dasm_put(Dst, 14738, BC_JLOOP);
}
- dasm_put(Dst, 11172);
+ dasm_put(Dst, 10772);
if (sse) {
- dasm_put(Dst, 15094);
+ dasm_put(Dst, 14752);
}
break;
case BC_ITERL:
#if LJ_HASJIT
- dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
@@ -2252,33 +2222,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IITERL:
- dasm_put(Dst, 15105, LJ_TNIL);
+ dasm_put(Dst, 14763, LJ_TNIL);
if (op == BC_JITERL) {
- dasm_put(Dst, 15120, BC_JLOOP);
+ dasm_put(Dst, 14778, BC_JLOOP);
} else {
- dasm_put(Dst, 15134, -BCBIAS_J*4);
+ dasm_put(Dst, 14792, -BCBIAS_J*4);
}
- dasm_put(Dst, 11469);
+ dasm_put(Dst, 11069);
break;
case BC_LOOP:
#if LJ_HASJIT
- dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT);
+ dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
#endif
break;
case BC_ILOOP:
- dasm_put(Dst, 8597);
+ dasm_put(Dst, 8384);
break;
case BC_JLOOP:
#if LJ_HASJIT
- dasm_put(Dst, 15150, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+ dasm_put(Dst, 14808, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
#endif
break;
case BC_JMP:
- dasm_put(Dst, 15173, -BCBIAS_J*4);
+ dasm_put(Dst, 14831, -BCBIAS_J*4);
+ break;
+
+ /* -- Function headers -------------------------------------------------- */
+
+ /*
+ ** Reminder: A function may be called with func/args above L->maxstack,
+ ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
+ ** too. This means all FUNC* ops (including fast functions) must check
+ ** for stack overflow _before_ adding more slots!
+ */
+
+ case BC_FUNCF:
+#if LJ_HASJIT
+#endif
+ case BC_FUNCV: /* NYI: compiled vararg functions. */
+ break;
+
+ case BC_JFUNCF:
+#if !LJ_HASJIT
+ break;
+#endif
+ case BC_IFUNCF:
+ dasm_put(Dst, 14855, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+ if (op == BC_JFUNCF) {
+ dasm_put(Dst, 14885, BC_JLOOP);
+ } else {
+ dasm_put(Dst, 8384);
+ }
+ dasm_put(Dst, 14894, LJ_TNIL);
+ break;
+
+ case BC_JFUNCV:
+#if !LJ_HASJIT
+ break;
+#endif
+ dasm_put(Dst, 10435);
+ break; /* NYI: compiled vararg functions. */
+
+ case BC_IFUNCV:
+ dasm_put(Dst, 14916, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+ if (op == BC_JFUNCV) {
+ dasm_put(Dst, 14885, BC_JLOOP);
+ } else {
+ dasm_put(Dst, 15007, -4+PC2PROTO(k));
+ }
+ dasm_put(Dst, 15029, LJ_TNIL);
+ break;
+
+ case BC_FUNCC:
+ case BC_FUNCCW:
+ dasm_put(Dst, 15051, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+ if (op == BC_FUNCC) {
+ dasm_put(Dst, 15080);
+ } else {
+ dasm_put(Dst, 15084);
+ }
+ dasm_put(Dst, 15092, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ if (op == BC_FUNCC) {
+ dasm_put(Dst, 15101);
+ } else {
+ dasm_put(Dst, 15105, DISPATCH_GL(wrapf));
+ }
+ dasm_put(Dst, 15110, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
break;
/* ---------------------------------------------------------------------- */
@@ -2306,7 +2339,7 @@ static int build_backend(BuildCtx *ctx)
build_subroutines(ctx, cmov, sse);
- dasm_put(Dst, 15197);
+ dasm_put(Dst, 15135);
for (op = 0; op < BC__MAX; op++)
build_ins(ctx, (BCOp)op, op, cmov, sse);
diff --git a/src/lib_base.c b/src/lib_base.c
index 032d5bcc..e85b7264 100644
--- a/src/lib_base.c
+++ b/src/lib_base.c
@@ -22,7 +22,9 @@
#include "lj_tab.h"
#include "lj_meta.h"
#include "lj_state.h"
+#include "lj_bc.h"
#include "lj_ff.h"
+#include "lj_dispatch.h"
#include "lj_ctype.h"
#include "lj_lib.h"
@@ -521,19 +523,25 @@ void LJ_FASTCALL lj_ffh_coroutine_wrap_err(lua_State *L, lua_State *co)
lj_err_run(L);
}
+/* Forward declaration. */
+static void setpc_wrap_aux(lua_State *L, GCfunc *fn);
+
LJLIB_CF(coroutine_wrap)
{
- GCfunc *fn;
lj_cf_coroutine_create(L);
- lua_pushcclosure(L, lj_ffh_coroutine_wrap_aux, 1);
- fn = funcV(L->top-1);
- fn->c.gate = lj_ff_coroutine_wrap_aux;
- fn->c.ffid = FF_coroutine_wrap_aux;
+ lj_lib_pushcc(L, lj_ffh_coroutine_wrap_aux, FF_coroutine_wrap_aux, 1);
+ setpc_wrap_aux(L, funcV(L->top-1));
return 1;
}
#include "lj_libdef.h"
+/* Fix the PC of wrap_aux. Really ugly workaround. */
+static void setpc_wrap_aux(lua_State *L, GCfunc *fn)
+{
+ setmref(fn->c.pc, &L2GG(L)->bcff[lj_lib_init_coroutine[1]+2]);
+}
+
/* ------------------------------------------------------------------------ */
static void newproxy_weaktable(lua_State *L)
diff --git a/src/lib_io.c b/src/lib_io.c
index 42200201..e8eb09cb 100644
--- a/src/lib_io.c
+++ b/src/lib_io.c
@@ -502,8 +502,7 @@ static GCobj *io_std_new(lua_State *L, FILE *fp, const char *name)
LUALIB_API int luaopen_io(lua_State *L)
{
- lua_pushcfunction(L, lj_cf_io_lines_iter);
- funcV(L->top-1)->c.ffid = FF_io_lines_iter;
+ lj_lib_pushcf(L, lj_cf_io_lines_iter, FF_io_lines_iter);
LJ_LIB_REG_(L, NULL, io_method);
copyTV(L, L->top, L->top-1); L->top++;
lua_setfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE);
diff --git a/src/lib_jit.c b/src/lib_jit.c
index 8fda41d0..a5829dc3 100644
--- a/src/lib_jit.c
+++ b/src/lib_jit.c
@@ -177,7 +177,7 @@ LJLIB_CF(jit_util_funcinfo)
GCtab *t;
lua_createtable(L, 0, 16); /* Increment hash size if fields are added. */
t = tabV(L->top-1);
- setintfield(L, t, "linedefined", pt->linedefined);
+ setintfield(L, t, "linedefined", proto_line(pt, 0));
setintfield(L, t, "lastlinedefined", pt->lastlinedefined);
setintfield(L, t, "stackslots", pt->framesize);
setintfield(L, t, "params", pt->numparams);
@@ -185,9 +185,9 @@ LJLIB_CF(jit_util_funcinfo)
setintfield(L, t, "gcconsts", (int32_t)pt->sizekgc);
setintfield(L, t, "nconsts", (int32_t)pt->sizekn);
setintfield(L, t, "upvalues", (int32_t)pt->sizeuv);
- if (pc-1 < pt->sizebc)
+ if (pc < pt->sizebc)
setintfield(L, t, "currentline",
- proto_lineinfo(pt) ? proto_line(pt, pc-1) : 0);
+ proto_lineinfo(pt) ? proto_line(pt, pc) : 0);
lua_pushboolean(L, (pt->flags & PROTO_IS_VARARG));
lua_setfield(L, -2, "isvararg");
setstrV(L, L->top++, proto_chunkname(pt));
@@ -209,7 +209,7 @@ LJLIB_CF(jit_util_funcinfo)
LJLIB_CF(jit_util_funcbc)
{
GCproto *pt = check_Lproto(L, 0);
- BCPos pc = (BCPos)lj_lib_checkint(L, 2) - 1;
+ BCPos pc = (BCPos)lj_lib_checkint(L, 2);
if (pc < pt->sizebc) {
BCIns ins = proto_bc(pt)[pc];
BCOp op = bc_op(ins);
diff --git a/src/lib_package.c b/src/lib_package.c
index 7d0362a5..6d093500 100644
--- a/src/lib_package.c
+++ b/src/lib_package.c
@@ -482,14 +482,14 @@ LUALIB_API int luaopen_package(lua_State *L)
{
int i;
luaL_newmetatable(L, "_LOADLIB");
- lua_pushcfunction(L, lj_cf_package_unloadlib);
+ lj_lib_pushcf(L, lj_cf_package_unloadlib, 1);
lua_setfield(L, -2, "__gc");
luaL_register(L, LUA_LOADLIBNAME, package_lib);
lua_pushvalue(L, -1);
lua_replace(L, LUA_ENVIRONINDEX);
lua_createtable(L, sizeof(package_loaders)/sizeof(package_loaders[0])-1, 0);
for (i = 0; package_loaders[i] != NULL; i++) {
- lua_pushcfunction(L, package_loaders[i]);
+ lj_lib_pushcf(L, package_loaders[i], 1);
lua_rawseti(L, -2, i+1);
}
lua_setfield(L, -2, "loaders");
diff --git a/src/lib_string.c b/src/lib_string.c
index b6a4864b..ab353c20 100644
--- a/src/lib_string.c
+++ b/src/lib_string.c
@@ -536,8 +536,7 @@ LJLIB_CF(string_gmatch)
lj_lib_checkstr(L, 2);
L->top = L->base+3;
(L->top-1)->u64 = 0;
- lua_pushcclosure(L, lj_cf_string_gmatch_aux, 3);
- funcV(L->top-1)->c.ffid = FF_string_gmatch_aux;
+ lj_lib_pushcc(L, lj_cf_string_gmatch_aux, FF_string_gmatch_aux, 3);
return 1;
}
diff --git a/src/lj_api.c b/src/lj_api.c
index ad28bbf2..a19f0b33 100644
--- a/src/lj_api.c
+++ b/src/lj_api.c
@@ -18,6 +18,7 @@
#include "lj_udata.h"
#include "lj_meta.h"
#include "lj_state.h"
+#include "lj_bc.h"
#include "lj_frame.h"
#include "lj_trace.h"
#include "lj_vm.h"
@@ -487,8 +488,8 @@ LUA_API lua_CFunction lua_tocfunction(lua_State *L, int idx)
{
cTValue *o = index2adr(L, idx);
if (tvisfunc(o)) {
- ASMFunction gate = funcV(o)->c.gate;
- if (gate == lj_gate_c || gate == lj_gate_cwrap)
+ BCOp op = bc_op(*mref(funcV(o)->c.pc, BCIns));
+ if (op == BC_FUNCC || op == BC_FUNCCW)
return funcV(o)->c.f;
}
return NULL;
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 3a2fee71..55bc814e 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -906,7 +906,7 @@ static MCode *asm_exitstub_gen(ASMState *as, ExitNo group)
*mxp++ = MODRM(XM_OFS8, 0, RID_ESP);
*mxp++ = MODRM(XM_SCALE1, RID_ESP, RID_ESP);
*mxp++ = 2*sizeof(void *);
- *(int32_t *)mxp = ptr2addr(GG2DISP(J2GG(as->J))); mxp += 4;
+ *(int32_t *)mxp = ptr2addr(J2GG(as->J)->dispatch); mxp += 4;
/* Jump to exit handler which fills in the ExitState. */
*mxp++ = XI_JMP; mxp += 4;
*((int32_t *)(mxp-4)) = (int32_t)((MCode *)lj_vm_exit_handler - mxp);
@@ -3066,7 +3066,7 @@ static void asm_tail_sync(ASMState *as)
if (as->T->link == TRACE_INTERP) {
/* Setup fixed registers for exit to interpreter. */
- emit_loada(as, RID_DISPATCH, GG2DISP(J2GG(as->J)));
+ emit_loada(as, RID_DISPATCH, J2GG(as->J)->dispatch);
emit_loadi(as, RID_PC, (int32_t)map[nent]);
} else if (newbase) {
/* Save modified BASE for linking to trace with higher start frame. */
diff --git a/src/lj_bc.c b/src/lj_bc.c
index 58e97b30..2519807c 100644
--- a/src/lj_bc.c
+++ b/src/lj_bc.c
@@ -9,11 +9,6 @@
#include "lj_obj.h"
#include "lj_bc.h"
-/* Bytecode instruction modes. */
-LJ_DATADEF const uint16_t lj_bc_mode[BC__MAX+1] = {
-BCDEF(BCMODE)
- 0
-};
-
+/* Bytecode offsets and bytecode instruction modes. */
#include "lj_bcdef.h"
diff --git a/src/lj_bc.h b/src/lj_bc.h
index 83e2dea3..e1284916 100644
--- a/src/lj_bc.h
+++ b/src/lj_bc.h
@@ -178,7 +178,17 @@
_(ILOOP, rbase, ___, jump, ___) \
_(JLOOP, rbase, ___, lit, ___) \
\
- _(JMP, rbase, ___, jump, ___)
+ _(JMP, rbase, ___, jump, ___) \
+ \
+ /* Function headers. I/J = interp/JIT, F/V/C = fixarg/vararg/C func. */ \
+ _(FUNCF, rbase, ___, ___, ___) \
+ _(IFUNCF, rbase, ___, ___, ___) \
+ _(JFUNCF, rbase, ___, lit, ___) \
+ _(FUNCV, rbase, ___, ___, ___) \
+ _(IFUNCV, rbase, ___, ___, ___) \
+ _(JFUNCV, rbase, ___, lit, ___) \
+ _(FUNCC, ___, ___, ___, ___) \
+ _(FUNCCW, ___, ___, ___, ___)
/* Bytecode opcode numbers. */
typedef enum {
@@ -206,6 +216,10 @@ LJ_STATIC_ASSERT((int)BC_ITERL + 1 == (int)BC_IITERL);
LJ_STATIC_ASSERT((int)BC_ITERL + 2 == (int)BC_JITERL);
LJ_STATIC_ASSERT((int)BC_LOOP + 1 == (int)BC_ILOOP);
LJ_STATIC_ASSERT((int)BC_LOOP + 2 == (int)BC_JLOOP);
+LJ_STATIC_ASSERT((int)BC_FUNCF + 1 == (int)BC_IFUNCF);
+LJ_STATIC_ASSERT((int)BC_FUNCF + 2 == (int)BC_JFUNCF);
+LJ_STATIC_ASSERT((int)BC_FUNCV + 1 == (int)BC_IFUNCV);
+LJ_STATIC_ASSERT((int)BC_FUNCV + 2 == (int)BC_JFUNCV);
/* Stack slots used by FORI/FORL, relative to operand A. */
enum {
@@ -229,8 +243,9 @@ typedef enum {
#define BCMODE(name, ma, mb, mc, mm) \
(BCM##ma|(BCM##mb<<3)|(BCM##mc<<7)|(MM_##mm<<11)),
+#define BCMODE_FF 0
-LJ_DATA const uint16_t lj_bc_mode[BC__MAX+1];
-LJ_DATA const uint16_t lj_bc_ofs[BC__MAX+1];
+LJ_DATA const uint16_t lj_bc_mode[];
+LJ_DATA const uint16_t lj_bc_ofs[];
#endif
diff --git a/src/lj_def.h b/src/lj_def.h
index 64b08f7b..83b1935c 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -193,18 +193,14 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x)
#endif
/* Attributes for internal functions. */
-#if defined(ljamalg_c)
-#define LJ_DATA static
-#define LJ_DATADEF static
-#define LJ_FUNC static
-#define LJ_ASMF LJ_NOAPI
-#define LJ_FUNCA LJ_NOAPI
-#else
#define LJ_DATA LJ_NOAPI
#define LJ_DATADEF
-#define LJ_FUNC LJ_NOAPI
#define LJ_ASMF LJ_NOAPI
#define LJ_FUNCA LJ_NOAPI
+#if defined(ljamalg_c)
+#define LJ_FUNC static
+#else
+#define LJ_FUNC LJ_NOAPI
#endif
#define LJ_FUNC_NORET LJ_FUNC LJ_NORET
#define LJ_FUNCA_NORET LJ_FUNCA LJ_NORET
diff --git a/src/lj_dispatch.c b/src/lj_dispatch.c
index 54cc9006..72211dca 100644
--- a/src/lj_dispatch.c
+++ b/src/lj_dispatch.c
@@ -11,6 +11,7 @@
#include "lj_state.h"
#include "lj_frame.h"
#include "lj_bc.h"
+#include "lj_ff.h"
#if LJ_HASJIT
#include "lj_jit.h"
#endif
@@ -19,7 +20,8 @@
#include "lj_vm.h"
#include "luajit.h"
-#define GG_DISP_STATIC BC__MAX
+/* Bump GG_NUM_ASMFF in lj_dispatch.h as needed. Ugly. */
+LJ_STATIC_ASSERT(GG_NUM_ASMFF == FF_NUM_ASMFUNC);
/* -- Dispatch table management ------------------------------------------- */
@@ -27,13 +29,20 @@
void lj_dispatch_init(GG_State *GG)
{
uint32_t i;
- ASMFunction *disp = GG2DISP(GG);
- for (i = 0; i < BC__MAX; i++)
- disp[GG_DISP_STATIC+i] = disp[i] = makeasmfunc(lj_bc_ofs[i]);
+ ASMFunction *disp = GG->dispatch;
+ for (i = 0; i < GG_LEN_SDISP; i++)
+ disp[GG_LEN_DDISP+i] = disp[i] = makeasmfunc(lj_bc_ofs[i]);
+ for (i = GG_LEN_SDISP; i < GG_LEN_DDISP; i++)
+ disp[i] = makeasmfunc(lj_bc_ofs[i]);
/* The JIT engine is off by default. luaopen_jit() turns it on. */
disp[BC_FORL] = disp[BC_IFORL];
disp[BC_ITERL] = disp[BC_IITERL];
disp[BC_LOOP] = disp[BC_ILOOP];
+ disp[BC_FUNCF] = disp[BC_IFUNCF];
+ disp[BC_FUNCV] = disp[BC_IFUNCV];
+ GG->g.bc_cfunc_ext = GG->g.bc_cfunc_int = BCINS_AD(BC_FUNCC, 0, 0);
+ for (i = 0; i < GG_NUM_ASMFF; i++)
+ GG->bcff[i] = BCINS_AD(BC__MAX+i, 0, 0);
}
#if LJ_HASJIT
@@ -57,39 +66,50 @@ void lj_dispatch_update(global_State *g)
mode |= (G2J(g)->flags & JIT_F_ON) ? 1 : 0;
mode |= G2J(g)->state != LJ_TRACE_IDLE ? 6 : 0;
#endif
- mode |= (g->hookmask & HOOK_EVENTMASK) ? 2 : 0;
+ mode |= (g->hookmask & (LUA_MASKLINE|LUA_MASKCOUNT)) ? 2 : 0;
if (oldmode != mode) { /* Mode changed? */
- ASMFunction *disp = GG2DISP(G2GG(g));
- ASMFunction f_forl, f_iterl, f_loop;
+ ASMFunction *disp = G2GG(g)->dispatch;
+ ASMFunction f_forl, f_iterl, f_loop, f_funcf, f_funcv;
g->dispatchmode = mode;
if ((mode & 5) == 1) { /* Hotcount if JIT is on, but not when recording. */
f_forl = makeasmfunc(lj_bc_ofs[BC_FORL]);
f_iterl = makeasmfunc(lj_bc_ofs[BC_ITERL]);
f_loop = makeasmfunc(lj_bc_ofs[BC_LOOP]);
+ f_funcf = makeasmfunc(lj_bc_ofs[BC_FUNCF]);
+ f_funcv = makeasmfunc(lj_bc_ofs[BC_FUNCV]);
} else { /* Otherwise use the non-hotcounting instructions. */
- f_forl = disp[GG_DISP_STATIC+BC_IFORL];
- f_iterl = disp[GG_DISP_STATIC+BC_IITERL];
- f_loop = disp[GG_DISP_STATIC+BC_ILOOP];
+ f_forl = disp[GG_LEN_DDISP+BC_IFORL];
+ f_iterl = disp[GG_LEN_DDISP+BC_IITERL];
+ f_loop = disp[GG_LEN_DDISP+BC_ILOOP];
+ f_funcf = disp[GG_LEN_DDISP+BC_IFUNCF];
+ f_funcv = disp[GG_LEN_DDISP+BC_IFUNCV];
}
- /* Set static loop ins first (may be copied below). */
- disp[GG_DISP_STATIC+BC_FORL] = f_forl;
- disp[GG_DISP_STATIC+BC_ITERL] = f_iterl;
- disp[GG_DISP_STATIC+BC_LOOP] = f_loop;
+ /* Set static counting ins first (may be copied below). */
+ disp[GG_LEN_DDISP+BC_FORL] = f_forl;
+ disp[GG_LEN_DDISP+BC_ITERL] = f_iterl;
+ disp[GG_LEN_DDISP+BC_LOOP] = f_loop;
+ disp[GG_LEN_DDISP+BC_FUNCF] = f_funcf;
+ disp[GG_LEN_DDISP+BC_FUNCV] = f_funcv;
if ((oldmode & 6) != (mode & 6)) { /* Need to change whole table? */
if ((mode & 6) == 0) { /* No hooks and no recording? */
/* Copy static dispatch table to dynamic dispatch table. */
- memcpy(&disp[0], &disp[GG_DISP_STATIC], sizeof(ASMFunction)*BC__MAX);
+ memcpy(&disp[0], &disp[GG_LEN_DDISP], GG_LEN_SDISP*sizeof(ASMFunction));
} else {
/* The recording dispatch also checks for hooks. */
ASMFunction f = (mode & 6) == 6 ? lj_vm_record : lj_vm_hook;
uint32_t i;
- for (i = 0; i < BC__MAX; i++)
+ for (i = 0; i < BC_FUNCF; i++)
disp[i] = f;
+ /* NYI: call hooks for function headers. */
+ memcpy(&disp[BC_FUNCF], &disp[GG_LEN_DDISP+BC_FUNCF],
+ (GG_LEN_SDISP-BC_FUNCF)*sizeof(ASMFunction));
}
- } else if ((mode & 6) == 0) { /* Fix dynamic loop ins unless overriden. */
+ } else if ((mode & 6) == 0) { /* Set dynamic counting ins. */
disp[BC_FORL] = f_forl;
disp[BC_ITERL] = f_iterl;
disp[BC_LOOP] = f_loop;
+ disp[BC_FUNCF] = f_funcf;
+ disp[BC_FUNCV] = f_funcv;
}
#if LJ_HASJIT
if ((mode & 1) && !(oldmode & 1)) /* JIT off to on transition. */
@@ -186,14 +206,16 @@ int luaJIT_setmode(lua_State *L, int idx, int mode)
if ((mode & LUAJIT_MODE_ON)) {
if (idx != 0) {
cTValue *tv = idx > 0 ? L->base + (idx-1) : L->top + idx;
- if (tvislightud(tv) && lightudV(tv) != NULL)
+ if (tvislightud(tv))
g->wrapf = (lua_CFunction)lightudV(tv);
else
return 0; /* Failed. */
+ } else {
+ return 0; /* Failed. */
}
- g->wrapmode = 1;
+ g->bc_cfunc_ext = BCINS_AD(BC_FUNCCW, 0, 0);
} else {
- g->wrapmode = 0;
+ g->bc_cfunc_ext = BCINS_AD(BC_FUNCC, 0, 0);
}
break;
default:
diff --git a/src/lj_dispatch.h b/src/lj_dispatch.h
index bbbfa0be..865ee790 100644
--- a/src/lj_dispatch.h
+++ b/src/lj_dispatch.h
@@ -7,6 +7,7 @@
#define _LJ_DISPATCH_H
#include "lj_obj.h"
+#include "lj_bc.h"
#if LJ_HASJIT
#include "lj_jit.h"
#endif
@@ -21,6 +22,13 @@ typedef uint16_t HotCount;
#define HOTCOUNT_MIN_PENALTY 103
#define HOTCOUNT_MAX_PENALTY 60000
+/* This solves a circular dependency problem -- bump as needed. Sigh. */
+#define GG_NUM_ASMFF 62
+
+#define GG_LEN_DDISP (BC__MAX + GG_NUM_ASMFF)
+#define GG_LEN_SDISP BC_FUNCC
+#define GG_LEN_DISP (GG_LEN_DDISP + GG_LEN_SDISP)
+
/* Global state, main thread and extra fields are allocated together. */
typedef struct GG_State {
lua_State L; /* Main thread. */
@@ -29,22 +37,22 @@ typedef struct GG_State {
jit_State J; /* JIT state. */
HotCount hotcount[HOTCOUNT_SIZE]; /* Hot counters. */
#endif
- /* Instruction dispatch tables follow. */
+ ASMFunction dispatch[GG_LEN_DISP]; /* Instruction dispatch tables. */
+ BCIns bcff[GG_NUM_ASMFF]; /* Bytecode for ASM fast functions. */
} GG_State;
#define GG_OFS(field) ((int)offsetof(GG_State, field))
-#define GG_OFS_DISP ((int)sizeof(GG_State))
-#define GG2DISP(gg) ((ASMFunction *)((char *)(gg) + GG_OFS_DISP))
#define G2GG(gl) ((GG_State *)((char *)(gl) - GG_OFS(g)))
#define J2GG(j) ((GG_State *)((char *)(j) - GG_OFS(J)))
#define L2GG(L) (G2GG(G(L)))
#define J2G(J) (&J2GG(J)->g)
#define G2J(gl) (&G2GG(gl)->J)
#define L2J(L) (&L2GG(L)->J)
-#define GG_G2DISP (GG_OFS_DISP - GG_OFS(g))
-#define GG_DISP2G (GG_OFS(g) - GG_OFS_DISP)
-#define GG_DISP2J (GG_OFS(J) - GG_OFS_DISP)
-#define GG_DISP2HOT (GG_OFS(hotcount) - GG_OFS_DISP)
+#define GG_G2DISP (GG_OFS(dispatch) - GG_OFS(g))
+#define GG_DISP2G (GG_OFS(g) - GG_OFS(dispatch))
+#define GG_DISP2J (GG_OFS(J) - GG_OFS(dispatch))
+#define GG_DISP2HOT (GG_OFS(hotcount) - GG_OFS(dispatch))
+#define GG_DISP2STATIC (GG_LEN_DDISP*(int)sizeof(ASMFunction))
#define hotcount_get(gg, pc) \
(gg)->hotcount[(u32ptr(pc)>>2) & (HOTCOUNT_SIZE-1)]
diff --git a/src/lj_err.c b/src/lj_err.c
index 2b021d28..fdc06001 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -152,7 +152,7 @@ static const char *getobjname(GCproto *pt, const BCIns *ip, BCReg slot,
restart:
lname = getvarname(pt, proto_bcpos(pt, ip), slot);
if (lname != NULL) { *name = lname; return "local"; }
- while (--ip >= proto_bc(pt)) {
+ while (--ip > proto_bc(pt)) {
BCIns ins = *ip;
BCOp op = bc_op(ins);
BCReg ra = bc_a(ins);
@@ -222,11 +222,7 @@ void lj_err_pushloc(lua_State *L, GCproto *pt, BCPos pc)
if (name) {
const char *s = strdata(name);
MSize i, len = name->len;
- BCLine line;
- if (pc)
- line = proto_line(pt, pc-1);
- else
- line = pt->linedefined;
+ BCLine line = pc < pt->sizebc ? proto_line(pt, pc) : 0;
if (*s == '@') {
s++; len--;
for (i = len; i > 0; i--)
@@ -345,9 +341,10 @@ LUA_API int lua_getinfo(lua_State *L, const char *what, lua_Debug *ar)
switch (*what) {
case 'S':
if (isluafunc(fn)) {
- ar->source = strdata(proto_chunkname(funcproto(fn)));
- ar->linedefined = cast_int(funcproto(fn)->linedefined);
- ar->lastlinedefined = cast_int(funcproto(fn)->lastlinedefined);
+ GCproto *pt = funcproto(fn);
+ ar->source = strdata(proto_chunkname(pt));
+ ar->linedefined = (int)proto_line(pt, 0);
+ ar->lastlinedefined = (int)pt->lastlinedefined;
ar->what = (ar->linedefined == 0) ? "main" : "Lua";
} else {
ar->source = "=[C]";
@@ -380,7 +377,7 @@ LUA_API int lua_getinfo(lua_State *L, const char *what, lua_Debug *ar)
GCproto *pt = funcproto(fn);
BCLine *lineinfo = proto_lineinfo(pt);
MSize i, szl = pt->sizebc;
- for (i = 0; i < szl; i++)
+ for (i = 1; i < szl; i++)
setboolV(lj_tab_setint(L, t, lineinfo[i]), 1);
settabV(L, L->top, t);
} else {
diff --git a/src/lj_func.c b/src/lj_func.c
index 7d130176..3766b25e 100644
--- a/src/lj_func.c
+++ b/src/lj_func.c
@@ -101,8 +101,8 @@ GCfunc *lj_func_newC(lua_State *L, MSize nelems, GCtab *env)
fn->c.ffid = FF_C;
fn->c.nupvalues = cast_byte(nelems);
/* NOBARRIER: The GCfunc is new (marked white). */
+ setmref(fn->c.pc, &G(L)->bc_cfunc_ext);
setgcref(fn->c.env, obj2gco(env));
- fn->c.gate = G(L)->wrapmode ? lj_gate_cwrap : lj_gate_c;
return fn;
}
@@ -115,7 +115,6 @@ GCfunc *lj_func_newL(lua_State *L, GCproto *pt, GCtab *env)
/* NOBARRIER: Really a setgcref. But the GCfunc is new (marked white). */
setmref(fn->l.pc, proto_bc(pt));
setgcref(fn->l.env, obj2gco(env));
- fn->l.gate = (pt->flags & PROTO_IS_VARARG) ? lj_gate_lv : lj_gate_lf;
return fn;
}
diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c
index 3a4d5da1..f71b3081 100644
--- a/src/lj_gdbjit.c
+++ b/src/lj_gdbjit.c
@@ -705,10 +705,7 @@ void lj_gdbjit_addtrace(jit_State *J, Trace *T, TraceNo traceno)
ctx.szmcode = T->szmcode;
ctx.spadjp = CFRAME_SIZE + (MSize)(parent ? J->trace[parent]->spadjust : 0);
ctx.spadj = CFRAME_SIZE + T->spadjust;
- if (startpc >= proto_bc(pt))
- ctx.lineno = proto_line(pt,proto_bcpos(pt,startpc));
- else
- ctx.lineno = pt->linedefined;
+ ctx.lineno = proto_line(pt, proto_bcpos(pt, startpc));
ctx.filename = strdata(proto_chunkname(pt));
if (*ctx.filename == '@' || *ctx.filename == '=')
ctx.filename++;
diff --git a/src/lj_lib.c b/src/lj_lib.c
index de1c8646..0ba0ecb1 100644
--- a/src/lj_lib.c
+++ b/src/lj_lib.c
@@ -14,6 +14,8 @@
#include "lj_str.h"
#include "lj_tab.h"
#include "lj_func.h"
+#include "lj_bc.h"
+#include "lj_dispatch.h"
#include "lj_vm.h"
#include "lj_lib.h"
@@ -46,6 +48,7 @@ void lj_lib_register(lua_State *L, const char *libname,
GCtab *env = tabref(L->env);
GCfunc *ofn = NULL;
int ffid = *p++;
+ BCIns *bcff = &L2GG(L)->bcff[*p++];
GCtab *tab = lib_create_table(L, libname, *p++);
ptrdiff_t tpos = L->top - L->base;
@@ -68,10 +71,10 @@ void lj_lib_register(lua_State *L, const char *libname,
fn->c.ffid = (uint8_t)(ffid++);
name = (const char *)p;
p += len;
- if (tag != LIBINIT_CF) {
- fn->c.gate = makeasmfunc(p[0] + (p[1] << 8));
- p += 2;
- }
+ if (tag == LIBINIT_CF)
+ setmref(fn->c.pc, &G(L)->bc_cfunc_int);
+ else
+ setmref(fn->c.pc, bcff++);
if (tag == LIBINIT_ASM_)
fn->c.f = ofn->c.f; /* Copy handler from previous function. */
else
diff --git a/src/lj_lib.h b/src/lj_lib.h
index 44be96b9..fd2b025c 100644
--- a/src/lj_lib.h
+++ b/src/lj_lib.h
@@ -57,6 +57,19 @@ LJ_FUNC int lj_lib_checkopt(lua_State *L, int narg, int def, const char *lst);
#define lj_lib_checkfpu(L) UNUSED(L)
#endif
+/* Push internal function on the stack. */
+static LJ_AINLINE void lj_lib_pushcc(lua_State *L, lua_CFunction f,
+ int id, int n)
+{
+ GCfunc *fn;
+ lua_pushcclosure(L, f, n);
+ fn = funcV(L->top-1);
+ fn->c.ffid = (uint8_t)id;
+ setmref(fn->c.pc, &G(L)->bc_cfunc_int);
+}
+
+#define lj_lib_pushcf(L, fn, id) (lj_lib_pushcc(L, (fn), (id), 0))
+
/* Library function declarations. Scanned by buildvm. */
#define LJLIB_CF(name) static int lj_cf_##name(lua_State *L)
#define LJLIB_ASM(name) static int lj_ffh_##name(lua_State *L)
diff --git a/src/lj_obj.h b/src/lj_obj.h
index a6637954..d463cb2c 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -360,7 +360,6 @@ typedef struct GCproto {
uint16_t trace; /* Anchor for chain of root traces. */
/* ------ The following fields are for debugging/tracebacks only ------ */
GCRef chunkname; /* Name of the chunk this function was defined in. */
- BCLine linedefined; /* First line of the function definition. */
BCLine lastlinedefined; /* Last line of the function definition. */
MSize sizevarinfo; /* Size of local var info array. */
MRef varinfo; /* Names and extents of local variables. */
@@ -419,7 +418,7 @@ typedef struct GCupval {
/* Common header for functions. env should be at same offset in GCudata. */
#define GCfuncHeader \
GCHeader; uint8_t ffid; uint8_t nupvalues; \
- GCRef env; GCRef gclist; ASMFunction gate
+ GCRef env; GCRef gclist; MRef pc
typedef struct GCfuncC {
GCfuncHeader;
@@ -429,7 +428,6 @@ typedef struct GCfuncC {
typedef struct GCfuncL {
GCfuncHeader;
- MRef pc; /* Start PC (and GCproto reference). */
GCRef uvptr[1]; /* Array of _pointers_ to upvalue objects (GCupval). */
} GCfuncL;
@@ -558,7 +556,7 @@ typedef struct global_State {
uint8_t hookmask; /* Hook mask. */
uint8_t dispatchmode; /* Dispatch mode. */
uint8_t vmevmask; /* VM event mask. */
- uint8_t wrapmode; /* Wrap mode. */
+ uint8_t unused1;
GCRef mainthref; /* Link to main thread. */
TValue registrytv; /* Anchor for registry. */
TValue tmptv; /* Temporary TValue. */
@@ -569,6 +567,8 @@ typedef struct global_State {
lua_CFunction wrapf; /* Wrapper for C function calls. */
lua_CFunction panic; /* Called as a last resort for errors. */
volatile int32_t vmstate; /* VM state or current JIT code trace number. */
+ BCIns bc_cfunc_int; /* Bytecode for internal C function calls. */
+ BCIns bc_cfunc_ext; /* Bytecode for external C function calls. */
GCRef jit_L; /* Current JIT code lua_State or NULL. */
MRef jit_base; /* Current JIT code L->base. */
GCRef gcroot[GCROOT__MAX]; /* GC roots. */
@@ -584,6 +584,7 @@ typedef struct global_State {
/* Hook management. Hook event masks are defined in lua.h. */
#define HOOK_EVENTMASK 0x0f
#define HOOK_ACTIVE 0x10
+#define HOOK_ACTIVE_SHIFT 4
#define HOOK_VMEVENT 0x20
#define HOOK_GC 0x40
#define hook_active(g) ((g)->hookmask & HOOK_ACTIVE)
diff --git a/src/lj_parse.c b/src/lj_parse.c
index acc25519..3bef225a 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -1036,7 +1036,10 @@ static void fs_fixup_bc(FuncState *fs, GCproto *pt, BCIns *bc, BCLine *lineinfo)
setmref(pt->lineinfo, lineinfo);
pt->sizebc = n;
bc[n] = ~0u; /* Close potentially uninitialized gap between bc and kgc. */
- for (i = 0; i < n; i++) {
+ bc[0] = BCINS_AD((fs->flags & PROTO_IS_VARARG) ? BC_FUNCV : BC_FUNCF,
+ fs->framesize, 0);
+ lineinfo[0] = fs->linedefined;
+ for (i = 1; i < n; i++) {
bc[i] = base[i].ins;
lineinfo[i] = base[i].line;
}
@@ -1181,7 +1184,6 @@ static GCproto *fs_finish(LexState *ls, BCLine line)
pt->flags = fs->flags;
pt->numparams = fs->numparams;
pt->framesize = fs->framesize;
- pt->linedefined = fs->linedefined;
pt->lastlinedefined = line;
fs_fixup_bc(fs, pt, (BCIns *)((char *)pt + sizeof(GCproto)),
@@ -1416,29 +1418,30 @@ static void parse_chunk(LexState *ls);
/* Parse body of a function. */
static void parse_body(LexState *ls, ExpDesc *e, int needself, BCLine line)
{
- FuncState cfs, *fs = ls->fs;
+ FuncState fs, *pfs = ls->fs;
BCReg kidx;
BCLine lastline;
GCproto *pt;
- ptrdiff_t oldbase = fs->bcbase - ls->bcstack;
- fs_init(ls, &cfs);
- cfs.linedefined = line;
- cfs.numparams = (uint8_t)parse_params(ls, needself);
- cfs.bcbase = fs->bcbase + fs->pc;
- cfs.bclim = fs->bclim - fs->pc;
+ ptrdiff_t oldbase = pfs->bcbase - ls->bcstack;
+ fs_init(ls, &fs);
+ fs.linedefined = line;
+ fs.numparams = (uint8_t)parse_params(ls, needself);
+ fs.bcbase = pfs->bcbase + pfs->pc;
+ fs.bclim = pfs->bclim - pfs->pc;
+ bcemit_AD(&fs, BC_FUNCF, 0, 0); /* Placeholder. */
parse_chunk(ls);
lastline = ls->linenumber;
lex_match(ls, TK_end, TK_function, line);
pt = fs_finish(ls, lastline);
- fs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */
- fs->bclim = (BCPos)(ls->sizebcstack - oldbase);
+ pfs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */
+ pfs->bclim = (BCPos)(ls->sizebcstack - oldbase);
/* Store new prototype in the constant array of the parent. */
- kidx = const_gc(fs, obj2gco(pt), LJ_TPROTO);
- expr_init(e, VRELOCABLE, bcemit_AD(fs, BC_FNEW, 0, kidx));
- if (!(fs->flags & PROTO_HAS_FNEW)) {
- if (fs->flags & PROTO_HAS_RETURN)
- fs->flags |= PROTO_FIXUP_RETURN;
- fs->flags |= PROTO_HAS_FNEW;
+ kidx = const_gc(pfs, obj2gco(pt), LJ_TPROTO);
+ expr_init(e, VRELOCABLE, bcemit_AD(pfs, BC_FNEW, 0, kidx));
+ if (!(pfs->flags & PROTO_HAS_FNEW)) {
+ if (pfs->flags & PROTO_HAS_RETURN)
+ pfs->flags |= PROTO_FIXUP_RETURN;
+ pfs->flags |= PROTO_HAS_FNEW;
}
}
@@ -2227,6 +2230,7 @@ GCproto *lj_parse(LexState *ls)
fs.bcbase = NULL;
fs.bclim = 0;
fs.flags |= PROTO_IS_VARARG; /* Main chunk is always a vararg func. */
+ bcemit_AD(&fs, BC_FUNCV, 0, 0); /* Placeholder. */
lj_lex_next(ls); /* Read-ahead first token. */
parse_chunk(ls);
if (ls->token != TK_eof)
diff --git a/src/lj_record.c b/src/lj_record.c
index 49e3d3b5..2709ea01 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -1671,14 +1671,8 @@ static int rec_call(jit_State *J, BCReg func, ptrdiff_t cres, ptrdiff_t nargs)
GCproto *pt = funcproto(rd.fn);
if ((pt->flags & PROTO_NO_JIT))
lj_trace_err(J, LJ_TRERR_CJITOFF);
- if ((pt->flags & PROTO_IS_VARARG)) {
- if (rd.fn->l.gate != lj_gate_lv)
- lj_trace_err(J, LJ_TRERR_NYILNKF);
+ if ((pt->flags & PROTO_IS_VARARG))
lj_trace_err(J, LJ_TRERR_NYIVF);
- } else {
- if (rd.fn->l.gate != lj_gate_lf)
- lj_trace_err(J, LJ_TRERR_NYILNKF);
- }
if (cres == CALLRES_TAILCALL) {
ptrdiff_t i;
/* Tailcalls can form a loop, so count towards the loop unroll limit. */
diff --git a/src/lj_state.c b/src/lj_state.c
index 69f182ed..8f8be97b 100644
--- a/src/lj_state.c
+++ b/src/lj_state.c
@@ -37,8 +37,8 @@
** Calls to metamethods store their arguments beyond the current top
** without checking for the stack limit. This avoids stack resizes which
** would invalidate passed TValue pointers. The stack check is performed
-** later by the call gate. This can safely resize the stack or raise an
-** error. Thus we need some extra slots beyond the current stack limit.
+** later by the function header. This can safely resize the stack or raise
+** an error. Thus we need some extra slots beyond the current stack limit.
**
** Most metamethods need 4 slots above top (cont, mobj, arg1, arg2) plus
** one extra slot if mobj is not a function. Only lj_meta_tset needs 5
@@ -119,8 +119,6 @@ static void stack_init(lua_State *L1, lua_State *L)
/* -- State handling ------------------------------------------------------ */
-#define GG_SIZE (sizeof(GG_State)+(BC__MAX*2)*sizeof(ASMFunction))
-
/* Open parts that may cause memory-allocation errors. */
static TValue *cpluaopen(lua_State *L, lua_CFunction dummy, void *ud)
{
@@ -156,8 +154,8 @@ static void close_state(lua_State *L)
lj_mem_freevec(g, g->strhash, g->strmask+1, GCRef);
lj_str_freebuf(g, &g->tmpbuf);
lj_mem_freevec(g, L->stack, L->stacksize, TValue);
- lua_assert(g->gc.total == GG_SIZE);
- g->allocf(g->allocd, G2GG(g), GG_SIZE, 0);
+ lua_assert(g->gc.total == sizeof(GG_State));
+ g->allocf(g->allocd, G2GG(g), sizeof(GG_State), 0);
}
}
@@ -167,7 +165,7 @@ lua_State *lj_state_newstate(lua_Alloc f, void *ud)
LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
#endif
{
- GG_State *GG = cast(GG_State *, f(ud, NULL, 0, GG_SIZE));
+ GG_State *GG = cast(GG_State *, f(ud, NULL, 0, sizeof(GG_State)));
lua_State *L = &GG->L;
global_State *g = &GG->g;
if (GG == NULL || !checkptr32(GG)) return NULL;
@@ -190,7 +188,7 @@ LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
g->gc.state = GCSpause;
setgcref(g->gc.root, obj2gco(L));
g->gc.sweep = &g->gc.root;
- g->gc.total = GG_SIZE;
+ g->gc.total = sizeof(GG_State);
g->gc.pause = LUAI_GCPAUSE;
g->gc.stepmul = LUAI_GCMUL;
lj_dispatch_init((GG_State *)L);
diff --git a/src/lj_trace.c b/src/lj_trace.c
index 0bd32b1e..0a973d51 100644
--- a/src/lj_trace.c
+++ b/src/lj_trace.c
@@ -361,7 +361,7 @@ static void trace_start(jit_State *J)
setstrV(L, L->top++, lj_str_newlit(L, "start"));
setintV(L->top++, J->curtrace);
setfuncV(L, L->top++, J->fn);
- setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1);
+ setintV(L->top++, proto_bcpos(J->pt, J->pc));
if (J->parent) {
setintV(L->top++, J->parent);
setintV(L->top++, J->exitno);
@@ -444,7 +444,7 @@ static int trace_abort(jit_State *J)
setstrV(L, L->top++, lj_str_newlit(L, "abort"));
setintV(L->top++, J->curtrace);
setfuncV(L, L->top++, J->fn);
- setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1);
+ setintV(L->top++, proto_bcpos(J->pt, J->pc));
copyTV(L, L->top++, restorestack(L, errobj));
copyTV(L, L->top++, &J->errinfo);
);
@@ -478,7 +478,7 @@ static TValue *trace_state(lua_State *L, lua_CFunction dummy, void *ud)
lj_vmevent_send(L, RECORD,
setintV(L->top++, J->curtrace);
setfuncV(L, L->top++, J->fn);
- setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1);
+ setintV(L->top++, proto_bcpos(J->pt, J->pc));
setintV(L->top++, J->framedepth);
if (bcmode_mm(bc_op(*J->pc)) == MM_call) {
cTValue *o = &L->base[bc_a(*J->pc)];
@@ -555,8 +555,6 @@ void LJ_FASTCALL lj_trace_hot(jit_State *J, const BCIns *pc)
/* Only start a new trace if not recording or inside __gc call or vmevent. */
if (J->state == LJ_TRACE_IDLE &&
!(J2G(J)->hookmask & (HOOK_GC|HOOK_VMEVENT))) {
- lua_State *L = J->L;
- L->top = curr_topL(L); /* Only called from Lua and NRESULTS is not used. */
J->parent = 0; /* Root trace. */
J->exitno = 0;
J->pc = pc-1; /* The interpreter bytecode PC is offset by 1. */
diff --git a/src/lj_vm.h b/src/lj_vm.h
index b25f182a..46312bb8 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -44,12 +44,6 @@ LJ_ASMF void lj_vm_exp2(void);
LJ_ASMF void lj_vm_pow_sse(void);
LJ_ASMF void lj_vm_powi_sse(void);
-/* Call gates for functions. */
-LJ_ASMF void lj_gate_lf(void);
-LJ_ASMF void lj_gate_lv(void);
-LJ_ASMF void lj_gate_c(void);
-LJ_ASMF void lj_gate_cwrap(void);
-
/* Continuations for metamethods. */
LJ_ASMF void lj_cont_cat(void); /* Continue with concatenation. */
LJ_ASMF void lj_cont_ra(void); /* Store result in RA from instruction. */
diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
index 200f4cc9..db323dce 100644
--- a/src/msvcbuild.bat
+++ b/src/msvcbuild.bat
@@ -32,7 +32,7 @@ if exist buildvm.exe.manifest^
%LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe
buildvm -m peobj -o lj_vm.obj
-buildvm -m bcdef -o lj_bcdef.h
+buildvm -m bcdef -o lj_bcdef.h %ALL_LIB%
buildvm -m ffdef -o lj_ffdef.h %ALL_LIB%
buildvm -m libdef -o lj_libdef.h %ALL_LIB%
buildvm -m recdef -o lj_recdef.h %ALL_LIB%