summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-11-14 14:15:57 +0100
committerMike Pall <mike>2011-11-14 14:18:25 +0100
commit71d00a56dbab6c29c0346093dbe530d7b7608be4 (patch)
tree5e28e19b4d2f20168d5ee0e4fe500b1e2b233c1c /src
parente9eb4fdb4a08baaa2d9190187a6c38d5b3f8b091 (diff)
downloadluajit-71d00a56dbab6c29c0346093dbe530d7b7608be4.tar.gz
luajit-71d00a56dbab6c29c0346093dbe530d7b7608be4.tar.bz2
luajit-71d00a56dbab6c29c0346093dbe530d7b7608be4.zip
FFI: Add callback support (for x86/x64).
Diffstat (limited to 'src')
-rw-r--r--src/Makefile4
-rw-r--r--src/Makefile.dep43
-rw-r--r--src/buildvm.c1
-rw-r--r--src/buildvm_x64.h2528
-rw-r--r--src/buildvm_x64win.h2949
-rw-r--r--src/buildvm_x86.dasc136
-rw-r--r--src/buildvm_x86.h3205
-rw-r--r--src/lib_ffi.c59
-rw-r--r--src/lj_ccall.c9
-rw-r--r--src/lj_ccall.h6
-rw-r--r--src/lj_ccallback.c461
-rw-r--r--src/lj_ccallback.h25
-rw-r--r--src/lj_cconv.c8
-rw-r--r--src/lj_crecord.c9
-rw-r--r--src/lj_ctype.c9
-rw-r--r--src/lj_ctype.h22
-rw-r--r--src/lj_debug.c3
-rw-r--r--src/lj_def.h2
-rw-r--r--src/lj_err.c33
-rw-r--r--src/lj_errmsg.h6
-rw-r--r--src/lj_frame.h2
-rw-r--r--src/lj_meta.c2
-rw-r--r--src/lj_target_x86.h2
-rw-r--r--src/lj_vm.h2
-rw-r--r--src/ljamalg.c1
25 files changed, 5187 insertions, 4340 deletions
diff --git a/src/Makefile b/src/Makefile
index 30985003..d4f80332 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -377,8 +377,8 @@ LJCORE_O= lj_gc.o lj_err.o lj_char.o lj_bc.o lj_obj.o \
377 lj_opt_dce.o lj_opt_loop.o lj_opt_split.o \ 377 lj_opt_dce.o lj_opt_loop.o lj_opt_split.o \
378 lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \ 378 lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \
379 lj_asm.o lj_trace.o lj_gdbjit.o \ 379 lj_asm.o lj_trace.o lj_gdbjit.o \
380 lj_ctype.o lj_cdata.o lj_cconv.o lj_ccall.o lj_carith.o lj_clib.o \ 380 lj_ctype.o lj_cdata.o lj_cconv.o lj_ccall.o lj_ccallback.o \
381 lj_cparse.o \ 381 lj_carith.o lj_clib.o lj_cparse.o \
382 lj_lib.o lj_alloc.o lib_aux.o \ 382 lj_lib.o lj_alloc.o lib_aux.o \
383 $(LJLIB_O) lib_init.o 383 $(LJLIB_O) lib_init.o
384 384
diff --git a/src/Makefile.dep b/src/Makefile.dep
index 81bbed29..b9d0df47 100644
--- a/src/Makefile.dep
+++ b/src/Makefile.dep
@@ -1,6 +1,6 @@
1buildvm.o: buildvm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \ 1buildvm.o: buildvm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \
2 lj_obj.h lj_gc.h lj_bc.h lj_ir.h lj_ircall.h lj_jit.h lj_frame.h \ 2 lj_obj.h lj_gc.h lj_bc.h lj_ir.h lj_ircall.h lj_jit.h lj_frame.h \
3 lj_dispatch.h lj_ccall.h lj_ctype.h luajit.h \ 3 lj_dispatch.h lj_ctype.h lj_ccall.h luajit.h \
4 lj_traceerr.h 4 lj_traceerr.h
5buildvm_asm.o: buildvm_asm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \ 5buildvm_asm.o: buildvm_asm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \
6 lj_bc.h 6 lj_bc.h
@@ -23,7 +23,7 @@ lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
23lib_ffi.o: lib_ffi.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 23lib_ffi.o: lib_ffi.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
24 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h \ 24 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h \
25 lj_ctype.h lj_cparse.h lj_cdata.h lj_cconv.h lj_carith.h lj_ccall.h \ 25 lj_ctype.h lj_cparse.h lj_cdata.h lj_cconv.h lj_carith.h lj_ccall.h \
26 lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h 26 lj_ccallback.h lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h
27lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h 27lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h
28lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 28lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
29 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \ 29 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \
@@ -69,11 +69,16 @@ lj_carith.o: lj_carith.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
69 lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_meta.h lj_ctype.h lj_cconv.h \ 69 lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_meta.h lj_ctype.h lj_cconv.h \
70 lj_cdata.h lj_carith.h 70 lj_cdata.h lj_carith.h
71lj_ccall.o: lj_ccall.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 71lj_ccall.o: lj_ccall.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
72 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ctype.h lj_cconv.h lj_cdata.h \ 72 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \
73 lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \ 73 lj_cdata.h lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
74 lj_traceerr.h 74 lj_traceerr.h
75lj_ccallback.o: lj_ccallback.c lj_obj.h lua.h luaconf.h lj_def.h \
76 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_state.h lj_frame.h \
77 lj_bc.h lj_ctype.h lj_cconv.h lj_ccall.h lj_ccallback.h lj_target.h \
78 lj_target_*.h lj_vm.h
75lj_cconv.o: lj_cconv.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 79lj_cconv.o: lj_cconv.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
76 lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h 80 lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h \
81 lj_ccallback.h
77lj_cdata.o: lj_cdata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 82lj_cdata.o: lj_cdata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
78 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \ 83 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \
79 lj_cdata.h 84 lj_cdata.h
@@ -86,11 +91,11 @@ lj_cparse.o: lj_cparse.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
86 lj_bc.h lj_vm.h lj_char.h 91 lj_bc.h lj_vm.h lj_char.h
87lj_crecord.o: lj_crecord.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 92lj_crecord.o: lj_crecord.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
88 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ctype.h \ 93 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ctype.h \
89 lj_gc.h lj_cparse.h lj_cconv.h lj_clib.h lj_ccall.h lj_ir.h lj_jit.h \ 94 lj_gc.h lj_cdata.h lj_cparse.h lj_cconv.h lj_clib.h lj_ccall.h lj_ir.h \
90 lj_ircall.h lj_iropt.h lj_trace.h lj_dispatch.h lj_traceerr.h \ 95 lj_jit.h lj_ircall.h lj_iropt.h lj_trace.h lj_dispatch.h lj_traceerr.h \
91 lj_record.h lj_ffrecord.h lj_crecord.h 96 lj_record.h lj_ffrecord.h lj_crecord.h
92lj_ctype.o: lj_ctype.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 97lj_ctype.o: lj_ctype.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
93 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h 98 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_ccallback.h
94lj_debug.o: lj_debug.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 99lj_debug.o: lj_debug.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
95 lj_err.h lj_errmsg.h lj_debug.h lj_str.h lj_tab.h lj_state.h lj_frame.h \ 100 lj_err.h lj_errmsg.h lj_debug.h lj_str.h lj_tab.h lj_state.h lj_frame.h \
96 lj_bc.h lj_jit.h lj_ir.h 101 lj_bc.h lj_jit.h lj_ir.h
@@ -188,15 +193,15 @@ ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \
188 lj_obj.c lj_str.c lj_tab.c lj_func.c lj_udata.c lj_meta.c lj_debug.c \ 193 lj_obj.c lj_str.c lj_tab.c lj_func.c lj_udata.c lj_meta.c lj_debug.c \
189 lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c luajit.h lj_vmevent.c \ 194 lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c luajit.h lj_vmevent.c \
190 lj_vmevent.h lj_vmmath.c lj_api.c lj_bcdump.h lj_parse.h lj_lex.c \ 195 lj_vmevent.h lj_vmmath.c lj_api.c lj_bcdump.h lj_parse.h lj_lex.c \
191 lualib.h lj_parse.c lj_bcread.c lj_bcwrite.c lj_ctype.c lj_cdata.c \ 196 lualib.h lj_parse.c lj_bcread.c lj_bcwrite.c lj_ctype.c lj_ccallback.h \
192 lj_cconv.h lj_cconv.c lj_ccall.c lj_ccall.h lj_carith.c lj_carith.h \ 197 lj_cdata.c lj_cconv.h lj_cconv.c lj_ccall.c lj_ccall.h lj_ccallback.c \
193 lj_clib.c lj_clib.h lj_cparse.c lj_cparse.h lj_lib.c lj_lib.h lj_ir.c \ 198 lj_target.h lj_target_*.h lj_carith.c lj_carith.h lj_clib.c lj_clib.h \
194 lj_ircall.h lj_iropt.h lj_opt_mem.c lj_opt_fold.c lj_folddef.h \ 199 lj_cparse.c lj_cparse.h lj_lib.c lj_lib.h lj_ir.c lj_ircall.h lj_iropt.h \
195 lj_opt_narrow.c lj_opt_dce.c lj_opt_loop.c lj_snap.h lj_opt_split.c \ 200 lj_opt_mem.c lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c \
196 lj_mcode.c lj_mcode.h lj_snap.c lj_target.h lj_target_*.h lj_record.c \ 201 lj_opt_loop.c lj_snap.h lj_opt_split.c lj_mcode.c lj_mcode.h lj_snap.c \
197 lj_record.h lj_ffrecord.h lj_crecord.c lj_crecord.h lj_ffrecord.c \ 202 lj_record.c lj_record.h lj_ffrecord.h lj_crecord.c lj_crecord.h \
198 lj_recdef.h lj_asm.c lj_asm.h lj_emit_*.h lj_asm_*.h lj_trace.c \ 203 lj_ffrecord.c lj_recdef.h lj_asm.c lj_asm.h lj_emit_*.h lj_asm_*.h \
199 lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c lj_libdef.h \ 204 lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c \
200 lib_math.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c \ 205 lj_libdef.h lib_math.c lib_string.c lib_table.c lib_io.c lib_os.c \
201 lib_debug.c lib_bit.c lib_jit.c lib_ffi.c lib_init.c 206 lib_package.c lib_debug.c lib_bit.c lib_jit.c lib_ffi.c lib_init.c
202luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h lj_arch.h 207luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h lj_arch.h
diff --git a/src/buildvm.c b/src/buildvm.c
index 72c2dd83..3e5d7b1c 100644
--- a/src/buildvm.c
+++ b/src/buildvm.c
@@ -23,6 +23,7 @@
23#include "lj_frame.h" 23#include "lj_frame.h"
24#include "lj_dispatch.h" 24#include "lj_dispatch.h"
25#if LJ_HASFFI 25#if LJ_HASFFI
26#include "lj_ctype.h"
26#include "lj_ccall.h" 27#include "lj_ccall.h"
27#endif 28#endif
28#include "luajit.h" 29#include "luajit.h"
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 06d6b038..55b22b2e 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[16165] = { 15static const unsigned char build_actionlist[16378] = {
16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141, 16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4, 17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133, 18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133,
@@ -52,426 +52,427 @@ static const unsigned char build_actionlist[16165] = {
52 68,137,124,36,16,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,209, 52 68,137,124,36,16,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,209,
53 133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,227, 53 133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,227,
54 252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,72,99, 54 252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,72,99,
55 77,252,240,133,201,15,132,244,247,255,76,141,61,245,76,1,252,249,68,139,122, 55 77,252,240,255,131,252,249,1,15,134,244,247,255,76,141,61,245,76,1,252,249,
56 252,248,69,139,191,233,69,139,191,233,252,255,225,248,1,41,213,193,252,237, 56 255,68,139,122,252,248,69,139,191,233,69,139,191,233,252,255,225,255,248,
57 3,141,69,252,255,252,233,244,32,248,33,15,182,75,252,255,131,252,237,16,141, 57 1,15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248,
58 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,139,124,36,24,137, 58 34,15,182,75,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,
59 151,233,137,202,72,139,8,72,137,77,0,137,252,238,252,233,244,35,248,36,137, 59 247,217,193,252,233,3,139,124,36,24,137,151,233,137,202,72,139,8,72,137,77,
60 4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244,247,65,141, 60 0,137,252,238,252,233,244,36,248,37,137,4,36,199,68,36,4,237,72,141,4,36,
61 142,233,137,41,199,65,4,237,255,137,205,252,233,244,248,248,37,15,182,67, 61 128,123,252,252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137,
62 252,254,255,199,68,36,4,237,137,4,36,255,252,242,15,42,192,252,242,15,17, 62 205,252,233,244,248,248,38,15,182,67,252,254,255,199,68,36,4,237,137,4,36,
63 4,36,255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141,4,194,248, 63 255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,4,36,252,233,244,247,
64 1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252, 64 248,39,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,
65 238,72,137,194,137,252,253,137,92,36,28,232,251,1,2,139,149,233,133,192,15, 65 248,2,139,124,36,24,137,151,233,137,252,238,72,137,194,137,252,253,137,92,
66 132,244,249,248,34,15,182,75,252,253,72,139,40,72,137,44,202,139,3,15,182, 66 36,28,232,251,1,2,139,149,233,133,192,15,132,244,249,248,35,15,182,75,252,
67 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233, 67 253,72,139,40,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
68 137,89,252,244,141,153,233,41,211,139,105,252,248,184,237,252,233,244,30, 68 16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,141,153,233,41,
69 248,39,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244, 69 211,139,105,252,248,184,237,252,233,244,30,248,40,137,4,36,199,68,36,4,237,
70 247,255,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,40, 70 72,141,4,36,128,123,252,252,235,15,133,244,247,255,65,141,142,233,137,41,
71 15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,41,15,182,67,252,254, 71 199,65,4,237,137,205,252,233,244,248,248,41,15,182,67,252,254,255,72,141,
72 141,4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,137, 72 4,36,252,233,244,247,248,42,15,182,67,252,254,141,4,194,248,1,15,182,107,
73 151,233,137,252,238,72,137,194,137,252,253,137,92,36,28,232,251,1,3,139,149, 73 252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252,238,72,137,
74 233,133,192,15,132,244,249,15,182,75,252,253,72,139,44,202,72,137,40,248, 74 194,137,252,253,137,92,36,28,232,251,1,3,139,149,233,133,192,15,132,244,249,
75 42,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 75 15,182,75,252,253,72,139,44,202,72,137,40,248,43,139,3,15,182,204,15,182,
76 248,3,139,141,233,137,89,252,244,15,182,67,252,253,72,139,44,194,72,137,105, 76 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,
77 16,141,153,233,41,211,139,105,252,248,184,237,252,233,244,30,248,43,139,108, 77 244,15,182,67,252,253,72,139,44,194,72,137,105,16,141,153,233,41,211,139,
78 36,24,137,149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,137, 78 105,252,248,184,237,252,233,244,30,248,44,139,108,36,24,137,149,233,141,52,
79 92,36,28,232,251,1,4,248,3,139,149,233,255,131,252,248,1,15,135,244,44,248, 79 202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,28,232,251,1,4,248,
80 4,141,91,4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,248, 80 3,139,149,233,255,131,252,248,1,15,135,244,45,248,4,141,91,4,15,130,244,252,
81 6,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 81 248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15,182,
82 248,45,131,195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129, 82 232,131,195,4,193,232,16,65,252,255,36,252,238,248,46,131,195,4,129,120,253,
83 120,253,4,239,252,233,244,4,248,47,131,252,235,4,137,206,137,252,233,139, 83 4,239,15,130,244,5,252,233,244,6,248,47,129,120,253,4,239,252,233,244,4,248,
84 108,36,24,137,149,233,255,137,194,137,252,239,137,92,36,28,232,251,1,5,252, 84 48,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255,137,194,
85 233,244,3,248,48,255,131,252,235,4,139,108,36,24,137,149,233,137,252,239, 85 137,252,239,137,92,36,28,232,251,1,5,252,233,244,3,248,49,255,131,252,235,
86 139,115,252,252,137,92,36,28,232,251,1,6,252,233,244,3,255,248,49,255,15, 86 4,139,108,36,24,137,149,233,137,252,239,139,115,252,252,137,92,36,28,232,
87 182,107,252,255,255,248,50,65,141,4,199,252,233,244,247,248,51,255,248,52, 87 251,1,6,252,233,244,3,255,248,50,255,15,182,107,252,255,255,248,51,65,141,
88 65,141,4,199,141,44,252,234,149,252,233,244,248,248,53,141,4,194,137,197, 88 4,199,252,233,244,247,248,52,255,248,53,65,141,4,199,141,44,252,234,149,252,
89 252,233,244,248,248,54,255,248,55,141,4,194,248,1,141,44,252,234,248,2,141, 89 233,244,248,248,54,141,4,194,137,197,252,233,244,248,248,55,255,248,56,141,
90 12,202,68,15,182,67,252,252,137,206,137,193,139,124,36,24,137,151,233,137, 90 4,194,248,1,141,44,252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,
91 252,234,137,252,253,137,92,36,28,232,251,1,7,139,149,233,133,192,15,132,244, 91 137,193,139,124,36,24,137,151,233,137,252,234,137,252,253,137,92,36,28,232,
92 42,248,44,137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,28, 92 251,1,7,139,149,233,133,192,15,132,244,43,248,45,137,193,41,208,137,89,252,
93 248,56,139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232, 93 244,141,152,233,184,237,252,233,244,28,248,57,139,108,36,24,137,149,233,141,
94 251,1,8,139,149,233,255,133,192,15,133,244,44,15,183,67,252,254,139,60,194, 94 52,194,137,252,239,137,92,36,28,232,251,1,8,139,149,233,255,133,192,15,133,
95 252,233,244,57,255,252,233,244,44,255,248,58,141,76,202,8,248,29,137,76,36, 95 244,45,15,183,67,252,254,139,60,194,252,233,244,58,255,252,233,244,45,255,
96 4,137,4,36,131,252,233,8,139,108,36,24,137,149,233,137,206,141,20,193,137, 96 248,59,141,76,202,8,248,29,137,76,36,4,137,4,36,131,252,233,8,139,108,36,
97 252,239,137,92,36,28,232,251,1,9,139,149,233,139,76,36,4,139,4,36,139,105, 97 24,137,149,233,137,206,141,20,193,137,252,239,137,92,36,28,232,251,1,9,139,
98 252,248,131,192,1,65,57,215,15,132,244,59,137,202,137,90,252,252,139,157, 98 149,233,139,76,36,4,139,4,36,139,105,252,248,131,192,1,65,57,215,15,132,244,
99 233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248, 99 60,137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,
100 60,139,108,36,24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,10, 100 195,4,65,252,255,36,252,238,248,61,139,108,36,24,137,149,233,137,206,137,
101 139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,164, 101 252,239,137,92,36,28,232,251,1,10,139,149,233,139,67,252,252,15,182,204,15,
102 253,252,238,233,248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253, 102 182,232,193,232,16,65,252,255,164,253,252,238,233,248,62,129,252,248,239,
103 239,15,131,244,62,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106, 103 15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,137,
104 252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,193,8,72,139,41,72, 104 68,36,4,137,106,252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,
105 137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,4,252,233,244,63,248, 105 137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,
106 64,129,252,248,239,15,130,244,62,139,106,4,137,252,233,193,252,249,15,131, 106 1,248,2,139,68,36,4,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139,
107 252,249,252,254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255, 107 106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237,
108 15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233, 108 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,
109 139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,184, 109 2,139,106,252,248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,
110 237,252,233,244,2,248,66,129,252,248,239,15,130,244,62,139,106,4,139,90,252, 110 66,252,248,252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248,
111 252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252, 111 239,15,130,244,63,139,106,4,139,90,252,252,129,252,253,239,15,133,244,252,
112 237,199,66,252,252,237,255,15,132,244,65,65,139,134,233,199,66,252,252,237, 112 248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,
113 137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185, 113 244,66,65,139,134,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,
114 233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201, 114 233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,
115 15,133,244,3,255,252,233,244,65,248,5,139,105,4,129,252,253,239,15,132,244, 115 15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66,
116 65,139,1,137,106,252,252,137,66,252,248,252,233,244,65,248,6,129,252,253, 116 248,5,139,105,4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66,
117 239,15,132,244,1,129,252,253,239,15,135,244,254,129,252,253,239,15,134,244, 117 252,248,252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,
118 253,189,237,252,233,244,254,248,7,255,189,237,248,8,252,247,213,65,139,172, 118 15,135,244,254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248,
119 253,174,233,252,233,244,2,248,67,129,252,248,239,15,130,244,62,129,122,253, 119 7,255,189,237,248,8,252,247,213,65,139,172,253,174,233,252,233,244,2,248,
120 4,239,15,133,244,62,139,42,131,189,233,0,15,133,244,62,129,122,253,12,239, 120 68,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131,
121 15,133,244,62,139,66,8,137,133,233,139,90,252,252,199,66,252,252,237,255, 121 189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133,
122 137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,65,139, 122 233,139,90,252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233,
123 134,233,65,137,174,233,137,133,233,248,1,252,233,244,65,248,68,129,252,248, 123 235,15,132,244,247,128,165,233,235,65,139,134,233,65,137,174,233,137,133,
124 239,15,130,244,62,129,122,253,4,239,15,133,244,62,137,213,139,50,141,82,8, 124 233,248,1,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,
125 139,124,36,24,232,251,1,11,137,252,234,72,139,40,139,90,252,252,72,137,106, 125 4,239,15,133,244,63,137,213,139,50,141,82,8,139,124,36,24,232,251,1,11,137,
126 252,248,252,233,244,65,248,69,255,129,252,248,239,15,133,244,62,129,122,253, 126 252,234,72,139,40,139,90,252,252,72,137,106,252,248,252,233,244,66,248,70,
127 4,239,255,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255,15, 127 255,129,252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139,
128 131,244,62,255,252,242,15,16,2,252,233,244,71,255,221,2,252,233,244,72,255, 128 42,252,233,244,71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16,
129 248,73,129,252,248,239,15,130,244,62,139,90,252,252,129,122,253,4,239,15, 129 2,252,233,244,72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130,
130 133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,65, 130 244,63,139,90,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,
131 248,3,129,122,253,4,239,15,135,244,62,65,131,190,233,0,15,133,244,62,65,139, 131 252,252,237,137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135,
132 174,233,65,59,174,233,255,15,130,244,247,232,244,74,248,1,139,108,36,24,137, 132 244,63,65,131,190,233,0,15,133,244,63,65,139,174,233,65,59,174,233,255,15,
133 149,233,137,92,36,28,137,214,137,252,239,255,232,251,1,12,255,232,251,1,13, 133 130,244,247,232,244,75,248,1,139,108,36,24,137,149,233,137,92,36,28,137,214,
134 255,139,149,233,252,233,244,2,248,75,129,252,248,239,15,130,244,62,15,132, 134 137,252,239,255,232,251,1,12,255,232,251,1,13,255,139,149,233,252,233,244,
135 244,248,248,1,129,122,253,4,239,15,133,244,62,139,108,36,24,137,149,233,137, 135 2,248,76,129,252,248,239,15,130,244,63,15,132,244,248,248,1,129,122,253,4,
136 149,233,139,90,252,252,139,50,141,82,8,137,252,239,137,92,36,28,232,251,1, 136 239,15,133,244,63,139,108,36,24,137,149,233,137,149,233,139,90,252,252,139,
137 14,139,149,233,133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106, 137 50,141,82,8,137,252,239,137,92,36,28,232,251,1,14,139,149,233,133,192,15,
138 252,248,72,137,2,248,76,184,237,255,252,233,244,77,248,2,199,66,12,237,252, 138 132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77,
139 233,244,1,248,3,199,66,252,252,237,252,233,244,65,248,78,129,252,248,239, 139 184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66,
140 15,130,244,62,139,42,129,122,253,4,239,15,133,244,62,255,131,189,233,0,15, 140 252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139,42,129,
141 133,244,62,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252, 141 122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139,106,252,
142 237,137,66,252,248,199,66,12,237,184,237,252,233,244,77,248,79,129,252,248, 142 248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,199,66,12,
143 239,15,130,244,62,129,122,253,4,239,15,133,244,62,129,122,253,12,239,255, 143 237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63,129,122,253,
144 139,90,252,252,255,139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255, 144 4,239,15,133,244,63,129,122,253,12,239,255,139,90,252,252,255,139,66,8,131,
145 252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252, 145 192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,
146 242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248, 146 237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,
147 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,80,72,139,40,72,137, 147 252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,
148 42,252,233,244,76,248,2,131,189,233,0,15,132,244,80,137,252,239,137,213,137, 148 120,253,4,239,15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131,
149 198,232,251,1,15,137,252,234,133,192,15,133,244,1,248,80,184,237,252,233, 149 189,233,0,15,132,244,81,137,252,239,137,213,137,198,232,251,1,15,137,252,
150 244,77,248,81,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252, 150 234,133,192,15,133,244,1,248,81,184,237,252,233,244,78,248,82,255,139,106,
151 237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242, 151 252,248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,255,
152 15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,77,248,82,129, 152 199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,
153 252,248,239,15,130,244,62,141,74,8,131,232,1,187,237,248,1,65,15,182,174, 153 238,221,90,8,255,184,237,252,233,244,78,248,83,129,252,248,239,15,130,244,
154 233,193,252,237,235,131,229,1,1,252,235,252,233,244,28,248,83,129,252,248, 154 63,141,74,8,131,232,1,187,237,248,1,65,15,182,174,233,193,252,237,235,131,
155 239,15,130,244,62,129,122,253,12,239,15,133,244,62,255,139,106,4,137,106, 155 229,1,1,252,235,252,233,244,28,248,84,129,252,248,239,15,130,244,63,129,122,
156 12,199,66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,187, 156 253,12,239,15,133,244,63,255,139,106,4,137,106,12,199,66,4,237,139,42,139,
157 237,252,233,244,1,248,84,129,252,248,239,15,130,244,62,139,42,139,90,252, 157 90,8,137,106,8,137,26,141,74,16,131,232,2,187,237,252,233,244,1,248,85,129,
158 252,137,92,36,28,137,44,36,129,122,253,4,239,15,133,244,62,72,131,189,233, 158 252,248,239,15,130,244,63,139,42,139,90,252,252,137,92,36,28,137,44,36,129,
159 0,15,133,244,62,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247, 159 122,253,4,239,15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235,
160 255,59,141,233,15,132,244,62,248,1,141,92,193,252,240,59,157,233,15,135,244, 160 15,135,244,63,139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248,
161 62,137,157,233,139,108,36,24,137,149,233,131,194,8,137,149,233,141,108,194, 161 1,141,92,193,252,240,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137,
162 232,72,41,221,57,203,15,132,244,249,248,2,72,139,4,43,72,137,67,252,248,131, 162 149,233,131,194,8,137,149,233,141,108,194,232,72,41,221,57,203,15,132,244,
163 252,235,8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,25,65,199,134, 163 249,248,2,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,
164 233,237,255,139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244, 164 248,3,137,206,139,60,36,232,244,25,65,199,134,233,237,255,139,108,36,24,139,
165 254,248,4,139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15, 165 28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,
166 132,244,252,141,4,26,193,252,235,3,59,133,233,15,135,244,255,137,213,72,41, 166 187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,
167 205,248,5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6, 167 235,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,
168 141,67,2,199,66,252,252,237,248,7,139,92,36,28,137,68,36,4,72,199,193,252, 168 41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,
169 248,252,255,252,255,252,255,252,247,195,237,255,15,132,244,13,252,233,244, 169 248,7,139,92,36,28,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,
170 14,248,8,199,66,252,252,237,139,139,233,131,252,233,8,137,139,233,72,139, 170 252,247,195,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,
171 1,72,137,2,184,237,252,233,244,7,248,9,139,12,36,68,137,185,233,137,222,137, 171 139,139,233,131,252,233,8,137,139,233,72,139,1,72,137,2,184,237,252,233,244,
172 252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,85,139,106,252, 172 7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,28,36,
173 248,139,173,233,139,90,252,252,137,92,36,28,137,44,36,72,131,189,233,0,15, 173 139,149,233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,90,252,252,
174 133,244,62,255,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247,59, 174 137,92,36,28,137,44,36,72,131,189,233,0,15,133,244,63,255,128,189,233,235,
175 141,233,15,132,244,62,248,1,141,92,193,252,248,59,157,233,15,135,244,62,137, 175 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141,
176 157,233,139,108,36,24,137,149,233,137,149,233,141,108,194,252,240,72,41,221, 176 92,193,252,248,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137,149,
177 57,203,15,132,244,249,248,2,255,72,139,4,43,72,137,67,252,248,131,252,235, 177 233,137,149,233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,
178 8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,25,65,199,134,233,237, 178 255,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,
179 139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4, 179 137,206,139,60,36,232,244,25,65,199,134,233,237,139,108,36,24,139,28,36,139,
180 139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252, 180 149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,
181 141,4,26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248, 181 139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,
182 5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67, 182 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,
183 1,248,7,139,92,36,28,137,68,36,4,49,201,252,247,195,237,15,132,244,13,252, 183 8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,28,137,68,36,
184 233,244,14,248,8,137,222,137,252,239,232,251,1,16,248,9,139,12,36,68,137, 184 4,49,201,252,247,195,237,15,132,244,13,252,233,244,14,248,8,137,222,137,252,
185 185,233,137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,233,244, 185 239,232,251,1,16,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,
186 4,248,86,139,108,36,24,72,252,247,133,233,237,15,132,244,62,255,137,149,233, 186 1,0,139,28,36,139,149,233,252,233,244,4,248,87,139,108,36,24,72,252,247,133,
187 141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233, 187 233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,133,233,49,192,
188 252,233,244,16,255,248,70,255,248,72,139,90,252,252,221,90,252,248,252,233, 188 72,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71,255,248,73,139,
189 244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4,239,15, 189 90,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252,248,239,15,130,
190 133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136,244,247, 190 244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252,253,0,15,137,244,
191 248,88,248,70,139,90,252,252,199,66,252,252,237,137,106,252,248,252,233,244, 191 71,252,247,221,15,136,244,247,248,89,248,71,139,90,252,252,199,66,252,252,
192 65,248,1,139,90,252,252,199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0, 192 237,137,106,252,248,252,233,244,66,248,1,139,90,252,252,199,66,252,252,0,
193 252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131,244,62,255, 193 0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15,135,244,63,255,129,
194 252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,71,139,90, 194 122,253,4,239,15,131,244,63,255,252,242,15,16,2,72,184,237,237,102,72,15,
195 252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,71,248,72,139,90,252, 195 110,200,15,84,193,248,72,139,90,252,252,252,242,15,17,66,252,248,255,221,
196 252,221,90,252,248,255,248,65,184,237,248,77,137,68,36,4,248,63,252,247,195, 196 2,217,225,248,72,248,73,139,90,252,252,221,90,252,248,255,248,66,184,237,
197 237,15,133,244,253,248,5,56,67,252,255,15,135,244,252,15,182,75,252,253,72, 197 248,78,137,68,36,4,248,64,252,247,195,237,15,133,244,253,248,5,56,67,252,
198 252,247,209,141,20,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 198 255,15,135,244,252,15,182,75,252,253,72,252,247,209,141,20,202,139,3,15,182,
199 252,255,36,252,238,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248, 199 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,199,68,194,
200 7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,248,89,255,129, 200 252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,
201 122,253,4,239,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255, 201 255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,15,133,244,247,139,
202 252,242,15,16,2,232,244,90,255,252,242,15,45,232,129,252,253,0,0,0,128,15, 202 42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,2,232,244,91,255,
203 133,244,70,252,242,15,42,205,102,15,46,193,15,138,244,71,15,132,244,70,255, 203 252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,242,15,42,205,102,
204 221,2,232,244,90,255,248,91,255,252,242,15,16,2,232,244,92,255,221,2,232, 204 15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,91,255,248,92,255,
205 244,92,255,248,93,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 205 252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239,
206 244,62,252,242,15,81,2,252,233,244,71,255,248,93,129,252,248,239,15,130,244, 206 15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244,
207 62,129,122,253,4,239,15,131,244,62,221,2,217,252,250,252,233,244,72,255,248, 207 72,255,248,94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
208 94,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252, 208 63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248,239,15,130,244,
209 237,221,2,217,252,241,252,233,244,72,248,95,129,252,248,239,15,130,244,62, 209 63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252,241,252,233,
210 129,122,253,4,239,15,131,244,62,217,252,236,221,2,217,252,241,252,233,244, 210 244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
211 72,248,96,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15,131,244, 211 63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252,248,239,255,
212 62,221,2,232,244,97,252,233,244,72,248,98,129,252,248,239,15,130,244,62,129, 212 15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244,
213 122,253,4,239,15,131,244,62,221,2,217,252,254,252,233,244,72,248,99,129,252, 213 73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
214 248,239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,255, 214 2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15,130,244,63,129,
215 252,233,244,72,248,100,129,252,248,239,15,130,244,62,129,122,253,4,239,15, 215 122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244,73,248,101,129,
216 131,244,62,221,2,217,252,242,221,216,252,233,244,72,248,101,129,252,248,239, 216 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242,
217 15,130,244,62,255,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217, 217 221,216,252,233,244,73,248,102,129,252,248,239,15,130,244,63,255,129,122,
218 232,222,225,217,252,250,217,252,243,252,233,244,72,248,102,129,252,248,239, 218 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,
219 15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,232, 219 217,252,243,252,233,244,73,248,103,129,252,248,239,15,130,244,63,129,122,
220 222,225,217,252,250,217,201,217,252,243,252,233,244,72,248,103,129,252,248, 220 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,
221 239,15,130,244,62,129,122,253,4,239,15,131,244,62,255,221,2,217,232,217,252, 221 217,201,217,252,243,252,233,244,73,248,104,129,252,248,239,15,130,244,63,
222 243,252,233,244,72,255,248,104,129,252,248,239,15,130,244,62,129,122,253, 222 129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243,252,233,244,
223 4,239,15,131,244,62,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234, 223 73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
224 252,233,244,71,255,248,105,129,252,248,239,15,130,244,62,129,122,253,4,239, 224 63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72,255,
225 15,131,244,62,252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233, 225 248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,
226 244,71,255,248,106,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 226 242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,255,248,107,
227 244,62,252,242,15,16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,71, 227 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,
228 248,107,255,248,108,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 228 16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,72,248,108,255,248,
229 244,62,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244, 229 109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
230 71,255,248,108,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 230 15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,248,109,
231 62,221,2,139,106,252,248,220,141,233,252,233,244,72,255,248,109,129,252,248, 231 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,139,106,
232 239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131, 232 252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,15,130,244,
233 244,62,221,2,221,66,8,217,252,243,252,233,244,72,248,110,129,252,248,239, 233 63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,
234 15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,255,15,131, 234 221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,244,63,
235 244,62,221,66,8,221,2,217,252,253,221,217,252,233,244,72,248,111,129,252, 235 129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,63,221,
236 248,239,15,130,244,62,139,106,4,129,252,253,239,15,131,244,62,139,90,252, 236 66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,239,15,
237 252,139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252, 237 130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,139,2,137,
238 255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0, 238 106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,
239 32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255, 239 249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,
240 137,44,36,219,4,36,255,139,106,252,252,129,229,252,255,252,255,15,128,129, 240 250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,44,36,219,4,
241 205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184, 241 36,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,
242 237,252,233,244,77,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252, 242 137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
243 233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205, 243 244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
244 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90, 244 248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,
245 216,12,36,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233, 245 193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90,216,12,36,221,
246 244,1,255,248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 246 90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,
247 244,62,252,242,15,16,2,255,248,112,129,252,248,239,15,130,244,62,129,122, 247 113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
248 253,4,239,15,131,244,62,221,2,255,139,106,4,139,90,252,252,209,229,129,252, 248 15,16,2,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
249 253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,113,252,242,15,92, 249 244,63,221,2,255,139,106,4,139,90,252,252,209,229,129,252,253,0,0,224,252,
250 224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,113, 250 255,15,132,244,250,255,15,40,224,232,244,114,252,242,15,92,224,248,1,252,
251 220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232, 251 242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,114,220,252,233,
252 15,136,244,249,248,2,184,237,252,233,244,77,248,3,129,252,245,0,0,0,128,137, 252 248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,
253 106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217, 253 249,248,2,184,237,252,233,244,78,248,3,129,252,245,0,0,0,128,137,106,4,252,
254 201,252,233,244,1,255,248,114,129,252,248,239,15,130,244,62,129,122,253,4, 254 233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,
255 239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,66,8,221,2,248,1,217, 255 244,1,255,248,115,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
256 252,248,223,224,158,15,138,244,1,221,217,252,233,244,72,255,248,115,129,252, 256 244,63,129,122,253,12,239,15,131,244,63,221,66,8,221,2,248,1,217,252,248,
257 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 257 223,224,158,15,138,244,1,221,217,252,233,244,73,255,248,116,129,252,248,239,
258 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,232,244,116,252,233,244, 258 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
259 71,255,248,115,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 259 63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252,233,244,72,255,248,
260 62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,232,244,116,252,233,244, 260 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,
261 72,255,248,117,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248, 261 253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252,233,244,73,255,248,
262 1,57,193,15,131,244,70,129,124,253,202,252,252,239,15,133,244,249,59,108, 262 118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,
263 202,252,248,15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244, 263 15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,
264 62,255,252,233,244,252,248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193, 264 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255,252,
265 15,131,244,71,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,62, 265 233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248,5,57,193,15,131,244,
266 252,242,15,42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202, 266 72,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,63,252,242,15,
267 252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,118,185,2, 267 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,
268 0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244, 268 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,119,185,2,0,0,0,129,
269 70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108, 269 122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124,
270 202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242, 270 253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248,
271 15,16,76,202,252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255, 271 131,193,1,252,233,244,1,248,3,15,135,244,63,255,248,6,252,242,15,16,76,202,
272 248,9,221,216,252,233,244,62,255,248,119,129,252,248,239,15,130,244,62,129, 272 252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,
273 122,253,4,239,15,133,244,62,139,42,255,139,173,233,252,233,244,70,255,252, 273 252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129,122,253,4,239,
274 242,15,42,133,233,252,233,244,71,255,219,133,233,252,233,244,72,255,248,120, 274 15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252,242,15,42,133,
275 129,252,248,239,15,133,244,62,129,122,253,4,239,15,133,244,62,139,42,139, 275 233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121,129,252,248,
276 90,252,252,131,189,233,1,15,130,244,80,15,182,173,233,255,252,242,15,42,197, 276 239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139,90,252,252,131,
277 252,233,244,71,255,137,44,36,219,4,36,252,233,244,72,255,248,121,65,139,174, 277 189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42,197,252,233,244,
278 233,65,59,174,233,15,130,244,247,232,244,74,248,1,129,252,248,239,15,133, 278 72,255,137,44,36,219,4,36,252,233,244,73,255,248,122,65,139,174,233,65,59,
279 244,62,129,122,253,4,239,255,15,133,244,62,139,42,129,252,253,252,255,0,0, 279 174,233,15,130,244,247,232,244,75,248,1,129,252,248,239,15,133,244,63,129,
280 0,15,135,244,62,137,108,36,4,255,15,131,244,62,252,242,15,44,42,129,252,253, 280 122,253,4,239,255,15,133,244,63,139,42,129,252,253,252,255,0,0,0,15,135,244,
281 252,255,0,0,0,15,135,244,62,137,108,36,4,255,15,131,244,62,221,2,219,92,36, 281 63,137,108,36,4,255,15,131,244,63,252,242,15,44,42,129,252,253,252,255,0,
282 4,129,124,36,4,252,255,0,0,0,15,135,244,62,255,199,68,36,8,1,0,0,0,72,141, 282 0,0,15,135,244,63,137,108,36,4,255,15,131,244,63,221,2,219,92,36,4,129,124,
283 68,36,4,248,122,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252, 283 36,4,252,255,0,0,0,15,135,244,63,255,199,68,36,8,1,0,0,0,72,141,68,36,4,248,
284 239,137,92,36,28,232,251,1,20,139,149,233,139,90,252,252,199,66,252,252,237, 284 123,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252,239,137,92,36,
285 137,66,252,248,252,233,244,65,248,123,65,139,174,233,65,59,174,233,15,130, 285 28,232,251,1,20,139,149,233,139,90,252,252,199,66,252,252,237,137,66,252,
286 244,247,232,244,74,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129, 286 248,252,233,244,66,248,124,65,139,174,233,65,59,174,233,15,130,244,247,232,
287 252,248,239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15,133,244, 287 244,75,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,239,
288 62,139,106,16,137,108,36,4,255,15,131,244,62,252,242,15,44,106,16,137,108, 288 15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63,139,106,
289 36,4,255,15,131,244,62,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239, 289 16,137,108,36,4,255,15,131,244,63,252,242,15,44,106,16,137,108,36,4,255,15,
290 15,133,244,62,129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255, 290 131,244,63,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,63,
291 139,74,8,255,252,242,15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248, 291 129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255,139,74,8,255,252,
292 2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244,124,141,172, 292 242,15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,
293 253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,122,248,5,15,140, 293 244,253,248,3,139,108,36,8,41,200,15,140,244,125,141,172,253,13,233,131,192,
294 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15, 294 1,248,4,137,68,36,8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40,
295 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244, 295 1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,
296 3,248,124,49,192,252,233,244,4,248,125,129,252,248,239,15,130,244,62,65,139, 296 233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192,
297 174,233,65,59,174,233,15,130,244,247,232,244,74,248,1,255,129,122,253,4,239, 297 252,233,244,4,248,126,129,252,248,239,15,130,244,63,65,139,174,233,65,59,
298 15,133,244,62,129,122,253,12,239,139,42,255,15,133,244,62,139,66,8,255,15, 298 174,233,15,130,244,247,232,244,75,248,1,255,129,122,253,4,239,15,133,244,
299 131,244,62,252,242,15,44,66,8,255,15,131,244,62,221,66,8,219,92,36,4,139, 299 63,129,122,253,12,239,139,42,255,15,133,244,63,139,66,8,255,15,131,244,63,
300 68,36,4,255,133,192,15,142,244,124,131,189,233,1,15,130,244,124,15,133,244, 300 252,242,15,44,66,8,255,15,131,244,63,221,66,8,219,92,36,4,139,68,36,4,255,
301 126,65,57,134,233,15,130,244,126,15,182,141,233,65,139,174,233,137,68,36, 301 133,192,15,142,244,125,131,189,233,1,15,130,244,125,15,133,244,127,65,57,
302 8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,233, 302 134,233,15,130,244,127,15,182,141,233,65,139,174,233,137,68,36,8,248,1,136,
303 244,122,248,127,129,252,248,239,255,15,130,244,62,65,139,174,233,65,59,174, 303 77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,233,244,123,248,
304 233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42, 304 128,129,252,248,239,255,15,130,244,63,65,139,174,233,65,59,174,233,15,130,
305 139,133,233,133,192,15,132,244,124,65,57,134,233,15,130,244,128,129,197,239, 305 244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,
306 137,92,36,4,137,68,36,8,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131, 306 133,192,15,132,244,125,65,57,134,233,15,130,244,129,129,197,239,137,92,36,
307 232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,122,248,129,129, 307 4,137,68,36,8,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,
308 252,248,239,15,130,244,62,65,139,174,233,65,59,174,233,15,130,244,247,232, 308 12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,123,248,130,129,252,248,
309 244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,65,57,134, 309 239,15,130,244,63,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75,
310 233,255,15,130,244,128,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233, 310 248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,255,
311 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252, 311 15,130,244,129,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,
312 249,90,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137, 312 244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,
313 244,1,137,216,139,92,36,4,252,233,244,122,248,130,129,252,248,239,15,130, 313 15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,
314 244,62,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,74,248,1,129, 314 137,216,139,92,36,4,252,233,244,123,248,131,129,252,248,239,15,130,244,63,
315 122,253,4,239,15,133,244,62,139,42,139,133,233,65,57,134,233,15,130,244,128, 315 255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75,248,1,129,122,
316 129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1, 316 253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,15,130,244,129,129,
317 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244, 317 197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,
318 248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139, 318 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
319 92,36,4,252,233,244,122,248,131,129,252,248,239,15,130,244,62,129,122,253, 319 252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,
320 4,239,15,133,244,62,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252, 320 4,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122,253,4,239,
321 233,244,70,255,252,242,15,42,192,252,233,244,71,255,248,132,129,252,248,239, 321 15,133,244,63,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252,233,
322 15,130,244,62,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,88, 322 244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248,239,15,
323 248,1,15,135,244,62,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205, 323 130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248,
324 252,242,15,88,193,102,15,126,197,255,252,233,244,88,255,248,133,129,252,248, 324 1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
325 239,15,130,244,62,255,72,189,237,237,102,72,15,110,205,255,199,4,36,0,0,192, 325 242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248,239,
326 89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,62,255,252, 326 15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,4,36,0,0,192,89,
327 242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,4,141,68, 327 255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255,252,242,
328 194,252,240,248,1,57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248, 328 15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,4,141,68,194,
329 35,40,131,232,8,252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255, 329 252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35,
330 252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252, 330 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252,
331 233,244,1,248,135,129,252,248,239,15,130,244,62,255,15,133,244,248,11,40, 331 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,
332 131,232,8,252,233,244,1,248,2,15,135,244,134,255,252,242,15,16,0,252,242, 332 244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11,40,131,
333 15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,136,129,252, 333 232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242,15,88,
334 248,239,15,130,244,62,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248, 334 193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252,248,
335 2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49, 335 239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,
336 205,255,131,232,8,252,233,244,1,248,137,129,252,248,239,15,130,244,62,129, 336 15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,
337 122,253,4,239,255,248,2,15,205,252,233,244,88,248,138,129,252,248,239,15, 337 255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129,122,
338 130,244,62,129,122,253,4,239,255,248,2,252,247,213,255,248,88,252,242,15, 338 253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15,130,
339 42,197,252,233,244,71,255,248,134,139,68,36,4,252,233,244,62,255,248,139, 339 244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15,42,197,
340 129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2,129,122,253,12, 340 252,233,244,72,255,248,135,139,68,36,4,252,233,244,63,255,248,140,129,252,
341 239,15,133,244,62,139,74,8,255,248,139,129,252,248,239,15,130,244,62,129, 341 248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,
342 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16, 342 244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239,
343 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252, 343 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,
344 242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,88,255, 344 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
345 248,140,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,140,129,252, 345 202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255,248,141,
346 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 346 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248,239,
347 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15, 347 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
348 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201, 348 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
349 255,211,252,237,252,233,244,88,255,248,141,129,252,248,239,15,130,244,62, 349 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,
350 129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,62,129,122,253,4, 350 237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129,122,253,
351 239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242, 351 4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
352 15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15, 352 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,
353 88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,88,255,248,
354 142,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,142,129,252,248,
355 239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,
356 244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
357 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,
358 197,252,233,244,88,255,248,143,129,252,248,239,15,130,244,62,129,122,253,
359 4,239,255,248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
360 244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,
361 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102, 353 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,
362 15,126,197,102,15,126,201,255,211,205,252,233,244,88,248,126,184,237,252, 354 15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248,143,129,
363 233,244,62,248,128,184,237,248,62,139,108,36,24,139,90,252,252,137,92,36, 355 252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248,239,15,
364 28,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248, 356 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
365 59,141,233,15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192, 357 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
366 15,143,244,77,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1, 358 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,
367 139,106,252,248,15,133,244,32,139,157,233,139,11,15,182,252,233,15,182,205, 359 252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,
368 131,195,4,65,252,255,36,252,238,248,32,137,209,252,247,195,237,15,133,244, 360 255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
369 249,15,182,107,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3, 361 129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,
370 137,221,131,229,252,248,41,252,234,252,233,244,28,248,5,190,237,137,252,239, 362 237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,
371 232,251,1,0,139,149,233,49,192,252,233,244,1,248,74,93,72,137,108,36,8,139, 363 197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252,233,244,
372 108,36,24,137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137, 364 63,248,129,184,237,248,63,139,108,36,24,139,90,252,252,137,92,36,28,137,149,
373 133,233,232,251,1,22,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72, 365 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,
374 139,108,36,8,85,195,248,144,255,65,15,182,134,233,168,235,15,133,244,251, 366 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,143,244,
375 168,235,15,133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233, 367 78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,
376 244,247,255,248,145,65,15,182,134,233,168,235,15,133,244,251,252,233,244, 368 248,15,133,244,33,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,
377 247,248,146,65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251, 369 65,252,255,36,252,238,248,33,137,209,252,247,195,237,15,133,244,249,15,182,
378 65,252,255,142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108, 370 107,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137,221,131,
379 36,24,137,149,233,137,222,137,252,239,232,251,1,23,248,3,139,149,233,248, 371 229,252,248,41,252,234,252,233,244,28,248,5,190,237,137,252,239,232,251,1,
380 4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255, 372 0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,8,139,108,36,24,
381 164,253,252,238,233,248,147,131,195,4,139,77,232,137,76,36,4,252,233,244, 373 137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232,
382 4,248,148,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108, 374 251,1,22,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,
383 36,24,137,149,233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92, 375 8,85,195,248,145,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,
384 36,28,232,251,1,24,252,233,244,3,255,248,149,137,92,36,28,255,248,150,255, 376 133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,
385 137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149, 377 248,146,65,15,182,134,233,168,235,15,133,244,251,252,233,244,247,248,147,
386 233,137,133,233,137,222,137,252,239,232,251,1,25,199,68,36,28,0,0,0,0,255, 378 65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255,
387 131,227,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205, 379 142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,24,137,
388 15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,151,255,65,85,65,84, 380 149,233,137,222,137,252,239,232,251,1,23,248,3,139,149,233,248,4,15,182,75,
389 65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69, 381 252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252,
390 252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,68,139,117, 382 238,233,248,148,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,149,255,
391 0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,142,233,72,129, 383 139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,24,137,149,
392 252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68,15,17, 384 233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92,36,28,232,251,
393 117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242,68, 385 1,24,252,233,244,3,255,248,150,137,92,36,28,255,248,151,255,137,92,36,28,
394 15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15, 386 131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149,233,137,133,
395 17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109,168, 387 233,137,222,137,252,239,232,251,1,25,199,68,36,28,0,0,0,0,255,131,227,252,
396 252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15, 388 254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,75,252,
397 17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233, 389 253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83,65,82,65,
398 65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,26, 390 81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,
399 72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,233,139,153, 391 252,240,76,137,125,252,248,76,137,117,252,240,68,139,117,0,65,139,142,233,
400 233,252,233,244,247,255,248,152,255,72,131,196,16,248,1,76,139,108,36,8,76, 392 65,199,134,233,237,65,137,134,233,65,137,142,233,72,129,252,236,239,72,131,
401 139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191, 393 197,128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,
402 233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182, 394 68,15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,
403 204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68, 395 68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,
404 36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232, 396 17,125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,
405 251,1,1,255,248,90,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36, 397 160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,
406 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, 398 15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233,65,199,134,233,
407 36,4,139,68,36,8,195,255,248,153,72,184,237,237,102,72,15,110,208,72,184, 399 0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,26,72,139,141,233,
400 72,129,225,239,72,137,204,137,169,233,139,149,233,139,153,233,252,233,244,
401 247,255,248,153,255,72,131,196,16,248,1,76,139,108,36,8,76,139,36,36,133,
402 192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191,233,69,139,191,
403 233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204,15,182,232,
404 131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36,4,248,2,65,
405 252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232,251,1,1,255,
406 248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
407 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
408 36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
409 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
410 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
411 72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,
412 193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,
413 4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
414 36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,72,184,
408 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244, 415 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
409 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184, 416 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
410 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92, 417 237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
411 200,15,40,193,248,1,195,248,92,255,217,124,36,4,137,68,36,8,102,184,0,8,102, 418 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12,
412 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252, 419 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
413 217,108,36,4,139,68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208, 420 68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
414 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, 421 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
415 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, 422 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,
416 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242, 423 15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,
417 15,92,200,15,40,193,248,1,195,248,113,255,217,124,36,4,137,68,36,8,102,184, 424 202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184,237,
418 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 425 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,
419 139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,72,184,237,237, 426 226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,
420 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, 427 15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,
421 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102, 428 1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,
422 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, 429 92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,
423 86,202,15,40,193,248,1,195,248,156,255,15,40,232,252,242,15,94,193,72,184, 430 193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
424 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102, 431 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,
425 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252, 432 233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,252,248,129,124,
426 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194, 433 36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,
427 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242, 434 15,132,244,248,248,159,217,192,217,252,252,220,252,233,217,201,217,252,240,
428 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255, 435 217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,
429 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255, 436 255,248,117,255,248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,
430 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222, 437 15,133,244,254,15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1,
431 252,233,195,255,248,97,217,252,234,222,201,248,157,217,84,36,252,248,129, 438 169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,
432 124,36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252, 439 209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,
433 255,15,132,244,248,248,158,217,192,217,252,252,220,252,233,217,201,217,252, 440 250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,
434 240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238, 441 193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,
435 195,255,248,116,255,248,159,252,242,15,45,193,252,242,15,42,208,102,15,46, 442 184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,
436 202,15,133,244,254,15,138,244,255,248,160,131,252,248,1,15,142,244,252,248, 443 237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,
437 1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248, 444 12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,
438 2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132, 445 244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,
439 244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15, 446 17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68,36,
440 89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1, 447 252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,217,
441 72,184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72, 448 232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36,252,
442 184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193, 449 248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,247,
443 192,12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15, 450 15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84,194,
444 132,244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242, 451 72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80,193,
445 15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68, 452 15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237,255,
446 36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240, 453 102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,192,
447 217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36, 454 195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,162,255,131,
448 252,248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244, 455 252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15,135,
449 247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84, 456 244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68,36,
450 194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80, 457 252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,98,252,233,244,
451 193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237, 458 253,248,1,232,244,158,255,252,233,244,253,248,2,131,252,255,7,15,132,244,
452 255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87, 459 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1,
453 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,161,255, 460 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132,244,
454 131,252,255,1,15,130,244,90,15,132,244,92,131,252,255,3,15,130,244,113,15, 461 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1,
455 135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68, 462 255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,135,
456 36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,97,252,233, 463 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92,
457 244,253,248,1,232,244,157,255,252,233,244,253,248,2,131,252,255,7,15,132, 464 36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,4,
458 244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248, 465 131,252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15,
459 1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132, 466 135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,98,15,132,244,
460 244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248, 467 158,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
461 1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,
462 135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,
463 92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,
464 4,131,252,255,1,15,130,244,90,15,132,244,92,131,252,255,3,15,130,244,113,
465 15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,97,15,132,244,
466 157,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
467 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,9,15,132, 468 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,9,15,132,
468 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 469 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
469 252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255, 470 252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255,
470 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,162,255,131,252,255, 471 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,131,252,255,
471 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92, 472 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
472 193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,193, 473 193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,193,
473 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,156,15,132, 474 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,157,15,132,
474 244,116,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102, 475 244,117,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102,
475 72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,84, 476 72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,84,
476 193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,252, 477 193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,252,
477 242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,247, 478 242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,247,
@@ -481,55 +482,65 @@ static const unsigned char build_actionlist[16165] = {
481 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, 482 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,
482 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, 483 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,
483 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 484 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,
484 252,248,5,15,130,244,156,15,132,244,116,131,252,248,7,15,132,244,247,15,135, 485 252,248,5,15,130,244,157,15,132,244,117,131,252,248,7,15,132,244,247,15,135,
485 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 486 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,
486 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 487 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,
487 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 488 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,
488 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 489 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,
489 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 490 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,
490 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 491 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,
491 163,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,164, 492 164,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,165,
492 255,204,248,165,255,85,72,137,229,83,72,137,252,251,139,131,233,72,41,196, 493 255,204,248,166,255,83,65,87,65,86,72,131,252,236,40,68,141,181,233,139,157,
493 255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,139,132,253,203, 494 233,15,183,192,137,131,233,72,137,187,233,72,137,179,233,72,137,147,233,72,
494 233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,2,15,182,131,233, 495 137,139,233,252,242,15,17,131,233,252,242,15,17,139,233,252,242,15,17,147,
495 72,139,187,233,72,139,179,233,72,139,147,233,72,139,139,233,76,139,131,233, 496 233,252,242,15,17,155,233,72,141,132,253,36,233,76,137,131,233,76,137,139,
496 76,139,139,233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,255,15, 497 233,252,242,15,17,163,233,252,242,15,17,171,233,252,242,15,17,179,233,252,
497 40,147,233,15,40,155,233,131,252,248,4,15,134,244,251,15,40,163,233,15,40, 498 242,15,17,187,233,72,137,131,233,72,137,230,137,92,36,28,137,223,232,251,
498 171,233,15,40,179,233,15,40,187,233,248,5,252,255,147,233,72,137,131,233, 499 1,27,65,199,134,233,237,255,139,144,233,139,128,233,41,208,139,106,252,248,
499 15,41,131,233,72,137,147,233,15,41,139,233,255,72,139,93,252,248,201,195, 500 193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
500 255,249,255,129,124,253,202,4,239,15,133,244,253,129,124,253,194,4,239,15, 501 4,65,252,255,36,252,238,255,248,32,255,139,76,36,24,65,139,158,233,72,137,
501 133,244,254,139,44,202,131,195,4,59,44,194,255,15,141,244,255,255,15,140, 502 139,233,137,145,233,137,169,233,137,223,137,198,232,251,1,28,72,139,131,233,
502 244,255,255,15,143,244,255,255,15,142,244,255,255,248,6,15,183,67,252,254, 503 252,242,15,16,131,233,252,233,244,16,255,248,167,255,85,72,137,229,83,72,
503 141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 504 137,252,251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,
504 65,252,255,36,252,238,248,7,15,135,244,43,129,124,253,194,4,239,15,130,244, 505 244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,
505 247,15,133,244,43,255,252,242,15,42,4,194,252,233,244,248,255,221,4,202,219, 506 15,137,244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,
506 4,194,252,233,244,249,255,248,8,15,135,244,43,255,252,242,15,42,12,202,252, 507 233,72,139,139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,
507 242,15,16,4,194,131,195,4,102,15,46,193,255,15,134,244,9,255,15,135,244,9, 508 40,131,233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,
508 255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,219,4,202,252,233, 509 134,244,251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,
509 244,248,255,129,124,253,202,4,239,15,131,244,43,129,124,253,194,4,239,15, 510 252,255,147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,
510 131,244,43,255,248,1,252,242,15,16,4,194,248,2,131,195,4,102,15,46,4,202, 511 255,72,139,93,252,248,201,195,255,129,124,253,202,4,239,15,133,244,253,129,
511 248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,195,4,255,223,252,233, 512 124,253,194,4,239,15,133,244,254,139,44,202,131,195,4,59,44,194,255,15,141,
512 221,216,255,218,252,233,223,224,158,255,15,134,244,247,255,15,135,244,247, 513 244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,248,
513 255,15,130,244,247,255,15,131,244,247,255,15,183,67,252,254,141,156,253,131, 514 6,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,
514 233,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 515 131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,44,129,124,253,
515 252,238,255,139,108,194,4,131,195,4,255,129,252,253,239,15,133,244,253,129, 516 194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244,
516 124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,133,244,255, 517 248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252,
517 255,15,132,244,255,255,15,183,67,252,254,141,156,253,131,233,248,9,139,3, 518 242,15,42,12,202,252,242,15,16,4,194,131,195,4,102,15,46,193,255,15,134,244,
518 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,7,15, 519 9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,
519 135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,252,242, 520 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124,
520 15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,255,252, 521 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,195,4,
521 242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,244,250, 522 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,195,4,
522 255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,251,255, 523 255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,135,244,247,255,
523 248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202, 524 15,130,244,247,255,15,131,244,247,255,15,183,67,252,254,141,156,253,131,233,
524 248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248, 525 248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
525 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255, 526 238,255,139,108,194,4,131,195,4,255,129,252,253,239,15,133,244,253,129,124,
526 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,252,233,244,9,255,248, 527 253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,133,244,255,255,
527 5,255,129,252,253,239,15,132,244,48,129,124,253,202,4,239,15,132,244,48,255, 528 15,132,244,255,255,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,
529 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,
530 251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,252,242,15,42,
531 4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,255,252,242,
532 15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,244,250,255,
533 129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,251,255,248,
534 1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,
535 2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,
536 132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,
537 2,15,183,67,252,254,141,156,253,131,233,248,1,255,252,233,244,9,255,248,5,
538 255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255,
528 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, 539 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
529 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244, 540 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244,
530 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255, 541 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,
531 49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,248,3,129,252,253,239,255, 542 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,
532 15,133,244,9,255,252,233,244,48,255,72,252,247,208,139,108,202,4,131,195, 543 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,195,
533 4,129,252,253,239,15,133,244,249,139,12,202,65,59,12,135,255,139,108,202, 544 4,129,252,253,239,15,133,244,249,139,12,202,65,59,12,135,255,139,108,202,
534 4,131,195,4,255,129,252,253,239,15,133,244,253,65,129,124,253,199,4,239,15, 545 4,131,195,4,255,129,252,253,239,15,133,244,253,65,129,124,253,199,4,239,15,
535 133,244,254,65,139,44,199,59,44,202,255,15,183,67,252,254,141,156,253,131, 546 133,244,254,65,139,44,199,59,44,202,255,15,183,67,252,254,141,156,253,131,
@@ -541,8 +552,8 @@ static const unsigned char build_actionlist[16165] = {
541 202,248,4,255,248,1,65,221,4,199,248,2,221,4,202,248,4,255,72,252,247,208, 552 202,248,4,255,248,1,65,221,4,199,248,2,221,4,202,248,4,255,72,252,247,208,
542 139,108,202,4,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254,141,156, 553 139,108,202,4,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254,141,156,
543 253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, 554 253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
544 255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,48,255,15,132, 555 255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132,
545 244,248,129,252,253,239,15,132,244,48,15,183,67,252,254,141,156,253,131,233, 556 244,248,129,252,253,239,15,132,244,49,15,183,67,252,254,141,156,253,131,233,
546 248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 557 248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
547 238,255,139,108,194,4,131,195,4,129,252,253,239,255,137,108,202,4,139,44, 558 238,255,139,108,194,4,131,195,4,129,252,253,239,255,137,108,202,4,139,44,
548 194,137,44,202,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232, 559 194,137,44,202,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,
@@ -551,42 +562,42 @@ static const unsigned char build_actionlist[16165] = {
551 232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,133,244,251,139, 562 232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,133,244,251,139,
552 44,194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,3, 563 44,194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,3,
553 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,199, 564 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,199,
554 68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,53,255, 565 68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255,
555 129,124,253,194,4,239,15,131,244,53,255,252,242,15,16,4,194,72,184,237,237, 566 129,124,253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,72,184,237,237,
556 102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221, 567 102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,
557 28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233, 568 28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,
558 248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248, 569 248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,
559 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204, 570 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204,
560 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194, 571 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194,
561 4,239,15,133,244,56,139,60,194,255,139,175,233,131,252,253,0,15,133,244,255, 572 4,239,15,133,244,57,139,60,194,255,139,175,233,131,252,253,0,15,133,244,255,
562 248,3,255,248,57,137,213,232,251,1,21,255,252,242,15,42,192,255,137,252,234, 573 248,3,255,248,58,137,213,232,251,1,21,255,252,242,15,42,192,255,137,252,234,
563 15,182,75,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244, 574 15,182,75,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,
564 3,252,233,244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4, 575 3,252,233,244,57,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,
565 239,15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65, 576 239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65,
566 3,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129, 577 3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129,
567 124,253,199,4,239,15,133,244,52,65,139,4,199,3,4,252,234,15,128,244,51,255, 578 124,253,199,4,239,15,133,244,53,65,139,4,199,3,4,252,234,15,128,244,52,255,
568 129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244, 579 129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244,
569 55,139,44,252,234,3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124, 580 56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237,255,129,124,
570 253,252,234,4,239,15,131,244,50,255,65,129,124,253,199,4,239,15,131,244,50, 581 253,252,234,4,239,15,131,244,51,255,65,129,124,253,199,4,239,15,131,244,51,
571 255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,220, 582 255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,220,
572 4,199,255,129,124,253,252,234,4,239,15,131,244,52,255,65,129,124,253,199, 583 4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,65,129,124,253,199,
573 4,239,15,131,244,52,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255, 584 4,239,15,131,244,53,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,
574 65,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,55,129, 585 65,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,
575 124,253,194,4,239,15,131,244,55,255,252,242,15,16,4,252,234,252,242,15,88, 586 124,253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,
576 4,194,255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244, 587 4,194,255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,
577 50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65,43,44,199,15, 588 51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65,43,44,199,15,
578 128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129,124,253,199, 589 128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129,124,253,199,
579 4,239,15,133,244,52,65,139,4,199,43,4,252,234,15,128,244,51,255,129,124,253, 590 4,239,15,133,244,53,65,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,
580 252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252, 591 252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,
581 234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234,252,242,65,15,92, 592 234,43,44,194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,65,15,92,
582 4,199,255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242, 593 4,199,255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,
583 15,92,4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234, 594 15,92,4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,
584 252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,252,234, 595 252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,252,234,
585 4,239,15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234, 596 4,239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,
586 65,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52, 597 65,15,175,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,
587 65,129,124,253,199,4,239,15,133,244,52,65,139,4,199,15,175,4,252,234,15,128, 598 65,129,124,253,199,4,239,15,133,244,53,65,139,4,199,15,175,4,252,234,15,128,
588 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239, 599 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,
589 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16, 600 15,133,244,56,139,44,252,234,15,175,44,194,15,128,244,55,255,252,242,15,16,
590 4,252,234,252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252, 601 4,252,234,252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,
591 242,65,15,16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234, 602 242,65,15,16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,
592 255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12, 603 255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,
@@ -596,10 +607,10 @@ static const unsigned char build_actionlist[16165] = {
596 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12, 607 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12,
597 199,255,221,4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15, 608 199,255,221,4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15,
598 16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234, 609 16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,
599 252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,166,232,244,156, 610 252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,157,
600 255,252,233,244,166,255,232,244,116,255,15,182,252,236,15,182,192,139,124, 611 255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139,124,
601 36,24,137,151,233,141,52,194,137,194,41,252,234,248,35,137,252,253,137,92, 612 36,24,137,151,233,141,52,194,137,194,41,252,234,248,36,137,252,253,137,92,
602 36,28,232,251,1,27,139,149,233,133,192,15,133,244,44,15,182,107,252,255,15, 613 36,28,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,107,252,255,15,
603 182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,182,204,15,182,232, 614 182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,182,204,15,182,232,
604 131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135, 615 131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,
605 199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232, 616 199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
@@ -616,82 +627,82 @@ static const unsigned char build_actionlist[16165] = {
616 69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, 627 69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,
617 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239, 628 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,
618 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238, 629 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,
619 137,213,65,141,190,233,255,232,251,1,28,137,252,234,252,233,244,1,255,72, 630 137,213,65,141,190,233,255,232,251,1,30,137,252,234,252,233,244,1,255,72,
620 252,247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233, 631 252,247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,
621 137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, 632 137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,
622 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129, 633 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,
623 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190, 634 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,
624 233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, 635 233,232,251,1,30,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,
625 65,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255, 636 65,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,
626 221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233, 637 221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,
627 137,65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 638 137,65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
628 238,255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137, 639 238,255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,
629 149,233,141,52,202,137,252,239,232,251,1,29,139,149,233,248,1,139,3,15,182, 640 149,233,141,52,202,137,252,239,232,251,1,31,139,149,233,248,1,139,3,15,182,
630 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247, 641 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,
631 208,139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137, 642 208,139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,
632 92,36,28,232,251,1,30,139,149,233,15,182,75,252,253,137,4,202,199,68,202, 643 92,36,28,232,251,1,32,139,149,233,15,182,75,252,253,137,4,202,199,68,202,
633 4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 644 4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
634 238,255,139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36, 645 238,255,139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,
635 28,15,131,244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255, 646 28,15,131,244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,
636 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,31,139,149,233,15, 647 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,33,139,149,233,15,
637 182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131, 648 182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,
638 195,4,193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248, 649 195,4,193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,
639 5,137,252,239,232,251,1,32,15,183,67,252,254,252,233,244,1,255,72,252,247, 650 5,137,252,239,232,251,1,34,15,183,67,252,254,252,233,244,1,255,72,252,247,
640 208,139,108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15, 651 208,139,108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,
641 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,33,139,149,233,15,182, 652 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,35,139,149,233,15,182,
642 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195, 653 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,
643 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,32,15,183, 654 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,34,15,183,
644 67,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248, 655 67,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,
645 139,173,233,65,139,4,135,252,233,244,167,255,72,252,247,208,139,106,252,248, 656 139,173,233,65,139,4,135,252,233,244,169,255,72,252,247,208,139,106,252,248,
646 139,173,233,65,139,4,135,252,233,244,168,255,15,182,252,236,15,182,192,129, 657 139,173,233,65,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192,129,
647 124,253,252,234,4,239,15,133,244,38,139,44,252,234,255,129,124,253,194,4, 658 124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194,4,
648 239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255, 659 239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,
649 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, 660 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
650 15,133,244,38,255,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253, 661 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
651 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182, 662 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
652 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132, 663 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
653 244,249,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,252,253,248, 664 244,249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,75,252,253,248,
654 3,199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, 665 3,199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
655 38,139,4,194,252,233,244,167,255,15,182,252,236,15,182,192,72,252,247,208, 666 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208,
656 65,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,167, 667 65,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,
657 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, 668 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
658 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, 669 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
659 67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232, 670 67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232,
660 131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68, 671 131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68,
661 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139, 672 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
662 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244, 673 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
663 36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,37, 674 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,
664 139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4, 675 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,
665 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182, 676 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
666 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132, 677 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
667 244,249,139,141,233,252,246,129,233,235,15,132,244,37,255,15,182,75,252,253, 678 244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,75,252,253,
668 248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124, 679 248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,
669 253,252,234,4,239,15,133,244,41,139,44,252,234,255,15,133,244,41,255,59,133, 680 253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133,
670 233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, 681 233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
671 1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,3, 682 1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,3,
672 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131, 683 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,
673 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,41, 684 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42,
674 15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,41, 685 15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42,
675 139,4,194,252,233,244,168,248,7,128,165,233,235,65,139,142,233,65,137,174, 686 139,4,194,252,233,244,170,248,7,128,165,233,235,65,139,142,233,65,137,174,
676 233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,182, 687 233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,182,
677 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139, 688 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139,
678 44,252,234,248,168,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141, 689 44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,
679 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121, 690 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,
680 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248, 691 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,
681 3,15,182,67,252,253,72,139,44,194,72,137,41,139,3,15,182,204,15,182,232,131, 692 3,15,182,67,252,253,72,139,44,194,72,137,41,139,3,15,182,204,15,182,232,131,
682 195,4,193,232,16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137, 693 195,4,193,232,16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137,
683 12,36,139,141,233,252,246,129,233,235,15,132,244,39,139,12,36,252,233,244, 694 12,36,139,141,233,252,246,129,233,235,15,132,244,40,139,12,36,252,233,244,
684 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244, 695 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
685 252,252,246,129,233,235,15,132,244,39,248,6,137,4,36,199,68,36,4,237,137, 696 252,252,246,129,233,235,15,132,244,40,248,6,137,4,36,199,68,36,4,237,137,
686 108,36,8,139,124,36,24,137,151,233,72,141,20,36,137,252,238,137,252,253,137, 697 108,36,8,139,124,36,24,137,151,233,72,141,20,36,137,252,238,137,252,253,137,
687 92,36,28,232,251,1,34,139,149,233,139,108,36,8,137,193,252,233,244,2,248, 698 92,36,28,232,251,1,36,139,149,233,139,108,36,8,137,193,252,233,244,2,248,
688 7,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,3, 699 7,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,3,
689 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139, 700 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,
690 44,252,234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239, 701 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,
691 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202, 702 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
692 72,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 703 72,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
693 238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235, 704 238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
694 15,132,244,40,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139, 705 15,132,244,41,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139,
695 142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,68, 706 142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,68,
696 137,60,36,69,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233, 707 137,60,36,69,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,
697 235,15,133,244,253,248,2,139,68,36,4,131,232,1,15,132,244,250,68,1,252,248, 708 235,15,133,244,253,248,2,139,68,36,4,131,232,1,15,132,244,250,68,1,252,248,
@@ -699,12 +710,12 @@ static const unsigned char build_actionlist[16165] = {
699 139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139, 710 139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139,
700 60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 711 60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
701 238,248,5,139,124,36,24,137,151,233,137,252,238,137,194,137,252,253,137,92, 712 238,248,5,139,124,36,24,137,151,233,137,252,238,137,194,137,252,253,137,92,
702 36,28,232,251,1,35,139,149,233,15,182,75,252,253,252,233,244,1,248,7,255, 713 36,28,232,251,1,37,139,149,233,15,182,75,252,253,252,233,244,1,248,7,255,
703 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,2,255, 714 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,2,255,
704 3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8, 715 3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,59,141,84,202,8,
705 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65, 716 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,
706 252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,129,121,253, 717 252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,129,121,253,
707 252,252,239,15,133,244,29,248,59,139,90,252,252,252,247,195,237,15,133,244, 718 252,252,239,15,133,244,29,248,60,139,90,252,252,252,247,195,237,15,133,244,
708 253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139, 719 253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139,
709 41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248, 720 41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248,
710 248,3,139,68,36,4,128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15, 721 248,3,139,68,36,4,128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15,
@@ -752,19 +763,19 @@ static const unsigned char build_actionlist[16165] = {
752 65,199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192, 763 65,199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,
753 1,252,233,244,5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234, 764 1,252,233,244,5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,
754 255,1,252,233,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233, 765 255,1,252,233,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,
755 238,15,130,244,148,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255, 766 238,15,130,244,149,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,
756 129,121,253,12,239,15,133,244,60,129,121,253,20,239,15,133,244,60,139,41, 767 129,121,253,12,239,15,133,244,61,129,121,253,20,239,15,133,244,61,139,41,
757 131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,164,129,121, 768 131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,165,129,121,
758 253,20,239,15,133,244,164,255,139,105,16,133,252,237,15,136,244,251,3,41, 769 253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136,244,251,3,41,
759 15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244, 770 15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244,
760 253,248,1,248,6,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252, 771 253,248,1,248,6,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252,
761 254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,156,253,131,233,248, 772 254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,156,253,131,233,248,
762 1,255,248,7,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 773 1,255,248,7,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
763 252,238,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,255,141,156,253, 774 252,238,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,255,141,156,253,
764 131,233,15,183,67,252,254,15,141,245,255,15,140,244,7,255,252,233,244,6,248, 775 131,233,15,183,67,252,254,15,141,245,255,15,140,244,7,255,252,233,244,6,248,
765 9,255,129,121,253,4,239,255,15,131,244,60,129,121,253,12,239,15,131,244,60, 776 9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12,239,15,131,244,61,
766 255,129,121,253,12,239,15,131,244,164,129,121,253,20,239,15,131,244,164,255, 777 255,129,121,253,12,239,15,131,244,165,129,121,253,20,239,15,131,244,165,255,
767 139,105,20,255,129,252,253,239,15,131,244,60,255,252,242,15,16,1,252,242, 778 139,105,20,255,129,252,253,239,15,131,244,61,255,252,242,15,16,1,252,242,
768 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244, 779 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,
769 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221, 780 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,
770 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255, 781 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,
@@ -778,7 +789,7 @@ static const unsigned char build_actionlist[16165] = {
778 233,76,137,36,36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156, 789 233,76,137,36,36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,
779 253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 790 253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
780 252,238,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,238, 791 252,238,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,238,
781 15,130,244,150,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15, 792 15,130,244,151,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,
782 135,244,24,15,182,139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254, 793 135,244,24,15,182,139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,
783 252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244, 794 252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,
784 3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252, 795 3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252,
@@ -818,6 +829,7 @@ enum {
818 GLOB_vmeta_call, 829 GLOB_vmeta_call,
819 GLOB_vm_call_dispatch_f, 830 GLOB_vm_call_dispatch_f,
820 GLOB_vm_cpcall, 831 GLOB_vm_cpcall,
832 GLOB_cont_ffi_callback,
821 GLOB_vm_call_tail, 833 GLOB_vm_call_tail,
822 GLOB_cont_cat, 834 GLOB_cont_cat,
823 GLOB_cont_ra, 835 GLOB_cont_ra,
@@ -951,6 +963,7 @@ enum {
951 GLOB_vm_foldarith, 963 GLOB_vm_foldarith,
952 GLOB_vm_cpuid, 964 GLOB_vm_cpuid,
953 GLOB_assert_bad_for_arg_type, 965 GLOB_assert_bad_for_arg_type,
966 GLOB_vm_ffi_callback,
954 GLOB_vm_ffi_call, 967 GLOB_vm_ffi_call,
955 GLOB_BC_MODVN_Z, 968 GLOB_BC_MODVN_Z,
956 GLOB_BC_TGETS_Z, 969 GLOB_BC_TGETS_Z,
@@ -980,6 +993,7 @@ static const char *const globnames[] = {
980 "vmeta_call", 993 "vmeta_call",
981 "vm_call_dispatch_f", 994 "vm_call_dispatch_f",
982 "vm_cpcall", 995 "vm_cpcall",
996 "cont_ffi_callback",
983 "vm_call_tail", 997 "vm_call_tail",
984 "cont_cat", 998 "cont_cat",
985 "cont_ra", 999 "cont_ra",
@@ -1113,6 +1127,7 @@ static const char *const globnames[] = {
1113 "vm_foldarith", 1127 "vm_foldarith",
1114 "vm_cpuid", 1128 "vm_cpuid",
1115 "assert_bad_for_arg_type", 1129 "assert_bad_for_arg_type",
1130 "vm_ffi_callback",
1116 "vm_ffi_call@4", 1131 "vm_ffi_call@4",
1117 "BC_MODVN_Z", 1132 "BC_MODVN_Z",
1118 "BC_TGETS_Z", 1133 "BC_TGETS_Z",
@@ -1147,6 +1162,8 @@ static const char *const extnames[] = {
1147 "lj_trace_hot@8", 1162 "lj_trace_hot@8",
1148 "lj_dispatch_call@8", 1163 "lj_dispatch_call@8",
1149 "lj_trace_exit@8", 1164 "lj_trace_exit@8",
1165 "lj_ccallback_enter@8",
1166 "lj_ccallback_leave@8",
1150 "lj_meta_cat", 1167 "lj_meta_cat",
1151 "lj_gc_barrieruv@8", 1168 "lj_gc_barrieruv@8",
1152 "lj_func_closeuv@8", 1169 "lj_func_closeuv@8",
@@ -1187,667 +1204,686 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1187 dasm_put(Dst, 385, Dt1(->top), 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); 1204 dasm_put(Dst, 385, Dt1(->top), 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);
1188 dasm_put(Dst, 548, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1205 dasm_put(Dst, 548, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1189 dasm_put(Dst, 648, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); 1206 dasm_put(Dst, 648, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
1190 dasm_put(Dst, 819, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1207#if LJ_HASFFI
1191 dasm_put(Dst, 944); 1208 dasm_put(Dst, 813);
1209#endif
1210 dasm_put(Dst, 822, 0);
1211#if LJ_HASFFI
1212#endif
1213 dasm_put(Dst, 831, Dt7(->pc), PC2PROTO(k));
1214#if LJ_HASFFI
1215 dasm_put(Dst, 848);
1216#endif
1217 dasm_put(Dst, 869, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1192 if (LJ_DUALNUM) { 1218 if (LJ_DUALNUM) {
1193 dasm_put(Dst, 958, LJ_TISNUM); 1219 dasm_put(Dst, 967, LJ_TISNUM);
1194 } else if (sse) { 1220 } else if (sse) {
1195 dasm_put(Dst, 967); 1221 dasm_put(Dst, 976);
1196 } else { 1222 } else {
1197 } 1223 }
1198 dasm_put(Dst, 979, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1224 dasm_put(Dst, 988, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1199 dasm_put(Dst, 1125, DISPATCH_GL(tmptv), LJ_TTAB); 1225 dasm_put(Dst, 1134, DISPATCH_GL(tmptv), LJ_TTAB);
1200 if (LJ_DUALNUM) { 1226 if (LJ_DUALNUM) {
1201 dasm_put(Dst, 958, LJ_TISNUM); 1227 dasm_put(Dst, 967, LJ_TISNUM);
1202 } else if (sse) { 1228 } else if (sse) {
1203 dasm_put(Dst, 967); 1229 dasm_put(Dst, 976);
1204 } else { 1230 } else {
1205 } 1231 }
1206 dasm_put(Dst, 1149, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1232 dasm_put(Dst, 1158, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1207 dasm_put(Dst, 1321, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1233 dasm_put(Dst, 1330, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1208 dasm_put(Dst, 1420); 1234 dasm_put(Dst, 1429);
1209#if LJ_HASFFI 1235#if LJ_HASFFI
1210 dasm_put(Dst, 1440, Dt1(->base)); 1236 dasm_put(Dst, 1449, Dt1(->base));
1211#endif 1237#endif
1212 dasm_put(Dst, 1471); 1238 dasm_put(Dst, 1480);
1213#if LJ_DUALNUM 1239#if LJ_DUALNUM
1214 dasm_put(Dst, 1474); 1240 dasm_put(Dst, 1483);
1215#endif 1241#endif
1216 dasm_put(Dst, 1480); 1242 dasm_put(Dst, 1489);
1217#if LJ_DUALNUM 1243#if LJ_DUALNUM
1218 dasm_put(Dst, 952); 1244 dasm_put(Dst, 961);
1219#endif 1245#endif
1220 dasm_put(Dst, 1493); 1246 dasm_put(Dst, 1502);
1221#if LJ_DUALNUM 1247#if LJ_DUALNUM
1222 dasm_put(Dst, 1474); 1248 dasm_put(Dst, 1483);
1223#endif 1249#endif
1224 dasm_put(Dst, 1522, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); 1250 dasm_put(Dst, 1531, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
1225#ifdef LUAJIT_ENABLE_LUA52COMPAT 1251#ifdef LUAJIT_ENABLE_LUA52COMPAT
1226 dasm_put(Dst, 1624); 1252 dasm_put(Dst, 1633);
1227#else 1253#else
1228 dasm_put(Dst, 1643); 1254 dasm_put(Dst, 1652);
1229#endif 1255#endif
1230 dasm_put(Dst, 1648, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1256 dasm_put(Dst, 1657, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1231 dasm_put(Dst, 1834, 1+1, ~LJ_TNUMX); 1257 dasm_put(Dst, 1843, 1+1, ~LJ_TNUMX);
1232 if (cmov) { 1258 if (cmov) {
1233 dasm_put(Dst, 1903); 1259 dasm_put(Dst, 1912);
1234 } else { 1260 } else {
1235 dasm_put(Dst, 1907); 1261 dasm_put(Dst, 1916);
1236 } 1262 }
1237 dasm_put(Dst, 1916, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); 1263 dasm_put(Dst, 1925, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1238 dasm_put(Dst, 1995, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next)); 1264 dasm_put(Dst, 2004, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1239 dasm_put(Dst, 2053, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD); 1265 dasm_put(Dst, 2062, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
1240 dasm_put(Dst, 2119, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB); 1266 dasm_put(Dst, 2128, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
1241 dasm_put(Dst, 2190, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB); 1267 dasm_put(Dst, 2199, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
1242 dasm_put(Dst, 2280, 1+1, LJ_TISNUM); 1268 dasm_put(Dst, 2289, 1+1, LJ_TISNUM);
1243 if (LJ_DUALNUM) { 1269 if (LJ_DUALNUM) {
1244 dasm_put(Dst, 2294); 1270 dasm_put(Dst, 2303);
1245 } else { 1271 } else {
1246 dasm_put(Dst, 2311); 1272 dasm_put(Dst, 2320);
1247 } 1273 }
1248 if (sse) { 1274 if (sse) {
1249 dasm_put(Dst, 2316); 1275 dasm_put(Dst, 2325);
1250 } else { 1276 } else {
1251 dasm_put(Dst, 2326); 1277 dasm_put(Dst, 2335);
1252 } 1278 }
1253 dasm_put(Dst, 2333, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1279 dasm_put(Dst, 2342, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1254 dasm_put(Dst, 2402, Dt1(->base)); 1280 dasm_put(Dst, 2411, Dt1(->base));
1255 if (LJ_DUALNUM) { 1281 if (LJ_DUALNUM) {
1256 dasm_put(Dst, 2428); 1282 dasm_put(Dst, 2437);
1257 } else { 1283 } else {
1258 dasm_put(Dst, 2433); 1284 dasm_put(Dst, 2442);
1259 } 1285 }
1260 dasm_put(Dst, 2438, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); 1286 dasm_put(Dst, 2447, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1261 dasm_put(Dst, 2530, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1287 dasm_put(Dst, 2539, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1262#ifdef LUAJIT_ENABLE_LUA52COMPAT 1288#ifdef LUAJIT_ENABLE_LUA52COMPAT
1263 dasm_put(Dst, 2577, Dt6(->metatable)); 1289 dasm_put(Dst, 2586, Dt6(->metatable));
1264#endif 1290#endif
1265 dasm_put(Dst, 2586, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1291 dasm_put(Dst, 2595, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1266 if (LJ_DUALNUM) { 1292 if (LJ_DUALNUM) {
1267 dasm_put(Dst, 2572); 1293 dasm_put(Dst, 2581);
1268 } else { 1294 } else {
1269 dasm_put(Dst, 2311); 1295 dasm_put(Dst, 2320);
1270 } 1296 }
1271 dasm_put(Dst, 2641); 1297 dasm_put(Dst, 2650);
1272 if (LJ_DUALNUM) { 1298 if (LJ_DUALNUM) {
1273 dasm_put(Dst, 2646, LJ_TISNUM); 1299 dasm_put(Dst, 2655, LJ_TISNUM);
1274 } else if (sse) { 1300 } else if (sse) {
1275 dasm_put(Dst, 2662, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1301 dasm_put(Dst, 2671, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1276 } else { 1302 } else {
1277 } 1303 }
1278 dasm_put(Dst, 2695, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1304 dasm_put(Dst, 2704, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1279 dasm_put(Dst, 2557, 1+1, LJ_TTAB); 1305 dasm_put(Dst, 2566, 1+1, LJ_TTAB);
1280#ifdef LUAJIT_ENABLE_LUA52COMPAT 1306#ifdef LUAJIT_ENABLE_LUA52COMPAT
1281 dasm_put(Dst, 2577, Dt6(->metatable)); 1307 dasm_put(Dst, 2586, Dt6(->metatable));
1282#endif 1308#endif
1283 dasm_put(Dst, 2772, Dt8(->upvalue[0]), LJ_TFUNC); 1309 dasm_put(Dst, 2781, Dt8(->upvalue[0]), LJ_TFUNC);
1284 if (LJ_DUALNUM) { 1310 if (LJ_DUALNUM) {
1285 dasm_put(Dst, 2793, LJ_TISNUM); 1311 dasm_put(Dst, 2802, LJ_TISNUM);
1286 } else if (sse) { 1312 } else if (sse) {
1287 dasm_put(Dst, 2805); 1313 dasm_put(Dst, 2814);
1288 } else { 1314 } else {
1289 dasm_put(Dst, 2815); 1315 dasm_put(Dst, 2824);
1290 } 1316 }
1291 dasm_put(Dst, 2822, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1317 dasm_put(Dst, 2831, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1292 dasm_put(Dst, 2887, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1318 dasm_put(Dst, 2896, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1293 dasm_put(Dst, 2976, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1319 dasm_put(Dst, 2985, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1294 dasm_put(Dst, 3063, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1320 dasm_put(Dst, 3072, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1295 dasm_put(Dst, 3178, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1321 dasm_put(Dst, 3187, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1296 dasm_put(Dst, 3273, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1322 dasm_put(Dst, 3282, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1297 dasm_put(Dst, 3339, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1323 dasm_put(Dst, 3348, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1298 dasm_put(Dst, 3428, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1324 dasm_put(Dst, 3437, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1299 dasm_put(Dst, 3538, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1325 dasm_put(Dst, 3547, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1300 if (!LJ_DUALNUM) { 1326 if (!LJ_DUALNUM) {
1301 dasm_put(Dst, 3565); 1327 dasm_put(Dst, 3574);
1302 } 1328 }
1303 if (sse) { 1329 if (sse) {
1304 dasm_put(Dst, 3568); 1330 dasm_put(Dst, 3577);
1305 } 1331 }
1306 dasm_put(Dst, 3583, 1+1); 1332 dasm_put(Dst, 3592, 1+1);
1307 if (LJ_DUALNUM) { 1333 if (LJ_DUALNUM) {
1308 dasm_put(Dst, 3594, LJ_TISNUM, LJ_TISNUM); 1334 dasm_put(Dst, 3603, LJ_TISNUM, LJ_TISNUM);
1309 } else { 1335 } else {
1310 dasm_put(Dst, 3674, LJ_TISNUM); 1336 dasm_put(Dst, 3683, LJ_TISNUM);
1311 } 1337 }
1312 if (sse) { 1338 if (sse) {
1313 dasm_put(Dst, 3684, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1339 dasm_put(Dst, 3693, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1314 } else { 1340 } else {
1315 dasm_put(Dst, 3715); 1341 dasm_put(Dst, 3724);
1316 } 1342 }
1317 dasm_put(Dst, 3732, 1+1, FRAME_TYPE, LJ_TNIL); 1343 dasm_put(Dst, 3741, 1+1, FRAME_TYPE, LJ_TNIL);
1318 if (LJ_DUALNUM) { 1344 if (LJ_DUALNUM) {
1319 dasm_put(Dst, 3829, LJ_TISNUM); 1345 dasm_put(Dst, 3838, LJ_TISNUM);
1320 } else { 1346 } else {
1321 dasm_put(Dst, 3674, LJ_TISNUM); 1347 dasm_put(Dst, 3683, LJ_TISNUM);
1322 } 1348 }
1323 if (sse) { 1349 if (sse) {
1324 dasm_put(Dst, 3851);
1325 if (LJ_DUALNUM) {
1326 dasm_put(Dst, 3860); 1350 dasm_put(Dst, 3860);
1351 if (LJ_DUALNUM) {
1352 dasm_put(Dst, 3869);
1327 } 1353 }
1328 dasm_put(Dst, 2321); 1354 dasm_put(Dst, 2330);
1329 } else { 1355 } else {
1330 dasm_put(Dst, 3894); 1356 dasm_put(Dst, 3903);
1331 if (LJ_DUALNUM) { 1357 if (LJ_DUALNUM) {
1332 } else { 1358 } else {
1333 dasm_put(Dst, 2328); 1359 dasm_put(Dst, 2337);
1334 } 1360 }
1335 } 1361 }
1336 dasm_put(Dst, 3900); 1362 dasm_put(Dst, 3909);
1337 if (LJ_DUALNUM) { 1363 if (LJ_DUALNUM) {
1338 dasm_put(Dst, 3829, LJ_TISNUM); 1364 dasm_put(Dst, 3838, LJ_TISNUM);
1339 } else { 1365 } else {
1340 dasm_put(Dst, 3674, LJ_TISNUM); 1366 dasm_put(Dst, 3683, LJ_TISNUM);
1341 } 1367 }
1342 if (sse) { 1368 if (sse) {
1343 dasm_put(Dst, 3903); 1369 dasm_put(Dst, 3912);
1344 if (LJ_DUALNUM) { 1370 if (LJ_DUALNUM) {
1345 dasm_put(Dst, 3860); 1371 dasm_put(Dst, 3869);
1346 } 1372 }
1347 dasm_put(Dst, 2321); 1373 dasm_put(Dst, 2330);
1348 } else { 1374 } else {
1349 dasm_put(Dst, 3912); 1375 dasm_put(Dst, 3921);
1350 if (LJ_DUALNUM) { 1376 if (LJ_DUALNUM) {
1351 } else { 1377 } else {
1352 dasm_put(Dst, 2328); 1378 dasm_put(Dst, 2337);
1353 } 1379 }
1354 } 1380 }
1355 if (sse) { 1381 if (sse) {
1356 dasm_put(Dst, 3918, 1+1, LJ_TISNUM); 1382 dasm_put(Dst, 3927, 1+1, LJ_TISNUM);
1357 } else { 1383 } else {
1358 dasm_put(Dst, 3947, 1+1, LJ_TISNUM); 1384 dasm_put(Dst, 3956, 1+1, LJ_TISNUM);
1359 } 1385 }
1360 dasm_put(Dst, 3976, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1386 dasm_put(Dst, 3985, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1361 dasm_put(Dst, 4045, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1387 dasm_put(Dst, 4054, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1362 dasm_put(Dst, 4102, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1388 dasm_put(Dst, 4111, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1363 dasm_put(Dst, 4165, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1389 dasm_put(Dst, 4174, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1364 dasm_put(Dst, 4255); 1390 dasm_put(Dst, 4264);
1365 if (sse) { 1391 if (sse) {
1366 dasm_put(Dst, 4267, 1+1, LJ_TISNUM); 1392 dasm_put(Dst, 4276, 1+1, LJ_TISNUM);
1367 } else { 1393 } else {
1368 } 1394 }
1369 dasm_put(Dst, 4292); 1395 dasm_put(Dst, 4301);
1370 if (sse) { 1396 if (sse) {
1371 dasm_put(Dst, 4306, 1+1, LJ_TISNUM); 1397 dasm_put(Dst, 4315, 1+1, LJ_TISNUM);
1372 } else { 1398 } else {
1373 } 1399 }
1374 dasm_put(Dst, 4331); 1400 dasm_put(Dst, 4340);
1375 if (sse) { 1401 if (sse) {
1376 dasm_put(Dst, 4345, 1+1, LJ_TISNUM); 1402 dasm_put(Dst, 4354, 1+1, LJ_TISNUM);
1377 } else { 1403 } else {
1378 } 1404 }
1379 dasm_put(Dst, 4370); 1405 dasm_put(Dst, 4379);
1380 if (sse) { 1406 if (sse) {
1381 dasm_put(Dst, 4386, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1407 dasm_put(Dst, 4395, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1382 } else { 1408 } else {
1383 dasm_put(Dst, 4425, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1409 dasm_put(Dst, 4434, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1384 } 1410 }
1385 dasm_put(Dst, 4458, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1411 dasm_put(Dst, 4467, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1386 dasm_put(Dst, 4523, 1+1, LJ_TISNUM); 1412 dasm_put(Dst, 4532, 1+1, LJ_TISNUM);
1387 if (sse) { 1413 if (sse) {
1388 dasm_put(Dst, 4622); 1414 dasm_put(Dst, 4631);
1389 } else { 1415 } else {
1390 dasm_put(Dst, 4628); 1416 dasm_put(Dst, 4637);
1391 } 1417 }
1392 dasm_put(Dst, 4635); 1418 dasm_put(Dst, 4644);
1393 if (sse) { 1419 if (sse) {
1394 dasm_put(Dst, 4660); 1420 dasm_put(Dst, 4669);
1395 } else { 1421 } else {
1396 dasm_put(Dst, 4666); 1422 dasm_put(Dst, 4675);
1397 } 1423 }
1398 dasm_put(Dst, 4669, 1+2); 1424 dasm_put(Dst, 4678, 1+2);
1399 if (sse) { 1425 if (sse) {
1400 dasm_put(Dst, 4678); 1426 dasm_put(Dst, 4687);
1401 } else { 1427 } else {
1402 dasm_put(Dst, 4686); 1428 dasm_put(Dst, 4695);
1403 } 1429 }
1404 dasm_put(Dst, 4694); 1430 dasm_put(Dst, 4703);
1405 if (sse) { 1431 if (sse) {
1406 dasm_put(Dst, 4697, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1432 dasm_put(Dst, 4706, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1407 } else { 1433 } else {
1408 dasm_put(Dst, 4724); 1434 dasm_put(Dst, 4733);
1409 } 1435 }
1410 dasm_put(Dst, 4741); 1436 dasm_put(Dst, 4750);
1411 if (sse) { 1437 if (sse) {
1412 dasm_put(Dst, 4757, 1+1, LJ_TISNUM); 1438 dasm_put(Dst, 4766, 1+1, LJ_TISNUM);
1413 } else { 1439 } else {
1414 dasm_put(Dst, 4782, 1+1, LJ_TISNUM); 1440 dasm_put(Dst, 4791, 1+1, LJ_TISNUM);
1415 } 1441 }
1416 dasm_put(Dst, 4804); 1442 dasm_put(Dst, 4813);
1417 if (sse) { 1443 if (sse) {
1418 dasm_put(Dst, 4826); 1444 dasm_put(Dst, 4835);
1419 } else { 1445 } else {
1420 dasm_put(Dst, 4852); 1446 dasm_put(Dst, 4861);
1421 } 1447 }
1422 dasm_put(Dst, 4869, 1+2); 1448 dasm_put(Dst, 4878, 1+2);
1423 if (sse) { 1449 if (sse) {
1424 dasm_put(Dst, 4909); 1450 dasm_put(Dst, 4918);
1425 } else { 1451 } else {
1426 dasm_put(Dst, 4917); 1452 dasm_put(Dst, 4926);
1427 } 1453 }
1428 dasm_put(Dst, 4927, 2+1, LJ_TISNUM, LJ_TISNUM); 1454 dasm_put(Dst, 4936, 2+1, LJ_TISNUM, LJ_TISNUM);
1429 if (sse) { 1455 if (sse) {
1430 dasm_put(Dst, 4979, 2+1, LJ_TISNUM, LJ_TISNUM); 1456 dasm_put(Dst, 4988, 2+1, LJ_TISNUM, LJ_TISNUM);
1431 } else { 1457 } else {
1432 dasm_put(Dst, 5026, 2+1, LJ_TISNUM, LJ_TISNUM); 1458 dasm_put(Dst, 5035, 2+1, LJ_TISNUM, LJ_TISNUM);
1433 } 1459 }
1434 dasm_put(Dst, 5067, LJ_TISNUM); 1460 dasm_put(Dst, 5076, LJ_TISNUM);
1435 if (LJ_DUALNUM) { 1461 if (LJ_DUALNUM) {
1436 dasm_put(Dst, 5080, LJ_TISNUM); 1462 dasm_put(Dst, 5089, LJ_TISNUM);
1437 if (sse) { 1463 if (sse) {
1438 dasm_put(Dst, 4622); 1464 dasm_put(Dst, 4631);
1439 } else { 1465 } else {
1440 } 1466 }
1441 dasm_put(Dst, 5130); 1467 dasm_put(Dst, 5139);
1442 } else { 1468 } else {
1443 dasm_put(Dst, 2311); 1469 dasm_put(Dst, 2320);
1444 } 1470 }
1445 if (sse) { 1471 if (sse) {
1446 dasm_put(Dst, 5141, LJ_TISNUM); 1472 dasm_put(Dst, 5150, LJ_TISNUM);
1447 if (LJ_DUALNUM) { 1473 if (LJ_DUALNUM) {
1448 dasm_put(Dst, 5162); 1474 dasm_put(Dst, 5171);
1449 } else { 1475 } else {
1450 dasm_put(Dst, 2311); 1476 dasm_put(Dst, 2320);
1451 } 1477 }
1452 dasm_put(Dst, 5183); 1478 dasm_put(Dst, 5192);
1453 } else { 1479 } else {
1454 } 1480 }
1455 dasm_put(Dst, 5208, LJ_TISNUM); 1481 dasm_put(Dst, 5217, LJ_TISNUM);
1456 if (LJ_DUALNUM) { 1482 if (LJ_DUALNUM) {
1457 dasm_put(Dst, 5221, LJ_TISNUM); 1483 dasm_put(Dst, 5230, LJ_TISNUM);
1458 if (sse) { 1484 if (sse) {
1459 dasm_put(Dst, 4622); 1485 dasm_put(Dst, 4631);
1460 } else { 1486 } else {
1461 } 1487 }
1462 dasm_put(Dst, 5130); 1488 dasm_put(Dst, 5139);
1463 } else { 1489 } else {
1464 dasm_put(Dst, 2311); 1490 dasm_put(Dst, 2320);
1465 } 1491 }
1466 if (sse) { 1492 if (sse) {
1467 dasm_put(Dst, 5141, LJ_TISNUM); 1493 dasm_put(Dst, 5150, LJ_TISNUM);
1468 if (LJ_DUALNUM) { 1494 if (LJ_DUALNUM) {
1469 dasm_put(Dst, 5162); 1495 dasm_put(Dst, 5171);
1470 } else { 1496 } else {
1471 dasm_put(Dst, 2311); 1497 dasm_put(Dst, 2320);
1472 } 1498 }
1473 dasm_put(Dst, 5271); 1499 dasm_put(Dst, 5280);
1474 } else { 1500 } else {
1475 } 1501 }
1476 if (!sse) { 1502 if (!sse) {
1477 dasm_put(Dst, 5296); 1503 dasm_put(Dst, 5305);
1478 } 1504 }
1479 dasm_put(Dst, 5305, 1+1, LJ_TSTR); 1505 dasm_put(Dst, 5314, 1+1, LJ_TSTR);
1480 if (LJ_DUALNUM) { 1506 if (LJ_DUALNUM) {
1481 dasm_put(Dst, 5327, Dt5(->len)); 1507 dasm_put(Dst, 5336, Dt5(->len));
1482 } else if (sse) { 1508 } else if (sse) {
1483 dasm_put(Dst, 5335, Dt5(->len)); 1509 dasm_put(Dst, 5344, Dt5(->len));
1484 } else { 1510 } else {
1485 dasm_put(Dst, 5346, Dt5(->len)); 1511 dasm_put(Dst, 5355, Dt5(->len));
1486 } 1512 }
1487 dasm_put(Dst, 5354, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1513 dasm_put(Dst, 5363, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1488 if (LJ_DUALNUM) { 1514 if (LJ_DUALNUM) {
1489 dasm_put(Dst, 5330); 1515 dasm_put(Dst, 5339);
1490 } else if (sse) { 1516 } else if (sse) {
1491 dasm_put(Dst, 5392); 1517 dasm_put(Dst, 5401);
1492 } else { 1518 } else {
1493 dasm_put(Dst, 5402); 1519 dasm_put(Dst, 5411);
1494 } 1520 }
1495 dasm_put(Dst, 5413, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1521 dasm_put(Dst, 5422, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1496 if (LJ_DUALNUM) { 1522 if (LJ_DUALNUM) {
1497 dasm_put(Dst, 5446); 1523 dasm_put(Dst, 5455);
1498 } else if (sse) { 1524 } else if (sse) {
1499 dasm_put(Dst, 5469); 1525 dasm_put(Dst, 5478);
1500 } else { 1526 } else {
1501 dasm_put(Dst, 5495); 1527 dasm_put(Dst, 5504);
1502 } 1528 }
1503 dasm_put(Dst, 5519, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1529 dasm_put(Dst, 5528, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1504 if (LJ_DUALNUM) { 1530 if (LJ_DUALNUM) {
1505 dasm_put(Dst, 5628); 1531 dasm_put(Dst, 5637);
1506 } else if (sse) { 1532 } else if (sse) {
1507 dasm_put(Dst, 5640); 1533 dasm_put(Dst, 5649);
1508 } else { 1534 } else {
1509 dasm_put(Dst, 5655); 1535 dasm_put(Dst, 5664);
1510 } 1536 }
1511 dasm_put(Dst, 5667, LJ_TSTR, LJ_TISNUM); 1537 dasm_put(Dst, 5676, LJ_TSTR, LJ_TISNUM);
1512 if (LJ_DUALNUM) { 1538 if (LJ_DUALNUM) {
1513 dasm_put(Dst, 2572); 1539 dasm_put(Dst, 2581);
1514 } else { 1540 } else {
1515 dasm_put(Dst, 2311); 1541 dasm_put(Dst, 2320);
1516 } 1542 }
1517 dasm_put(Dst, 5684, Dt5(->len)); 1543 dasm_put(Dst, 5693, Dt5(->len));
1518 if (LJ_DUALNUM) { 1544 if (LJ_DUALNUM) {
1519 dasm_put(Dst, 5694); 1545 dasm_put(Dst, 5703);
1520 } else if (sse) { 1546 } else if (sse) {
1521 dasm_put(Dst, 5698); 1547 dasm_put(Dst, 5707);
1522 } else { 1548 } else {
1523 } 1549 }
1524 dasm_put(Dst, 5705, sizeof(GCstr)-1); 1550 dasm_put(Dst, 5714, sizeof(GCstr)-1);
1525 dasm_put(Dst, 5780, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1551 dasm_put(Dst, 5789, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1526 dasm_put(Dst, 5841, LJ_TSTR, LJ_TISNUM); 1552 dasm_put(Dst, 5850, LJ_TSTR, LJ_TISNUM);
1527 if (LJ_DUALNUM) { 1553 if (LJ_DUALNUM) {
1528 dasm_put(Dst, 5858); 1554 dasm_put(Dst, 5867);
1529 } else if (sse) { 1555 } else if (sse) {
1530 dasm_put(Dst, 5866); 1556 dasm_put(Dst, 5875);
1531 } else { 1557 } else {
1532 dasm_put(Dst, 5877); 1558 dasm_put(Dst, 5886);
1533 } 1559 }
1534 dasm_put(Dst, 5893, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1560 dasm_put(Dst, 5902, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1535 dasm_put(Dst, 5961, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1561 dasm_put(Dst, 5970, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1536 dasm_put(Dst, 6028, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1562 dasm_put(Dst, 6037, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1537 dasm_put(Dst, 6101, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1563 dasm_put(Dst, 6110, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1538 dasm_put(Dst, 6186, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1564 dasm_put(Dst, 6195, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1539 dasm_put(Dst, 6260, 1+1, LJ_TTAB); 1565 dasm_put(Dst, 6269, 1+1, LJ_TTAB);
1540 if (LJ_DUALNUM) { 1566 if (LJ_DUALNUM) {
1541 dasm_put(Dst, 6327); 1567 dasm_put(Dst, 6336);
1542 } else if (sse) { 1568 } else if (sse) {
1543 dasm_put(Dst, 6334); 1569 dasm_put(Dst, 6343);
1544 } else { 1570 } else {
1545 } 1571 }
1546 dasm_put(Dst, 6344, 1+1, LJ_TISNUM); 1572 dasm_put(Dst, 6353, 1+1, LJ_TISNUM);
1547 if (LJ_DUALNUM) { 1573 if (LJ_DUALNUM) {
1548 dasm_put(Dst, 6360); 1574 dasm_put(Dst, 6369);
1549 } else { 1575 } else {
1550 dasm_put(Dst, 2311); 1576 dasm_put(Dst, 2320);
1551 } 1577 }
1552 if (sse) { 1578 if (sse) {
1553 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1579 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1554 } else { 1580 } else {
1555 } 1581 }
1556 dasm_put(Dst, 106); 1582 dasm_put(Dst, 106);
1557 if (LJ_DUALNUM || sse) { 1583 if (LJ_DUALNUM || sse) {
1558 if (!sse) { 1584 if (!sse) {
1559 } 1585 }
1560 dasm_put(Dst, 6401); 1586 dasm_put(Dst, 6410);
1561 } else { 1587 } else {
1562 } 1588 }
1563 dasm_put(Dst, 6406, 1+1); 1589 dasm_put(Dst, 6415, 1+1);
1564 if (sse) { 1590 if (sse) {
1565 dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1591 dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1566 } else { 1592 } else {
1567 dasm_put(Dst, 6427); 1593 dasm_put(Dst, 6436);
1568 } 1594 }
1569 dasm_put(Dst, 2288, LJ_TISNUM); 1595 dasm_put(Dst, 2297, LJ_TISNUM);
1570 if (LJ_DUALNUM) { 1596 if (LJ_DUALNUM) {
1571 dasm_put(Dst, 6435); 1597 dasm_put(Dst, 6444);
1572 } else { 1598 } else {
1573 dasm_put(Dst, 2311); 1599 dasm_put(Dst, 2320);
1574 } 1600 }
1575 if (sse) { 1601 if (sse) {
1576 dasm_put(Dst, 6452); 1602 dasm_put(Dst, 6461);
1577 } else { 1603 } else {
1578 } 1604 }
1579 dasm_put(Dst, 6467, LJ_TISNUM); 1605 dasm_put(Dst, 6476, LJ_TISNUM);
1580 if (LJ_DUALNUM) { 1606 if (LJ_DUALNUM) {
1581 dasm_put(Dst, 6492); 1607 dasm_put(Dst, 6501);
1582 } else { 1608 } else {
1583 dasm_put(Dst, 6512); 1609 dasm_put(Dst, 6521);
1584 } 1610 }
1585 if (sse) { 1611 if (sse) {
1586 dasm_put(Dst, 6517); 1612 dasm_put(Dst, 6526);
1587 } else { 1613 } else {
1588 } 1614 }
1589 dasm_put(Dst, 6534, 1+1); 1615 dasm_put(Dst, 6543, 1+1);
1590 if (sse) { 1616 if (sse) {
1591 dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1617 dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1592 } else { 1618 } else {
1593 dasm_put(Dst, 6427); 1619 dasm_put(Dst, 6436);
1594 } 1620 }
1595 dasm_put(Dst, 2288, LJ_TISNUM); 1621 dasm_put(Dst, 2297, LJ_TISNUM);
1596 if (LJ_DUALNUM) { 1622 if (LJ_DUALNUM) {
1597 dasm_put(Dst, 6435); 1623 dasm_put(Dst, 6444);
1598 } else { 1624 } else {
1599 dasm_put(Dst, 2311); 1625 dasm_put(Dst, 2320);
1600 } 1626 }
1601 if (sse) { 1627 if (sse) {
1602 dasm_put(Dst, 6452); 1628 dasm_put(Dst, 6461);
1603 } else { 1629 } else {
1604 } 1630 }
1605 dasm_put(Dst, 6467, LJ_TISNUM); 1631 dasm_put(Dst, 6476, LJ_TISNUM);
1606 if (LJ_DUALNUM) { 1632 if (LJ_DUALNUM) {
1607 dasm_put(Dst, 6552); 1633 dasm_put(Dst, 6561);
1608 } else { 1634 } else {
1609 dasm_put(Dst, 6512); 1635 dasm_put(Dst, 6521);
1610 } 1636 }
1611 if (sse) { 1637 if (sse) {
1612 dasm_put(Dst, 6572); 1638 dasm_put(Dst, 6581);
1613 } else { 1639 } else {
1614 } 1640 }
1615 dasm_put(Dst, 6589, 1+1); 1641 dasm_put(Dst, 6598, 1+1);
1616 if (sse) { 1642 if (sse) {
1617 dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1643 dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1618 } else { 1644 } else {
1619 dasm_put(Dst, 6427); 1645 dasm_put(Dst, 6436);
1620 } 1646 }
1621 dasm_put(Dst, 2288, LJ_TISNUM); 1647 dasm_put(Dst, 2297, LJ_TISNUM);
1622 if (LJ_DUALNUM) { 1648 if (LJ_DUALNUM) {
1623 dasm_put(Dst, 6435); 1649 dasm_put(Dst, 6444);
1624 } else { 1650 } else {
1625 dasm_put(Dst, 2311); 1651 dasm_put(Dst, 2320);
1626 } 1652 }
1627 if (sse) { 1653 if (sse) {
1628 dasm_put(Dst, 6452); 1654 dasm_put(Dst, 6461);
1629 } else { 1655 } else {
1630 } 1656 }
1631 dasm_put(Dst, 6467, LJ_TISNUM); 1657 dasm_put(Dst, 6476, LJ_TISNUM);
1632 if (LJ_DUALNUM) { 1658 if (LJ_DUALNUM) {
1633 dasm_put(Dst, 6607); 1659 dasm_put(Dst, 6616);
1634 } else { 1660 } else {
1635 dasm_put(Dst, 6512); 1661 dasm_put(Dst, 6521);
1636 } 1662 }
1637 if (sse) { 1663 if (sse) {
1638 dasm_put(Dst, 6627); 1664 dasm_put(Dst, 6636);
1639 } else { 1665 } else {
1640 } 1666 }
1641 dasm_put(Dst, 6644, 1+1, LJ_TISNUM); 1667 dasm_put(Dst, 6653, 1+1, LJ_TISNUM);
1642 if (LJ_DUALNUM) { 1668 if (LJ_DUALNUM) {
1643 dasm_put(Dst, 6435); 1669 dasm_put(Dst, 6444);
1644 } else { 1670 } else {
1645 dasm_put(Dst, 2311); 1671 dasm_put(Dst, 2320);
1646 } 1672 }
1647 if (sse) { 1673 if (sse) {
1648 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1674 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1649 } else { 1675 } else {
1650 } 1676 }
1651 dasm_put(Dst, 6667, 1+1, LJ_TISNUM); 1677 dasm_put(Dst, 6676, 1+1, LJ_TISNUM);
1652 if (LJ_DUALNUM) { 1678 if (LJ_DUALNUM) {
1653 dasm_put(Dst, 6435); 1679 dasm_put(Dst, 6444);
1654 } else { 1680 } else {
1655 dasm_put(Dst, 2311); 1681 dasm_put(Dst, 2320);
1656 } 1682 }
1657 if (sse) { 1683 if (sse) {
1658 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1684 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1659 } else { 1685 } else {
1660 } 1686 }
1661 dasm_put(Dst, 6691); 1687 dasm_put(Dst, 6700);
1662 if (LJ_DUALNUM) { 1688 if (LJ_DUALNUM) {
1663 dasm_put(Dst, 6401); 1689 dasm_put(Dst, 6410);
1664 } else if (sse) { 1690 } else if (sse) {
1665 dasm_put(Dst, 6697); 1691 dasm_put(Dst, 6706);
1666 } else { 1692 } else {
1667 } 1693 }
1668 dasm_put(Dst, 6709); 1694 dasm_put(Dst, 6718);
1669 if (LJ_DUALNUM) { 1695 if (LJ_DUALNUM) {
1670 dasm_put(Dst, 6720, 1+1, LJ_TISNUM); 1696 dasm_put(Dst, 6729, 1+1, LJ_TISNUM);
1671 if (LJ_DUALNUM) { 1697 if (LJ_DUALNUM) {
1672 dasm_put(Dst, 6435); 1698 dasm_put(Dst, 6444);
1673 } else { 1699 } else {
1674 dasm_put(Dst, 2311); 1700 dasm_put(Dst, 2320);
1675 } 1701 }
1676 if (sse) { 1702 if (sse) {
1677 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1703 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1678 } else { 1704 } else {
1679 } 1705 }
1680 dasm_put(Dst, 6736, LJ_TISNUM); 1706 dasm_put(Dst, 6745, LJ_TISNUM);
1681 } else if (sse) { 1707 } else if (sse) {
1682 dasm_put(Dst, 6751, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1708 dasm_put(Dst, 6760, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1683 } else { 1709 } else {
1684 } 1710 }
1685 dasm_put(Dst, 6818); 1711 dasm_put(Dst, 6827);
1686 if (LJ_DUALNUM) { 1712 if (LJ_DUALNUM) {
1687 dasm_put(Dst, 6825, 1+1, LJ_TISNUM); 1713 dasm_put(Dst, 6834, 1+1, LJ_TISNUM);
1688 if (LJ_DUALNUM) { 1714 if (LJ_DUALNUM) {
1689 dasm_put(Dst, 6435); 1715 dasm_put(Dst, 6444);
1690 } else { 1716 } else {
1691 dasm_put(Dst, 2311); 1717 dasm_put(Dst, 2320);
1692 } 1718 }
1693 if (sse) { 1719 if (sse) {
1694 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1720 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1695 } else { 1721 } else {
1696 } 1722 }
1697 dasm_put(Dst, 6736, LJ_TISNUM); 1723 dasm_put(Dst, 6745, LJ_TISNUM);
1698 } else if (sse) { 1724 } else if (sse) {
1699 dasm_put(Dst, 6841, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1725 dasm_put(Dst, 6850, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1700 } else { 1726 } else {
1701 } 1727 }
1702 dasm_put(Dst, 6908); 1728 dasm_put(Dst, 6917);
1703 if (LJ_DUALNUM) { 1729 if (LJ_DUALNUM) {
1704 dasm_put(Dst, 6916, 1+1, LJ_TISNUM); 1730 dasm_put(Dst, 6925, 1+1, LJ_TISNUM);
1705 if (LJ_DUALNUM) { 1731 if (LJ_DUALNUM) {
1706 dasm_put(Dst, 6435); 1732 dasm_put(Dst, 6444);
1707 } else { 1733 } else {
1708 dasm_put(Dst, 2311); 1734 dasm_put(Dst, 2320);
1709 } 1735 }
1710 if (sse) { 1736 if (sse) {
1711 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1737 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1712 } else { 1738 } else {
1713 } 1739 }
1714 dasm_put(Dst, 6736, LJ_TISNUM); 1740 dasm_put(Dst, 6745, LJ_TISNUM);
1715 } else if (sse) { 1741 } else if (sse) {
1716 dasm_put(Dst, 6932, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1742 dasm_put(Dst, 6941, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1717 } else { 1743 } else {
1718 } 1744 }
1719 dasm_put(Dst, 6999); 1745 dasm_put(Dst, 7008);
1720 if (LJ_DUALNUM) { 1746 if (LJ_DUALNUM) {
1721 dasm_put(Dst, 7007, 1+1, LJ_TISNUM); 1747 dasm_put(Dst, 7016, 1+1, LJ_TISNUM);
1722 if (LJ_DUALNUM) { 1748 if (LJ_DUALNUM) {
1723 dasm_put(Dst, 6435); 1749 dasm_put(Dst, 6444);
1724 } else { 1750 } else {
1725 dasm_put(Dst, 2311); 1751 dasm_put(Dst, 2320);
1726 } 1752 }
1727 if (sse) { 1753 if (sse) {
1728 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1754 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1729 } else { 1755 } else {
1730 } 1756 }
1731 dasm_put(Dst, 6736, LJ_TISNUM); 1757 dasm_put(Dst, 6745, LJ_TISNUM);
1732 } else if (sse) { 1758 } else if (sse) {
1733 dasm_put(Dst, 7023, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1759 dasm_put(Dst, 7032, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1734 } else { 1760 } else {
1735 } 1761 }
1736 dasm_put(Dst, 7090); 1762 dasm_put(Dst, 7099);
1737 if (LJ_DUALNUM) { 1763 if (LJ_DUALNUM) {
1738 dasm_put(Dst, 7097, 1+1, LJ_TISNUM); 1764 dasm_put(Dst, 7106, 1+1, LJ_TISNUM);
1739 if (LJ_DUALNUM) { 1765 if (LJ_DUALNUM) {
1740 dasm_put(Dst, 6435); 1766 dasm_put(Dst, 6444);
1741 } else { 1767 } else {
1742 dasm_put(Dst, 2311); 1768 dasm_put(Dst, 2320);
1743 } 1769 }
1744 if (sse) { 1770 if (sse) {
1745 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1771 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1746 } else { 1772 } else {
1747 } 1773 }
1748 dasm_put(Dst, 6736, LJ_TISNUM); 1774 dasm_put(Dst, 6745, LJ_TISNUM);
1749 } else if (sse) { 1775 } else if (sse) {
1750 dasm_put(Dst, 7113, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1776 dasm_put(Dst, 7122, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1751 } else { 1777 } else {
1752 } 1778 }
1753 dasm_put(Dst, 7180, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1779 dasm_put(Dst, 7189, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1754 dasm_put(Dst, 7256, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1780 dasm_put(Dst, 7265, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1755 dasm_put(Dst, 7383, Dt1(->top), Dt1(->base), Dt1(->top)); 1781 dasm_put(Dst, 7392, Dt1(->top), Dt1(->base), Dt1(->top));
1756#if LJ_HASJIT 1782#if LJ_HASJIT
1757 dasm_put(Dst, 7422, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1783 dasm_put(Dst, 7431, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1758#endif 1784#endif
1759 dasm_put(Dst, 7455, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1785 dasm_put(Dst, 7464, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1760 dasm_put(Dst, 7509, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1786 dasm_put(Dst, 7518, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1761#if LJ_HASJIT 1787#if LJ_HASJIT
1762 dasm_put(Dst, 7576, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1788 dasm_put(Dst, 7585, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1763#endif 1789#endif
1764 dasm_put(Dst, 7623); 1790 dasm_put(Dst, 7632);
1765#if LJ_HASJIT 1791#if LJ_HASJIT
1766 dasm_put(Dst, 7450); 1792 dasm_put(Dst, 7459);
1767#endif 1793#endif
1768 dasm_put(Dst, 7630); 1794 dasm_put(Dst, 7639);
1769#if LJ_HASJIT 1795#if LJ_HASJIT
1770 dasm_put(Dst, 7633); 1796 dasm_put(Dst, 7642);
1771#endif 1797#endif
1772 dasm_put(Dst, 7643, Dt1(->base), Dt1(->top)); 1798 dasm_put(Dst, 7652, Dt1(->base), Dt1(->top));
1773#if LJ_HASJIT 1799#if LJ_HASJIT
1774 dasm_put(Dst, 7676); 1800 dasm_put(Dst, 7685);
1775#endif 1801#endif
1776 dasm_put(Dst, 7681, Dt1(->base), Dt1(->top)); 1802 dasm_put(Dst, 7690, Dt1(->base), Dt1(->top));
1777#if LJ_HASJIT 1803#if LJ_HASJIT
1778 dasm_put(Dst, 7712, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); 1804 dasm_put(Dst, 7721, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
1779#endif 1805#endif
1780 dasm_put(Dst, 7951); 1806 dasm_put(Dst, 7960);
1781#if LJ_HASJIT 1807#if LJ_HASJIT
1782 dasm_put(Dst, 7954, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1808 dasm_put(Dst, 7963, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1783#endif 1809#endif
1784 dasm_put(Dst, 8054); 1810 dasm_put(Dst, 8063);
1785 if (!sse) { 1811 if (!sse) {
1786 dasm_put(Dst, 8057); 1812 dasm_put(Dst, 8066);
1787 } 1813 }
1788 dasm_put(Dst, 8102, (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)); 1814 dasm_put(Dst, 8111, (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));
1789 if (!sse) { 1815 if (!sse) {
1790 dasm_put(Dst, 8188); 1816 dasm_put(Dst, 8197);
1791 } 1817 }
1792 dasm_put(Dst, 8233, (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)); 1818 dasm_put(Dst, 8242, (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));
1793 if (!sse) { 1819 if (!sse) {
1794 dasm_put(Dst, 8319); 1820 dasm_put(Dst, 8328);
1795 } 1821 }
1796 dasm_put(Dst, 8358, (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)); 1822 dasm_put(Dst, 8367, (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));
1797 if (sse) { 1823 if (sse) {
1798 dasm_put(Dst, 8447, (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)); 1824 dasm_put(Dst, 8456, (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));
1799 } else { 1825 } else {
1800 dasm_put(Dst, 8561); 1826 dasm_put(Dst, 8570);
1801 } 1827 }
1802 dasm_put(Dst, 8608); 1828 dasm_put(Dst, 8617);
1803 if (!sse) { 1829 if (!sse) {
1804 } else { 1830 } else {
1805 dasm_put(Dst, 8685); 1831 dasm_put(Dst, 8694);
1806 } 1832 }
1807 dasm_put(Dst, 8688); 1833 dasm_put(Dst, 8697);
1808 dasm_put(Dst, 8773, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1834 dasm_put(Dst, 8782, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1809 dasm_put(Dst, 8876, (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)); 1835 dasm_put(Dst, 8885, (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));
1810 dasm_put(Dst, 9038); 1836 dasm_put(Dst, 9047);
1811#if LJ_HASJIT 1837#if LJ_HASJIT
1812 if (sse) { 1838 if (sse) {
1813 dasm_put(Dst, 9079); 1839 dasm_put(Dst, 9088);
1814 dasm_put(Dst, 9149); 1840 dasm_put(Dst, 9158);
1815 dasm_put(Dst, 9221); 1841 dasm_put(Dst, 9230);
1816 } else { 1842 } else {
1817 dasm_put(Dst, 9273); 1843 dasm_put(Dst, 9282);
1818 dasm_put(Dst, 9365); 1844 dasm_put(Dst, 9374);
1819 } 1845 }
1820 dasm_put(Dst, 9411); 1846 dasm_put(Dst, 9420);
1821#endif 1847#endif
1822 dasm_put(Dst, 9415); 1848 dasm_put(Dst, 9424);
1823 if (sse) { 1849 if (sse) {
1824 dasm_put(Dst, 9418, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1850 dasm_put(Dst, 9427, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1825 dasm_put(Dst, 9503, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1851 dasm_put(Dst, 9512, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1826 } else { 1852 } else {
1827 dasm_put(Dst, 9631); 1853 dasm_put(Dst, 9640);
1828 dasm_put(Dst, 9714); 1854 dasm_put(Dst, 9723);
1829 if (cmov) { 1855 if (cmov) {
1830 dasm_put(Dst, 9769); 1856 dasm_put(Dst, 9778);
1831 } else { 1857 } else {
1832 dasm_put(Dst, 9788); 1858 dasm_put(Dst, 9797);
1833 } 1859 }
1834 dasm_put(Dst, 9411); 1860 dasm_put(Dst, 9420);
1835 } 1861 }
1836 dasm_put(Dst, 9829); 1862 dasm_put(Dst, 9838);
1837#ifdef LUA_USE_ASSERT 1863#ifdef LUA_USE_ASSERT
1838 dasm_put(Dst, 9413); 1864 dasm_put(Dst, 9422);
1865#endif
1866 dasm_put(Dst, 9862);
1867#if LJ_HASFFI
1868#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
1869 dasm_put(Dst, 9866, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE, DtE(->cb.gpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[4]), DtE(->cb.fpr[5]), DtE(->cb.fpr[6]), DtE(->cb.fpr[7]), DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1870 dasm_put(Dst, 9990, Dt1(->base), Dt1(->top), Dt7(->pc));
1839#endif 1871#endif
1840 dasm_put(Dst, 9853); 1872 dasm_put(Dst, 10030);
1841#if LJ_HASFFI 1873#if LJ_HASFFI
1842#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1874 dasm_put(Dst, 10033, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]));
1843 dasm_put(Dst, 9857, DtE(->spadj)); 1875#endif
1876 dasm_put(Dst, 10074);
1877#if LJ_HASFFI
1878#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1879 dasm_put(Dst, 10077, DtF(->spadj));
1844#if LJ_TARGET_WINDOWS 1880#if LJ_TARGET_WINDOWS
1845#endif 1881#endif
1846 dasm_put(Dst, 9873, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1])); 1882 dasm_put(Dst, 10093, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->fpr[0]), DtF(->fpr[1]));
1847 dasm_put(Dst, 9952, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1])); 1883 dasm_put(Dst, 10172, DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->fpr[1]));
1848#if LJ_TARGET_WINDOWS 1884#if LJ_TARGET_WINDOWS
1849#endif 1885#endif
1850 dasm_put(Dst, 10007); 1886 dasm_put(Dst, 10227);
1851#endif 1887#endif
1852} 1888}
1853 1889
@@ -1855,7 +1891,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1855static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1891static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1856{ 1892{
1857 int vk = 0; 1893 int vk = 0;
1858 dasm_put(Dst, 10015, defop); 1894 dasm_put(Dst, 829, defop);
1859 1895
1860 switch (op) { 1896 switch (op) {
1861 1897
@@ -1866,302 +1902,302 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1866 1902
1867 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1903 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1868 if (LJ_DUALNUM) { 1904 if (LJ_DUALNUM) {
1869 dasm_put(Dst, 10017, LJ_TISNUM, LJ_TISNUM); 1905 dasm_put(Dst, 10235, LJ_TISNUM, LJ_TISNUM);
1870 switch (op) { 1906 switch (op) {
1871 case BC_ISLT: 1907 case BC_ISLT:
1872 dasm_put(Dst, 10047); 1908 dasm_put(Dst, 10265);
1873 break; 1909 break;
1874 case BC_ISGE: 1910 case BC_ISGE:
1875 dasm_put(Dst, 10052); 1911 dasm_put(Dst, 10270);
1876 break; 1912 break;
1877 case BC_ISLE: 1913 case BC_ISLE:
1878 dasm_put(Dst, 10057); 1914 dasm_put(Dst, 10275);
1879 break; 1915 break;
1880 case BC_ISGT: 1916 case BC_ISGT:
1881 dasm_put(Dst, 10062); 1917 dasm_put(Dst, 10280);
1882 break; 1918 break;
1883 default: break; /* Shut up GCC. */ 1919 default: break; /* Shut up GCC. */
1884 } 1920 }
1885 dasm_put(Dst, 10067, -BCBIAS_J*4, LJ_TISNUM); 1921 dasm_put(Dst, 10285, -BCBIAS_J*4, LJ_TISNUM);
1886 if (sse) { 1922 if (sse) {
1887 dasm_put(Dst, 10122); 1923 dasm_put(Dst, 10340);
1888 } else { 1924 } else {
1889 dasm_put(Dst, 10133); 1925 dasm_put(Dst, 10351);
1890 } 1926 }
1891 dasm_put(Dst, 10144); 1927 dasm_put(Dst, 10362);
1892 if (sse) { 1928 if (sse) {
1893 dasm_put(Dst, 10151); 1929 dasm_put(Dst, 10369);
1894 switch (op) { 1930 switch (op) {
1895 case BC_ISLT: 1931 case BC_ISLT:
1896 dasm_put(Dst, 10171); 1932 dasm_put(Dst, 10389);
1897 break; 1933 break;
1898 case BC_ISGE: 1934 case BC_ISGE:
1899 dasm_put(Dst, 10176); 1935 dasm_put(Dst, 10394);
1900 break; 1936 break;
1901 case BC_ISLE: 1937 case BC_ISLE:
1902 dasm_put(Dst, 10181); 1938 dasm_put(Dst, 10399);
1903 break; 1939 break;
1904 case BC_ISGT: 1940 case BC_ISGT:
1905 dasm_put(Dst, 10186); 1941 dasm_put(Dst, 10404);
1906 break; 1942 break;
1907 default: break; /* Shut up GCC. */ 1943 default: break; /* Shut up GCC. */
1908 } 1944 }
1909 dasm_put(Dst, 10191); 1945 dasm_put(Dst, 10409);
1910 } else { 1946 } else {
1911 dasm_put(Dst, 10196); 1947 dasm_put(Dst, 10414);
1912 } 1948 }
1913 } else { 1949 } else {
1914 dasm_put(Dst, 10204, LJ_TISNUM, LJ_TISNUM); 1950 dasm_put(Dst, 10422, LJ_TISNUM, LJ_TISNUM);
1915 } 1951 }
1916 if (sse) { 1952 if (sse) {
1917 dasm_put(Dst, 10225); 1953 dasm_put(Dst, 10443);
1918 } else { 1954 } else {
1919 dasm_put(Dst, 10246); 1955 dasm_put(Dst, 10464);
1920 if (cmov) { 1956 if (cmov) {
1921 dasm_put(Dst, 10262); 1957 dasm_put(Dst, 10480);
1922 } else { 1958 } else {
1923 dasm_put(Dst, 10268); 1959 dasm_put(Dst, 10486);
1924 } 1960 }
1925 } 1961 }
1926 if (LJ_DUALNUM) { 1962 if (LJ_DUALNUM) {
1927 switch (op) { 1963 switch (op) {
1928 case BC_ISLT: 1964 case BC_ISLT:
1929 dasm_put(Dst, 10171); 1965 dasm_put(Dst, 10389);
1930 break; 1966 break;
1931 case BC_ISGE: 1967 case BC_ISGE:
1932 dasm_put(Dst, 10176); 1968 dasm_put(Dst, 10394);
1933 break; 1969 break;
1934 case BC_ISLE: 1970 case BC_ISLE:
1935 dasm_put(Dst, 10181); 1971 dasm_put(Dst, 10399);
1936 break; 1972 break;
1937 case BC_ISGT: 1973 case BC_ISGT:
1938 dasm_put(Dst, 10186); 1974 dasm_put(Dst, 10404);
1939 break; 1975 break;
1940 default: break; /* Shut up GCC. */ 1976 default: break; /* Shut up GCC. */
1941 } 1977 }
1942 dasm_put(Dst, 10191); 1978 dasm_put(Dst, 10409);
1943 } else { 1979 } else {
1944 switch (op) { 1980 switch (op) {
1945 case BC_ISLT: 1981 case BC_ISLT:
1946 dasm_put(Dst, 10275); 1982 dasm_put(Dst, 817);
1947 break; 1983 break;
1948 case BC_ISGE: 1984 case BC_ISGE:
1949 dasm_put(Dst, 10280); 1985 dasm_put(Dst, 10493);
1950 break; 1986 break;
1951 case BC_ISLE: 1987 case BC_ISLE:
1952 dasm_put(Dst, 10285); 1988 dasm_put(Dst, 10498);
1953 break; 1989 break;
1954 case BC_ISGT: 1990 case BC_ISGT:
1955 dasm_put(Dst, 10290); 1991 dasm_put(Dst, 10503);
1956 break; 1992 break;
1957 default: break; /* Shut up GCC. */ 1993 default: break; /* Shut up GCC. */
1958 } 1994 }
1959 dasm_put(Dst, 10295, -BCBIAS_J*4); 1995 dasm_put(Dst, 10508, -BCBIAS_J*4);
1960 } 1996 }
1961 break; 1997 break;
1962 1998
1963 case BC_ISEQV: case BC_ISNEV: 1999 case BC_ISEQV: case BC_ISNEV:
1964 vk = op == BC_ISEQV; 2000 vk = op == BC_ISEQV;
1965 dasm_put(Dst, 10328); 2001 dasm_put(Dst, 10541);
1966 if (LJ_DUALNUM) { 2002 if (LJ_DUALNUM) {
1967 dasm_put(Dst, 10336, LJ_TISNUM, LJ_TISNUM); 2003 dasm_put(Dst, 10549, LJ_TISNUM, LJ_TISNUM);
1968 if (vk) { 2004 if (vk) {
1969 dasm_put(Dst, 10361); 2005 dasm_put(Dst, 10574);
1970 } else { 2006 } else {
1971 dasm_put(Dst, 10366); 2007 dasm_put(Dst, 10579);
1972 } 2008 }
1973 dasm_put(Dst, 10371, -BCBIAS_J*4, LJ_TISNUM); 2009 dasm_put(Dst, 10584, -BCBIAS_J*4, LJ_TISNUM);
1974 if (sse) { 2010 if (sse) {
1975 dasm_put(Dst, 10424); 2011 dasm_put(Dst, 10637);
1976 } else { 2012 } else {
1977 dasm_put(Dst, 10431); 2013 dasm_put(Dst, 10644);
1978 } 2014 }
1979 dasm_put(Dst, 10435); 2015 dasm_put(Dst, 10648);
1980 if (sse) { 2016 if (sse) {
1981 dasm_put(Dst, 10446); 2017 dasm_put(Dst, 10659);
1982 } else { 2018 } else {
1983 dasm_put(Dst, 10458); 2019 dasm_put(Dst, 10671);
1984 } 2020 }
1985 dasm_put(Dst, 10465); 2021 dasm_put(Dst, 10678);
1986 } else { 2022 } else {
1987 dasm_put(Dst, 10470, LJ_TISNUM, LJ_TISNUM); 2023 dasm_put(Dst, 10683, LJ_TISNUM, LJ_TISNUM);
1988 } 2024 }
1989 if (sse) { 2025 if (sse) {
1990 dasm_put(Dst, 10489); 2026 dasm_put(Dst, 10702);
1991 } else { 2027 } else {
1992 dasm_put(Dst, 10507); 2028 dasm_put(Dst, 10720);
1993 if (cmov) { 2029 if (cmov) {
1994 dasm_put(Dst, 10262); 2030 dasm_put(Dst, 10480);
1995 } else { 2031 } else {
1996 dasm_put(Dst, 10268); 2032 dasm_put(Dst, 10486);
1997 } 2033 }
1998 } 2034 }
1999 iseqne_fp: 2035 iseqne_fp:
2000 if (vk) { 2036 if (vk) {
2001 dasm_put(Dst, 10520); 2037 dasm_put(Dst, 10733);
2002 } else { 2038 } else {
2003 dasm_put(Dst, 10529); 2039 dasm_put(Dst, 10742);
2004 } 2040 }
2005 iseqne_end: 2041 iseqne_end:
2006 if (vk) { 2042 if (vk) {
2007 dasm_put(Dst, 10538, -BCBIAS_J*4); 2043 dasm_put(Dst, 10751, -BCBIAS_J*4);
2008 if (!LJ_HASFFI) { 2044 if (!LJ_HASFFI) {
2009 dasm_put(Dst, 4675); 2045 dasm_put(Dst, 4684);
2010 } 2046 }
2011 } else { 2047 } else {
2012 if (!LJ_HASFFI) { 2048 if (!LJ_HASFFI) {
2013 dasm_put(Dst, 4675); 2049 dasm_put(Dst, 4684);
2014 } 2050 }
2015 dasm_put(Dst, 10553, -BCBIAS_J*4); 2051 dasm_put(Dst, 10766, -BCBIAS_J*4);
2016 } 2052 }
2017 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || 2053 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
2018 op == BC_ISEQN || op == BC_ISNEN)) { 2054 op == BC_ISEQN || op == BC_ISNEN)) {
2019 dasm_put(Dst, 10568); 2055 dasm_put(Dst, 10781);
2020 } else { 2056 } else {
2021 dasm_put(Dst, 10307); 2057 dasm_put(Dst, 10520);
2022 } 2058 }
2023 if (op == BC_ISEQV || op == BC_ISNEV) { 2059 if (op == BC_ISEQV || op == BC_ISNEV) {
2024 dasm_put(Dst, 10573); 2060 dasm_put(Dst, 10786);
2025 if (LJ_HASFFI) { 2061 if (LJ_HASFFI) {
2026 dasm_put(Dst, 10576, LJ_TCDATA, LJ_TCDATA); 2062 dasm_put(Dst, 10789, LJ_TCDATA, LJ_TCDATA);
2027 } 2063 }
2028 dasm_put(Dst, 10595, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 2064 dasm_put(Dst, 10808, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
2029 if (vk) { 2065 if (vk) {
2030 dasm_put(Dst, 10659); 2066 dasm_put(Dst, 10872);
2031 } else { 2067 } else {
2032 dasm_put(Dst, 10663); 2068 dasm_put(Dst, 10876);
2033 } 2069 }
2034 dasm_put(Dst, 10669); 2070 dasm_put(Dst, 10882);
2035 } else if (LJ_HASFFI) { 2071 } else if (LJ_HASFFI) {
2036 dasm_put(Dst, 10674, LJ_TCDATA); 2072 dasm_put(Dst, 10887, LJ_TCDATA);
2037 if (LJ_DUALNUM && vk) { 2073 if (LJ_DUALNUM && vk) {
2038 dasm_put(Dst, 10681); 2074 dasm_put(Dst, 10894);
2039 } else { 2075 } else {
2040 dasm_put(Dst, 10654); 2076 dasm_put(Dst, 10867);
2041 } 2077 }
2042 dasm_put(Dst, 10686); 2078 dasm_put(Dst, 10899);
2043 } 2079 }
2044 break; 2080 break;
2045 case BC_ISEQS: case BC_ISNES: 2081 case BC_ISEQS: case BC_ISNES:
2046 vk = op == BC_ISEQS; 2082 vk = op == BC_ISEQS;
2047 dasm_put(Dst, 10691, LJ_TSTR); 2083 dasm_put(Dst, 10904, LJ_TSTR);
2048 iseqne_test: 2084 iseqne_test:
2049 if (vk) { 2085 if (vk) {
2050 dasm_put(Dst, 10524); 2086 dasm_put(Dst, 10737);
2051 } else { 2087 } else {
2052 dasm_put(Dst, 814); 2088 dasm_put(Dst, 2980);
2053 } 2089 }
2054 goto iseqne_end; 2090 goto iseqne_end;
2055 case BC_ISEQN: case BC_ISNEN: 2091 case BC_ISEQN: case BC_ISNEN:
2056 vk = op == BC_ISEQN; 2092 vk = op == BC_ISEQN;
2057 dasm_put(Dst, 10718); 2093 dasm_put(Dst, 10931);
2058 if (LJ_DUALNUM) { 2094 if (LJ_DUALNUM) {
2059 dasm_put(Dst, 10726, LJ_TISNUM, LJ_TISNUM); 2095 dasm_put(Dst, 10939, LJ_TISNUM, LJ_TISNUM);
2060 if (vk) { 2096 if (vk) {
2061 dasm_put(Dst, 10361); 2097 dasm_put(Dst, 10574);
2062 } else { 2098 } else {
2063 dasm_put(Dst, 10366); 2099 dasm_put(Dst, 10579);
2064 } 2100 }
2065 dasm_put(Dst, 10753, -BCBIAS_J*4, LJ_TISNUM); 2101 dasm_put(Dst, 10966, -BCBIAS_J*4, LJ_TISNUM);
2066 if (sse) { 2102 if (sse) {
2067 dasm_put(Dst, 10803); 2103 dasm_put(Dst, 11016);
2068 } else { 2104 } else {
2069 dasm_put(Dst, 10811); 2105 dasm_put(Dst, 11024);
2070 } 2106 }
2071 dasm_put(Dst, 10816); 2107 dasm_put(Dst, 11029);
2072 if (sse) { 2108 if (sse) {
2073 dasm_put(Dst, 10823); 2109 dasm_put(Dst, 11036);
2074 } else { 2110 } else {
2075 dasm_put(Dst, 10836); 2111 dasm_put(Dst, 11049);
2076 } 2112 }
2077 dasm_put(Dst, 10465); 2113 dasm_put(Dst, 10678);
2078 } else { 2114 } else {
2079 dasm_put(Dst, 10844, LJ_TISNUM); 2115 dasm_put(Dst, 11057, LJ_TISNUM);
2080 } 2116 }
2081 if (sse) { 2117 if (sse) {
2082 dasm_put(Dst, 10853); 2118 dasm_put(Dst, 11066);
2083 } else { 2119 } else {
2084 dasm_put(Dst, 10872); 2120 dasm_put(Dst, 11085);
2085 if (cmov) { 2121 if (cmov) {
2086 dasm_put(Dst, 10262); 2122 dasm_put(Dst, 10480);
2087 } else { 2123 } else {
2088 dasm_put(Dst, 10268); 2124 dasm_put(Dst, 10486);
2089 } 2125 }
2090 } 2126 }
2091 goto iseqne_fp; 2127 goto iseqne_fp;
2092 case BC_ISEQP: case BC_ISNEP: 2128 case BC_ISEQP: case BC_ISNEP:
2093 vk = op == BC_ISEQP; 2129 vk = op == BC_ISEQP;
2094 dasm_put(Dst, 10886); 2130 dasm_put(Dst, 11099);
2095 if (!LJ_HASFFI) goto iseqne_test; 2131 if (!LJ_HASFFI) goto iseqne_test;
2096 if (vk) { 2132 if (vk) {
2097 dasm_put(Dst, 10900, -BCBIAS_J*4, LJ_TCDATA); 2133 dasm_put(Dst, 11113, -BCBIAS_J*4, LJ_TCDATA);
2098 } else { 2134 } else {
2099 dasm_put(Dst, 10951, LJ_TCDATA, -BCBIAS_J*4); 2135 dasm_put(Dst, 11164, LJ_TCDATA, -BCBIAS_J*4);
2100 } 2136 }
2101 break; 2137 break;
2102 2138
2103 /* -- Unary test and copy ops ------------------------------------------- */ 2139 /* -- Unary test and copy ops ------------------------------------------- */
2104 2140
2105 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2141 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
2106 dasm_put(Dst, 10996, LJ_TISTRUECOND); 2142 dasm_put(Dst, 11209, LJ_TISTRUECOND);
2107 if (op == BC_IST || op == BC_ISTC) { 2143 if (op == BC_IST || op == BC_ISTC) {
2108 dasm_put(Dst, 10290); 2144 dasm_put(Dst, 10503);
2109 } else { 2145 } else {
2110 dasm_put(Dst, 10285); 2146 dasm_put(Dst, 10498);
2111 } 2147 }
2112 if (op == BC_ISTC || op == BC_ISFC) { 2148 if (op == BC_ISTC || op == BC_ISFC) {
2113 dasm_put(Dst, 11008); 2149 dasm_put(Dst, 11221);
2114 } 2150 }
2115 dasm_put(Dst, 10295, -BCBIAS_J*4); 2151 dasm_put(Dst, 10508, -BCBIAS_J*4);
2116 break; 2152 break;
2117 2153
2118 /* -- Unary ops --------------------------------------------------------- */ 2154 /* -- Unary ops --------------------------------------------------------- */
2119 2155
2120 case BC_MOV: 2156 case BC_MOV:
2121 dasm_put(Dst, 11019); 2157 dasm_put(Dst, 11232);
2122 break; 2158 break;
2123 case BC_NOT: 2159 case BC_NOT:
2124 dasm_put(Dst, 11048, LJ_TISTRUECOND, LJ_TTRUE); 2160 dasm_put(Dst, 11261, LJ_TISTRUECOND, LJ_TTRUE);
2125 break; 2161 break;
2126 case BC_UNM: 2162 case BC_UNM:
2127 if (LJ_DUALNUM) { 2163 if (LJ_DUALNUM) {
2128 dasm_put(Dst, 11085, LJ_TISNUM, LJ_TISNUM); 2164 dasm_put(Dst, 11298, LJ_TISNUM, LJ_TISNUM);
2129 } else { 2165 } else {
2130 dasm_put(Dst, 11163, LJ_TISNUM); 2166 dasm_put(Dst, 11376, LJ_TISNUM);
2131 } 2167 }
2132 if (sse) { 2168 if (sse) {
2133 dasm_put(Dst, 11174, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 2169 dasm_put(Dst, 11387, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
2134 } else { 2170 } else {
2135 dasm_put(Dst, 11199); 2171 dasm_put(Dst, 11412);
2136 } 2172 }
2137 if (LJ_DUALNUM) { 2173 if (LJ_DUALNUM) {
2138 dasm_put(Dst, 10568); 2174 dasm_put(Dst, 10781);
2139 } else { 2175 } else {
2140 dasm_put(Dst, 10307); 2176 dasm_put(Dst, 10520);
2141 } 2177 }
2142 break; 2178 break;
2143 case BC_LEN: 2179 case BC_LEN:
2144 dasm_put(Dst, 11208, LJ_TSTR); 2180 dasm_put(Dst, 11421, LJ_TSTR);
2145 if (LJ_DUALNUM) { 2181 if (LJ_DUALNUM) {
2146 dasm_put(Dst, 11222, Dt5(->len), LJ_TISNUM); 2182 dasm_put(Dst, 11435, Dt5(->len), LJ_TISNUM);
2147 } else if (sse) { 2183 } else if (sse) {
2148 dasm_put(Dst, 11236, Dt5(->len)); 2184 dasm_put(Dst, 11449, Dt5(->len));
2149 } else { 2185 } else {
2150 dasm_put(Dst, 11254, Dt5(->len)); 2186 dasm_put(Dst, 11467, Dt5(->len));
2151 } 2187 }
2152 dasm_put(Dst, 11263, LJ_TTAB); 2188 dasm_put(Dst, 11476, LJ_TTAB);
2153#ifdef LUAJIT_ENABLE_LUA52COMPAT 2189#ifdef LUAJIT_ENABLE_LUA52COMPAT
2154 dasm_put(Dst, 11299, Dt6(->metatable)); 2190 dasm_put(Dst, 11512, Dt6(->metatable));
2155#endif 2191#endif
2156 dasm_put(Dst, 11313); 2192 dasm_put(Dst, 11526);
2157 if (LJ_DUALNUM) { 2193 if (LJ_DUALNUM) {
2158 } else if (sse) { 2194 } else if (sse) {
2159 dasm_put(Dst, 11322); 2195 dasm_put(Dst, 11535);
2160 } else { 2196 } else {
2161 } 2197 }
2162 dasm_put(Dst, 11328); 2198 dasm_put(Dst, 11541);
2163#ifdef LUAJIT_ENABLE_LUA52COMPAT 2199#ifdef LUAJIT_ENABLE_LUA52COMPAT
2164 dasm_put(Dst, 11341, Dt6(->nomm), 1<<MM_len); 2200 dasm_put(Dst, 11554, Dt6(->nomm), 1<<MM_len);
2165#endif 2201#endif
2166 break; 2202 break;
2167 2203
@@ -2170,605 +2206,605 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2170 2206
2171 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2207 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
2172 if (LJ_DUALNUM) { 2208 if (LJ_DUALNUM) {
2173 dasm_put(Dst, 11357); 2209 dasm_put(Dst, 11570);
2174 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2210 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2175 switch (vk) { 2211 switch (vk) {
2176 case 0: 2212 case 0:
2177 dasm_put(Dst, 11365, LJ_TISNUM, LJ_TISNUM); 2213 dasm_put(Dst, 11578, LJ_TISNUM, LJ_TISNUM);
2178 break; 2214 break;
2179 case 1: 2215 case 1:
2180 dasm_put(Dst, 11400, LJ_TISNUM, LJ_TISNUM); 2216 dasm_put(Dst, 11613, LJ_TISNUM, LJ_TISNUM);
2181 break; 2217 break;
2182 default: 2218 default:
2183 dasm_put(Dst, 11435, LJ_TISNUM, LJ_TISNUM); 2219 dasm_put(Dst, 11648, LJ_TISNUM, LJ_TISNUM);
2184 break; 2220 break;
2185 } 2221 }
2186 dasm_put(Dst, 11468, LJ_TISNUM); 2222 dasm_put(Dst, 11681, LJ_TISNUM);
2187 if (vk == 1) { 2223 if (vk == 1) {
2188 dasm_put(Dst, 11232); 2224 dasm_put(Dst, 11445);
2189 } else { 2225 } else {
2190 dasm_put(Dst, 11015); 2226 dasm_put(Dst, 11228);
2191 } 2227 }
2192 dasm_put(Dst, 10307); 2228 dasm_put(Dst, 10520);
2193 } else { 2229 } else {
2194 dasm_put(Dst, 11357); 2230 dasm_put(Dst, 11570);
2195 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2231 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2196 switch (vk) { 2232 switch (vk) {
2197 case 0: 2233 case 0:
2198 dasm_put(Dst, 11474, LJ_TISNUM); 2234 dasm_put(Dst, 11687, LJ_TISNUM);
2199 if (LJ_DUALNUM) { 2235 if (LJ_DUALNUM) {
2200 dasm_put(Dst, 11486, LJ_TISNUM); 2236 dasm_put(Dst, 11699, LJ_TISNUM);
2201 } 2237 }
2202 if (sse) { 2238 if (sse) {
2203 dasm_put(Dst, 11498); 2239 dasm_put(Dst, 11711);
2204 } else { 2240 } else {
2205 dasm_put(Dst, 11513); 2241 dasm_put(Dst, 11726);
2206 } 2242 }
2207 break; 2243 break;
2208 case 1: 2244 case 1:
2209 dasm_put(Dst, 11522, LJ_TISNUM); 2245 dasm_put(Dst, 11735, LJ_TISNUM);
2210 if (LJ_DUALNUM) { 2246 if (LJ_DUALNUM) {
2211 dasm_put(Dst, 11534, LJ_TISNUM); 2247 dasm_put(Dst, 11747, LJ_TISNUM);
2212 } 2248 }
2213 if (sse) { 2249 if (sse) {
2214 dasm_put(Dst, 11546); 2250 dasm_put(Dst, 11759);
2215 } else { 2251 } else {
2216 dasm_put(Dst, 11561); 2252 dasm_put(Dst, 11774);
2217 } 2253 }
2218 break; 2254 break;
2219 default: 2255 default:
2220 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2256 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2221 if (sse) { 2257 if (sse) {
2222 dasm_put(Dst, 11592); 2258 dasm_put(Dst, 11805);
2223 } else { 2259 } else {
2224 dasm_put(Dst, 11606); 2260 dasm_put(Dst, 11819);
2225 } 2261 }
2226 break; 2262 break;
2227 } 2263 }
2228 if (sse) { 2264 if (sse) {
2229 dasm_put(Dst, 11192); 2265 dasm_put(Dst, 11405);
2230 } else { 2266 } else {
2231 dasm_put(Dst, 11204); 2267 dasm_put(Dst, 11417);
2232 } 2268 }
2233 dasm_put(Dst, 10307); 2269 dasm_put(Dst, 10520);
2234 } 2270 }
2235 break; 2271 break;
2236 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2272 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
2237 if (LJ_DUALNUM) { 2273 if (LJ_DUALNUM) {
2238 dasm_put(Dst, 11357); 2274 dasm_put(Dst, 11570);
2239 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2275 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2240 switch (vk) { 2276 switch (vk) {
2241 case 0: 2277 case 0:
2242 dasm_put(Dst, 11614, LJ_TISNUM, LJ_TISNUM); 2278 dasm_put(Dst, 11827, LJ_TISNUM, LJ_TISNUM);
2243 break; 2279 break;
2244 case 1: 2280 case 1:
2245 dasm_put(Dst, 11649, LJ_TISNUM, LJ_TISNUM); 2281 dasm_put(Dst, 11862, LJ_TISNUM, LJ_TISNUM);
2246 break; 2282 break;
2247 default: 2283 default:
2248 dasm_put(Dst, 11684, LJ_TISNUM, LJ_TISNUM); 2284 dasm_put(Dst, 11897, LJ_TISNUM, LJ_TISNUM);
2249 break; 2285 break;
2250 } 2286 }
2251 dasm_put(Dst, 11468, LJ_TISNUM); 2287 dasm_put(Dst, 11681, LJ_TISNUM);
2252 if (vk == 1) { 2288 if (vk == 1) {
2253 dasm_put(Dst, 11232); 2289 dasm_put(Dst, 11445);
2254 } else { 2290 } else {
2255 dasm_put(Dst, 11015); 2291 dasm_put(Dst, 11228);
2256 } 2292 }
2257 dasm_put(Dst, 10307); 2293 dasm_put(Dst, 10520);
2258 } else { 2294 } else {
2259 dasm_put(Dst, 11357); 2295 dasm_put(Dst, 11570);
2260 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2296 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2261 switch (vk) { 2297 switch (vk) {
2262 case 0: 2298 case 0:
2263 dasm_put(Dst, 11474, LJ_TISNUM); 2299 dasm_put(Dst, 11687, LJ_TISNUM);
2264 if (LJ_DUALNUM) { 2300 if (LJ_DUALNUM) {
2265 dasm_put(Dst, 11486, LJ_TISNUM); 2301 dasm_put(Dst, 11699, LJ_TISNUM);
2266 } 2302 }
2267 if (sse) { 2303 if (sse) {
2268 dasm_put(Dst, 11717); 2304 dasm_put(Dst, 11930);
2269 } else { 2305 } else {
2270 dasm_put(Dst, 11732); 2306 dasm_put(Dst, 11945);
2271 } 2307 }
2272 break; 2308 break;
2273 case 1: 2309 case 1:
2274 dasm_put(Dst, 11522, LJ_TISNUM); 2310 dasm_put(Dst, 11735, LJ_TISNUM);
2275 if (LJ_DUALNUM) { 2311 if (LJ_DUALNUM) {
2276 dasm_put(Dst, 11534, LJ_TISNUM); 2312 dasm_put(Dst, 11747, LJ_TISNUM);
2277 } 2313 }
2278 if (sse) { 2314 if (sse) {
2279 dasm_put(Dst, 11741); 2315 dasm_put(Dst, 11954);
2280 } else { 2316 } else {
2281 dasm_put(Dst, 11756); 2317 dasm_put(Dst, 11969);
2282 } 2318 }
2283 break; 2319 break;
2284 default: 2320 default:
2285 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2321 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2286 if (sse) { 2322 if (sse) {
2287 dasm_put(Dst, 11765); 2323 dasm_put(Dst, 11978);
2288 } else { 2324 } else {
2289 dasm_put(Dst, 11779); 2325 dasm_put(Dst, 11992);
2290 } 2326 }
2291 break; 2327 break;
2292 } 2328 }
2293 if (sse) { 2329 if (sse) {
2294 dasm_put(Dst, 11192); 2330 dasm_put(Dst, 11405);
2295 } else { 2331 } else {
2296 dasm_put(Dst, 11204); 2332 dasm_put(Dst, 11417);
2297 } 2333 }
2298 dasm_put(Dst, 10307); 2334 dasm_put(Dst, 10520);
2299 } 2335 }
2300 break; 2336 break;
2301 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2337 case BC_MULVN: case BC_MULNV: case BC_MULVV:
2302 if (LJ_DUALNUM) { 2338 if (LJ_DUALNUM) {
2303 dasm_put(Dst, 11357); 2339 dasm_put(Dst, 11570);
2304 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2340 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2305 switch (vk) { 2341 switch (vk) {
2306 case 0: 2342 case 0:
2307 dasm_put(Dst, 11787, LJ_TISNUM, LJ_TISNUM); 2343 dasm_put(Dst, 12000, LJ_TISNUM, LJ_TISNUM);
2308 break; 2344 break;
2309 case 1: 2345 case 1:
2310 dasm_put(Dst, 11823, LJ_TISNUM, LJ_TISNUM); 2346 dasm_put(Dst, 12036, LJ_TISNUM, LJ_TISNUM);
2311 break; 2347 break;
2312 default: 2348 default:
2313 dasm_put(Dst, 11859, LJ_TISNUM, LJ_TISNUM); 2349 dasm_put(Dst, 12072, LJ_TISNUM, LJ_TISNUM);
2314 break; 2350 break;
2315 } 2351 }
2316 dasm_put(Dst, 11468, LJ_TISNUM); 2352 dasm_put(Dst, 11681, LJ_TISNUM);
2317 if (vk == 1) { 2353 if (vk == 1) {
2318 dasm_put(Dst, 11232); 2354 dasm_put(Dst, 11445);
2319 } else { 2355 } else {
2320 dasm_put(Dst, 11015); 2356 dasm_put(Dst, 11228);
2321 } 2357 }
2322 dasm_put(Dst, 10307); 2358 dasm_put(Dst, 10520);
2323 } else { 2359 } else {
2324 dasm_put(Dst, 11357); 2360 dasm_put(Dst, 11570);
2325 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2361 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2326 switch (vk) { 2362 switch (vk) {
2327 case 0: 2363 case 0:
2328 dasm_put(Dst, 11474, LJ_TISNUM); 2364 dasm_put(Dst, 11687, LJ_TISNUM);
2329 if (LJ_DUALNUM) { 2365 if (LJ_DUALNUM) {
2330 dasm_put(Dst, 11486, LJ_TISNUM); 2366 dasm_put(Dst, 11699, LJ_TISNUM);
2331 } 2367 }
2332 if (sse) { 2368 if (sse) {
2333 dasm_put(Dst, 11893); 2369 dasm_put(Dst, 12106);
2334 } else { 2370 } else {
2335 dasm_put(Dst, 11908); 2371 dasm_put(Dst, 12121);
2336 } 2372 }
2337 break; 2373 break;
2338 case 1: 2374 case 1:
2339 dasm_put(Dst, 11522, LJ_TISNUM); 2375 dasm_put(Dst, 11735, LJ_TISNUM);
2340 if (LJ_DUALNUM) { 2376 if (LJ_DUALNUM) {
2341 dasm_put(Dst, 11534, LJ_TISNUM); 2377 dasm_put(Dst, 11747, LJ_TISNUM);
2342 } 2378 }
2343 if (sse) { 2379 if (sse) {
2344 dasm_put(Dst, 11917); 2380 dasm_put(Dst, 12130);
2345 } else { 2381 } else {
2346 dasm_put(Dst, 11932); 2382 dasm_put(Dst, 12145);
2347 } 2383 }
2348 break; 2384 break;
2349 default: 2385 default:
2350 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2386 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2351 if (sse) { 2387 if (sse) {
2352 dasm_put(Dst, 11941); 2388 dasm_put(Dst, 12154);
2353 } else { 2389 } else {
2354 dasm_put(Dst, 11955); 2390 dasm_put(Dst, 12168);
2355 } 2391 }
2356 break; 2392 break;
2357 } 2393 }
2358 if (sse) { 2394 if (sse) {
2359 dasm_put(Dst, 11192); 2395 dasm_put(Dst, 11405);
2360 } else { 2396 } else {
2361 dasm_put(Dst, 11204); 2397 dasm_put(Dst, 11417);
2362 } 2398 }
2363 dasm_put(Dst, 10307); 2399 dasm_put(Dst, 10520);
2364 } 2400 }
2365 break; 2401 break;
2366 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2402 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
2367 dasm_put(Dst, 11357); 2403 dasm_put(Dst, 11570);
2368 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2404 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2369 switch (vk) { 2405 switch (vk) {
2370 case 0: 2406 case 0:
2371 dasm_put(Dst, 11474, LJ_TISNUM); 2407 dasm_put(Dst, 11687, LJ_TISNUM);
2372 if (LJ_DUALNUM) { 2408 if (LJ_DUALNUM) {
2373 dasm_put(Dst, 11486, LJ_TISNUM); 2409 dasm_put(Dst, 11699, LJ_TISNUM);
2374 } 2410 }
2375 if (sse) { 2411 if (sse) {
2376 dasm_put(Dst, 11963); 2412 dasm_put(Dst, 12176);
2377 } else { 2413 } else {
2378 dasm_put(Dst, 11978); 2414 dasm_put(Dst, 12191);
2379 } 2415 }
2380 break; 2416 break;
2381 case 1: 2417 case 1:
2382 dasm_put(Dst, 11522, LJ_TISNUM); 2418 dasm_put(Dst, 11735, LJ_TISNUM);
2383 if (LJ_DUALNUM) { 2419 if (LJ_DUALNUM) {
2384 dasm_put(Dst, 11534, LJ_TISNUM); 2420 dasm_put(Dst, 11747, LJ_TISNUM);
2385 } 2421 }
2386 if (sse) { 2422 if (sse) {
2387 dasm_put(Dst, 11987); 2423 dasm_put(Dst, 12200);
2388 } else { 2424 } else {
2389 dasm_put(Dst, 12002); 2425 dasm_put(Dst, 12215);
2390 } 2426 }
2391 break; 2427 break;
2392 default: 2428 default:
2393 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2429 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2394 if (sse) { 2430 if (sse) {
2395 dasm_put(Dst, 12011); 2431 dasm_put(Dst, 12224);
2396 } else { 2432 } else {
2397 dasm_put(Dst, 12025); 2433 dasm_put(Dst, 12238);
2398 } 2434 }
2399 break; 2435 break;
2400 } 2436 }
2401 if (sse) { 2437 if (sse) {
2402 dasm_put(Dst, 11192); 2438 dasm_put(Dst, 11405);
2403 } else { 2439 } else {
2404 dasm_put(Dst, 11204); 2440 dasm_put(Dst, 11417);
2405 } 2441 }
2406 dasm_put(Dst, 10307); 2442 dasm_put(Dst, 10520);
2407 break; 2443 break;
2408 case BC_MODVN: 2444 case BC_MODVN:
2409 dasm_put(Dst, 11357); 2445 dasm_put(Dst, 11570);
2410 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2446 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2411 switch (vk) { 2447 switch (vk) {
2412 case 0: 2448 case 0:
2413 dasm_put(Dst, 11474, LJ_TISNUM); 2449 dasm_put(Dst, 11687, LJ_TISNUM);
2414 if (LJ_DUALNUM) { 2450 if (LJ_DUALNUM) {
2415 dasm_put(Dst, 11486, LJ_TISNUM); 2451 dasm_put(Dst, 11699, LJ_TISNUM);
2416 } 2452 }
2417 if (sse) { 2453 if (sse) {
2418 dasm_put(Dst, 12033); 2454 dasm_put(Dst, 12246);
2419 } else { 2455 } else {
2420 dasm_put(Dst, 12048); 2456 dasm_put(Dst, 12261);
2421 } 2457 }
2422 break; 2458 break;
2423 case 1: 2459 case 1:
2424 dasm_put(Dst, 11522, LJ_TISNUM); 2460 dasm_put(Dst, 11735, LJ_TISNUM);
2425 if (LJ_DUALNUM) { 2461 if (LJ_DUALNUM) {
2426 dasm_put(Dst, 11534, LJ_TISNUM); 2462 dasm_put(Dst, 11747, LJ_TISNUM);
2427 } 2463 }
2428 if (sse) { 2464 if (sse) {
2429 dasm_put(Dst, 12057); 2465 dasm_put(Dst, 12270);
2430 } else { 2466 } else {
2431 dasm_put(Dst, 12072); 2467 dasm_put(Dst, 12285);
2432 } 2468 }
2433 break; 2469 break;
2434 default: 2470 default:
2435 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2471 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2436 if (sse) { 2472 if (sse) {
2437 dasm_put(Dst, 12081); 2473 dasm_put(Dst, 12294);
2438 } else { 2474 } else {
2439 dasm_put(Dst, 12095); 2475 dasm_put(Dst, 12308);
2440 } 2476 }
2441 break; 2477 break;
2442 } 2478 }
2443 dasm_put(Dst, 12103); 2479 dasm_put(Dst, 12316);
2444 if (sse) { 2480 if (sse) {
2445 dasm_put(Dst, 11192); 2481 dasm_put(Dst, 11405);
2446 } else { 2482 } else {
2447 dasm_put(Dst, 11204); 2483 dasm_put(Dst, 11417);
2448 } 2484 }
2449 dasm_put(Dst, 10307); 2485 dasm_put(Dst, 10520);
2450 break; 2486 break;
2451 case BC_MODNV: case BC_MODVV: 2487 case BC_MODNV: case BC_MODVV:
2452 dasm_put(Dst, 11357); 2488 dasm_put(Dst, 11570);
2453 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2489 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2454 switch (vk) { 2490 switch (vk) {
2455 case 0: 2491 case 0:
2456 dasm_put(Dst, 11474, LJ_TISNUM); 2492 dasm_put(Dst, 11687, LJ_TISNUM);
2457 if (LJ_DUALNUM) { 2493 if (LJ_DUALNUM) {
2458 dasm_put(Dst, 11486, LJ_TISNUM); 2494 dasm_put(Dst, 11699, LJ_TISNUM);
2459 } 2495 }
2460 if (sse) { 2496 if (sse) {
2461 dasm_put(Dst, 12033); 2497 dasm_put(Dst, 12246);
2462 } else { 2498 } else {
2463 dasm_put(Dst, 12048); 2499 dasm_put(Dst, 12261);
2464 } 2500 }
2465 break; 2501 break;
2466 case 1: 2502 case 1:
2467 dasm_put(Dst, 11522, LJ_TISNUM); 2503 dasm_put(Dst, 11735, LJ_TISNUM);
2468 if (LJ_DUALNUM) { 2504 if (LJ_DUALNUM) {
2469 dasm_put(Dst, 11534, LJ_TISNUM); 2505 dasm_put(Dst, 11747, LJ_TISNUM);
2470 } 2506 }
2471 if (sse) { 2507 if (sse) {
2472 dasm_put(Dst, 12057); 2508 dasm_put(Dst, 12270);
2473 } else { 2509 } else {
2474 dasm_put(Dst, 12072); 2510 dasm_put(Dst, 12285);
2475 } 2511 }
2476 break; 2512 break;
2477 default: 2513 default:
2478 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2514 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2479 if (sse) { 2515 if (sse) {
2480 dasm_put(Dst, 12081); 2516 dasm_put(Dst, 12294);
2481 } else { 2517 } else {
2482 dasm_put(Dst, 12095); 2518 dasm_put(Dst, 12308);
2483 } 2519 }
2484 break; 2520 break;
2485 } 2521 }
2486 dasm_put(Dst, 12109); 2522 dasm_put(Dst, 12322);
2487 break; 2523 break;
2488 case BC_POW: 2524 case BC_POW:
2489 dasm_put(Dst, 11357); 2525 dasm_put(Dst, 11570);
2490 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2526 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2491 switch (vk) { 2527 switch (vk) {
2492 case 0: 2528 case 0:
2493 dasm_put(Dst, 11474, LJ_TISNUM); 2529 dasm_put(Dst, 11687, LJ_TISNUM);
2494 if (LJ_DUALNUM) { 2530 if (LJ_DUALNUM) {
2495 dasm_put(Dst, 11486, LJ_TISNUM); 2531 dasm_put(Dst, 11699, LJ_TISNUM);
2496 } 2532 }
2497 if (sse) { 2533 if (sse) {
2498 dasm_put(Dst, 12033); 2534 dasm_put(Dst, 12246);
2499 } else { 2535 } else {
2500 dasm_put(Dst, 12048); 2536 dasm_put(Dst, 12261);
2501 } 2537 }
2502 break; 2538 break;
2503 case 1: 2539 case 1:
2504 dasm_put(Dst, 11522, LJ_TISNUM); 2540 dasm_put(Dst, 11735, LJ_TISNUM);
2505 if (LJ_DUALNUM) { 2541 if (LJ_DUALNUM) {
2506 dasm_put(Dst, 11534, LJ_TISNUM); 2542 dasm_put(Dst, 11747, LJ_TISNUM);
2507 } 2543 }
2508 if (sse) { 2544 if (sse) {
2509 dasm_put(Dst, 12057); 2545 dasm_put(Dst, 12270);
2510 } else { 2546 } else {
2511 dasm_put(Dst, 12072); 2547 dasm_put(Dst, 12285);
2512 } 2548 }
2513 break; 2549 break;
2514 default: 2550 default:
2515 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2551 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2516 if (sse) { 2552 if (sse) {
2517 dasm_put(Dst, 12081); 2553 dasm_put(Dst, 12294);
2518 } else { 2554 } else {
2519 dasm_put(Dst, 12095); 2555 dasm_put(Dst, 12308);
2520 } 2556 }
2521 break; 2557 break;
2522 } 2558 }
2523 dasm_put(Dst, 12114); 2559 dasm_put(Dst, 12327);
2524 if (sse) { 2560 if (sse) {
2525 dasm_put(Dst, 11192); 2561 dasm_put(Dst, 11405);
2526 } else { 2562 } else {
2527 dasm_put(Dst, 11204); 2563 dasm_put(Dst, 11417);
2528 } 2564 }
2529 dasm_put(Dst, 10307); 2565 dasm_put(Dst, 10520);
2530 break; 2566 break;
2531 2567
2532 case BC_CAT: 2568 case BC_CAT:
2533 dasm_put(Dst, 12118, Dt1(->base), Dt1(->base)); 2569 dasm_put(Dst, 12331, Dt1(->base), Dt1(->base));
2534 break; 2570 break;
2535 2571
2536 /* -- Constant ops ------------------------------------------------------ */ 2572 /* -- Constant ops ------------------------------------------------------ */
2537 2573
2538 case BC_KSTR: 2574 case BC_KSTR:
2539 dasm_put(Dst, 12202, LJ_TSTR); 2575 dasm_put(Dst, 12415, LJ_TSTR);
2540 break; 2576 break;
2541 case BC_KCDATA: 2577 case BC_KCDATA:
2542#if LJ_HASFFI 2578#if LJ_HASFFI
2543 dasm_put(Dst, 12202, LJ_TCDATA); 2579 dasm_put(Dst, 12415, LJ_TCDATA);
2544#endif 2580#endif
2545 break; 2581 break;
2546 case BC_KSHORT: 2582 case BC_KSHORT:
2547 if (LJ_DUALNUM) { 2583 if (LJ_DUALNUM) {
2548 dasm_put(Dst, 12239, LJ_TISNUM); 2584 dasm_put(Dst, 12452, LJ_TISNUM);
2549 } else if (sse) { 2585 } else if (sse) {
2550 dasm_put(Dst, 12251); 2586 dasm_put(Dst, 12464);
2551 } else { 2587 } else {
2552 dasm_put(Dst, 12266); 2588 dasm_put(Dst, 12479);
2553 } 2589 }
2554 dasm_put(Dst, 10307); 2590 dasm_put(Dst, 10520);
2555 break; 2591 break;
2556 case BC_KNUM: 2592 case BC_KNUM:
2557 if (sse) { 2593 if (sse) {
2558 dasm_put(Dst, 12274); 2594 dasm_put(Dst, 12487);
2559 } else { 2595 } else {
2560 dasm_put(Dst, 12288); 2596 dasm_put(Dst, 12501);
2561 } 2597 }
2562 dasm_put(Dst, 10307); 2598 dasm_put(Dst, 10520);
2563 break; 2599 break;
2564 case BC_KPRI: 2600 case BC_KPRI:
2565 dasm_put(Dst, 12296); 2601 dasm_put(Dst, 12509);
2566 break; 2602 break;
2567 case BC_KNIL: 2603 case BC_KNIL:
2568 dasm_put(Dst, 12325, LJ_TNIL); 2604 dasm_put(Dst, 12538, LJ_TNIL);
2569 break; 2605 break;
2570 2606
2571 /* -- Upvalue and function ops ------------------------------------------ */ 2607 /* -- Upvalue and function ops ------------------------------------------ */
2572 2608
2573 case BC_UGET: 2609 case BC_UGET:
2574 dasm_put(Dst, 12373, offsetof(GCfuncL, uvptr), DtA(->v)); 2610 dasm_put(Dst, 12586, offsetof(GCfuncL, uvptr), DtA(->v));
2575 break; 2611 break;
2576 case BC_USETV: 2612 case BC_USETV:
2577#define TV2MARKOFS \ 2613#define TV2MARKOFS \
2578 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2614 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2579 dasm_put(Dst, 12414, 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); 2615 dasm_put(Dst, 12627, 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);
2580 dasm_put(Dst, 12510); 2616 dasm_put(Dst, 12723);
2581 break; 2617 break;
2582#undef TV2MARKOFS 2618#undef TV2MARKOFS
2583 case BC_USETS: 2619 case BC_USETS:
2584 dasm_put(Dst, 12522, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2620 dasm_put(Dst, 12735, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2585 break; 2621 break;
2586 case BC_USETN: 2622 case BC_USETN:
2587 dasm_put(Dst, 12618); 2623 dasm_put(Dst, 12831);
2588 if (sse) { 2624 if (sse) {
2589 dasm_put(Dst, 12623); 2625 dasm_put(Dst, 12836);
2590 } else { 2626 } else {
2591 dasm_put(Dst, 10839); 2627 dasm_put(Dst, 11052);
2592 } 2628 }
2593 dasm_put(Dst, 12631, offsetof(GCfuncL, uvptr), DtA(->v)); 2629 dasm_put(Dst, 12844, offsetof(GCfuncL, uvptr), DtA(->v));
2594 if (sse) { 2630 if (sse) {
2595 dasm_put(Dst, 12640); 2631 dasm_put(Dst, 12853);
2596 } else { 2632 } else {
2597 dasm_put(Dst, 12646); 2633 dasm_put(Dst, 12859);
2598 } 2634 }
2599 dasm_put(Dst, 10307); 2635 dasm_put(Dst, 10520);
2600 break; 2636 break;
2601 case BC_USETP: 2637 case BC_USETP:
2602 dasm_put(Dst, 12649, offsetof(GCfuncL, uvptr), DtA(->v)); 2638 dasm_put(Dst, 12862, offsetof(GCfuncL, uvptr), DtA(->v));
2603 break; 2639 break;
2604 case BC_UCLO: 2640 case BC_UCLO:
2605 dasm_put(Dst, 12689, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2641 dasm_put(Dst, 12902, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2606 break; 2642 break;
2607 2643
2608 case BC_FNEW: 2644 case BC_FNEW:
2609 dasm_put(Dst, 12745, Dt1(->base), Dt1(->base), LJ_TFUNC); 2645 dasm_put(Dst, 12958, Dt1(->base), Dt1(->base), LJ_TFUNC);
2610 break; 2646 break;
2611 2647
2612 /* -- Table ops --------------------------------------------------------- */ 2648 /* -- Table ops --------------------------------------------------------- */
2613 2649
2614 case BC_TNEW: 2650 case BC_TNEW:
2615 dasm_put(Dst, 12812, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2651 dasm_put(Dst, 13025, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2616 break; 2652 break;
2617 case BC_TDUP: 2653 case BC_TDUP:
2618 dasm_put(Dst, 12936, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2654 dasm_put(Dst, 13149, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2619 break; 2655 break;
2620 2656
2621 case BC_GGET: 2657 case BC_GGET:
2622 dasm_put(Dst, 13035, Dt7(->env)); 2658 dasm_put(Dst, 13248, Dt7(->env));
2623 break; 2659 break;
2624 case BC_GSET: 2660 case BC_GSET:
2625 dasm_put(Dst, 13055, Dt7(->env)); 2661 dasm_put(Dst, 13268, Dt7(->env));
2626 break; 2662 break;
2627 2663
2628 case BC_TGETV: 2664 case BC_TGETV:
2629 dasm_put(Dst, 13075, LJ_TTAB); 2665 dasm_put(Dst, 13288, LJ_TTAB);
2630 if (LJ_DUALNUM) { 2666 if (LJ_DUALNUM) {
2631 dasm_put(Dst, 13098, LJ_TISNUM); 2667 dasm_put(Dst, 13311, LJ_TISNUM);
2632 } else { 2668 } else {
2633 dasm_put(Dst, 13112, LJ_TISNUM); 2669 dasm_put(Dst, 13325, LJ_TISNUM);
2634 if (sse) { 2670 if (sse) {
2635 dasm_put(Dst, 13123); 2671 dasm_put(Dst, 13336);
2636 } else { 2672 } else {
2637 } 2673 }
2638 dasm_put(Dst, 13144); 2674 dasm_put(Dst, 13357);
2639 } 2675 }
2640 dasm_put(Dst, 13149, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL); 2676 dasm_put(Dst, 13362, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2641 dasm_put(Dst, 13241, LJ_TSTR); 2677 dasm_put(Dst, 13454, LJ_TSTR);
2642 break; 2678 break;
2643 case BC_TGETS: 2679 case BC_TGETS:
2644 dasm_put(Dst, 13259, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2680 dasm_put(Dst, 13472, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2645 dasm_put(Dst, 13344, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2681 dasm_put(Dst, 13557, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2646 break; 2682 break;
2647 case BC_TGETB: 2683 case BC_TGETB:
2648 dasm_put(Dst, 13416, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2684 dasm_put(Dst, 13629, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2649 dasm_put(Dst, 13512, LJ_TNIL); 2685 dasm_put(Dst, 13725, LJ_TNIL);
2650 break; 2686 break;
2651 2687
2652 case BC_TSETV: 2688 case BC_TSETV:
2653 dasm_put(Dst, 13529, LJ_TTAB); 2689 dasm_put(Dst, 13742, LJ_TTAB);
2654 if (LJ_DUALNUM) { 2690 if (LJ_DUALNUM) {
2655 dasm_put(Dst, 13098, LJ_TISNUM); 2691 dasm_put(Dst, 13311, LJ_TISNUM);
2656 } else { 2692 } else {
2657 dasm_put(Dst, 13112, LJ_TISNUM); 2693 dasm_put(Dst, 13325, LJ_TISNUM);
2658 if (sse) { 2694 if (sse) {
2659 dasm_put(Dst, 13123); 2695 dasm_put(Dst, 13336);
2660 } else { 2696 } else {
2661 } 2697 }
2662 dasm_put(Dst, 13552); 2698 dasm_put(Dst, 13765);
2663 } 2699 }
2664 dasm_put(Dst, 13557, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 2700 dasm_put(Dst, 13770, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2665 dasm_put(Dst, 13638, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2701 dasm_put(Dst, 13851, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2666 break; 2702 break;
2667 case BC_TSETS: 2703 case BC_TSETS:
2668 dasm_put(Dst, 13697, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2704 dasm_put(Dst, 13910, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2669 dasm_put(Dst, 13774, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2705 dasm_put(Dst, 13987, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2670 dasm_put(Dst, 13861, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2706 dasm_put(Dst, 14074, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2671 break; 2707 break;
2672 case BC_TSETB: 2708 case BC_TSETB:
2673 dasm_put(Dst, 13953, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2709 dasm_put(Dst, 14166, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2674 dasm_put(Dst, 14048, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2710 dasm_put(Dst, 14261, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2675 break; 2711 break;
2676 2712
2677 case BC_TSETM: 2713 case BC_TSETM:
2678 dasm_put(Dst, 14096, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2714 dasm_put(Dst, 14309, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2679 dasm_put(Dst, 14246, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2715 dasm_put(Dst, 14459, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2680 break; 2716 break;
2681 2717
2682 /* -- Calls and vararg handling ----------------------------------------- */ 2718 /* -- Calls and vararg handling ----------------------------------------- */
2683 2719
2684 case BC_CALL: case BC_CALLM: 2720 case BC_CALL: case BC_CALLM:
2685 dasm_put(Dst, 11361); 2721 dasm_put(Dst, 11574);
2686 if (op == BC_CALLM) { 2722 if (op == BC_CALLM) {
2687 dasm_put(Dst, 14266); 2723 dasm_put(Dst, 14479);
2688 } 2724 }
2689 dasm_put(Dst, 14271, LJ_TFUNC, Dt7(->pc)); 2725 dasm_put(Dst, 14484, LJ_TFUNC, Dt7(->pc));
2690 break; 2726 break;
2691 2727
2692 case BC_CALLMT: 2728 case BC_CALLMT:
2693 dasm_put(Dst, 14266); 2729 dasm_put(Dst, 14479);
2694 break; 2730 break;
2695 case BC_CALLT: 2731 case BC_CALLT:
2696 dasm_put(Dst, 14314, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2732 dasm_put(Dst, 14527, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2697 dasm_put(Dst, 14432, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2733 dasm_put(Dst, 14645, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2698 break; 2734 break;
2699 2735
2700 case BC_ITERC: 2736 case BC_ITERC:
2701 dasm_put(Dst, 14506, LJ_TFUNC, 2+1, Dt7(->pc)); 2737 dasm_put(Dst, 14719, LJ_TFUNC, 2+1, Dt7(->pc));
2702 break; 2738 break;
2703 2739
2704 case BC_ITERN: 2740 case BC_ITERN:
2705#if LJ_HASJIT 2741#if LJ_HASJIT
2706#endif 2742#endif
2707 dasm_put(Dst, 14578, Dt6(->asize), Dt6(->array), LJ_TNIL); 2743 dasm_put(Dst, 14791, Dt6(->asize), Dt6(->array), LJ_TNIL);
2708 if (LJ_DUALNUM) { 2744 if (LJ_DUALNUM) {
2709 dasm_put(Dst, 11227, LJ_TISNUM); 2745 dasm_put(Dst, 11440, LJ_TISNUM);
2710 } else if (sse) { 2746 } else if (sse) {
2711 dasm_put(Dst, 11322); 2747 dasm_put(Dst, 11535);
2712 } else { 2748 } else {
2713 dasm_put(Dst, 14630); 2749 dasm_put(Dst, 14843);
2714 } 2750 }
2715 dasm_put(Dst, 14636); 2751 dasm_put(Dst, 14849);
2716 if (LJ_DUALNUM) { 2752 if (LJ_DUALNUM) {
2717 } else if (sse) { 2753 } else if (sse) {
2718 dasm_put(Dst, 11192); 2754 dasm_put(Dst, 11405);
2719 } else { 2755 } else {
2720 dasm_put(Dst, 11204); 2756 dasm_put(Dst, 11417);
2721 } 2757 }
2722 dasm_put(Dst, 14649, -BCBIAS_J*4); 2758 dasm_put(Dst, 14862, -BCBIAS_J*4);
2723 if (!LJ_DUALNUM && !sse) { 2759 if (!LJ_DUALNUM && !sse) {
2724 dasm_put(Dst, 14703); 2760 dasm_put(Dst, 14916);
2725 } 2761 }
2726 dasm_put(Dst, 14709, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2762 dasm_put(Dst, 14922, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2727 break; 2763 break;
2728 2764
2729 case BC_ISNEXT: 2765 case BC_ISNEXT:
2730 dasm_put(Dst, 14788, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2766 dasm_put(Dst, 15001, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2731 break; 2767 break;
2732 2768
2733 case BC_VARG: 2769 case BC_VARG:
2734 dasm_put(Dst, 14889, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2770 dasm_put(Dst, 15102, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2735 dasm_put(Dst, 15056, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2771 dasm_put(Dst, 15269, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2736 break; 2772 break;
2737 2773
2738 /* -- Returns ----------------------------------------------------------- */ 2774 /* -- Returns ----------------------------------------------------------- */
2739 2775
2740 case BC_RETM: 2776 case BC_RETM:
2741 dasm_put(Dst, 14266); 2777 dasm_put(Dst, 14479);
2742 break; 2778 break;
2743 2779
2744 case BC_RET: case BC_RET0: case BC_RET1: 2780 case BC_RET: case BC_RET0: case BC_RET1:
2745 if (op != BC_RET0) { 2781 if (op != BC_RET0) {
2746 dasm_put(Dst, 15126); 2782 dasm_put(Dst, 15339);
2747 } 2783 }
2748 dasm_put(Dst, 15130, FRAME_TYPE); 2784 dasm_put(Dst, 15343, FRAME_TYPE);
2749 switch (op) { 2785 switch (op) {
2750 case BC_RET: 2786 case BC_RET:
2751 dasm_put(Dst, 15149); 2787 dasm_put(Dst, 15362);
2752 break; 2788 break;
2753 case BC_RET1: 2789 case BC_RET1:
2754 dasm_put(Dst, 15203); 2790 dasm_put(Dst, 15416);
2755 /* fallthrough */ 2791 /* fallthrough */
2756 case BC_RET0: 2792 case BC_RET0:
2757 dasm_put(Dst, 15213); 2793 dasm_put(Dst, 15426);
2758 default: 2794 default:
2759 break; 2795 break;
2760 } 2796 }
2761 dasm_put(Dst, 15224, Dt7(->pc), PC2PROTO(k)); 2797 dasm_put(Dst, 15437, Dt7(->pc), PC2PROTO(k));
2762 if (op == BC_RET) { 2798 if (op == BC_RET) {
2763 dasm_put(Dst, 15272, LJ_TNIL); 2799 dasm_put(Dst, 15485, LJ_TNIL);
2764 } else { 2800 } else {
2765 dasm_put(Dst, 15283, LJ_TNIL); 2801 dasm_put(Dst, 15496, LJ_TNIL);
2766 } 2802 }
2767 dasm_put(Dst, 15290, -FRAME_VARG, FRAME_TYPEP); 2803 dasm_put(Dst, 15503, -FRAME_VARG, FRAME_TYPEP);
2768 if (op != BC_RET0) { 2804 if (op != BC_RET0) {
2769 dasm_put(Dst, 15314); 2805 dasm_put(Dst, 15527);
2770 } 2806 }
2771 dasm_put(Dst, 4752); 2807 dasm_put(Dst, 4761);
2772 break; 2808 break;
2773 2809
2774 /* -- Loops and branches ------------------------------------------------ */ 2810 /* -- Loops and branches ------------------------------------------------ */
@@ -2776,7 +2812,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2776 2812
2777 case BC_FORL: 2813 case BC_FORL:
2778#if LJ_HASJIT 2814#if LJ_HASJIT
2779 dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2815 dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2780#endif 2816#endif
2781 break; 2817 break;
2782 2818
@@ -2788,111 +2824,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2788 case BC_FORI: 2824 case BC_FORI:
2789 case BC_IFORL: 2825 case BC_IFORL:
2790 vk = (op == BC_IFORL || op == BC_JFORL); 2826 vk = (op == BC_IFORL || op == BC_JFORL);
2791 dasm_put(Dst, 15339); 2827 dasm_put(Dst, 15552);
2792 if (LJ_DUALNUM) { 2828 if (LJ_DUALNUM) {
2793 dasm_put(Dst, 15343, LJ_TISNUM); 2829 dasm_put(Dst, 15556, LJ_TISNUM);
2794 if (!vk) { 2830 if (!vk) {
2795 dasm_put(Dst, 15353, LJ_TISNUM, LJ_TISNUM); 2831 dasm_put(Dst, 15566, LJ_TISNUM, LJ_TISNUM);
2796 } else { 2832 } else {
2797#ifdef LUA_USE_ASSERT 2833#ifdef LUA_USE_ASSERT
2798 dasm_put(Dst, 15382, LJ_TISNUM, LJ_TISNUM); 2834 dasm_put(Dst, 15595, LJ_TISNUM, LJ_TISNUM);
2799#endif 2835#endif
2800 dasm_put(Dst, 15401); 2836 dasm_put(Dst, 15614);
2801 } 2837 }
2802 dasm_put(Dst, 15420, LJ_TISNUM); 2838 dasm_put(Dst, 15633, LJ_TISNUM);
2803 if (op == BC_FORI) { 2839 if (op == BC_FORI) {
2804 dasm_put(Dst, 15431, -BCBIAS_J*4); 2840 dasm_put(Dst, 15644, -BCBIAS_J*4);
2805 } else if (op == BC_JFORI) { 2841 } else if (op == BC_JFORI) {
2806 dasm_put(Dst, 15445, -BCBIAS_J*4, BC_JLOOP); 2842 dasm_put(Dst, 15658, -BCBIAS_J*4, BC_JLOOP);
2807 } else if (op == BC_IFORL) { 2843 } else if (op == BC_IFORL) {
2808 dasm_put(Dst, 15463, -BCBIAS_J*4); 2844 dasm_put(Dst, 15676, -BCBIAS_J*4);
2809 } else { 2845 } else {
2810 dasm_put(Dst, 15455, BC_JLOOP); 2846 dasm_put(Dst, 15668, BC_JLOOP);
2811 } 2847 }
2812 dasm_put(Dst, 15477); 2848 dasm_put(Dst, 15690);
2813 if (vk) { 2849 if (vk) {
2814 dasm_put(Dst, 15502); 2850 dasm_put(Dst, 15715);
2815 } 2851 }
2816 dasm_put(Dst, 15420, LJ_TISNUM); 2852 dasm_put(Dst, 15633, LJ_TISNUM);
2817 if (op == BC_FORI) { 2853 if (op == BC_FORI) {
2818 dasm_put(Dst, 15511); 2854 dasm_put(Dst, 15724);
2819 } else if (op == BC_JFORI) { 2855 } else if (op == BC_JFORI) {
2820 dasm_put(Dst, 15516, -BCBIAS_J*4, BC_JLOOP); 2856 dasm_put(Dst, 15729, -BCBIAS_J*4, BC_JLOOP);
2821 } else if (op == BC_IFORL) { 2857 } else if (op == BC_IFORL) {
2822 dasm_put(Dst, 15530); 2858 dasm_put(Dst, 15743);
2823 } else { 2859 } else {
2824 dasm_put(Dst, 15526, BC_JLOOP); 2860 dasm_put(Dst, 15739, BC_JLOOP);
2825 } 2861 }
2826 dasm_put(Dst, 15535); 2862 dasm_put(Dst, 15748);
2827 } else if (!vk) { 2863 } else if (!vk) {
2828 dasm_put(Dst, 15542, LJ_TISNUM); 2864 dasm_put(Dst, 15755, LJ_TISNUM);
2829 } 2865 }
2830 if (!vk) { 2866 if (!vk) {
2831 dasm_put(Dst, 15548, LJ_TISNUM); 2867 dasm_put(Dst, 15761, LJ_TISNUM);
2832 } else { 2868 } else {
2833#ifdef LUA_USE_ASSERT 2869#ifdef LUA_USE_ASSERT
2834 dasm_put(Dst, 15562, LJ_TISNUM, LJ_TISNUM); 2870 dasm_put(Dst, 15775, LJ_TISNUM, LJ_TISNUM);
2835#endif 2871#endif
2836 } 2872 }
2837 dasm_put(Dst, 15581); 2873 dasm_put(Dst, 15794);
2838 if (!vk) { 2874 if (!vk) {
2839 dasm_put(Dst, 15585, LJ_TISNUM); 2875 dasm_put(Dst, 15798, LJ_TISNUM);
2840 } 2876 }
2841 if (sse) { 2877 if (sse) {
2842 dasm_put(Dst, 15594); 2878 dasm_put(Dst, 15807);
2843 if (vk) { 2879 if (vk) {
2844 dasm_put(Dst, 15606); 2880 dasm_put(Dst, 15819);
2845 } else { 2881 } else {
2846 dasm_put(Dst, 15625); 2882 dasm_put(Dst, 15838);
2847 } 2883 }
2848 dasm_put(Dst, 15630); 2884 dasm_put(Dst, 15843);
2849 } else { 2885 } else {
2850 dasm_put(Dst, 15643); 2886 dasm_put(Dst, 15856);
2851 if (vk) { 2887 if (vk) {
2852 dasm_put(Dst, 15649); 2888 dasm_put(Dst, 15862);
2853 } else { 2889 } else {
2854 dasm_put(Dst, 15665); 2890 dasm_put(Dst, 15878);
2855 } 2891 }
2856 dasm_put(Dst, 15673); 2892 dasm_put(Dst, 15886);
2857 if (cmov) { 2893 if (cmov) {
2858 dasm_put(Dst, 10262); 2894 dasm_put(Dst, 10480);
2859 } else { 2895 } else {
2860 dasm_put(Dst, 10268); 2896 dasm_put(Dst, 10486);
2861 } 2897 }
2862 if (!cmov) { 2898 if (!cmov) {
2863 dasm_put(Dst, 15678); 2899 dasm_put(Dst, 15891);
2864 } 2900 }
2865 } 2901 }
2866 if (op == BC_FORI) { 2902 if (op == BC_FORI) {
2867 if (LJ_DUALNUM) { 2903 if (LJ_DUALNUM) {
2868 dasm_put(Dst, 15684); 2904 dasm_put(Dst, 15897);
2869 } else { 2905 } else {
2870 dasm_put(Dst, 15689, -BCBIAS_J*4); 2906 dasm_put(Dst, 15902, -BCBIAS_J*4);
2871 } 2907 }
2872 } else if (op == BC_JFORI) { 2908 } else if (op == BC_JFORI) {
2873 dasm_put(Dst, 15699, -BCBIAS_J*4, BC_JLOOP); 2909 dasm_put(Dst, 15912, -BCBIAS_J*4, BC_JLOOP);
2874 } else if (op == BC_IFORL) { 2910 } else if (op == BC_IFORL) {
2875 if (LJ_DUALNUM) { 2911 if (LJ_DUALNUM) {
2876 dasm_put(Dst, 15713); 2912 dasm_put(Dst, 15926);
2877 } else { 2913 } else {
2878 dasm_put(Dst, 15718, -BCBIAS_J*4); 2914 dasm_put(Dst, 15931, -BCBIAS_J*4);
2879 } 2915 }
2880 } else { 2916 } else {
2881 dasm_put(Dst, 15709, BC_JLOOP); 2917 dasm_put(Dst, 15922, BC_JLOOP);
2882 } 2918 }
2883 if (LJ_DUALNUM) { 2919 if (LJ_DUALNUM) {
2884 dasm_put(Dst, 10191); 2920 dasm_put(Dst, 10409);
2885 } else { 2921 } else {
2886 dasm_put(Dst, 10973); 2922 dasm_put(Dst, 11186);
2887 } 2923 }
2888 if (sse) { 2924 if (sse) {
2889 dasm_put(Dst, 15728); 2925 dasm_put(Dst, 15941);
2890 } 2926 }
2891 break; 2927 break;
2892 2928
2893 case BC_ITERL: 2929 case BC_ITERL:
2894#if LJ_HASJIT 2930#if LJ_HASJIT
2895 dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2931 dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2896#endif 2932#endif
2897 break; 2933 break;
2898 2934
@@ -2901,33 +2937,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2901 break; 2937 break;
2902#endif 2938#endif
2903 case BC_IITERL: 2939 case BC_IITERL:
2904 dasm_put(Dst, 15739, LJ_TNIL); 2940 dasm_put(Dst, 15952, LJ_TNIL);
2905 if (op == BC_JITERL) { 2941 if (op == BC_JITERL) {
2906 dasm_put(Dst, 15754, BC_JLOOP); 2942 dasm_put(Dst, 15967, BC_JLOOP);
2907 } else { 2943 } else {
2908 dasm_put(Dst, 15768, -BCBIAS_J*4); 2944 dasm_put(Dst, 15981, -BCBIAS_J*4);
2909 } 2945 }
2910 dasm_put(Dst, 10305); 2946 dasm_put(Dst, 10518);
2911 break; 2947 break;
2912 2948
2913 case BC_LOOP: 2949 case BC_LOOP:
2914#if LJ_HASJIT 2950#if LJ_HASJIT
2915 dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2951 dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2916#endif 2952#endif
2917 break; 2953 break;
2918 2954
2919 case BC_ILOOP: 2955 case BC_ILOOP:
2920 dasm_put(Dst, 10307); 2956 dasm_put(Dst, 10520);
2921 break; 2957 break;
2922 2958
2923 case BC_JLOOP: 2959 case BC_JLOOP:
2924#if LJ_HASJIT 2960#if LJ_HASJIT
2925 dasm_put(Dst, 15784, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2961 dasm_put(Dst, 15997, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2926#endif 2962#endif
2927 break; 2963 break;
2928 2964
2929 case BC_JMP: 2965 case BC_JMP:
2930 dasm_put(Dst, 15825, -BCBIAS_J*4); 2966 dasm_put(Dst, 16038, -BCBIAS_J*4);
2931 break; 2967 break;
2932 2968
2933 /* -- Function headers -------------------------------------------------- */ 2969 /* -- Function headers -------------------------------------------------- */
@@ -2941,7 +2977,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2941 2977
2942 case BC_FUNCF: 2978 case BC_FUNCF:
2943#if LJ_HASJIT 2979#if LJ_HASJIT
2944 dasm_put(Dst, 15851, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); 2980 dasm_put(Dst, 16064, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
2945#endif 2981#endif
2946 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2982 case BC_FUNCV: /* NYI: compiled vararg functions. */
2947 break; 2983 break;
@@ -2951,47 +2987,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2951 break; 2987 break;
2952#endif 2988#endif
2953 case BC_IFUNCF: 2989 case BC_IFUNCF:
2954 dasm_put(Dst, 15872, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2990 dasm_put(Dst, 16085, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2955 if (op == BC_JFUNCF) { 2991 if (op == BC_JFUNCF) {
2956 dasm_put(Dst, 15903, BC_JLOOP); 2992 dasm_put(Dst, 16116, BC_JLOOP);
2957 } else { 2993 } else {
2958 dasm_put(Dst, 10307); 2994 dasm_put(Dst, 10520);
2959 } 2995 }
2960 dasm_put(Dst, 15912, LJ_TNIL); 2996 dasm_put(Dst, 16125, LJ_TNIL);
2961 break; 2997 break;
2962 2998
2963 case BC_JFUNCV: 2999 case BC_JFUNCV:
2964#if !LJ_HASJIT 3000#if !LJ_HASJIT
2965 break; 3001 break;
2966#endif 3002#endif
2967 dasm_put(Dst, 9413); 3003 dasm_put(Dst, 9422);
2968 break; /* NYI: compiled vararg functions. */ 3004 break; /* NYI: compiled vararg functions. */
2969 3005
2970 case BC_IFUNCV: 3006 case BC_IFUNCV:
2971 dasm_put(Dst, 15934, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 3007 dasm_put(Dst, 16147, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2972 if (op == BC_JFUNCV) { 3008 if (op == BC_JFUNCV) {
2973 dasm_put(Dst, 15903, BC_JLOOP); 3009 dasm_put(Dst, 16116, BC_JLOOP);
2974 } else { 3010 } else {
2975 dasm_put(Dst, 16031, -4+PC2PROTO(k)); 3011 dasm_put(Dst, 16244, -4+PC2PROTO(k));
2976 } 3012 }
2977 dasm_put(Dst, 16056, LJ_TNIL); 3013 dasm_put(Dst, 16269, LJ_TNIL);
2978 break; 3014 break;
2979 3015
2980 case BC_FUNCC: 3016 case BC_FUNCC:
2981 case BC_FUNCCW: 3017 case BC_FUNCCW:
2982 dasm_put(Dst, 16078, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 3018 dasm_put(Dst, 16291, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2983 if (op == BC_FUNCC) { 3019 if (op == BC_FUNCC) {
2984 dasm_put(Dst, 2424); 3020 dasm_put(Dst, 2433);
2985 } else { 3021 } else {
2986 dasm_put(Dst, 16108); 3022 dasm_put(Dst, 16321);
2987 } 3023 }
2988 dasm_put(Dst, 16116, DISPATCH_GL(vmstate), ~LJ_VMST_C); 3024 dasm_put(Dst, 16329, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2989 if (op == BC_FUNCC) { 3025 if (op == BC_FUNCC) {
2990 dasm_put(Dst, 16126); 3026 dasm_put(Dst, 16339);
2991 } else { 3027 } else {
2992 dasm_put(Dst, 16131, DISPATCH_GL(wrapf)); 3028 dasm_put(Dst, 16344, DISPATCH_GL(wrapf));
2993 } 3029 }
2994 dasm_put(Dst, 16137, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 3030 dasm_put(Dst, 16350, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2995 break; 3031 break;
2996 3032
2997 /* ---------------------------------------------------------------------- */ 3033 /* ---------------------------------------------------------------------- */
@@ -3019,7 +3055,7 @@ static int build_backend(BuildCtx *ctx)
3019 3055
3020 build_subroutines(ctx, cmov, sse); 3056 build_subroutines(ctx, cmov, sse);
3021 3057
3022 dasm_put(Dst, 16163); 3058 dasm_put(Dst, 16376);
3023 for (op = 0; op < BC__MAX; op++) 3059 for (op = 0; op < BC__MAX; op++)
3024 build_ins(ctx, (BCOp)op, op, cmov, sse); 3060 build_ins(ctx, (BCOp)op, op, cmov, sse);
3025 3061
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index b051974c..533d5b00 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[16020] = { 15static const unsigned char build_actionlist[16196] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68, 17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237, 18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,
@@ -50,746 +50,755 @@ static const unsigned char build_actionlist[16020] = {
50 124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209, 50 124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209,
51 133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,209,131,230, 51 133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,209,131,230,
52 252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244, 52 252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,
53 72,99,77,252,240,133,201,15,132,244,247,255,72,141,61,245,72,1,252,249,139, 53 72,99,77,252,240,255,131,252,249,1,15,134,244,247,255,72,141,61,245,72,1,
54 122,252,248,139,191,233,139,191,233,252,255,225,248,1,41,213,193,252,237, 54 252,249,255,139,122,252,248,139,191,233,139,191,233,252,255,225,255,248,1,
55 3,141,69,252,255,252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141, 55 15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248,
56 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,65,137,200,139, 56 34,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,
57 76,36,96,137,145,233,72,139,0,72,137,69,0,137,252,234,252,233,244,35,248, 57 247,217,193,252,233,3,65,137,200,139,76,36,96,137,145,233,72,139,0,72,137,
58 36,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133, 58 69,0,137,252,234,252,233,244,36,248,37,137,68,36,80,199,68,36,84,237,72,141,
59 244,247,141,139,233,137,41,199,65,4,237,255,137,205,252,233,244,248,248,37, 59 68,36,80,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,
60 15,182,70,252,254,255,199,68,36,84,237,137,68,36,80,255,252,242,15,42,192, 60 137,205,252,233,244,248,248,38,15,182,70,252,254,255,199,68,36,84,237,137,
61 252,242,15,17,68,36,80,255,72,141,68,36,80,252,233,244,247,248,38,15,182, 61 68,36,80,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141,68,36,80,
62 70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,139,76, 62 252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,
63 36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,36,100,232,251,1, 63 141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,
64 1,139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,72,139,40,72, 64 205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244,249,248,35,
65 137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 65 15,182,78,252,253,72,139,40,72,137,44,202,139,6,15,182,204,15,182,232,131,
66 235,248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248, 66 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,141,
67 184,237,252,233,244,30,248,39,137,68,36,80,199,68,36,84,237,72,141,68,36, 67 177,233,41,214,139,105,252,248,184,237,252,233,244,30,248,40,137,68,36,80,
68 80,128,126,252,252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237, 68 199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,244,247,255,141,
69 137,205,252,233,244,248,248,40,15,182,70,252,254,255,72,141,68,36,80,252, 69 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,41,15,182,70,252,
70 233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141, 70 254,255,72,141,68,36,80,252,233,244,247,248,42,15,182,70,252,254,141,4,194,
71 44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205, 71 248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,
72 137,116,36,100,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252, 72 252,234,73,137,192,137,205,137,116,36,100,232,251,1,2,139,149,233,133,192,
73 253,72,139,44,202,72,137,40,248,42,139,6,15,182,204,15,182,232,131,198,4, 73 15,132,244,249,15,182,78,252,253,72,139,44,202,72,137,40,248,43,139,6,15,
74 193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,15,182,70, 74 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,139,141,
75 252,253,72,139,44,194,72,137,105,16,141,177,233,41,214,139,105,252,248,184, 75 233,137,113,252,244,15,182,70,252,253,72,139,44,194,72,137,105,16,141,177,
76 237,252,233,244,30,248,43,139,108,36,96,137,149,233,68,141,4,194,141,20,202, 76 233,41,214,139,105,252,248,184,237,252,233,244,30,248,44,139,108,36,96,137,
77 137,252,233,68,15,182,78,252,252,137,116,36,100,232,251,1,3,248,3,139,149, 77 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116,
78 233,255,131,252,248,1,15,135,244,44,248,4,141,118,4,15,130,244,252,248,5, 78 36,100,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248,
79 15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131, 79 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,
80 198,4,193,232,16,252,255,36,252,235,248,45,131,198,4,129,120,253,4,239,15, 80 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,
81 130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131, 81 46,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120,
82 252,238,4,65,137,192,65,137,252,233,139,108,36,96,137,149,233,255,137,202, 82 253,4,239,252,233,244,4,248,48,131,252,238,4,65,137,192,65,137,252,233,139,
83 137,252,233,137,116,36,100,232,251,1,4,252,233,244,3,248,48,255,131,252,238, 83 108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,
84 4,139,108,36,96,137,149,233,137,252,233,139,86,252,252,137,116,36,100,232, 84 252,233,244,3,248,49,255,131,252,238,4,139,108,36,96,137,149,233,137,252,
85 251,1,5,252,233,244,3,255,248,49,255,15,182,110,252,255,255,248,50,141,4, 85 233,139,86,252,252,137,116,36,100,232,251,1,5,252,233,244,3,255,248,50,255,
86 199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233, 86 15,182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53,
87 244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,141,4, 87 141,4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252,
88 194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,70, 88 233,244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12,
89 252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,116, 89 202,65,137,232,65,137,193,15,182,70,252,252,137,68,36,32,139,108,36,96,137,
90 36,100,232,251,1,6,139,149,233,133,192,15,132,244,42,248,44,137,193,41,208, 90 149,233,137,202,137,252,233,137,116,36,100,232,251,1,6,139,149,233,133,192,
91 137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108,36,96,137, 91 15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237,252,
92 149,233,141,20,194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,255, 92 233,244,28,248,57,139,108,36,96,137,149,233,141,20,194,137,252,233,137,116,
93 133,192,15,133,244,44,15,183,70,252,254,139,12,194,252,233,244,57,255,252, 93 36,100,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252,254,
94 233,244,44,255,248,58,141,76,202,8,248,29,137,76,36,84,137,68,36,80,131,252, 94 139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8,248,
95 233,8,139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137,116, 95 29,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,96,137,149,233,137,
96 36,100,232,251,1,8,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248, 96 202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,8,139,149,233,139,76,
97 131,192,1,57,215,15,132,244,59,137,202,137,114,252,252,139,181,233,139,14, 97 36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,15,132,244,60,137,202,
98 15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,248,60,139,108,36, 98 137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,
99 96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,9,139,149,233, 99 255,36,252,235,248,61,139,108,36,96,137,149,233,137,202,137,252,233,137,116,
100 139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235,233, 100 36,100,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,
101 248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253,239,15,131,244, 101 16,252,255,164,253,252,235,233,248,62,129,252,248,239,15,130,244,63,139,106,
102 62,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131, 102 4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,84,137,106,252,
103 232,2,15,132,244,248,255,137,209,248,1,131,193,8,72,139,41,72,137,105,252, 103 252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,
104 248,131,232,1,15,133,244,1,248,2,139,68,36,84,252,233,244,63,248,64,129,252, 104 193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
105 248,239,15,130,244,62,139,106,4,137,252,233,193,252,249,15,131,252,249,252, 105 84,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139,106,4,137,252,
106 254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244, 106 233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237,252,247,213,
107 247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252, 107 57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,
108 252,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,184,237,252,233, 108 248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
109 244,2,248,66,129,252,248,239,15,130,244,62,139,106,4,139,114,252,252,129, 109 252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248,239,15,130,
110 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199, 110 244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,
111 66,252,252,237,255,15,132,244,65,139,131,233,199,66,252,252,237,137,106,252, 111 42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,244,66,139,
112 248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15, 112 131,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,233,105,201,
113 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244, 113 239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,
114 3,255,252,233,244,65,248,5,139,105,4,129,252,253,239,15,132,244,65,139,1, 114 251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66,248,5,139,105,
115 137,106,252,252,137,66,252,248,252,233,244,65,248,6,129,252,253,239,15,132, 115 4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66,252,248,252,
116 244,1,129,252,253,239,15,135,244,254,129,252,253,239,15,134,244,253,189,237, 116 233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,
117 252,233,244,254,248,7,255,189,237,248,8,252,247,213,139,172,253,171,233,252, 117 254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248,7,255,189,
118 233,244,2,248,67,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244, 118 237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68,129,252,248,
119 62,139,42,131,189,233,0,15,133,244,62,129,122,253,12,239,15,133,244,62,139, 119 239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131,189,233,0,15,
120 66,8,137,133,233,139,114,252,252,199,66,252,252,237,255,137,106,252,248,252, 120 133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133,233,139,114,
121 246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137, 121 252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233,235,15,132,
122 133,233,248,1,252,233,244,65,248,68,129,252,248,239,15,130,244,62,129,122, 122 244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,
123 253,4,239,15,133,244,62,137,213,68,141,66,8,139,18,139,76,36,96,232,251,1, 123 244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,
124 10,137,252,234,72,139,40,139,114,252,252,72,137,106,252,248,252,233,244,65, 124 63,137,213,68,141,66,8,139,18,139,76,36,96,232,251,1,10,137,252,234,72,139,
125 248,69,255,129,252,248,239,15,133,244,62,129,122,253,4,239,255,15,133,244, 125 40,139,114,252,252,72,137,106,252,248,252,233,244,66,248,70,255,129,252,248,
126 247,139,42,252,233,244,70,248,1,15,135,244,62,255,15,131,244,62,255,252,242, 126 239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,
127 15,16,2,252,233,244,71,255,221,2,252,233,244,72,255,248,73,129,252,248,239, 127 71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244,
128 15,130,244,62,139,114,252,252,129,122,253,4,239,15,133,244,249,139,2,248, 128 72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130,244,63,139,
129 2,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,129,122,253,4,239, 129 114,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,
130 15,135,244,62,131,187,233,0,15,133,244,62,139,171,233,59,171,233,255,15,130, 130 137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187,
131 244,247,232,244,74,248,1,139,108,36,96,137,149,233,137,116,36,100,137,252, 131 233,0,15,133,244,63,139,171,233,59,171,233,255,15,130,244,247,232,244,75,
132 233,255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,75, 132 248,1,139,108,36,96,137,149,233,137,116,36,100,137,252,233,255,232,251,1,
133 129,252,248,239,15,130,244,62,15,132,244,248,248,1,129,122,253,4,239,15,133, 133 11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,76,129,252,248,239,
134 244,62,139,108,36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8, 134 15,130,244,63,15,132,244,248,248,1,129,122,253,4,239,15,133,244,63,139,108,
135 139,18,137,252,233,137,116,36,100,232,251,1,13,139,149,233,133,192,15,132, 135 36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8,139,18,137,252,
136 244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,76,184, 136 233,137,116,36,100,232,251,1,13,139,149,233,133,192,15,132,244,249,72,139,
137 237,255,252,233,244,77,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252, 137 106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77,184,237,255,252,233,
138 252,237,252,233,244,65,248,78,129,252,248,239,15,130,244,62,139,42,129,122, 138 244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,
139 253,4,239,15,133,244,62,255,131,189,233,0,15,133,244,62,255,139,106,252,248, 139 244,66,248,79,129,252,248,239,15,130,244,63,139,42,129,122,253,4,239,15,133,
140 139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237, 140 244,63,255,131,189,233,0,15,133,244,63,255,139,106,252,248,139,133,233,139,
141 184,237,252,233,244,77,248,79,129,252,248,239,15,130,244,62,129,122,253,4, 141 114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,
142 239,15,133,244,62,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131, 142 244,78,248,80,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,
143 192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237, 143 63,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,192,1,199,66,252,
144 237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66, 144 252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,
145 252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129, 145 205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,
146 120,253,4,239,15,132,244,80,72,139,40,72,137,42,252,233,244,76,248,2,131, 146 42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,
147 189,233,0,15,132,244,80,137,252,233,137,213,137,194,232,251,1,14,137,252, 147 15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131,189,233,0,15,132,
148 234,133,192,15,133,244,1,248,80,184,237,252,233,244,77,248,81,255,139,106, 148 244,81,137,252,233,137,213,137,194,232,251,1,14,137,252,234,133,192,15,133,
149 252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,255, 149 244,1,248,81,184,237,252,233,244,78,248,82,255,139,106,252,248,139,133,233,
150 199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252, 150 139,114,252,252,199,66,252,252,237,137,66,252,248,255,199,66,12,237,199,66,
151 238,221,90,8,255,184,237,252,233,244,77,248,82,129,252,248,239,15,130,244, 151 8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,
152 62,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229, 152 237,252,233,244,78,248,83,129,252,248,239,15,130,244,63,141,74,8,131,232,
153 1,1,252,238,252,233,244,28,248,83,129,252,248,239,15,130,244,62,129,122,253, 153 1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,238,252,233,
154 12,239,15,133,244,62,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114, 154 244,28,248,84,129,252,248,239,15,130,244,63,129,122,253,12,239,15,133,244,
155 8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,84,129,252, 155 63,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,
156 248,239,15,130,244,62,139,42,139,114,252,252,137,116,36,100,137,108,36,80, 156 141,74,16,131,232,2,190,237,252,233,244,1,248,85,129,252,248,239,15,130,244,
157 129,122,253,4,239,15,133,244,62,72,131,189,233,0,15,133,244,62,128,189,233, 157 63,139,42,139,114,252,252,137,116,36,100,137,108,36,80,129,122,253,4,239,
158 235,15,135,244,62,139,141,233,15,132,244,247,255,59,141,233,15,132,244,62, 158 15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235,15,135,244,63,
159 248,1,141,116,193,252,240,59,181,233,15,135,244,62,137,181,233,139,108,36, 159 139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248,1,141,116,193,
160 96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206, 160 252,240,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149,233,131,
161 15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15, 161 194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,15,132,244,249,248,
162 133,244,2,248,3,137,202,139,76,36,80,232,244,25,199,131,233,237,255,139,108, 162 2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,
163 36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139, 163 202,139,76,36,80,232,244,25,199,131,233,237,255,139,108,36,96,139,116,36,
164 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50, 164 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,
165 193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1, 165 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,
166 72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252, 166 233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,
167 237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252,255, 167 57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,
168 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252, 168 100,137,68,36,84,72,199,193,252,248,252,255,252,255,252,255,252,247,198,237,
169 252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237,252, 169 255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,
170 233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,251, 170 252,233,8,137,142,233,72,139,1,72,137,2,184,237,252,233,244,7,248,9,139,76,
171 1,0,139,116,36,80,139,149,233,252,233,244,4,248,85,139,106,252,248,139,173, 171 36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,
172 233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133, 172 233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,114,252,252,137,
173 244,62,255,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247,59,141, 173 116,36,100,137,108,36,80,72,131,189,233,0,15,133,244,63,255,128,189,233,235,
174 233,15,132,244,62,248,1,141,116,193,252,248,59,181,233,15,135,244,62,137, 174 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141,
175 181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72,41,252, 175 116,193,252,248,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149,
176 245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248,131,252, 176 233,137,149,233,141,108,194,252,240,72,41,252,245,57,206,15,132,244,249,248,
177 238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,25,199,131,233, 177 2,255,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,
178 237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254, 178 3,137,202,139,76,36,80,232,244,25,199,131,233,237,139,108,36,96,139,116,36,
179 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252, 179 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,
180 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248, 180 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,
181 5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248, 181 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,
182 7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233, 182 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,100,137,68,36,84,
183 244,14,248,8,137,252,242,137,252,233,232,251,1,15,248,9,139,76,36,80,137, 183 49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252,242,137,
184 185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,233,252, 184 252,233,232,251,1,15,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,
185 233,244,4,248,86,139,108,36,96,72,252,247,133,233,237,15,132,244,62,255,137, 185 232,251,1,0,139,116,36,80,139,149,233,252,233,244,4,248,87,139,108,36,96,
186 149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136, 186 72,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,
187 133,233,252,233,244,16,255,248,70,255,248,72,139,114,252,252,221,90,252,248, 187 133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,244,16,255,248,
188 252,233,244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4, 188 71,255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129,
189 239,15,133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136, 189 252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,
190 244,247,248,88,248,70,139,114,252,252,199,66,252,252,237,137,106,252,248, 190 252,253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114,
191 252,233,244,65,248,1,139,114,252,252,199,66,252,252,0,0,224,65,199,66,252, 191 252,252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252,
192 248,0,0,0,0,252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131, 192 252,199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,
193 244,62,255,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248, 193 15,135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,72,
194 71,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,71,248, 194 184,237,237,102,72,15,110,200,15,84,193,248,72,139,114,252,252,252,242,15,
195 72,139,114,252,252,221,90,252,248,255,248,65,184,237,248,77,137,68,36,84, 195 17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252,252,221,90,252,
196 248,63,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252, 196 248,255,248,66,184,237,248,78,137,68,36,84,248,64,252,247,198,237,15,133,
197 15,182,78,252,253,72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131, 197 244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,72,252,247,209,
198 198,4,193,232,16,252,255,36,252,235,248,6,199,68,194,252,244,237,131,192, 198 141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
199 1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,252,233, 199 235,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,
200 244,14,248,89,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,70, 200 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,
201 248,1,15,135,244,62,255,252,242,15,16,2,232,244,90,255,252,242,15,45,232, 201 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,
202 129,252,253,0,0,0,128,15,133,244,70,252,242,15,42,205,102,15,46,193,15,138, 202 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,
203 244,71,15,132,244,70,255,221,2,232,244,90,255,248,91,255,252,242,15,16,2, 203 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,
204 232,244,92,255,221,2,232,244,92,255,248,93,129,252,248,239,15,130,244,62, 204 91,255,248,92,255,252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248,
205 129,122,253,4,239,15,131,244,62,252,242,15,81,2,252,233,244,71,255,248,93, 205 94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
206 129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252, 206 15,81,2,252,233,244,72,255,248,94,129,252,248,239,15,130,244,63,129,122,253,
207 250,252,233,244,72,255,248,94,129,252,248,239,15,130,244,62,129,122,253,4, 207 4,239,15,131,244,63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248,
208 239,15,131,244,62,217,252,237,221,2,217,252,241,252,233,244,72,248,95,129, 208 239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252,
209 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252,236,221, 209 241,252,233,244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239,
210 2,217,252,241,252,233,244,72,248,96,129,252,248,239,255,15,130,244,62,129, 210 15,131,244,63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252,
211 122,253,4,239,15,131,244,62,221,2,232,244,97,252,233,244,72,248,98,129,252, 211 248,239,255,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98,
212 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,254,252, 212 252,233,244,73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
213 233,244,72,248,99,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15, 213 131,244,63,221,2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15,
214 131,244,62,221,2,217,252,255,252,233,244,72,248,100,129,252,248,239,15,130, 214 130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244,
215 244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,242,221,216,252,233, 215 73,248,101,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
216 244,72,248,101,129,252,248,239,15,130,244,62,255,129,122,253,4,239,15,131, 216 221,2,217,252,242,221,216,252,233,244,73,248,102,129,252,248,239,15,130,244,
217 244,62,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252, 217 63,255,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,
218 233,244,72,248,102,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 218 225,217,252,250,217,252,243,252,233,244,73,248,103,129,252,248,239,15,130,
219 244,62,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252, 219 244,63,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,
220 243,252,233,244,72,248,103,129,252,248,239,15,130,244,62,129,122,253,4,239, 220 225,217,252,250,217,201,217,252,243,252,233,244,73,248,104,129,252,248,239,
221 15,131,244,62,255,221,2,217,232,217,252,243,252,233,244,72,255,248,104,129, 221 15,130,244,63,129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243,
222 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2, 222 252,233,244,73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239,
223 255,137,213,232,251,1,16,137,252,234,252,233,244,71,255,248,105,129,252,248, 223 15,131,244,63,252,242,15,16,2,255,137,213,232,251,1,16,137,252,234,252,233,
224 239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255,137, 224 244,72,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
225 213,232,251,1,17,137,252,234,252,233,244,71,255,248,106,129,252,248,239,15, 225 244,63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72,
226 130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255,137,213,232, 226 255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
227 251,1,18,137,252,234,252,233,244,71,248,107,255,248,108,129,252,248,239,15, 227 252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,248,108,
228 130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,139,106,252,248, 228 255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
229 252,242,15,89,133,233,252,233,244,71,255,248,108,129,252,248,239,15,130,244, 229 252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,
230 62,129,122,253,4,239,15,131,244,62,221,2,139,106,252,248,220,141,233,252, 230 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
231 233,244,72,255,248,109,129,252,248,239,15,130,244,62,129,122,253,4,239,15, 231 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,
232 131,244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,217,252,243,252, 232 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
233 233,244,72,248,110,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 233 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,
234 244,62,129,122,253,12,239,255,15,131,244,62,221,66,8,221,2,217,252,253,221, 234 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,
235 217,252,233,244,72,248,111,129,252,248,239,15,130,244,62,139,106,4,129,252, 235 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,
236 253,239,15,131,244,62,139,114,252,252,139,2,137,106,252,252,137,66,252,248, 236 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252,
237 209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184, 237 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,
238 252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41, 238 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,
239 197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252, 239 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,
240 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248, 240 108,36,80,219,68,36,80,255,139,106,252,252,129,229,252,255,252,255,15,128,
241 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,77,248,3,255,15, 241 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,
242 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242, 242 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,
243 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17, 243 252,233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,
244 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248, 244 205,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,80,0,0,
245 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,112,129,252, 245 128,90,216,76,36,80,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,
246 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255, 246 252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239,
247 248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221, 247 15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15,130,244,63,129,
248 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132, 248 122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252,252,209,229,129,
249 244,250,255,15,40,224,232,244,113,252,242,15,92,224,248,1,252,242,15,17,66, 249 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,114,252,242,
250 252,248,252,242,15,17,34,255,217,192,232,244,113,220,252,233,248,1,221,90, 250 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
251 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184, 251 244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
252 237,252,233,244,77,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248, 252 4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248,3,129,252,245,0,
253 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248, 253 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,
254 114,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 254 252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15,130,244,63,129,
255 253,12,239,15,131,244,62,221,66,8,221,2,248,1,217,252,248,223,224,158,15, 255 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,66,8,221,
256 138,244,1,221,217,252,233,244,72,255,248,115,129,252,248,239,15,130,244,62, 256 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,73,255,248,
257 129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242, 257 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,
258 15,16,2,252,242,15,16,74,8,232,244,116,252,233,244,71,255,248,115,129,252, 258 253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252,
259 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 259 233,244,72,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
260 15,131,244,62,221,2,221,66,8,232,244,116,252,233,244,72,255,248,117,185,2, 260 131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252,
261 0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244, 261 233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,
262 70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,79,108, 262 42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,
263 202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,252,233,244,252, 263 59,108,202,252,248,15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,
264 248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193,15,131,244,71,129,124, 264 135,244,63,255,252,233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248,
265 253,202,252,252,239,255,15,130,244,252,15,135,244,62,252,242,15,42,76,202, 265 5,57,193,15,131,244,72,129,124,253,202,252,252,239,255,15,130,244,252,15,
266 252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,248,7,252, 266 135,244,63,252,242,15,42,76,202,252,248,252,233,244,253,255,248,6,252,242,
267 242,15,93,193,131,193,1,252,233,244,5,255,248,118,185,2,0,0,0,129,122,253, 267 15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,
268 4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,70,129,124,253,202, 268 248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,
269 252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248,131,193, 269 193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,
270 1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242,15,16,76,202,252,248, 270 248,15,76,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255,
271 248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,252,233, 271 248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,95,193,131,193,1,252,
272 244,62,255,248,119,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133, 272 233,244,5,255,248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15,
273 244,62,139,42,255,139,173,233,252,233,244,70,255,252,242,15,42,133,233,252, 273 130,244,63,129,122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233,
274 233,244,71,255,219,133,233,252,233,244,72,255,248,120,129,252,248,239,15, 274 244,71,255,252,242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244,
275 133,244,62,129,122,253,4,239,15,133,244,62,139,42,139,114,252,252,131,189, 275 73,255,248,121,129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244,
276 233,1,15,130,244,80,15,182,173,233,255,252,242,15,42,197,252,233,244,71,255, 276 63,139,42,139,114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255,
277 137,108,36,80,219,68,36,80,252,233,244,72,255,248,121,139,171,233,59,171, 277 252,242,15,42,197,252,233,244,72,255,137,108,36,80,219,68,36,80,252,233,244,
278 233,15,130,244,247,232,244,74,248,1,129,252,248,239,15,133,244,62,129,122, 278 73,255,248,122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,
279 253,4,239,255,15,133,244,62,139,42,129,252,253,252,255,0,0,0,15,135,244,62, 279 252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129,
280 137,108,36,84,255,15,131,244,62,252,242,15,44,42,129,252,253,252,255,0,0, 280 252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131,244,63,252,242,
281 0,15,135,244,62,137,108,36,84,255,15,131,244,62,221,2,219,92,36,84,129,124, 281 15,44,42,129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131,
282 36,84,252,255,0,0,0,15,135,244,62,255,199,68,36,32,1,0,0,0,72,141,68,36,84, 282 244,63,221,2,219,92,36,84,129,124,36,84,252,255,0,0,0,15,135,244,63,255,199,
283 248,122,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233, 283 68,36,32,1,0,0,0,72,141,68,36,84,248,123,139,108,36,96,137,149,233,68,139,
284 137,116,36,100,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252,237, 284 68,36,32,72,137,194,137,252,233,137,116,36,100,232,251,1,19,139,149,233,139,
285 137,66,252,248,252,233,244,65,248,123,139,171,233,59,171,233,15,130,244,247, 285 114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,66,248,124,139,
286 232,244,74,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248, 286 171,233,59,171,233,15,130,244,247,232,244,75,248,1,199,68,36,84,252,255,252,
287 239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15,133,244,62,139, 287 255,252,255,252,255,129,252,248,239,15,130,244,63,15,134,244,247,129,122,
288 106,16,137,108,36,84,255,15,131,244,62,252,242,15,44,106,16,137,108,36,84, 288 253,20,239,255,15,133,244,63,139,106,16,137,108,36,84,255,15,131,244,63,252,
289 255,15,131,244,62,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133, 289 242,15,44,106,16,137,108,36,84,255,15,131,244,63,221,66,16,219,92,36,84,255,
290 244,62,129,122,253,12,239,255,139,42,137,108,36,32,139,173,233,255,139,74, 290 248,1,129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,42,137,108,
291 8,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133, 291 36,32,139,173,233,255,139,74,8,255,252,242,15,44,74,8,255,139,68,36,84,57,
292 201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,124,141,172,253, 292 197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,
293 13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,122,248,5,15,140, 293 15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,
294 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15, 294 233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,
295 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244, 295 252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,
296 3,248,124,49,192,252,233,244,4,248,125,129,252,248,239,15,130,244,62,139, 296 8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4,248,126,129,252,
297 171,233,59,171,233,15,130,244,247,232,244,74,248,1,255,129,122,253,4,239, 297 248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248,
298 15,133,244,62,129,122,253,12,239,139,42,255,15,133,244,62,139,66,8,255,15, 298 1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139,42,255,15,133,
299 131,244,62,252,242,15,44,66,8,255,15,131,244,62,221,66,8,219,92,36,84,139, 299 244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15,131,244,63,221,
300 68,36,84,255,133,192,15,142,244,124,131,189,233,1,15,130,244,124,15,133,244, 300 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,125,131,189,233,1,15,
301 126,57,131,233,15,130,244,126,15,182,141,233,139,171,233,137,68,36,32,248, 301 130,244,125,15,133,244,127,57,131,233,15,130,244,127,15,182,141,233,139,171,
302 1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,122,248, 302 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,
303 127,129,252,248,239,255,15,130,244,62,139,171,233,59,171,233,15,130,244,247, 303 233,252,233,244,123,248,128,129,252,248,239,255,15,130,244,63,139,171,233,
304 232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,133,192, 304 59,171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,
305 15,132,244,124,57,131,233,15,130,244,128,129,197,239,137,116,36,84,137,68, 305 139,42,139,133,233,133,192,15,132,244,125,57,131,233,15,130,244,129,129,197,
306 36,32,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133, 306 239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,15,182,77,0,131,197,
307 244,1,137,252,240,139,116,36,84,252,233,244,122,248,129,129,252,248,239,15, 307 1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,84,252,233,244,123,
308 130,244,62,139,171,233,59,171,233,15,130,244,247,232,244,74,248,1,129,122, 308 248,130,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,
309 253,4,239,15,133,244,62,139,42,139,133,233,57,131,233,255,15,130,244,128, 309 232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,
310 233,255,15,130,244,129,129,197,239,137,116,36,84,137,68,36,32,139,179,233,
311 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,
312 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,
313 244,1,137,252,240,139,116,36,84,252,233,244,123,248,131,129,252,248,239,15,
314 130,244,63,255,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,
315 122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233,15,130,244,129,
310 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1, 316 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,
311 15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248, 317 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,
312 131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139, 318 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,
313 116,36,84,252,233,244,122,248,130,129,252,248,239,15,130,244,62,255,139,171, 319 139,116,36,84,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122,
314 233,59,171,233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244, 320 253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252,234,255,137,197,
315 62,139,42,139,133,233,57,131,233,15,130,244,128,129,197,239,137,116,36,84, 321 252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248,
316 137,68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249, 322 239,15,130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,
317 97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,2, 323 89,248,1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
318 136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244, 324 252,242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248,
319 122,248,131,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244,62, 325 239,15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,68,36,80,0,
320 137,213,139,10,232,251,1,20,137,252,234,255,137,197,252,233,244,70,255,252, 326 0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255,
321 242,15,42,192,252,233,244,71,255,248,132,129,252,248,239,15,130,244,62,129, 327 252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,84,141,
322 122,253,4,239,255,15,133,244,247,139,42,252,233,244,88,248,1,15,135,244,62, 328 68,194,252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244,
323 255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102, 329 248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135,
324 15,126,197,255,252,233,244,88,255,248,133,129,252,248,239,15,130,244,62,255, 330 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,
325 72,189,237,237,102,72,15,110,205,255,199,68,36,80,0,0,192,89,255,15,133,244, 331 252,233,244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11,
326 247,139,42,252,233,244,248,248,1,15,135,244,62,255,252,242,15,16,2,252,242, 332 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242,
327 15,88,193,102,15,126,197,255,248,2,137,68,36,84,141,68,194,252,240,248,1, 333 15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252,
328 57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8, 334 248,239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,
329 252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255,252,242,15,16,0, 335 2,15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,
330 252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244,1,248,135, 336 205,255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129,
331 129,252,248,239,15,130,244,62,255,15,133,244,248,11,40,131,232,8,252,233, 337 122,253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15,
332 244,1,248,2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126, 338 130,244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15,
333 193,9,205,255,131,232,8,252,233,244,1,248,136,129,252,248,239,15,130,244, 339 42,197,252,233,244,72,255,248,135,139,68,36,84,252,233,244,63,255,248,140,
334 62,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135,244,134, 340 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,
335 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,131,232,8, 341 239,15,133,244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,
336 252,233,244,1,248,137,129,252,248,239,15,130,244,62,129,122,253,4,239,255, 342 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,
337 248,2,15,205,252,233,244,88,248,138,129,252,248,239,15,130,244,62,129,122,
338 253,4,239,255,248,2,252,247,213,255,248,88,252,242,15,42,197,252,233,244,
339 71,255,248,134,139,68,36,84,252,233,244,62,255,248,139,129,252,248,239,15,
340 130,244,62,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,244,62,139,
341 74,8,255,248,139,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,
342 62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,
343 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,
344 126,197,102,15,126,201,255,211,229,252,233,244,88,255,248,140,129,252,248,
345 239,15,130,244,62,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,
346 62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,
347 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
348 194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,237,252,233,
349 244,88,255,248,141,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,
350 141,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,
351 253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
352 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,
353 15,126,201,255,211,252,253,252,233,244,88,255,248,142,129,252,248,239,15,
354 130,244,62,129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,62,129,
355 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,
356 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252, 343 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
357 242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,252,233,244,88,255, 344 242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255,
358 248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,143,129,252, 345 248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,
359 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 346 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,
360 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15, 347 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,
361 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201, 348 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,
362 255,211,205,252,233,244,88,248,126,184,237,252,233,244,62,248,128,184,237, 349 255,211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,
363 248,62,139,108,36,96,139,114,252,252,137,116,36,100,137,149,233,141,68,194, 350 129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,
364 252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251, 351 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,
365 137,252,233,252,255,144,233,139,149,233,133,192,15,143,244,77,248,1,255,139, 352 15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,
366 141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244, 353 88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248,
367 32,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252, 354 143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248,
368 235,248,32,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,72,252, 355 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,
369 247,213,141,20,252,234,252,233,244,28,248,3,137,252,245,131,229,252,248,41, 356 244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
370 252,234,252,233,244,28,248,5,186,237,137,252,233,232,251,1,0,139,149,233, 357 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,
371 49,192,252,233,244,1,248,74,93,72,137,108,36,32,139,108,36,96,137,116,36, 358 197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253,
372 100,137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1, 359 4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
373 21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,32,85, 360 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,
374 195,248,144,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244, 361 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,
375 247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,145,15, 362 15,126,197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252,
376 182,131,233,168,235,15,133,244,251,252,233,244,247,248,146,15,182,131,233, 363 233,244,63,248,129,184,237,248,63,139,108,36,96,139,114,252,252,137,116,36,
377 168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244, 364 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,
378 247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,233,137,252,242, 365 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192,
379 137,252,233,232,251,1,22,248,3,139,149,233,248,4,15,182,78,252,253,248,5, 366 15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
380 15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,233,248,147, 367 139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233,15,182,205,
381 131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,148,255,139,106,252,248, 368 131,198,4,252,255,36,252,235,248,33,137,209,252,247,198,237,15,133,244,249,
382 139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,137,133,233, 369 15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137,
383 137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,1,23,252,233, 370 252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137,252,233,
384 244,3,255,248,149,137,116,36,100,255,248,150,255,137,116,36,100,131,206,1, 371 232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,32,139,
385 248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,133,233,137,252, 372 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137,
386 242,137,252,233,232,251,1,24,199,68,36,100,0,0,0,0,255,131,230,252,254,255, 373 133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
387 139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,78,252,253,193, 374 139,108,36,32,85,195,248,145,255,15,182,131,233,168,235,15,133,244,251,168,
388 232,3,131,192,1,252,255,229,248,151,255,65,85,65,84,65,83,65,82,65,81,65, 375 235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,
389 80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,252, 376 255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,147,
390 240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,233,199,131,233, 377 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,
391 237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,128,252,242,68, 378 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,
392 15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68,15,17,109,232,252, 379 233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,15,182,78,
393 242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68,15,17,85,208,252, 380 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,
394 242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,125,184,252,242, 381 233,248,148,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,149,255,139,
395 15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,252,242,15,17,93, 382 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,
396 152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,17,69,128,139,171, 383 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,
397 233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,149,233,72,141,148, 384 1,23,252,233,244,3,255,248,150,137,116,36,100,255,248,151,255,137,116,36,
398 253,36,233,141,139,233,232,251,1,25,72,139,141,233,72,129,225,239,137,169, 385 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,
399 233,139,149,233,139,177,233,252,233,244,247,255,248,152,255,72,141,140,253, 386 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,100,0,0,0,0,255,131,
400 36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,102,68,15,111,169, 387 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,
401 233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,15,111,145,233,102, 388 78,252,253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83,
402 68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,233,72,137,204,102, 389 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,
403 15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108,36,32,76,139,100,36, 390 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,
404 80,133,192,15,136,244,249,137,68,36,84,139,122,252,248,139,191,233,139,191, 391 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,
405 233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198, 392 128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68,
406 4,193,232,16,129,252,253,239,15,130,244,248,255,139,68,36,84,248,2,252,255, 393 15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68,
407 36,252,235,248,3,252,247,216,137,252,233,137,194,232,251,1,26,255,248,90, 394 15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,
408 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252, 395 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,
409 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 396 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,
410 255,248,153,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 397 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,
411 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252, 398 149,233,72,141,148,253,36,233,141,139,233,232,251,1,25,72,139,141,233,72,
412 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110, 399 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,153,
413 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1, 400 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,
414 195,248,92,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37, 401 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,
415 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, 402 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,
416 68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,237,237,102, 403 233,72,137,204,102,15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108,
417 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 404 36,32,76,139,100,36,80,133,192,15,136,244,249,137,68,36,84,139,122,252,248,
418 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102, 405 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,
419 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40, 406 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139,
420 193,248,1,195,248,113,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68, 407 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232,
421 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 408 251,1,26,255,248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
422 255,248,155,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 409 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
423 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15, 410 36,4,139,68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,
424 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216, 411 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
425 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40, 412 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
426 193,248,1,195,248,156,255,15,40,232,252,242,15,94,193,72,184,237,237,102, 413 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,
427 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102, 414 200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102,
428 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227, 415 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,
429 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15, 416 217,108,36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,
430 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195, 417 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
431 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252, 418 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
432 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137, 419 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,
433 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255, 420 15,92,200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,
434 248,97,217,252,234,222,201,248,157,217,84,36,8,129,124,36,8,0,0,128,127,15, 421 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
435 132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,248,158,217,192,217, 422 139,68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,
436 252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217, 423 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
437 248,1,195,248,2,221,216,217,252,238,195,255,248,116,255,248,159,252,242,15, 424 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,
438 45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248, 425 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
439 160,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242, 426 86,202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184,
440 15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248, 427 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,
441 3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89, 428 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,
442 200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15, 429 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,
443 130,244,253,252,247,216,232,244,1,72,184,237,237,102,72,15,110,200,252,242, 430 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,
444 15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15,110,192,195,248,8, 431 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,
445 102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15,132,244, 432 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,
446 248,102,72,15,126,192,72,209,224,15,132,244,250,255,72,193,192,12,72,61,252, 433 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,
447 254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,15,17,68,36,8,221, 434 252,233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,8,129,124,36,
448 68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,252,233,217,201, 435 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,
449 217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,8,252,242,15,16, 436 248,159,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
450 68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244, 437 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,117,255,
451 247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84, 438 248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
452 194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80, 439 15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
453 193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237, 440 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,
454 255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87, 441 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,
455 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,161,255, 442 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,
456 131,252,250,1,15,130,244,90,15,132,244,92,131,252,250,3,15,130,244,113,15, 443 6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,184,237,237,102,72,
457 135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,8,221,68,36,8, 444 15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15,
458 131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,97,80,252,233,244, 445 110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,
459 253,248,1,232,244,157,255,80,252,233,244,253,248,2,131,252,250,7,15,132,244, 446 15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,244,250,255,72,
460 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1, 447 193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,
461 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9,15,132,244, 448 242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,
462 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1, 449 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,
463 255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244,247,15,135, 450 36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,
464 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92, 451 15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,
465 36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4,131,252,250,1, 452 15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,
466 15,130,244,90,15,132,244,92,131,252,250,3,15,130,244,113,15,135,244,248,217, 453 132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,
467 252,250,195,248,2,131,252,250,5,15,130,244,97,15,132,244,157,131,252,250, 454 248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,
468 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1, 455 15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,
469 217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,244,247,255,15, 456 192,195,248,162,255,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250,
470 135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248, 457 3,15,130,244,114,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,
471 2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217, 458 68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,
472 252,242,221,216,195,255,248,9,204,255,248,162,255,65,131,252,248,1,15,132, 459 98,80,252,233,244,253,248,1,232,244,158,255,80,252,233,244,253,248,2,131,
473 244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,193,195, 460 252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,
474 248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,195, 461 233,244,253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,
475 248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,156,15,132, 462 250,9,15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,
476 244,116,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237,237,255, 463 244,253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,
477 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15, 464 244,247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,
478 84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68,36,8,252, 465 216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,
479 242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,252,243,248, 466 4,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250,3,15,130,244,114,
480 7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,253,221,217, 467 15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,98,15,132,244,
481 252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,255,252,242, 468 158,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
482 15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,20,221, 469 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,
483 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, 470 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
484 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 471 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,
485 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,156,15,132, 472 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,65,131,252,
486 244,116,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195, 473 248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,
487 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, 474 92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,
488 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 475 89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,
489 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, 476 157,15,132,244,117,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,
490 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 477 237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,
491 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 478 110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,
492 244,248,217,201,248,2,221,216,195,255,248,163,137,200,86,72,137,214,83,15, 479 68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,
493 162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,164,255,204,248,165,255, 480 252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,
494 85,72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233,131, 481 253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,
495 252,233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253,204, 482 255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,
496 233,131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72,139, 483 36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,
497 147,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233, 484 222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,
498 15,40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72,137, 485 244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,
499 131,233,15,41,131,233,255,72,139,93,252,248,201,195,255,249,255,129,124,253, 486 157,15,132,244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,
500 202,4,239,15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202, 487 217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,
501 131,198,4,59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244, 488 15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
502 255,255,15,142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248, 489 2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,
503 9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 490 217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,
504 7,15,135,244,43,129,124,253,194,4,239,15,130,244,247,15,133,244,43,255,252, 491 196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,
505 242,15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255, 492 246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,164,137,200,86,
506 248,8,15,135,244,43,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198, 493 72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,165,
507 4,102,15,46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15, 494 255,204,248,166,255,87,86,83,72,131,252,236,40,141,157,233,139,181,233,15,
508 131,244,9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253, 495 183,192,137,134,233,72,137,142,233,72,137,150,233,76,137,134,233,76,137,142,
509 202,4,239,15,131,244,43,129,124,253,194,4,239,15,131,244,43,255,248,1,252, 496 233,252,242,15,17,134,233,252,242,15,17,142,233,252,242,15,17,150,233,252,
510 242,15,16,4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202, 497 242,15,17,158,233,72,141,132,253,36,233,72,137,134,233,72,137,226,137,116,
511 248,2,221,4,194,248,3,131,198,4,255,223,252,233,221,216,255,218,252,233,223, 498 36,100,137,252,241,232,251,1,27,199,131,233,237,139,144,233,139,128,233,41,
512 224,158,255,15,134,244,247,255,15,135,244,247,255,15,130,244,247,255,15,131, 499 208,139,106,252,248,193,232,3,131,192,1,139,181,233,139,14,15,182,252,233,
513 244,247,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204, 500 15,182,205,131,198,4,252,255,36,252,235,255,248,32,255,139,76,36,96,139,179,
514 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131, 501 233,72,137,142,233,137,145,233,137,169,233,137,252,241,137,194,232,251,1,
515 198,4,255,129,252,253,239,15,133,244,253,129,124,253,202,4,239,15,133,244, 502 28,72,139,134,233,252,242,15,16,134,233,252,233,244,16,255,248,167,255,85,
516 254,139,44,194,59,44,202,255,15,133,244,255,255,15,132,244,255,255,15,183, 503 72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233,131,252,
517 70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131,198, 504 233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233,
518 4,193,232,16,252,255,36,252,235,248,7,15,135,244,251,129,124,253,202,4,239, 505 131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72,139,147,
519 15,130,244,247,15,133,244,251,255,252,242,15,42,4,202,255,219,4,202,255,252, 506 233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,15,
520 233,244,248,248,8,15,135,244,251,255,252,242,15,42,4,194,102,15,46,4,202, 507 40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72,137,131,
521 255,219,4,194,221,4,202,255,252,233,244,250,255,129,252,253,239,15,131,244, 508 233,15,41,131,233,255,72,139,93,252,248,201,195,255,129,124,253,202,4,239,
522 251,129,124,253,202,4,239,15,131,244,251,255,248,1,252,242,15,16,4,202,248, 509 15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4,
523 2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,2,221,4,194,248,4,255,15, 510 59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15,
524 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15, 511 142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,
525 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141, 512 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,
526 180,253,134,233,248,1,255,252,233,244,9,255,129,252,253,239,15,132,244,48, 513 44,129,124,253,194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,
527 129,124,253,202,4,239,15,132,244,48,255,57,108,202,4,15,133,244,2,129,252, 514 194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,
528 253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253, 515 135,244,44,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,
529 239,15,135,244,2,129,252,253,239,15,130,244,2,139,169,233,133,252,237,15, 516 46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,
530 132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0, 517 9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,202,4,239,
531 255,252,233,244,47,255,248,3,129,252,253,239,255,15,133,244,9,255,252,233, 518 15,131,244,44,129,124,253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,
532 244,48,255,72,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,133, 519 4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,
533 244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,252,253, 520 4,194,248,3,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,
534 239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,59,44, 521 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,
535 202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182, 522 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
536 232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,249,129,124, 523 16,252,255,36,252,235,255,139,108,194,4,131,198,4,255,129,252,253,239,15,
537 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252, 524 133,244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,
538 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221, 525 15,133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
539 4,199,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248, 526 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
540 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,248,4,255,72, 527 248,7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,
541 252,247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252, 528 255,252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,
542 254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232, 529 251,255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,
543 16,252,255,36,252,235,248,3,129,252,253,239,15,133,244,2,252,233,244,48,255, 530 233,244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,
544 15,132,244,248,129,252,253,239,15,132,244,48,15,183,70,252,254,141,180,253, 531 244,251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,
545 134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 532 1,221,4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,
546 252,235,255,139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139, 533 138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,
547 44,194,137,44,202,255,72,139,44,194,72,137,44,202,139,6,15,182,204,15,182, 534 248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,
548 232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,237,129,124,253,194, 535 9,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255,
549 4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193, 536 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
550 232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,133,244,251,139,44, 537 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244,
551 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15, 538 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,
552 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,199,68,202, 539 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,
553 4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,53,255,129, 540 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,198,
554 124,253,194,4,239,15,131,244,53,255,252,242,15,16,4,194,72,184,237,237,102, 541 4,129,252,253,239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,
555 72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28, 542 198,4,255,129,252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,
556 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,248, 543 254,139,44,199,59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,
557 1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252, 544 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,
558 242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15, 545 15,135,244,249,129,124,253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,
559 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,4,239, 546 255,219,4,199,255,252,233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,
560 15,133,244,56,139,12,194,255,139,169,233,131,252,253,0,15,133,244,255,248, 547 4,199,255,219,4,202,221,4,199,255,129,252,253,239,15,131,244,249,255,248,
561 3,255,248,57,137,213,232,251,1,20,255,252,242,15,42,192,255,137,252,234,15, 548 1,252,242,15,16,4,199,248,2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,
562 182,78,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,3,252, 549 2,221,4,202,248,4,255,72,252,247,208,139,108,202,4,131,198,4,57,197,255,15,
563 233,244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15, 550 133,244,249,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,
564 133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,3,44,199,15, 551 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,129,252,253,239,
565 128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4, 552 15,133,244,2,252,233,244,49,255,15,132,244,248,129,252,253,239,15,132,244,
566 239,15,133,244,52,139,4,199,3,4,252,234,15,128,244,51,255,129,124,253,252, 553 49,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,
567 234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234, 554 131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,
568 3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,234,4,239, 555 253,239,255,137,108,202,4,139,44,194,137,44,202,255,72,139,44,194,72,137,
569 15,131,244,50,255,129,124,253,199,4,239,15,131,244,50,255,252,242,15,16,4, 556 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
570 252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252, 557 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
571 234,4,239,15,131,244,52,255,129,124,253,199,4,239,15,131,244,52,255,252,242, 558 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,
572 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, 559 4,239,15,133,244,251,139,44,194,252,247,221,15,128,244,250,199,68,202,4,237,
573 253,252,234,4,239,15,131,244,55,129,124,253,194,4,239,15,131,244,55,255,252, 560 137,44,202,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
574 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,129, 561 36,252,235,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,
575 124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139, 562 248,5,15,135,244,54,255,129,124,253,194,4,239,15,131,244,54,255,252,242,15,
576 44,252,234,43,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 563 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,
577 52,129,124,253,199,4,239,15,133,244,52,139,4,199,43,4,252,234,15,128,244, 564 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,
578 51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133, 565 4,194,255,139,128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,
579 244,55,139,44,252,234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234, 566 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,
580 252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199, 567 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
581 252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4, 568 248,2,129,124,253,194,4,239,15,133,244,57,139,12,194,255,139,169,233,131,
582 252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253, 569 252,253,0,15,133,244,255,248,3,255,248,58,137,213,232,251,1,20,255,252,242,
583 252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252, 570 15,42,192,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252,246,
584 234,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 571 133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192,255,
585 52,129,124,253,199,4,239,15,133,244,52,139,4,199,15,175,4,252,234,15,128, 572 129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,244,
586 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239, 573 51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,
587 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16, 574 133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15,128,
588 4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15, 575 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,
589 16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242, 576 15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237,
590 15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252, 577 255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239,15,
591 242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255, 578 131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,
592 252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234, 579 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253,
593 255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52, 580 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,
594 194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221, 581 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124,
595 4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221, 582 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194,
596 4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252, 583 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129,
597 234,221,4,194,255,248,166,232,244,156,255,252,233,244,166,255,232,244,116, 584 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255,
598 255,15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137, 585 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
599 192,65,41,232,248,35,137,205,137,116,36,100,232,251,1,27,139,149,233,133, 586 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15,
600 192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72, 587 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15,
601 137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 588 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
602 235,255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182, 589 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
603 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,199, 590 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
604 68,202,4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202, 591 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124,
605 255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202, 592 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255,
606 255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,204, 593 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
607 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,141, 594 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,
608 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244, 595 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44,
609 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, 596 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
610 139,106,252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,202, 597 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,
611 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139, 598 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
612 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139, 599 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,
613 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244, 600 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,
614 248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 601 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
615 235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15, 602 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
616 132,244,1,135,213,141,139,233,255,232,251,1,28,137,252,234,252,233,244,1, 603 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
617 255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133, 604 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
618 233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15, 605 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,
619 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246, 606 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139,
620 129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139, 607 76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,36,137,205,137,116,
621 233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, 608 36,100,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,110,252,255,
622 15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, 609 15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,15,182,232,
623 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137, 610 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,
624 65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 611 68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
625 255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149, 612 255,36,252,235,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252,
626 233,141,20,202,137,252,233,232,251,1,29,139,149,233,248,1,139,6,15,182,204, 613 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,
627 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139, 614 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,
628 108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36, 615 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
629 100,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237, 616 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,
630 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139, 617 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,
631 108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251, 618 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,
632 248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244, 619 233,72,139,69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,
633 249,248,2,137,252,233,137,194,232,251,1,31,139,149,233,15,182,78,252,253, 620 16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,
621 0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,
622 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,
623 4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,
624 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,
625 30,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,
626 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,
627 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
628 36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,
629 1,137,213,137,194,141,139,233,232,251,1,30,137,252,234,252,233,244,1,255,
630 139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,
631 255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,
632 253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,
633 232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,
634 0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,31,139,149,
635 233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
636 235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,
637 135,137,252,233,137,116,36,100,232,251,1,32,139,149,233,15,182,78,252,253,
634 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232, 638 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
635 16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232, 639 16,252,255,36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,
636 251,1,32,15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96, 640 137,116,36,100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,
637 139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139, 641 11,61,252,255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,33,
638 20,135,137,252,233,232,251,1,33,139,149,233,15,182,78,252,253,137,4,202,199, 642 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
639 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 643 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,
640 252,235,248,3,137,252,233,232,251,1,32,15,183,70,252,254,72,252,247,208,252, 644 233,244,2,248,5,137,252,233,232,251,1,34,15,183,70,252,254,252,233,244,1,
641 233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233, 645 255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,
642 244,167,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233, 646 149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,35,139,149,
643 244,168,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, 647 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,
644 38,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251,139,4,194,255, 648 232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,34,
645 129,124,253,194,4,239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45, 649 15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,
646 192,252,242,15,42,200,102,15,46,193,255,15,133,244,38,255,59,133,233,15,131, 650 252,248,139,173,233,139,4,135,252,233,244,169,255,72,252,247,208,139,106,
647 244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72, 651 252,248,139,173,233,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192,
648 137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 652 129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194,
649 36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233, 653 4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,
650 235,15,132,244,38,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1, 654 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
651 248,5,255,129,124,253,194,4,239,15,133,244,38,139,4,194,252,233,244,167,255, 655 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
652 15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4, 656 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,
653 239,15,133,244,36,139,44,252,234,248,167,139,141,233,35,136,233,105,201,239, 657 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,
654 3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250, 658 249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3,
655 129,121,253,4,239,15,132,244,251,15,182,70,252,253,72,139,41,72,137,44,194, 659 199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
656 248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 660 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208,
657 235,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137, 661 139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,
658 233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129, 662 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
659 233,235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124, 663 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
660 253,252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193, 664 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232,
661 224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72,137,44,202, 665 131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194,
662 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 666 4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,
663 248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132, 667 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,37,
664 244,37,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15, 668 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,
665 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44,252, 669 44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,
666 234,255,15,133,244,41,255,59,133,233,15,131,244,41,193,224,3,3,133,233,129, 670 15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,
667 120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248, 671 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,
668 2,72,139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 672 139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,78,252,253,248,3,
669 252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129, 673 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,
670 233,235,255,15,132,244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253, 674 252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133,233,
671 194,4,239,15,133,244,41,139,4,194,252,233,244,168,248,7,128,165,233,235,139, 675 15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,
672 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182, 676 252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,6,15,
673 252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15, 677 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,
674 133,244,39,139,44,252,234,248,168,139,141,233,35,136,233,105,201,239,198, 678 233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42,15,182,
675 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133, 679 78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42,139,4,
676 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15, 680 194,252,233,244,170,248,7,128,165,233,235,139,139,233,137,171,233,137,141,
677 133,244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182, 681 233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,
678 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233, 682 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139,44,252,234,
679 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,39, 683 248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
680 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, 684 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,
681 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137, 685 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,
682 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68, 686 70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,232,131,198,4,
683 36,80,137,252,234,137,205,137,116,36,100,232,251,1,34,139,149,233,139,108, 687 193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,2,137,76,36,
684 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, 688 80,139,141,233,252,246,129,233,235,15,132,244,40,139,76,36,80,252,233,244,
685 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, 689 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
686 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133, 690 252,252,246,129,233,235,15,132,244,40,248,6,137,68,36,80,199,68,36,84,237,
687 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 691 137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205,
688 253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193, 692 137,116,36,100,232,251,1,36,139,149,233,139,108,36,32,137,193,252,233,244,
689 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233, 693 2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,
690 252,246,129,233,235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128, 694 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,
691 165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233, 695 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,
692 244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246, 696 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
693 133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1, 697 72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
694 252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72, 698 235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
695 139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 699 15,132,244,41,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
696 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 700 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,
697 248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36, 701 80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,
698 100,232,251,1,35,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 702 244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,233,
699 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 703 15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,8,72,
700 84,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8,137,114, 704 137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,
701 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 705 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,
702 252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239, 706 137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,37,139,
703 15,133,244,29,248,59,139,114,252,252,252,247,198,237,15,133,244,253,248,1, 707 149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,
704 137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131, 708 233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,253,
705 193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139, 709 202,4,239,139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233,
706 68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252, 710 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,76,
707 233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15, 711 202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60,
708 133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139, 712 139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
709 191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15, 713 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
710 133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198, 714 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
711 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137, 715 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
712 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129, 716 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
713 252,248,239,184,237,15,133,244,29,137,202,137,114,252,252,139,181,233,139, 717 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
714 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36, 718 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
715 80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198, 719 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
716 4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244, 720 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
717 250,255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255, 721 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
718 137,68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139, 722 133,244,29,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
719 92,36,84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 723 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
720 255,36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248, 724 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
721 5,41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191, 725 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,
722 233,239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44, 726 255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,
723 202,72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252, 727 15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,84,139,124,36,80,139,
724 233,244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232, 728 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,
725 129,124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15, 729 192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,133,
726 133,244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202, 730 233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,253,
727 252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 731 141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,72,137,68,202,8,137,
728 255,36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252, 732 92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6,255,129,124,253,
729 233,244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233, 733 202,252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239,
730 141,12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252, 734 15,133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235,
731 248,57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131, 735 15,133,244,251,141,180,253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,
732 193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131, 736 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,198,70,
733 193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182, 737 252,252,235,141,180,253,134,233,198,6,235,252,233,244,1,255,15,182,252,236,
734 232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137, 738 15,182,192,137,124,36,80,141,188,253,194,233,141,12,202,43,122,252,252,133,
735 208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84, 739 252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248,
736 139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248, 740 1,72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,
737 131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137, 741 57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,
738 149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137, 742 248,3,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
739 252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225, 743 255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,
740 3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255, 744 137,197,193,252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133,
741 248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252, 745 233,15,135,244,253,248,6,255,72,139,71,252,248,131,199,8,72,137,1,131,193,
742 248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255, 746 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,
743 248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5, 747 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,
744 56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20, 748 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,
745 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131, 749 137,68,36,84,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,
746 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199, 750 15,132,244,249,248,2,72,139,44,15,72,137,111,252,248,131,199,8,131,232,1,
747 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233, 751 15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,244,
748 252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209, 752 252,255,72,139,44,10,72,137,106,252,248,255,248,5,56,70,252,255,15,135,244,
749 252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,148,255,141,12, 753 252,255,15,182,78,252,253,72,252,247,209,141,20,202,139,122,252,248,139,191,
750 202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12,239,15,133,244, 754 233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
751 60,129,121,253,20,239,15,133,244,60,139,41,131,121,16,0,15,140,244,251,255, 755 36,252,235,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,
752 129,121,253,12,239,15,133,244,164,129,121,253,20,239,15,133,244,164,255,139, 756 237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,15,133,
753 105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8, 757 244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,239,102,
754 199,65,28,237,137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233, 758 129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121,253,4,239,
755 255,141,180,253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143, 759 15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253,20,239,15,
756 244,253,248,6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182, 760 133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,
757 232,131,198,4,193,232,16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137, 761 244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136,
758 41,255,15,141,244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245, 762 244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,
759 255,15,140,244,7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131, 763 255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,253,134,233,
760 244,60,129,121,253,12,239,15,131,244,60,255,129,121,253,12,239,15,131,244, 764 15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,180,
761 164,129,121,253,20,239,15,131,244,164,255,139,105,20,255,129,252,253,239, 765 253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,4,193,232,
762 15,131,244,60,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65, 766 16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,
763 16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102, 767 255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,7,255,
764 15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221, 768 252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12,
765 17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,247,255, 769 239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253,20,239,
766 217,201,248,1,255,15,183,70,252,254,255,15,131,244,7,255,15,131,244,248,141, 770 15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255,252,242,
767 180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255, 771 15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,
768 15,130,244,7,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193, 772 237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,
769 252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255, 773 17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,
770 137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233, 774 136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,
771 139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128, 775 252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255,141,180,
772 233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36, 776 253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15,130,244,
773 32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15, 777 248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,
774 127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102, 778 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137,
775 68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127, 779 105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,137,
776 169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180, 780 65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,147,
777 253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 781 233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,137,116,36,24,76,137,
778 235,255,137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15, 782 124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,102,15,127,185,233,
779 130,244,150,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244, 783 102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,127,145,233,102,68,
780 24,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233, 784 15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,233,102,68,15,127,
781 245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233, 785 177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,134,233,139,6,15,
782 244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120, 786 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,137,252,245,
783 252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,23,137,209,137,194, 787 209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139,
784 15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244, 788 190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,24,15,182,142,233,
785 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252, 789 57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,
786 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204, 790 68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,
787 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237, 791 197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,
788 131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72, 792 36,96,141,12,200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233,
789 139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141, 793 133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,
790 233,137,133,233,255,72,137,252,250,137,252,233,255,15,135,244,22,199,131, 794 252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,
791 233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233, 795 252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,
792 141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0 796 131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8,
797 131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,139,189,233,
798 139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,
799 233,255,72,137,252,250,137,252,233,255,15,135,244,22,199,131,233,237,255,
800 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,
801 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
793}; 802};
794 803
795enum { 804enum {
@@ -815,6 +824,7 @@ enum {
815 GLOB_vmeta_call, 824 GLOB_vmeta_call,
816 GLOB_vm_call_dispatch_f, 825 GLOB_vm_call_dispatch_f,
817 GLOB_vm_cpcall, 826 GLOB_vm_cpcall,
827 GLOB_cont_ffi_callback,
818 GLOB_vm_call_tail, 828 GLOB_vm_call_tail,
819 GLOB_cont_cat, 829 GLOB_cont_cat,
820 GLOB_cont_ra, 830 GLOB_cont_ra,
@@ -948,6 +958,7 @@ enum {
948 GLOB_vm_foldarith, 958 GLOB_vm_foldarith,
949 GLOB_vm_cpuid, 959 GLOB_vm_cpuid,
950 GLOB_assert_bad_for_arg_type, 960 GLOB_assert_bad_for_arg_type,
961 GLOB_vm_ffi_callback,
951 GLOB_vm_ffi_call, 962 GLOB_vm_ffi_call,
952 GLOB_BC_MODVN_Z, 963 GLOB_BC_MODVN_Z,
953 GLOB_BC_TGETS_Z, 964 GLOB_BC_TGETS_Z,
@@ -977,6 +988,7 @@ static const char *const globnames[] = {
977 "vmeta_call", 988 "vmeta_call",
978 "vm_call_dispatch_f", 989 "vm_call_dispatch_f",
979 "vm_cpcall", 990 "vm_cpcall",
991 "cont_ffi_callback",
980 "vm_call_tail", 992 "vm_call_tail",
981 "cont_cat", 993 "cont_cat",
982 "cont_ra", 994 "cont_ra",
@@ -1110,6 +1122,7 @@ static const char *const globnames[] = {
1110 "vm_foldarith", 1122 "vm_foldarith",
1111 "vm_cpuid", 1123 "vm_cpuid",
1112 "assert_bad_for_arg_type", 1124 "assert_bad_for_arg_type",
1125 "vm_ffi_callback",
1113 "vm_ffi_call@4", 1126 "vm_ffi_call@4",
1114 "BC_MODVN_Z", 1127 "BC_MODVN_Z",
1115 "BC_TGETS_Z", 1128 "BC_TGETS_Z",
@@ -1144,6 +1157,8 @@ static const char *const extnames[] = {
1144 "lj_dispatch_call@8", 1157 "lj_dispatch_call@8",
1145 "lj_trace_exit@8", 1158 "lj_trace_exit@8",
1146 "lj_err_throw@8", 1159 "lj_err_throw@8",
1160 "lj_ccallback_enter@8",
1161 "lj_ccallback_leave@8",
1147 "lj_meta_cat", 1162 "lj_meta_cat",
1148 "lj_gc_barrieruv@8", 1163 "lj_gc_barrieruv@8",
1149 "lj_func_closeuv@8", 1164 "lj_func_closeuv@8",
@@ -1184,668 +1199,686 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1184 dasm_put(Dst, 356, Dt1(->top), 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); 1199 dasm_put(Dst, 356, Dt1(->top), 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);
1185 dasm_put(Dst, 511, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1200 dasm_put(Dst, 511, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1186 dasm_put(Dst, 604, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); 1201 dasm_put(Dst, 604, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
1187 dasm_put(Dst, 770, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1202#if LJ_HASFFI
1188 dasm_put(Dst, 894); 1203 dasm_put(Dst, 764);
1204#endif
1205 dasm_put(Dst, 773, 0);
1206#if LJ_HASFFI
1207#endif
1208 dasm_put(Dst, 782, Dt7(->pc), PC2PROTO(k));
1209#if LJ_HASFFI
1210 dasm_put(Dst, 796);
1211#endif
1212 dasm_put(Dst, 817, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1189 if (LJ_DUALNUM) { 1213 if (LJ_DUALNUM) {
1190 dasm_put(Dst, 908, LJ_TISNUM); 1214 dasm_put(Dst, 917, LJ_TISNUM);
1191 } else if (sse) { 1215 } else if (sse) {
1192 dasm_put(Dst, 918); 1216 dasm_put(Dst, 927);
1193 } else { 1217 } else {
1194 } 1218 }
1195 dasm_put(Dst, 931, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1219 dasm_put(Dst, 940, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1196 dasm_put(Dst, 1078, DISPATCH_GL(tmptv), LJ_TTAB); 1220 dasm_put(Dst, 1087, DISPATCH_GL(tmptv), LJ_TTAB);
1197 if (LJ_DUALNUM) { 1221 if (LJ_DUALNUM) {
1198 dasm_put(Dst, 908, LJ_TISNUM); 1222 dasm_put(Dst, 917, LJ_TISNUM);
1199 } else if (sse) { 1223 } else if (sse) {
1200 dasm_put(Dst, 918); 1224 dasm_put(Dst, 927);
1201 } else { 1225 } else {
1202 } 1226 }
1203 dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1227 dasm_put(Dst, 1110, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1204 dasm_put(Dst, 1274, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1228 dasm_put(Dst, 1283, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1205 dasm_put(Dst, 1374); 1229 dasm_put(Dst, 1383);
1206#if LJ_HASFFI 1230#if LJ_HASFFI
1207 dasm_put(Dst, 1394, Dt1(->base)); 1231 dasm_put(Dst, 1403, Dt1(->base));
1208#endif 1232#endif
1209 dasm_put(Dst, 1425); 1233 dasm_put(Dst, 1434);
1210#if LJ_DUALNUM 1234#if LJ_DUALNUM
1211 dasm_put(Dst, 1428); 1235 dasm_put(Dst, 1437);
1212#endif 1236#endif
1213 dasm_put(Dst, 1434); 1237 dasm_put(Dst, 1443);
1214#if LJ_DUALNUM 1238#if LJ_DUALNUM
1215 dasm_put(Dst, 902); 1239 dasm_put(Dst, 911);
1216#endif 1240#endif
1217 dasm_put(Dst, 1446); 1241 dasm_put(Dst, 1455);
1218#if LJ_DUALNUM 1242#if LJ_DUALNUM
1219 dasm_put(Dst, 1428); 1243 dasm_put(Dst, 1437);
1220#endif 1244#endif
1221 dasm_put(Dst, 1474, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); 1245 dasm_put(Dst, 1483, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
1222#ifdef LUAJIT_ENABLE_LUA52COMPAT 1246#ifdef LUAJIT_ENABLE_LUA52COMPAT
1223 dasm_put(Dst, 1580); 1247 dasm_put(Dst, 1589);
1224#else 1248#else
1225 dasm_put(Dst, 1599); 1249 dasm_put(Dst, 1608);
1226#endif 1250#endif
1227 dasm_put(Dst, 1604, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1251 dasm_put(Dst, 1613, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1228 dasm_put(Dst, 1790, 1+1, ~LJ_TNUMX); 1252 dasm_put(Dst, 1799, 1+1, ~LJ_TNUMX);
1229 if (cmov) { 1253 if (cmov) {
1230 dasm_put(Dst, 1859); 1254 dasm_put(Dst, 1868);
1231 } else { 1255 } else {
1232 dasm_put(Dst, 1863); 1256 dasm_put(Dst, 1872);
1233 } 1257 }
1234 dasm_put(Dst, 1872, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); 1258 dasm_put(Dst, 1881, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1235 dasm_put(Dst, 1951, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next)); 1259 dasm_put(Dst, 1960, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1236 dasm_put(Dst, 2008, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD); 1260 dasm_put(Dst, 2017, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
1237 dasm_put(Dst, 2074, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB); 1261 dasm_put(Dst, 2083, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
1238 dasm_put(Dst, 2144, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB); 1262 dasm_put(Dst, 2153, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
1239 dasm_put(Dst, 2233, 1+1, LJ_TISNUM); 1263 dasm_put(Dst, 2242, 1+1, LJ_TISNUM);
1240 if (LJ_DUALNUM) { 1264 if (LJ_DUALNUM) {
1241 dasm_put(Dst, 2247); 1265 dasm_put(Dst, 2256);
1242 } else { 1266 } else {
1243 dasm_put(Dst, 2264); 1267 dasm_put(Dst, 2273);
1244 } 1268 }
1245 if (sse) { 1269 if (sse) {
1246 dasm_put(Dst, 2269); 1270 dasm_put(Dst, 2278);
1247 } else { 1271 } else {
1248 dasm_put(Dst, 2279); 1272 dasm_put(Dst, 2288);
1249 } 1273 }
1250 dasm_put(Dst, 2286, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1274 dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1251 dasm_put(Dst, 2352, Dt1(->base)); 1275 dasm_put(Dst, 2361, Dt1(->base));
1252 if (LJ_DUALNUM) { 1276 if (LJ_DUALNUM) {
1253 dasm_put(Dst, 2376); 1277 dasm_put(Dst, 2385);
1254 } else { 1278 } else {
1255 dasm_put(Dst, 2381); 1279 dasm_put(Dst, 2390);
1256 } 1280 }
1257 dasm_put(Dst, 2386, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); 1281 dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1258 dasm_put(Dst, 2479, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1282 dasm_put(Dst, 2488, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1259#ifdef LUAJIT_ENABLE_LUA52COMPAT 1283#ifdef LUAJIT_ENABLE_LUA52COMPAT
1260 dasm_put(Dst, 2526, Dt6(->metatable)); 1284 dasm_put(Dst, 2535, Dt6(->metatable));
1261#endif 1285#endif
1262 dasm_put(Dst, 2535, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1286 dasm_put(Dst, 2544, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1263 if (LJ_DUALNUM) { 1287 if (LJ_DUALNUM) {
1264 dasm_put(Dst, 2521); 1288 dasm_put(Dst, 2530);
1265 } else { 1289 } else {
1266 dasm_put(Dst, 2264); 1290 dasm_put(Dst, 2273);
1267 } 1291 }
1268 dasm_put(Dst, 2590); 1292 dasm_put(Dst, 2599);
1269 if (LJ_DUALNUM) { 1293 if (LJ_DUALNUM) {
1270 dasm_put(Dst, 2595, LJ_TISNUM); 1294 dasm_put(Dst, 2604, LJ_TISNUM);
1271 } else if (sse) { 1295 } else if (sse) {
1272 dasm_put(Dst, 2611, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1296 dasm_put(Dst, 2620, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1273 } else { 1297 } else {
1274 } 1298 }
1275 dasm_put(Dst, 2644, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1299 dasm_put(Dst, 2653, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1276 dasm_put(Dst, 2506, 1+1, LJ_TTAB); 1300 dasm_put(Dst, 2515, 1+1, LJ_TTAB);
1277#ifdef LUAJIT_ENABLE_LUA52COMPAT 1301#ifdef LUAJIT_ENABLE_LUA52COMPAT
1278 dasm_put(Dst, 2526, Dt6(->metatable)); 1302 dasm_put(Dst, 2535, Dt6(->metatable));
1279#endif 1303#endif
1280 dasm_put(Dst, 2721, Dt8(->upvalue[0]), LJ_TFUNC); 1304 dasm_put(Dst, 2730, Dt8(->upvalue[0]), LJ_TFUNC);
1281 if (LJ_DUALNUM) { 1305 if (LJ_DUALNUM) {
1282 dasm_put(Dst, 2742, LJ_TISNUM); 1306 dasm_put(Dst, 2751, LJ_TISNUM);
1283 } else if (sse) { 1307 } else if (sse) {
1284 dasm_put(Dst, 2754); 1308 dasm_put(Dst, 2763);
1285 } else { 1309 } else {
1286 dasm_put(Dst, 2764); 1310 dasm_put(Dst, 2773);
1287 } 1311 }
1288 dasm_put(Dst, 2771, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1312 dasm_put(Dst, 2780, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1289 dasm_put(Dst, 2835, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1313 dasm_put(Dst, 2844, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1290 dasm_put(Dst, 2925, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1314 dasm_put(Dst, 2934, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1291 dasm_put(Dst, 3013, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1315 dasm_put(Dst, 3022, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1292 dasm_put(Dst, 3126, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1316 dasm_put(Dst, 3135, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1293 dasm_put(Dst, 3224, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1317 dasm_put(Dst, 3233, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1294 dasm_put(Dst, 3291, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1318 dasm_put(Dst, 3300, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1295 dasm_put(Dst, 3379, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1319 dasm_put(Dst, 3388, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1296 dasm_put(Dst, 3491, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1320 dasm_put(Dst, 3500, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1297 if (!LJ_DUALNUM) { 1321 if (!LJ_DUALNUM) {
1298 dasm_put(Dst, 3518); 1322 dasm_put(Dst, 3527);
1299 } 1323 }
1300 if (sse) { 1324 if (sse) {
1301 dasm_put(Dst, 3521); 1325 dasm_put(Dst, 3530);
1302 } 1326 }
1303 dasm_put(Dst, 3536, 1+1); 1327 dasm_put(Dst, 3545, 1+1);
1304 if (LJ_DUALNUM) { 1328 if (LJ_DUALNUM) {
1305 dasm_put(Dst, 3547, LJ_TISNUM, LJ_TISNUM); 1329 dasm_put(Dst, 3556, LJ_TISNUM, LJ_TISNUM);
1306 } else { 1330 } else {
1307 dasm_put(Dst, 3627, LJ_TISNUM); 1331 dasm_put(Dst, 3636, LJ_TISNUM);
1308 } 1332 }
1309 if (sse) { 1333 if (sse) {
1310 dasm_put(Dst, 3637, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1334 dasm_put(Dst, 3646, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1311 } else { 1335 } else {
1312 dasm_put(Dst, 3668); 1336 dasm_put(Dst, 3677);
1313 } 1337 }
1314 dasm_put(Dst, 3685, 1+1, FRAME_TYPE, LJ_TNIL); 1338 dasm_put(Dst, 3694, 1+1, FRAME_TYPE, LJ_TNIL);
1315 if (LJ_DUALNUM) { 1339 if (LJ_DUALNUM) {
1316 dasm_put(Dst, 3781, LJ_TISNUM); 1340 dasm_put(Dst, 3790, LJ_TISNUM);
1317 } else { 1341 } else {
1318 dasm_put(Dst, 3627, LJ_TISNUM); 1342 dasm_put(Dst, 3636, LJ_TISNUM);
1319 } 1343 }
1320 if (sse) { 1344 if (sse) {
1321 dasm_put(Dst, 3803);
1322 if (LJ_DUALNUM) {
1323 dasm_put(Dst, 3812); 1345 dasm_put(Dst, 3812);
1346 if (LJ_DUALNUM) {
1347 dasm_put(Dst, 3821);
1324 } 1348 }
1325 dasm_put(Dst, 2274); 1349 dasm_put(Dst, 2283);
1326 } else { 1350 } else {
1327 dasm_put(Dst, 3846); 1351 dasm_put(Dst, 3855);
1328 if (LJ_DUALNUM) { 1352 if (LJ_DUALNUM) {
1329 } else { 1353 } else {
1330 dasm_put(Dst, 2281); 1354 dasm_put(Dst, 2290);
1331 } 1355 }
1332 } 1356 }
1333 dasm_put(Dst, 3852); 1357 dasm_put(Dst, 3861);
1334 if (LJ_DUALNUM) { 1358 if (LJ_DUALNUM) {
1335 dasm_put(Dst, 3781, LJ_TISNUM); 1359 dasm_put(Dst, 3790, LJ_TISNUM);
1336 } else { 1360 } else {
1337 dasm_put(Dst, 3627, LJ_TISNUM); 1361 dasm_put(Dst, 3636, LJ_TISNUM);
1338 } 1362 }
1339 if (sse) { 1363 if (sse) {
1340 dasm_put(Dst, 3855); 1364 dasm_put(Dst, 3864);
1341 if (LJ_DUALNUM) { 1365 if (LJ_DUALNUM) {
1342 dasm_put(Dst, 3812); 1366 dasm_put(Dst, 3821);
1343 } 1367 }
1344 dasm_put(Dst, 2274); 1368 dasm_put(Dst, 2283);
1345 } else { 1369 } else {
1346 dasm_put(Dst, 3864); 1370 dasm_put(Dst, 3873);
1347 if (LJ_DUALNUM) { 1371 if (LJ_DUALNUM) {
1348 } else { 1372 } else {
1349 dasm_put(Dst, 2281); 1373 dasm_put(Dst, 2290);
1350 } 1374 }
1351 } 1375 }
1352 if (sse) { 1376 if (sse) {
1353 dasm_put(Dst, 3870, 1+1, LJ_TISNUM); 1377 dasm_put(Dst, 3879, 1+1, LJ_TISNUM);
1354 } else { 1378 } else {
1355 dasm_put(Dst, 3899, 1+1, LJ_TISNUM); 1379 dasm_put(Dst, 3908, 1+1, LJ_TISNUM);
1356 } 1380 }
1357 dasm_put(Dst, 3928, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1381 dasm_put(Dst, 3937, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1358 dasm_put(Dst, 3997, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1382 dasm_put(Dst, 4006, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1359 dasm_put(Dst, 4054, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1383 dasm_put(Dst, 4063, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1360 dasm_put(Dst, 4117, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1384 dasm_put(Dst, 4126, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1361 dasm_put(Dst, 4207); 1385 dasm_put(Dst, 4216);
1362 if (sse) { 1386 if (sse) {
1363 dasm_put(Dst, 4219, 1+1, LJ_TISNUM); 1387 dasm_put(Dst, 4228, 1+1, LJ_TISNUM);
1364 } else { 1388 } else {
1365 } 1389 }
1366 dasm_put(Dst, 4244); 1390 dasm_put(Dst, 4253);
1367 if (sse) { 1391 if (sse) {
1368 dasm_put(Dst, 4258, 1+1, LJ_TISNUM); 1392 dasm_put(Dst, 4267, 1+1, LJ_TISNUM);
1369 } else { 1393 } else {
1370 } 1394 }
1371 dasm_put(Dst, 4283); 1395 dasm_put(Dst, 4292);
1372 if (sse) { 1396 if (sse) {
1373 dasm_put(Dst, 4297, 1+1, LJ_TISNUM); 1397 dasm_put(Dst, 4306, 1+1, LJ_TISNUM);
1374 } else { 1398 } else {
1375 } 1399 }
1376 dasm_put(Dst, 4322); 1400 dasm_put(Dst, 4331);
1377 if (sse) { 1401 if (sse) {
1378 dasm_put(Dst, 4338, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1402 dasm_put(Dst, 4347, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1379 } else { 1403 } else {
1380 dasm_put(Dst, 4377, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1404 dasm_put(Dst, 4386, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1381 } 1405 }
1382 dasm_put(Dst, 4410, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1406 dasm_put(Dst, 4419, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1383 dasm_put(Dst, 4475, 1+1, LJ_TISNUM); 1407 dasm_put(Dst, 4484, 1+1, LJ_TISNUM);
1384 if (sse) { 1408 if (sse) {
1385 dasm_put(Dst, 4574); 1409 dasm_put(Dst, 4583);
1386 } else { 1410 } else {
1387 dasm_put(Dst, 4580); 1411 dasm_put(Dst, 4589);
1388 } 1412 }
1389 dasm_put(Dst, 4589); 1413 dasm_put(Dst, 4598);
1390 if (sse) { 1414 if (sse) {
1391 dasm_put(Dst, 4614); 1415 dasm_put(Dst, 4623);
1392 } else { 1416 } else {
1393 dasm_put(Dst, 4620); 1417 dasm_put(Dst, 4629);
1394 } 1418 }
1395 dasm_put(Dst, 4623, 1+2); 1419 dasm_put(Dst, 4632, 1+2);
1396 if (sse) { 1420 if (sse) {
1397 dasm_put(Dst, 4632); 1421 dasm_put(Dst, 4641);
1398 } else { 1422 } else {
1399 dasm_put(Dst, 4640); 1423 dasm_put(Dst, 4649);
1400 } 1424 }
1401 dasm_put(Dst, 4648); 1425 dasm_put(Dst, 4657);
1402 if (sse) { 1426 if (sse) {
1403 dasm_put(Dst, 4651, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1427 dasm_put(Dst, 4660, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1404 } else { 1428 } else {
1405 dasm_put(Dst, 4678); 1429 dasm_put(Dst, 4687);
1406 } 1430 }
1407 dasm_put(Dst, 4697); 1431 dasm_put(Dst, 4706);
1408 if (sse) { 1432 if (sse) {
1409 dasm_put(Dst, 4713, 1+1, LJ_TISNUM); 1433 dasm_put(Dst, 4722, 1+1, LJ_TISNUM);
1410 } else { 1434 } else {
1411 dasm_put(Dst, 4738, 1+1, LJ_TISNUM); 1435 dasm_put(Dst, 4747, 1+1, LJ_TISNUM);
1412 } 1436 }
1413 dasm_put(Dst, 4760); 1437 dasm_put(Dst, 4769);
1414 if (sse) { 1438 if (sse) {
1415 dasm_put(Dst, 4782); 1439 dasm_put(Dst, 4791);
1416 } else { 1440 } else {
1417 dasm_put(Dst, 4808); 1441 dasm_put(Dst, 4817);
1418 } 1442 }
1419 dasm_put(Dst, 4825, 1+2); 1443 dasm_put(Dst, 4834, 1+2);
1420 if (sse) { 1444 if (sse) {
1421 dasm_put(Dst, 4865); 1445 dasm_put(Dst, 4874);
1422 } else { 1446 } else {
1423 dasm_put(Dst, 4873); 1447 dasm_put(Dst, 4882);
1424 } 1448 }
1425 dasm_put(Dst, 4883, 2+1, LJ_TISNUM, LJ_TISNUM); 1449 dasm_put(Dst, 4892, 2+1, LJ_TISNUM, LJ_TISNUM);
1426 if (sse) { 1450 if (sse) {
1427 dasm_put(Dst, 4935, 2+1, LJ_TISNUM, LJ_TISNUM); 1451 dasm_put(Dst, 4944, 2+1, LJ_TISNUM, LJ_TISNUM);
1428 } else { 1452 } else {
1429 dasm_put(Dst, 4982, 2+1, LJ_TISNUM, LJ_TISNUM); 1453 dasm_put(Dst, 4991, 2+1, LJ_TISNUM, LJ_TISNUM);
1430 } 1454 }
1431 dasm_put(Dst, 5023, LJ_TISNUM); 1455 dasm_put(Dst, 5032, LJ_TISNUM);
1432 if (LJ_DUALNUM) { 1456 if (LJ_DUALNUM) {
1433 dasm_put(Dst, 5036, LJ_TISNUM); 1457 dasm_put(Dst, 5045, LJ_TISNUM);
1434 if (sse) { 1458 if (sse) {
1435 dasm_put(Dst, 4574); 1459 dasm_put(Dst, 4583);
1436 } else { 1460 } else {
1437 } 1461 }
1438 dasm_put(Dst, 5086); 1462 dasm_put(Dst, 5095);
1439 } else { 1463 } else {
1440 dasm_put(Dst, 2264); 1464 dasm_put(Dst, 2273);
1441 } 1465 }
1442 if (sse) { 1466 if (sse) {
1443 dasm_put(Dst, 5097, LJ_TISNUM); 1467 dasm_put(Dst, 5106, LJ_TISNUM);
1444 if (LJ_DUALNUM) { 1468 if (LJ_DUALNUM) {
1445 dasm_put(Dst, 5118); 1469 dasm_put(Dst, 5127);
1446 } else { 1470 } else {
1447 dasm_put(Dst, 2264); 1471 dasm_put(Dst, 2273);
1448 } 1472 }
1449 dasm_put(Dst, 5139); 1473 dasm_put(Dst, 5148);
1450 } else { 1474 } else {
1451 } 1475 }
1452 dasm_put(Dst, 5164, LJ_TISNUM); 1476 dasm_put(Dst, 5173, LJ_TISNUM);
1453 if (LJ_DUALNUM) { 1477 if (LJ_DUALNUM) {
1454 dasm_put(Dst, 5177, LJ_TISNUM); 1478 dasm_put(Dst, 5186, LJ_TISNUM);
1455 if (sse) { 1479 if (sse) {
1456 dasm_put(Dst, 4574); 1480 dasm_put(Dst, 4583);
1457 } else { 1481 } else {
1458 } 1482 }
1459 dasm_put(Dst, 5086); 1483 dasm_put(Dst, 5095);
1460 } else { 1484 } else {
1461 dasm_put(Dst, 2264); 1485 dasm_put(Dst, 2273);
1462 } 1486 }
1463 if (sse) { 1487 if (sse) {
1464 dasm_put(Dst, 5097, LJ_TISNUM); 1488 dasm_put(Dst, 5106, LJ_TISNUM);
1465 if (LJ_DUALNUM) { 1489 if (LJ_DUALNUM) {
1466 dasm_put(Dst, 5118); 1490 dasm_put(Dst, 5127);
1467 } else { 1491 } else {
1468 dasm_put(Dst, 2264); 1492 dasm_put(Dst, 2273);
1469 } 1493 }
1470 dasm_put(Dst, 5227); 1494 dasm_put(Dst, 5236);
1471 } else { 1495 } else {
1472 } 1496 }
1473 if (!sse) { 1497 if (!sse) {
1474 dasm_put(Dst, 5252); 1498 dasm_put(Dst, 5261);
1475 } 1499 }
1476 dasm_put(Dst, 5261, 1+1, LJ_TSTR); 1500 dasm_put(Dst, 5270, 1+1, LJ_TSTR);
1477 if (LJ_DUALNUM) { 1501 if (LJ_DUALNUM) {
1478 dasm_put(Dst, 5283, Dt5(->len)); 1502 dasm_put(Dst, 5292, Dt5(->len));
1479 } else if (sse) { 1503 } else if (sse) {
1480 dasm_put(Dst, 5291, Dt5(->len)); 1504 dasm_put(Dst, 5300, Dt5(->len));
1481 } else { 1505 } else {
1482 dasm_put(Dst, 5302, Dt5(->len)); 1506 dasm_put(Dst, 5311, Dt5(->len));
1483 } 1507 }
1484 dasm_put(Dst, 5310, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1508 dasm_put(Dst, 5319, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1485 if (LJ_DUALNUM) { 1509 if (LJ_DUALNUM) {
1486 dasm_put(Dst, 5286); 1510 dasm_put(Dst, 5295);
1487 } else if (sse) { 1511 } else if (sse) {
1488 dasm_put(Dst, 5348); 1512 dasm_put(Dst, 5357);
1489 } else { 1513 } else {
1490 dasm_put(Dst, 5358); 1514 dasm_put(Dst, 5367);
1491 } 1515 }
1492 dasm_put(Dst, 5371, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1516 dasm_put(Dst, 5380, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1493 if (LJ_DUALNUM) { 1517 if (LJ_DUALNUM) {
1494 dasm_put(Dst, 5402); 1518 dasm_put(Dst, 5411);
1495 } else if (sse) { 1519 } else if (sse) {
1496 dasm_put(Dst, 5425); 1520 dasm_put(Dst, 5434);
1497 } else { 1521 } else {
1498 dasm_put(Dst, 5451); 1522 dasm_put(Dst, 5460);
1499 } 1523 }
1500 dasm_put(Dst, 5475, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1524 dasm_put(Dst, 5484, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1501 if (LJ_DUALNUM) { 1525 if (LJ_DUALNUM) {
1502 dasm_put(Dst, 5583); 1526 dasm_put(Dst, 5592);
1503 } else if (sse) { 1527 } else if (sse) {
1504 dasm_put(Dst, 5595); 1528 dasm_put(Dst, 5604);
1505 } else { 1529 } else {
1506 dasm_put(Dst, 5610); 1530 dasm_put(Dst, 5619);
1507 } 1531 }
1508 dasm_put(Dst, 5622, LJ_TSTR, LJ_TISNUM); 1532 dasm_put(Dst, 5631, LJ_TSTR, LJ_TISNUM);
1509 if (LJ_DUALNUM) { 1533 if (LJ_DUALNUM) {
1510 dasm_put(Dst, 2521); 1534 dasm_put(Dst, 2530);
1511 } else { 1535 } else {
1512 dasm_put(Dst, 2264); 1536 dasm_put(Dst, 2273);
1513 } 1537 }
1514 dasm_put(Dst, 5639, Dt5(->len)); 1538 dasm_put(Dst, 5648, Dt5(->len));
1515 if (LJ_DUALNUM) { 1539 if (LJ_DUALNUM) {
1516 dasm_put(Dst, 5649); 1540 dasm_put(Dst, 5658);
1517 } else if (sse) { 1541 } else if (sse) {
1518 dasm_put(Dst, 5653); 1542 dasm_put(Dst, 5662);
1519 } else { 1543 } else {
1520 } 1544 }
1521 dasm_put(Dst, 5660, sizeof(GCstr)-1); 1545 dasm_put(Dst, 5669, sizeof(GCstr)-1);
1522 dasm_put(Dst, 5735, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1546 dasm_put(Dst, 5744, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1523 dasm_put(Dst, 5794, LJ_TSTR, LJ_TISNUM); 1547 dasm_put(Dst, 5803, LJ_TSTR, LJ_TISNUM);
1524 if (LJ_DUALNUM) { 1548 if (LJ_DUALNUM) {
1525 dasm_put(Dst, 5811); 1549 dasm_put(Dst, 5820);
1526 } else if (sse) { 1550 } else if (sse) {
1527 dasm_put(Dst, 5819); 1551 dasm_put(Dst, 5828);
1528 } else { 1552 } else {
1529 dasm_put(Dst, 5830); 1553 dasm_put(Dst, 5839);
1530 } 1554 }
1531 dasm_put(Dst, 5846, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1555 dasm_put(Dst, 5855, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1532 dasm_put(Dst, 5911, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1556 dasm_put(Dst, 5920, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1533 dasm_put(Dst, 5974, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1557 dasm_put(Dst, 5983, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1534 dasm_put(Dst, 6045, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1558 dasm_put(Dst, 6054, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1535 dasm_put(Dst, 6130, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1559 dasm_put(Dst, 6139, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1536 dasm_put(Dst, 6200, 1+1, LJ_TTAB); 1560 dasm_put(Dst, 6209, 1+1, LJ_TTAB);
1537 if (LJ_DUALNUM) { 1561 if (LJ_DUALNUM) {
1538 dasm_put(Dst, 6268); 1562 dasm_put(Dst, 6277);
1539 } else if (sse) { 1563 } else if (sse) {
1540 dasm_put(Dst, 6275); 1564 dasm_put(Dst, 6284);
1541 } else { 1565 } else {
1542 } 1566 }
1543 dasm_put(Dst, 6285, 1+1, LJ_TISNUM); 1567 dasm_put(Dst, 6294, 1+1, LJ_TISNUM);
1544 if (LJ_DUALNUM) { 1568 if (LJ_DUALNUM) {
1545 dasm_put(Dst, 6301); 1569 dasm_put(Dst, 6310);
1546 } else { 1570 } else {
1547 dasm_put(Dst, 2264); 1571 dasm_put(Dst, 2273);
1548 } 1572 }
1549 if (sse) { 1573 if (sse) {
1550 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1574 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1551 } else { 1575 } else {
1552 } 1576 }
1553 dasm_put(Dst, 106); 1577 dasm_put(Dst, 106);
1554 if (LJ_DUALNUM || sse) { 1578 if (LJ_DUALNUM || sse) {
1555 if (!sse) { 1579 if (!sse) {
1556 } 1580 }
1557 dasm_put(Dst, 6342); 1581 dasm_put(Dst, 6351);
1558 } else { 1582 } else {
1559 } 1583 }
1560 dasm_put(Dst, 6347, 1+1); 1584 dasm_put(Dst, 6356, 1+1);
1561 if (sse) { 1585 if (sse) {
1562 dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1586 dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1563 } else { 1587 } else {
1564 dasm_put(Dst, 6368); 1588 dasm_put(Dst, 6377);
1565 } 1589 }
1566 dasm_put(Dst, 2241, LJ_TISNUM); 1590 dasm_put(Dst, 2250, LJ_TISNUM);
1567 if (LJ_DUALNUM) { 1591 if (LJ_DUALNUM) {
1568 dasm_put(Dst, 6377); 1592 dasm_put(Dst, 6386);
1569 } else { 1593 } else {
1570 dasm_put(Dst, 2264); 1594 dasm_put(Dst, 2273);
1571 } 1595 }
1572 if (sse) { 1596 if (sse) {
1573 dasm_put(Dst, 6394); 1597 dasm_put(Dst, 6403);
1574 } else { 1598 } else {
1575 } 1599 }
1576 dasm_put(Dst, 6409, LJ_TISNUM); 1600 dasm_put(Dst, 6418, LJ_TISNUM);
1577 if (LJ_DUALNUM) { 1601 if (LJ_DUALNUM) {
1578 dasm_put(Dst, 6434); 1602 dasm_put(Dst, 6443);
1579 } else { 1603 } else {
1580 dasm_put(Dst, 6454); 1604 dasm_put(Dst, 6463);
1581 } 1605 }
1582 if (sse) { 1606 if (sse) {
1583 dasm_put(Dst, 6459); 1607 dasm_put(Dst, 6468);
1584 } else { 1608 } else {
1585 } 1609 }
1586 dasm_put(Dst, 6476, 1+1); 1610 dasm_put(Dst, 6485, 1+1);
1587 if (sse) { 1611 if (sse) {
1588 dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1612 dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1589 } else { 1613 } else {
1590 dasm_put(Dst, 6368); 1614 dasm_put(Dst, 6377);
1591 } 1615 }
1592 dasm_put(Dst, 2241, LJ_TISNUM); 1616 dasm_put(Dst, 2250, LJ_TISNUM);
1593 if (LJ_DUALNUM) { 1617 if (LJ_DUALNUM) {
1594 dasm_put(Dst, 6377); 1618 dasm_put(Dst, 6386);
1595 } else { 1619 } else {
1596 dasm_put(Dst, 2264); 1620 dasm_put(Dst, 2273);
1597 } 1621 }
1598 if (sse) { 1622 if (sse) {
1599 dasm_put(Dst, 6394); 1623 dasm_put(Dst, 6403);
1600 } else { 1624 } else {
1601 } 1625 }
1602 dasm_put(Dst, 6409, LJ_TISNUM); 1626 dasm_put(Dst, 6418, LJ_TISNUM);
1603 if (LJ_DUALNUM) { 1627 if (LJ_DUALNUM) {
1604 dasm_put(Dst, 6494); 1628 dasm_put(Dst, 6503);
1605 } else { 1629 } else {
1606 dasm_put(Dst, 6454); 1630 dasm_put(Dst, 6463);
1607 } 1631 }
1608 if (sse) { 1632 if (sse) {
1609 dasm_put(Dst, 6514); 1633 dasm_put(Dst, 6523);
1610 } else { 1634 } else {
1611 } 1635 }
1612 dasm_put(Dst, 6531, 1+1); 1636 dasm_put(Dst, 6540, 1+1);
1613 if (sse) { 1637 if (sse) {
1614 dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1638 dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1615 } else { 1639 } else {
1616 dasm_put(Dst, 6368); 1640 dasm_put(Dst, 6377);
1617 } 1641 }
1618 dasm_put(Dst, 2241, LJ_TISNUM); 1642 dasm_put(Dst, 2250, LJ_TISNUM);
1619 if (LJ_DUALNUM) { 1643 if (LJ_DUALNUM) {
1620 dasm_put(Dst, 6377); 1644 dasm_put(Dst, 6386);
1621 } else { 1645 } else {
1622 dasm_put(Dst, 2264); 1646 dasm_put(Dst, 2273);
1623 } 1647 }
1624 if (sse) { 1648 if (sse) {
1625 dasm_put(Dst, 6394); 1649 dasm_put(Dst, 6403);
1626 } else { 1650 } else {
1627 } 1651 }
1628 dasm_put(Dst, 6409, LJ_TISNUM); 1652 dasm_put(Dst, 6418, LJ_TISNUM);
1629 if (LJ_DUALNUM) { 1653 if (LJ_DUALNUM) {
1630 dasm_put(Dst, 6549); 1654 dasm_put(Dst, 6558);
1631 } else { 1655 } else {
1632 dasm_put(Dst, 6454); 1656 dasm_put(Dst, 6463);
1633 } 1657 }
1634 if (sse) { 1658 if (sse) {
1635 dasm_put(Dst, 6569); 1659 dasm_put(Dst, 6578);
1636 } else { 1660 } else {
1637 } 1661 }
1638 dasm_put(Dst, 6586, 1+1, LJ_TISNUM); 1662 dasm_put(Dst, 6595, 1+1, LJ_TISNUM);
1639 if (LJ_DUALNUM) { 1663 if (LJ_DUALNUM) {
1640 dasm_put(Dst, 6377); 1664 dasm_put(Dst, 6386);
1641 } else { 1665 } else {
1642 dasm_put(Dst, 2264); 1666 dasm_put(Dst, 2273);
1643 } 1667 }
1644 if (sse) { 1668 if (sse) {
1645 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1669 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1646 } else { 1670 } else {
1647 } 1671 }
1648 dasm_put(Dst, 6609, 1+1, LJ_TISNUM); 1672 dasm_put(Dst, 6618, 1+1, LJ_TISNUM);
1649 if (LJ_DUALNUM) { 1673 if (LJ_DUALNUM) {
1650 dasm_put(Dst, 6377); 1674 dasm_put(Dst, 6386);
1651 } else { 1675 } else {
1652 dasm_put(Dst, 2264); 1676 dasm_put(Dst, 2273);
1653 } 1677 }
1654 if (sse) { 1678 if (sse) {
1655 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1679 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1656 } else { 1680 } else {
1657 } 1681 }
1658 dasm_put(Dst, 6633); 1682 dasm_put(Dst, 6642);
1659 if (LJ_DUALNUM) { 1683 if (LJ_DUALNUM) {
1660 dasm_put(Dst, 6342); 1684 dasm_put(Dst, 6351);
1661 } else if (sse) { 1685 } else if (sse) {
1662 dasm_put(Dst, 6639); 1686 dasm_put(Dst, 6648);
1663 } else { 1687 } else {
1664 } 1688 }
1665 dasm_put(Dst, 6651); 1689 dasm_put(Dst, 6660);
1666 if (LJ_DUALNUM) { 1690 if (LJ_DUALNUM) {
1667 dasm_put(Dst, 6662, 1+1, LJ_TISNUM); 1691 dasm_put(Dst, 6671, 1+1, LJ_TISNUM);
1668 if (LJ_DUALNUM) { 1692 if (LJ_DUALNUM) {
1669 dasm_put(Dst, 6377); 1693 dasm_put(Dst, 6386);
1670 } else { 1694 } else {
1671 dasm_put(Dst, 2264); 1695 dasm_put(Dst, 2273);
1672 } 1696 }
1673 if (sse) { 1697 if (sse) {
1674 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1698 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1675 } else { 1699 } else {
1676 } 1700 }
1677 dasm_put(Dst, 6678, LJ_TISNUM); 1701 dasm_put(Dst, 6687, LJ_TISNUM);
1678 } else if (sse) { 1702 } else if (sse) {
1679 dasm_put(Dst, 6693, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1703 dasm_put(Dst, 6702, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1680 } else { 1704 } else {
1681 } 1705 }
1682 dasm_put(Dst, 6760); 1706 dasm_put(Dst, 6769);
1683 if (LJ_DUALNUM) { 1707 if (LJ_DUALNUM) {
1684 dasm_put(Dst, 6767, 1+1, LJ_TISNUM); 1708 dasm_put(Dst, 6776, 1+1, LJ_TISNUM);
1685 if (LJ_DUALNUM) { 1709 if (LJ_DUALNUM) {
1686 dasm_put(Dst, 6377); 1710 dasm_put(Dst, 6386);
1687 } else { 1711 } else {
1688 dasm_put(Dst, 2264); 1712 dasm_put(Dst, 2273);
1689 } 1713 }
1690 if (sse) { 1714 if (sse) {
1691 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1715 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1692 } else { 1716 } else {
1693 } 1717 }
1694 dasm_put(Dst, 6678, LJ_TISNUM); 1718 dasm_put(Dst, 6687, LJ_TISNUM);
1695 } else if (sse) { 1719 } else if (sse) {
1696 dasm_put(Dst, 6783, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1720 dasm_put(Dst, 6792, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1697 } else { 1721 } else {
1698 } 1722 }
1699 dasm_put(Dst, 6850); 1723 dasm_put(Dst, 6859);
1700 if (LJ_DUALNUM) { 1724 if (LJ_DUALNUM) {
1701 dasm_put(Dst, 6858, 1+1, LJ_TISNUM); 1725 dasm_put(Dst, 6867, 1+1, LJ_TISNUM);
1702 if (LJ_DUALNUM) { 1726 if (LJ_DUALNUM) {
1703 dasm_put(Dst, 6377); 1727 dasm_put(Dst, 6386);
1704 } else { 1728 } else {
1705 dasm_put(Dst, 2264); 1729 dasm_put(Dst, 2273);
1706 } 1730 }
1707 if (sse) { 1731 if (sse) {
1708 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1732 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1709 } else { 1733 } else {
1710 } 1734 }
1711 dasm_put(Dst, 6678, LJ_TISNUM); 1735 dasm_put(Dst, 6687, LJ_TISNUM);
1712 } else if (sse) { 1736 } else if (sse) {
1713 dasm_put(Dst, 6874, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1737 dasm_put(Dst, 6883, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1714 } else { 1738 } else {
1715 } 1739 }
1716 dasm_put(Dst, 6941); 1740 dasm_put(Dst, 6950);
1717 if (LJ_DUALNUM) { 1741 if (LJ_DUALNUM) {
1718 dasm_put(Dst, 6949, 1+1, LJ_TISNUM); 1742 dasm_put(Dst, 6958, 1+1, LJ_TISNUM);
1719 if (LJ_DUALNUM) { 1743 if (LJ_DUALNUM) {
1720 dasm_put(Dst, 6377); 1744 dasm_put(Dst, 6386);
1721 } else { 1745 } else {
1722 dasm_put(Dst, 2264); 1746 dasm_put(Dst, 2273);
1723 } 1747 }
1724 if (sse) { 1748 if (sse) {
1725 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1749 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1726 } else { 1750 } else {
1727 } 1751 }
1728 dasm_put(Dst, 6678, LJ_TISNUM); 1752 dasm_put(Dst, 6687, LJ_TISNUM);
1729 } else if (sse) { 1753 } else if (sse) {
1730 dasm_put(Dst, 6965, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1754 dasm_put(Dst, 6974, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1731 } else { 1755 } else {
1732 } 1756 }
1733 dasm_put(Dst, 7032); 1757 dasm_put(Dst, 7041);
1734 if (LJ_DUALNUM) { 1758 if (LJ_DUALNUM) {
1735 dasm_put(Dst, 7039, 1+1, LJ_TISNUM); 1759 dasm_put(Dst, 7048, 1+1, LJ_TISNUM);
1736 if (LJ_DUALNUM) { 1760 if (LJ_DUALNUM) {
1737 dasm_put(Dst, 6377); 1761 dasm_put(Dst, 6386);
1738 } else { 1762 } else {
1739 dasm_put(Dst, 2264); 1763 dasm_put(Dst, 2273);
1740 } 1764 }
1741 if (sse) { 1765 if (sse) {
1742 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1766 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1743 } else { 1767 } else {
1744 } 1768 }
1745 dasm_put(Dst, 6678, LJ_TISNUM); 1769 dasm_put(Dst, 6687, LJ_TISNUM);
1746 } else if (sse) { 1770 } else if (sse) {
1747 dasm_put(Dst, 7055, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1771 dasm_put(Dst, 7064, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1748 } else { 1772 } else {
1749 } 1773 }
1750 dasm_put(Dst, 7122, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1774 dasm_put(Dst, 7131, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1751 dasm_put(Dst, 7198, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1775 dasm_put(Dst, 7207, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1752 dasm_put(Dst, 7325, Dt1(->top), Dt1(->base), Dt1(->top)); 1776 dasm_put(Dst, 7334, Dt1(->top), Dt1(->base), Dt1(->top));
1753#if LJ_HASJIT 1777#if LJ_HASJIT
1754 dasm_put(Dst, 7364, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1778 dasm_put(Dst, 7373, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1755#endif 1779#endif
1756 dasm_put(Dst, 7395, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1780 dasm_put(Dst, 7404, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1757 dasm_put(Dst, 7446, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1781 dasm_put(Dst, 7455, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1758#if LJ_HASJIT 1782#if LJ_HASJIT
1759 dasm_put(Dst, 7513, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1783 dasm_put(Dst, 7522, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1760#endif 1784#endif
1761 dasm_put(Dst, 7560); 1785 dasm_put(Dst, 7569);
1762#if LJ_HASJIT 1786#if LJ_HASJIT
1763 dasm_put(Dst, 7390); 1787 dasm_put(Dst, 7399);
1764#endif 1788#endif
1765 dasm_put(Dst, 7567); 1789 dasm_put(Dst, 7576);
1766#if LJ_HASJIT 1790#if LJ_HASJIT
1767 dasm_put(Dst, 7570); 1791 dasm_put(Dst, 7579);
1768#endif 1792#endif
1769 dasm_put(Dst, 7580, Dt1(->base), Dt1(->top)); 1793 dasm_put(Dst, 7589, Dt1(->base), Dt1(->top));
1770#if LJ_HASJIT 1794#if LJ_HASJIT
1771 dasm_put(Dst, 7614); 1795 dasm_put(Dst, 7623);
1772#endif 1796#endif
1773 dasm_put(Dst, 7619, Dt1(->base), Dt1(->top)); 1797 dasm_put(Dst, 7628, Dt1(->base), Dt1(->top));
1774#if LJ_HASJIT 1798#if LJ_HASJIT
1775 dasm_put(Dst, 7650, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); 1799 dasm_put(Dst, 7659, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
1776#endif 1800#endif
1777 dasm_put(Dst, 7880); 1801 dasm_put(Dst, 7889);
1778#if LJ_HASJIT 1802#if LJ_HASJIT
1779 dasm_put(Dst, 7883, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1803 dasm_put(Dst, 7892, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1780 dasm_put(Dst, 8025); 1804 dasm_put(Dst, 8034);
1781#endif 1805#endif
1782 dasm_put(Dst, 8051); 1806 dasm_put(Dst, 8060);
1783 if (!sse) { 1807 if (!sse) {
1784 dasm_put(Dst, 8054); 1808 dasm_put(Dst, 8063);
1785 } 1809 }
1786 dasm_put(Dst, 8099, (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)); 1810 dasm_put(Dst, 8108, (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));
1787 if (!sse) { 1811 if (!sse) {
1788 dasm_put(Dst, 8185); 1812 dasm_put(Dst, 8194);
1789 } 1813 }
1790 dasm_put(Dst, 8230, (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)); 1814 dasm_put(Dst, 8239, (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));
1791 if (!sse) { 1815 if (!sse) {
1792 dasm_put(Dst, 8316); 1816 dasm_put(Dst, 8325);
1793 } 1817 }
1794 dasm_put(Dst, 8355, (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)); 1818 dasm_put(Dst, 8364, (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));
1795 if (sse) { 1819 if (sse) {
1796 dasm_put(Dst, 8444, (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)); 1820 dasm_put(Dst, 8453, (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));
1797 } else { 1821 } else {
1798 dasm_put(Dst, 8558); 1822 dasm_put(Dst, 8567);
1799 } 1823 }
1800 dasm_put(Dst, 8605); 1824 dasm_put(Dst, 8614);
1801 if (!sse) { 1825 if (!sse) {
1802 } else { 1826 } else {
1803 dasm_put(Dst, 8679); 1827 dasm_put(Dst, 8688);
1804 } 1828 }
1805 dasm_put(Dst, 8682); 1829 dasm_put(Dst, 8691);
1806 dasm_put(Dst, 8767, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1830 dasm_put(Dst, 8776, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1807 dasm_put(Dst, 8870, (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)); 1831 dasm_put(Dst, 8879, (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));
1808 dasm_put(Dst, 9026); 1832 dasm_put(Dst, 9035);
1809#if LJ_HASJIT 1833#if LJ_HASJIT
1810 if (sse) { 1834 if (sse) {
1811 dasm_put(Dst, 9067); 1835 dasm_put(Dst, 9076);
1812 dasm_put(Dst, 9137); 1836 dasm_put(Dst, 9146);
1813 dasm_put(Dst, 9210); 1837 dasm_put(Dst, 9219);
1814 } else { 1838 } else {
1815 dasm_put(Dst, 9260); 1839 dasm_put(Dst, 9269);
1816 dasm_put(Dst, 9352); 1840 dasm_put(Dst, 9361);
1817 } 1841 }
1818 dasm_put(Dst, 9398); 1842 dasm_put(Dst, 9407);
1819#endif 1843#endif
1820 dasm_put(Dst, 9402); 1844 dasm_put(Dst, 9411);
1821 if (sse) { 1845 if (sse) {
1822 dasm_put(Dst, 9405, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1846 dasm_put(Dst, 9414, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1823 dasm_put(Dst, 9494, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1847 dasm_put(Dst, 9503, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1824 } else { 1848 } else {
1825 dasm_put(Dst, 9618); 1849 dasm_put(Dst, 9627);
1826 dasm_put(Dst, 9701); 1850 dasm_put(Dst, 9710);
1827 if (cmov) { 1851 if (cmov) {
1828 dasm_put(Dst, 9756); 1852 dasm_put(Dst, 9765);
1829 } else { 1853 } else {
1830 dasm_put(Dst, 9775); 1854 dasm_put(Dst, 9784);
1831 } 1855 }
1832 dasm_put(Dst, 9398); 1856 dasm_put(Dst, 9407);
1833 } 1857 }
1834 dasm_put(Dst, 9816); 1858 dasm_put(Dst, 9825);
1835#ifdef LUA_USE_ASSERT 1859#ifdef LUA_USE_ASSERT
1836 dasm_put(Dst, 9400); 1860 dasm_put(Dst, 9409);
1861#endif
1862 dasm_put(Dst, 9853);
1863#if LJ_HASFFI
1864#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
1865 dasm_put(Dst, 9857, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE+4*8, DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc));
1837#endif 1866#endif
1838 dasm_put(Dst, 9844); 1867 dasm_put(Dst, 9984);
1839#if LJ_HASFFI 1868#if LJ_HASFFI
1840#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1869 dasm_put(Dst, 9987, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]));
1841 dasm_put(Dst, 9848, DtE(->spadj)); 1870#endif
1871 dasm_put(Dst, 10028);
1872#if LJ_HASFFI
1873#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1874 dasm_put(Dst, 10031, DtF(->spadj));
1842#if LJ_TARGET_WINDOWS 1875#if LJ_TARGET_WINDOWS
1843#endif 1876#endif
1844 dasm_put(Dst, 9863, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3])); 1877 dasm_put(Dst, 10046, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]));
1845 dasm_put(Dst, 9944, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0])); 1878 dasm_put(Dst, 10127, DtF(->func), DtF(->gpr[0]), DtF(->fpr[0]));
1846#if LJ_TARGET_WINDOWS 1879#if LJ_TARGET_WINDOWS
1847#endif 1880#endif
1848 dasm_put(Dst, 9957); 1881 dasm_put(Dst, 10140);
1849#endif 1882#endif
1850} 1883}
1851 1884
@@ -1853,7 +1886,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1853static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1886static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1854{ 1887{
1855 int vk = 0; 1888 int vk = 0;
1856 dasm_put(Dst, 9965, defop); 1889 dasm_put(Dst, 780, defop);
1857 1890
1858 switch (op) { 1891 switch (op) {
1859 1892
@@ -1864,302 +1897,302 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1864 1897
1865 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1898 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1866 if (LJ_DUALNUM) { 1899 if (LJ_DUALNUM) {
1867 dasm_put(Dst, 9967, LJ_TISNUM, LJ_TISNUM); 1900 dasm_put(Dst, 10148, LJ_TISNUM, LJ_TISNUM);
1868 switch (op) { 1901 switch (op) {
1869 case BC_ISLT: 1902 case BC_ISLT:
1870 dasm_put(Dst, 9997); 1903 dasm_put(Dst, 10178);
1871 break; 1904 break;
1872 case BC_ISGE: 1905 case BC_ISGE:
1873 dasm_put(Dst, 10002); 1906 dasm_put(Dst, 10183);
1874 break; 1907 break;
1875 case BC_ISLE: 1908 case BC_ISLE:
1876 dasm_put(Dst, 10007); 1909 dasm_put(Dst, 10188);
1877 break; 1910 break;
1878 case BC_ISGT: 1911 case BC_ISGT:
1879 dasm_put(Dst, 10012); 1912 dasm_put(Dst, 10193);
1880 break; 1913 break;
1881 default: break; /* Shut up GCC. */ 1914 default: break; /* Shut up GCC. */
1882 } 1915 }
1883 dasm_put(Dst, 10017, -BCBIAS_J*4, LJ_TISNUM); 1916 dasm_put(Dst, 10198, -BCBIAS_J*4, LJ_TISNUM);
1884 if (sse) { 1917 if (sse) {
1885 dasm_put(Dst, 10071); 1918 dasm_put(Dst, 10252);
1886 } else { 1919 } else {
1887 dasm_put(Dst, 10082); 1920 dasm_put(Dst, 10263);
1888 } 1921 }
1889 dasm_put(Dst, 10093); 1922 dasm_put(Dst, 10274);
1890 if (sse) { 1923 if (sse) {
1891 dasm_put(Dst, 10100); 1924 dasm_put(Dst, 10281);
1892 switch (op) { 1925 switch (op) {
1893 case BC_ISLT: 1926 case BC_ISLT:
1894 dasm_put(Dst, 10120); 1927 dasm_put(Dst, 10301);
1895 break; 1928 break;
1896 case BC_ISGE: 1929 case BC_ISGE:
1897 dasm_put(Dst, 10125); 1930 dasm_put(Dst, 10306);
1898 break; 1931 break;
1899 case BC_ISLE: 1932 case BC_ISLE:
1900 dasm_put(Dst, 10130); 1933 dasm_put(Dst, 10311);
1901 break; 1934 break;
1902 case BC_ISGT: 1935 case BC_ISGT:
1903 dasm_put(Dst, 10135); 1936 dasm_put(Dst, 10316);
1904 break; 1937 break;
1905 default: break; /* Shut up GCC. */ 1938 default: break; /* Shut up GCC. */
1906 } 1939 }
1907 dasm_put(Dst, 10140); 1940 dasm_put(Dst, 10321);
1908 } else { 1941 } else {
1909 dasm_put(Dst, 10145); 1942 dasm_put(Dst, 10326);
1910 } 1943 }
1911 } else { 1944 } else {
1912 dasm_put(Dst, 10153, LJ_TISNUM, LJ_TISNUM); 1945 dasm_put(Dst, 10334, LJ_TISNUM, LJ_TISNUM);
1913 } 1946 }
1914 if (sse) { 1947 if (sse) {
1915 dasm_put(Dst, 10174); 1948 dasm_put(Dst, 10355);
1916 } else { 1949 } else {
1917 dasm_put(Dst, 10195); 1950 dasm_put(Dst, 10376);
1918 if (cmov) { 1951 if (cmov) {
1919 dasm_put(Dst, 10211); 1952 dasm_put(Dst, 10392);
1920 } else { 1953 } else {
1921 dasm_put(Dst, 10217); 1954 dasm_put(Dst, 10398);
1922 } 1955 }
1923 } 1956 }
1924 if (LJ_DUALNUM) { 1957 if (LJ_DUALNUM) {
1925 switch (op) { 1958 switch (op) {
1926 case BC_ISLT: 1959 case BC_ISLT:
1927 dasm_put(Dst, 10120); 1960 dasm_put(Dst, 10301);
1928 break; 1961 break;
1929 case BC_ISGE: 1962 case BC_ISGE:
1930 dasm_put(Dst, 10125); 1963 dasm_put(Dst, 10306);
1931 break; 1964 break;
1932 case BC_ISLE: 1965 case BC_ISLE:
1933 dasm_put(Dst, 10130); 1966 dasm_put(Dst, 10311);
1934 break; 1967 break;
1935 case BC_ISGT: 1968 case BC_ISGT:
1936 dasm_put(Dst, 10135); 1969 dasm_put(Dst, 10316);
1937 break; 1970 break;
1938 default: break; /* Shut up GCC. */ 1971 default: break; /* Shut up GCC. */
1939 } 1972 }
1940 dasm_put(Dst, 10140); 1973 dasm_put(Dst, 10321);
1941 } else { 1974 } else {
1942 switch (op) { 1975 switch (op) {
1943 case BC_ISLT: 1976 case BC_ISLT:
1944 dasm_put(Dst, 10224); 1977 dasm_put(Dst, 768);
1945 break; 1978 break;
1946 case BC_ISGE: 1979 case BC_ISGE:
1947 dasm_put(Dst, 10229); 1980 dasm_put(Dst, 10405);
1948 break; 1981 break;
1949 case BC_ISLE: 1982 case BC_ISLE:
1950 dasm_put(Dst, 10234); 1983 dasm_put(Dst, 10410);
1951 break; 1984 break;
1952 case BC_ISGT: 1985 case BC_ISGT:
1953 dasm_put(Dst, 10239); 1986 dasm_put(Dst, 10415);
1954 break; 1987 break;
1955 default: break; /* Shut up GCC. */ 1988 default: break; /* Shut up GCC. */
1956 } 1989 }
1957 dasm_put(Dst, 10244, -BCBIAS_J*4); 1990 dasm_put(Dst, 10420, -BCBIAS_J*4);
1958 } 1991 }
1959 break; 1992 break;
1960 1993
1961 case BC_ISEQV: case BC_ISNEV: 1994 case BC_ISEQV: case BC_ISNEV:
1962 vk = op == BC_ISEQV; 1995 vk = op == BC_ISEQV;
1963 dasm_put(Dst, 10276); 1996 dasm_put(Dst, 10452);
1964 if (LJ_DUALNUM) { 1997 if (LJ_DUALNUM) {
1965 dasm_put(Dst, 10284, LJ_TISNUM, LJ_TISNUM); 1998 dasm_put(Dst, 10460, LJ_TISNUM, LJ_TISNUM);
1966 if (vk) { 1999 if (vk) {
1967 dasm_put(Dst, 10309); 2000 dasm_put(Dst, 10485);
1968 } else { 2001 } else {
1969 dasm_put(Dst, 10314); 2002 dasm_put(Dst, 10490);
1970 } 2003 }
1971 dasm_put(Dst, 10319, -BCBIAS_J*4, LJ_TISNUM); 2004 dasm_put(Dst, 10495, -BCBIAS_J*4, LJ_TISNUM);
1972 if (sse) { 2005 if (sse) {
1973 dasm_put(Dst, 10371); 2006 dasm_put(Dst, 10547);
1974 } else { 2007 } else {
1975 dasm_put(Dst, 10378); 2008 dasm_put(Dst, 10554);
1976 } 2009 }
1977 dasm_put(Dst, 10382); 2010 dasm_put(Dst, 10558);
1978 if (sse) { 2011 if (sse) {
1979 dasm_put(Dst, 10393); 2012 dasm_put(Dst, 10569);
1980 } else { 2013 } else {
1981 dasm_put(Dst, 10405); 2014 dasm_put(Dst, 10581);
1982 } 2015 }
1983 dasm_put(Dst, 10412); 2016 dasm_put(Dst, 10588);
1984 } else { 2017 } else {
1985 dasm_put(Dst, 10417, LJ_TISNUM, LJ_TISNUM); 2018 dasm_put(Dst, 10593, LJ_TISNUM, LJ_TISNUM);
1986 } 2019 }
1987 if (sse) { 2020 if (sse) {
1988 dasm_put(Dst, 10436); 2021 dasm_put(Dst, 10612);
1989 } else { 2022 } else {
1990 dasm_put(Dst, 10454); 2023 dasm_put(Dst, 10630);
1991 if (cmov) { 2024 if (cmov) {
1992 dasm_put(Dst, 10211); 2025 dasm_put(Dst, 10392);
1993 } else { 2026 } else {
1994 dasm_put(Dst, 10217); 2027 dasm_put(Dst, 10398);
1995 } 2028 }
1996 } 2029 }
1997 iseqne_fp: 2030 iseqne_fp:
1998 if (vk) { 2031 if (vk) {
1999 dasm_put(Dst, 10467); 2032 dasm_put(Dst, 10643);
2000 } else { 2033 } else {
2001 dasm_put(Dst, 10476); 2034 dasm_put(Dst, 10652);
2002 } 2035 }
2003 iseqne_end: 2036 iseqne_end:
2004 if (vk) { 2037 if (vk) {
2005 dasm_put(Dst, 10485, -BCBIAS_J*4); 2038 dasm_put(Dst, 10661, -BCBIAS_J*4);
2006 if (!LJ_HASFFI) { 2039 if (!LJ_HASFFI) {
2007 dasm_put(Dst, 4629); 2040 dasm_put(Dst, 4638);
2008 } 2041 }
2009 } else { 2042 } else {
2010 if (!LJ_HASFFI) { 2043 if (!LJ_HASFFI) {
2011 dasm_put(Dst, 4629); 2044 dasm_put(Dst, 4638);
2012 } 2045 }
2013 dasm_put(Dst, 10500, -BCBIAS_J*4); 2046 dasm_put(Dst, 10676, -BCBIAS_J*4);
2014 } 2047 }
2015 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || 2048 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
2016 op == BC_ISEQN || op == BC_ISNEN)) { 2049 op == BC_ISEQN || op == BC_ISNEN)) {
2017 dasm_put(Dst, 10515); 2050 dasm_put(Dst, 10691);
2018 } else { 2051 } else {
2019 dasm_put(Dst, 10256); 2052 dasm_put(Dst, 10432);
2020 } 2053 }
2021 if (op == BC_ISEQV || op == BC_ISNEV) { 2054 if (op == BC_ISEQV || op == BC_ISNEV) {
2022 dasm_put(Dst, 9941); 2055 dasm_put(Dst, 10124);
2023 if (LJ_HASFFI) { 2056 if (LJ_HASFFI) {
2024 dasm_put(Dst, 10520, LJ_TCDATA, LJ_TCDATA); 2057 dasm_put(Dst, 10696, LJ_TCDATA, LJ_TCDATA);
2025 } 2058 }
2026 dasm_put(Dst, 10539, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 2059 dasm_put(Dst, 10715, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
2027 if (vk) { 2060 if (vk) {
2028 dasm_put(Dst, 10603); 2061 dasm_put(Dst, 10779);
2029 } else { 2062 } else {
2030 dasm_put(Dst, 10607); 2063 dasm_put(Dst, 10783);
2031 } 2064 }
2032 dasm_put(Dst, 10613); 2065 dasm_put(Dst, 10789);
2033 } else if (LJ_HASFFI) { 2066 } else if (LJ_HASFFI) {
2034 dasm_put(Dst, 10618, LJ_TCDATA); 2067 dasm_put(Dst, 10794, LJ_TCDATA);
2035 if (LJ_DUALNUM && vk) { 2068 if (LJ_DUALNUM && vk) {
2036 dasm_put(Dst, 10625); 2069 dasm_put(Dst, 10801);
2037 } else { 2070 } else {
2038 dasm_put(Dst, 10598); 2071 dasm_put(Dst, 10774);
2039 } 2072 }
2040 dasm_put(Dst, 10630); 2073 dasm_put(Dst, 10806);
2041 } 2074 }
2042 break; 2075 break;
2043 case BC_ISEQS: case BC_ISNES: 2076 case BC_ISEQS: case BC_ISNES:
2044 vk = op == BC_ISEQS; 2077 vk = op == BC_ISEQS;
2045 dasm_put(Dst, 10635, LJ_TSTR); 2078 dasm_put(Dst, 10811, LJ_TSTR);
2046 iseqne_test: 2079 iseqne_test:
2047 if (vk) { 2080 if (vk) {
2048 dasm_put(Dst, 10471); 2081 dasm_put(Dst, 10647);
2049 } else { 2082 } else {
2050 dasm_put(Dst, 765); 2083 dasm_put(Dst, 2929);
2051 } 2084 }
2052 goto iseqne_end; 2085 goto iseqne_end;
2053 case BC_ISEQN: case BC_ISNEN: 2086 case BC_ISEQN: case BC_ISNEN:
2054 vk = op == BC_ISEQN; 2087 vk = op == BC_ISEQN;
2055 dasm_put(Dst, 10661); 2088 dasm_put(Dst, 10837);
2056 if (LJ_DUALNUM) { 2089 if (LJ_DUALNUM) {
2057 dasm_put(Dst, 10669, LJ_TISNUM, LJ_TISNUM); 2090 dasm_put(Dst, 10845, LJ_TISNUM, LJ_TISNUM);
2058 if (vk) { 2091 if (vk) {
2059 dasm_put(Dst, 10309); 2092 dasm_put(Dst, 10485);
2060 } else { 2093 } else {
2061 dasm_put(Dst, 10314); 2094 dasm_put(Dst, 10490);
2062 } 2095 }
2063 dasm_put(Dst, 10694, -BCBIAS_J*4, LJ_TISNUM); 2096 dasm_put(Dst, 10870, -BCBIAS_J*4, LJ_TISNUM);
2064 if (sse) { 2097 if (sse) {
2065 dasm_put(Dst, 10742); 2098 dasm_put(Dst, 10918);
2066 } else { 2099 } else {
2067 dasm_put(Dst, 10749); 2100 dasm_put(Dst, 10925);
2068 } 2101 }
2069 dasm_put(Dst, 10753); 2102 dasm_put(Dst, 10929);
2070 if (sse) { 2103 if (sse) {
2071 dasm_put(Dst, 10760); 2104 dasm_put(Dst, 10936);
2072 } else { 2105 } else {
2073 dasm_put(Dst, 10772); 2106 dasm_put(Dst, 10948);
2074 } 2107 }
2075 dasm_put(Dst, 10412); 2108 dasm_put(Dst, 10588);
2076 } else { 2109 } else {
2077 dasm_put(Dst, 10779, LJ_TISNUM); 2110 dasm_put(Dst, 10955, LJ_TISNUM);
2078 } 2111 }
2079 if (sse) { 2112 if (sse) {
2080 dasm_put(Dst, 10788); 2113 dasm_put(Dst, 10964);
2081 } else { 2114 } else {
2082 dasm_put(Dst, 10806); 2115 dasm_put(Dst, 10982);
2083 if (cmov) { 2116 if (cmov) {
2084 dasm_put(Dst, 10211); 2117 dasm_put(Dst, 10392);
2085 } else { 2118 } else {
2086 dasm_put(Dst, 10217); 2119 dasm_put(Dst, 10398);
2087 } 2120 }
2088 } 2121 }
2089 goto iseqne_fp; 2122 goto iseqne_fp;
2090 case BC_ISEQP: case BC_ISNEP: 2123 case BC_ISEQP: case BC_ISNEP:
2091 vk = op == BC_ISEQP; 2124 vk = op == BC_ISEQP;
2092 dasm_put(Dst, 10819); 2125 dasm_put(Dst, 10995);
2093 if (!LJ_HASFFI) goto iseqne_test; 2126 if (!LJ_HASFFI) goto iseqne_test;
2094 if (vk) { 2127 if (vk) {
2095 dasm_put(Dst, 10833, -BCBIAS_J*4, LJ_TCDATA); 2128 dasm_put(Dst, 11009, -BCBIAS_J*4, LJ_TCDATA);
2096 } else { 2129 } else {
2097 dasm_put(Dst, 10883, LJ_TCDATA, -BCBIAS_J*4); 2130 dasm_put(Dst, 11059, LJ_TCDATA, -BCBIAS_J*4);
2098 } 2131 }
2099 break; 2132 break;
2100 2133
2101 /* -- Unary test and copy ops ------------------------------------------- */ 2134 /* -- Unary test and copy ops ------------------------------------------- */
2102 2135
2103 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2136 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
2104 dasm_put(Dst, 10927, LJ_TISTRUECOND); 2137 dasm_put(Dst, 11103, LJ_TISTRUECOND);
2105 if (op == BC_IST || op == BC_ISTC) { 2138 if (op == BC_IST || op == BC_ISTC) {
2106 dasm_put(Dst, 10239); 2139 dasm_put(Dst, 10415);
2107 } else { 2140 } else {
2108 dasm_put(Dst, 10234); 2141 dasm_put(Dst, 10410);
2109 } 2142 }
2110 if (op == BC_ISTC || op == BC_ISFC) { 2143 if (op == BC_ISTC || op == BC_ISFC) {
2111 dasm_put(Dst, 10939); 2144 dasm_put(Dst, 11115);
2112 } 2145 }
2113 dasm_put(Dst, 10244, -BCBIAS_J*4); 2146 dasm_put(Dst, 10420, -BCBIAS_J*4);
2114 break; 2147 break;
2115 2148
2116 /* -- Unary ops --------------------------------------------------------- */ 2149 /* -- Unary ops --------------------------------------------------------- */
2117 2150
2118 case BC_MOV: 2151 case BC_MOV:
2119 dasm_put(Dst, 10950); 2152 dasm_put(Dst, 11126);
2120 break; 2153 break;
2121 case BC_NOT: 2154 case BC_NOT:
2122 dasm_put(Dst, 10978, LJ_TISTRUECOND, LJ_TTRUE); 2155 dasm_put(Dst, 11154, LJ_TISTRUECOND, LJ_TTRUE);
2123 break; 2156 break;
2124 case BC_UNM: 2157 case BC_UNM:
2125 if (LJ_DUALNUM) { 2158 if (LJ_DUALNUM) {
2126 dasm_put(Dst, 11014, LJ_TISNUM, LJ_TISNUM); 2159 dasm_put(Dst, 11190, LJ_TISNUM, LJ_TISNUM);
2127 } else { 2160 } else {
2128 dasm_put(Dst, 11091, LJ_TISNUM); 2161 dasm_put(Dst, 11267, LJ_TISNUM);
2129 } 2162 }
2130 if (sse) { 2163 if (sse) {
2131 dasm_put(Dst, 11102, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 2164 dasm_put(Dst, 11278, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
2132 } else { 2165 } else {
2133 dasm_put(Dst, 11127); 2166 dasm_put(Dst, 11303);
2134 } 2167 }
2135 if (LJ_DUALNUM) { 2168 if (LJ_DUALNUM) {
2136 dasm_put(Dst, 10515); 2169 dasm_put(Dst, 10691);
2137 } else { 2170 } else {
2138 dasm_put(Dst, 10256); 2171 dasm_put(Dst, 10432);
2139 } 2172 }
2140 break; 2173 break;
2141 case BC_LEN: 2174 case BC_LEN:
2142 dasm_put(Dst, 11136, LJ_TSTR); 2175 dasm_put(Dst, 11312, LJ_TSTR);
2143 if (LJ_DUALNUM) { 2176 if (LJ_DUALNUM) {
2144 dasm_put(Dst, 11150, Dt5(->len), LJ_TISNUM); 2177 dasm_put(Dst, 11326, Dt5(->len), LJ_TISNUM);
2145 } else if (sse) { 2178 } else if (sse) {
2146 dasm_put(Dst, 11164, Dt5(->len)); 2179 dasm_put(Dst, 11340, Dt5(->len));
2147 } else { 2180 } else {
2148 dasm_put(Dst, 11182, Dt5(->len)); 2181 dasm_put(Dst, 11358, Dt5(->len));
2149 } 2182 }
2150 dasm_put(Dst, 11191, LJ_TTAB); 2183 dasm_put(Dst, 11367, LJ_TTAB);
2151#ifdef LUAJIT_ENABLE_LUA52COMPAT 2184#ifdef LUAJIT_ENABLE_LUA52COMPAT
2152 dasm_put(Dst, 11226, Dt6(->metatable)); 2185 dasm_put(Dst, 11402, Dt6(->metatable));
2153#endif 2186#endif
2154 dasm_put(Dst, 11240); 2187 dasm_put(Dst, 11416);
2155 if (LJ_DUALNUM) { 2188 if (LJ_DUALNUM) {
2156 } else if (sse) { 2189 } else if (sse) {
2157 dasm_put(Dst, 11249); 2190 dasm_put(Dst, 11425);
2158 } else { 2191 } else {
2159 } 2192 }
2160 dasm_put(Dst, 11255); 2193 dasm_put(Dst, 11431);
2161#ifdef LUAJIT_ENABLE_LUA52COMPAT 2194#ifdef LUAJIT_ENABLE_LUA52COMPAT
2162 dasm_put(Dst, 11268, Dt6(->nomm), 1<<MM_len); 2195 dasm_put(Dst, 11444, Dt6(->nomm), 1<<MM_len);
2163#endif 2196#endif
2164 break; 2197 break;
2165 2198
@@ -2168,605 +2201,605 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2168 2201
2169 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2202 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
2170 if (LJ_DUALNUM) { 2203 if (LJ_DUALNUM) {
2171 dasm_put(Dst, 11284); 2204 dasm_put(Dst, 11460);
2172 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2205 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2173 switch (vk) { 2206 switch (vk) {
2174 case 0: 2207 case 0:
2175 dasm_put(Dst, 11292, LJ_TISNUM, LJ_TISNUM); 2208 dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
2176 break; 2209 break;
2177 case 1: 2210 case 1:
2178 dasm_put(Dst, 11325, LJ_TISNUM, LJ_TISNUM); 2211 dasm_put(Dst, 11501, LJ_TISNUM, LJ_TISNUM);
2179 break; 2212 break;
2180 default: 2213 default:
2181 dasm_put(Dst, 11358, LJ_TISNUM, LJ_TISNUM); 2214 dasm_put(Dst, 11534, LJ_TISNUM, LJ_TISNUM);
2182 break; 2215 break;
2183 } 2216 }
2184 dasm_put(Dst, 11391, LJ_TISNUM); 2217 dasm_put(Dst, 11567, LJ_TISNUM);
2185 if (vk == 1) { 2218 if (vk == 1) {
2186 dasm_put(Dst, 11160); 2219 dasm_put(Dst, 11336);
2187 } else { 2220 } else {
2188 dasm_put(Dst, 10946); 2221 dasm_put(Dst, 11122);
2189 } 2222 }
2190 dasm_put(Dst, 10256); 2223 dasm_put(Dst, 10432);
2191 } else { 2224 } else {
2192 dasm_put(Dst, 11284); 2225 dasm_put(Dst, 11460);
2193 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2226 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2194 switch (vk) { 2227 switch (vk) {
2195 case 0: 2228 case 0:
2196 dasm_put(Dst, 11397, LJ_TISNUM); 2229 dasm_put(Dst, 11573, LJ_TISNUM);
2197 if (LJ_DUALNUM) { 2230 if (LJ_DUALNUM) {
2198 dasm_put(Dst, 11409, LJ_TISNUM); 2231 dasm_put(Dst, 11585, LJ_TISNUM);
2199 } 2232 }
2200 if (sse) { 2233 if (sse) {
2201 dasm_put(Dst, 11420); 2234 dasm_put(Dst, 11596);
2202 } else { 2235 } else {
2203 dasm_put(Dst, 11434); 2236 dasm_put(Dst, 11610);
2204 } 2237 }
2205 break; 2238 break;
2206 case 1: 2239 case 1:
2207 dasm_put(Dst, 11442, LJ_TISNUM); 2240 dasm_put(Dst, 11618, LJ_TISNUM);
2208 if (LJ_DUALNUM) { 2241 if (LJ_DUALNUM) {
2209 dasm_put(Dst, 11454, LJ_TISNUM); 2242 dasm_put(Dst, 11630, LJ_TISNUM);
2210 } 2243 }
2211 if (sse) { 2244 if (sse) {
2212 dasm_put(Dst, 11465); 2245 dasm_put(Dst, 11641);
2213 } else { 2246 } else {
2214 dasm_put(Dst, 11479); 2247 dasm_put(Dst, 11655);
2215 } 2248 }
2216 break; 2249 break;
2217 default: 2250 default:
2218 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2251 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2219 if (sse) { 2252 if (sse) {
2220 dasm_put(Dst, 11509); 2253 dasm_put(Dst, 11685);
2221 } else { 2254 } else {
2222 dasm_put(Dst, 11523); 2255 dasm_put(Dst, 11699);
2223 } 2256 }
2224 break; 2257 break;
2225 } 2258 }
2226 if (sse) { 2259 if (sse) {
2227 dasm_put(Dst, 11120); 2260 dasm_put(Dst, 11296);
2228 } else { 2261 } else {
2229 dasm_put(Dst, 11132); 2262 dasm_put(Dst, 11308);
2230 } 2263 }
2231 dasm_put(Dst, 10256); 2264 dasm_put(Dst, 10432);
2232 } 2265 }
2233 break; 2266 break;
2234 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2267 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
2235 if (LJ_DUALNUM) { 2268 if (LJ_DUALNUM) {
2236 dasm_put(Dst, 11284); 2269 dasm_put(Dst, 11460);
2237 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2270 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2238 switch (vk) { 2271 switch (vk) {
2239 case 0: 2272 case 0:
2240 dasm_put(Dst, 11531, LJ_TISNUM, LJ_TISNUM); 2273 dasm_put(Dst, 11707, LJ_TISNUM, LJ_TISNUM);
2241 break; 2274 break;
2242 case 1: 2275 case 1:
2243 dasm_put(Dst, 11564, LJ_TISNUM, LJ_TISNUM); 2276 dasm_put(Dst, 11740, LJ_TISNUM, LJ_TISNUM);
2244 break; 2277 break;
2245 default: 2278 default:
2246 dasm_put(Dst, 11597, LJ_TISNUM, LJ_TISNUM); 2279 dasm_put(Dst, 11773, LJ_TISNUM, LJ_TISNUM);
2247 break; 2280 break;
2248 } 2281 }
2249 dasm_put(Dst, 11391, LJ_TISNUM); 2282 dasm_put(Dst, 11567, LJ_TISNUM);
2250 if (vk == 1) { 2283 if (vk == 1) {
2251 dasm_put(Dst, 11160); 2284 dasm_put(Dst, 11336);
2252 } else { 2285 } else {
2253 dasm_put(Dst, 10946); 2286 dasm_put(Dst, 11122);
2254 } 2287 }
2255 dasm_put(Dst, 10256); 2288 dasm_put(Dst, 10432);
2256 } else { 2289 } else {
2257 dasm_put(Dst, 11284); 2290 dasm_put(Dst, 11460);
2258 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2291 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2259 switch (vk) { 2292 switch (vk) {
2260 case 0: 2293 case 0:
2261 dasm_put(Dst, 11397, LJ_TISNUM); 2294 dasm_put(Dst, 11573, LJ_TISNUM);
2262 if (LJ_DUALNUM) { 2295 if (LJ_DUALNUM) {
2263 dasm_put(Dst, 11409, LJ_TISNUM); 2296 dasm_put(Dst, 11585, LJ_TISNUM);
2264 } 2297 }
2265 if (sse) { 2298 if (sse) {
2266 dasm_put(Dst, 11630); 2299 dasm_put(Dst, 11806);
2267 } else { 2300 } else {
2268 dasm_put(Dst, 11644); 2301 dasm_put(Dst, 11820);
2269 } 2302 }
2270 break; 2303 break;
2271 case 1: 2304 case 1:
2272 dasm_put(Dst, 11442, LJ_TISNUM); 2305 dasm_put(Dst, 11618, LJ_TISNUM);
2273 if (LJ_DUALNUM) { 2306 if (LJ_DUALNUM) {
2274 dasm_put(Dst, 11454, LJ_TISNUM); 2307 dasm_put(Dst, 11630, LJ_TISNUM);
2275 } 2308 }
2276 if (sse) { 2309 if (sse) {
2277 dasm_put(Dst, 11652); 2310 dasm_put(Dst, 11828);
2278 } else { 2311 } else {
2279 dasm_put(Dst, 11666); 2312 dasm_put(Dst, 11842);
2280 } 2313 }
2281 break; 2314 break;
2282 default: 2315 default:
2283 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2316 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2284 if (sse) { 2317 if (sse) {
2285 dasm_put(Dst, 11674); 2318 dasm_put(Dst, 11850);
2286 } else { 2319 } else {
2287 dasm_put(Dst, 11688); 2320 dasm_put(Dst, 11864);
2288 } 2321 }
2289 break; 2322 break;
2290 } 2323 }
2291 if (sse) { 2324 if (sse) {
2292 dasm_put(Dst, 11120); 2325 dasm_put(Dst, 11296);
2293 } else { 2326 } else {
2294 dasm_put(Dst, 11132); 2327 dasm_put(Dst, 11308);
2295 } 2328 }
2296 dasm_put(Dst, 10256); 2329 dasm_put(Dst, 10432);
2297 } 2330 }
2298 break; 2331 break;
2299 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2332 case BC_MULVN: case BC_MULNV: case BC_MULVV:
2300 if (LJ_DUALNUM) { 2333 if (LJ_DUALNUM) {
2301 dasm_put(Dst, 11284); 2334 dasm_put(Dst, 11460);
2302 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2335 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2303 switch (vk) { 2336 switch (vk) {
2304 case 0: 2337 case 0:
2305 dasm_put(Dst, 11696, LJ_TISNUM, LJ_TISNUM); 2338 dasm_put(Dst, 11872, LJ_TISNUM, LJ_TISNUM);
2306 break; 2339 break;
2307 case 1: 2340 case 1:
2308 dasm_put(Dst, 11730, LJ_TISNUM, LJ_TISNUM); 2341 dasm_put(Dst, 11906, LJ_TISNUM, LJ_TISNUM);
2309 break; 2342 break;
2310 default: 2343 default:
2311 dasm_put(Dst, 11764, LJ_TISNUM, LJ_TISNUM); 2344 dasm_put(Dst, 11940, LJ_TISNUM, LJ_TISNUM);
2312 break; 2345 break;
2313 } 2346 }
2314 dasm_put(Dst, 11391, LJ_TISNUM); 2347 dasm_put(Dst, 11567, LJ_TISNUM);
2315 if (vk == 1) { 2348 if (vk == 1) {
2316 dasm_put(Dst, 11160); 2349 dasm_put(Dst, 11336);
2317 } else { 2350 } else {
2318 dasm_put(Dst, 10946); 2351 dasm_put(Dst, 11122);
2319 } 2352 }
2320 dasm_put(Dst, 10256); 2353 dasm_put(Dst, 10432);
2321 } else { 2354 } else {
2322 dasm_put(Dst, 11284); 2355 dasm_put(Dst, 11460);
2323 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2356 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2324 switch (vk) { 2357 switch (vk) {
2325 case 0: 2358 case 0:
2326 dasm_put(Dst, 11397, LJ_TISNUM); 2359 dasm_put(Dst, 11573, LJ_TISNUM);
2327 if (LJ_DUALNUM) { 2360 if (LJ_DUALNUM) {
2328 dasm_put(Dst, 11409, LJ_TISNUM); 2361 dasm_put(Dst, 11585, LJ_TISNUM);
2329 } 2362 }
2330 if (sse) { 2363 if (sse) {
2331 dasm_put(Dst, 11798); 2364 dasm_put(Dst, 11974);
2332 } else { 2365 } else {
2333 dasm_put(Dst, 11812); 2366 dasm_put(Dst, 11988);
2334 } 2367 }
2335 break; 2368 break;
2336 case 1: 2369 case 1:
2337 dasm_put(Dst, 11442, LJ_TISNUM); 2370 dasm_put(Dst, 11618, LJ_TISNUM);
2338 if (LJ_DUALNUM) { 2371 if (LJ_DUALNUM) {
2339 dasm_put(Dst, 11454, LJ_TISNUM); 2372 dasm_put(Dst, 11630, LJ_TISNUM);
2340 } 2373 }
2341 if (sse) { 2374 if (sse) {
2342 dasm_put(Dst, 11820); 2375 dasm_put(Dst, 11996);
2343 } else { 2376 } else {
2344 dasm_put(Dst, 11834); 2377 dasm_put(Dst, 12010);
2345 } 2378 }
2346 break; 2379 break;
2347 default: 2380 default:
2348 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2381 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2349 if (sse) { 2382 if (sse) {
2350 dasm_put(Dst, 11842); 2383 dasm_put(Dst, 12018);
2351 } else { 2384 } else {
2352 dasm_put(Dst, 11856); 2385 dasm_put(Dst, 12032);
2353 } 2386 }
2354 break; 2387 break;
2355 } 2388 }
2356 if (sse) { 2389 if (sse) {
2357 dasm_put(Dst, 11120); 2390 dasm_put(Dst, 11296);
2358 } else { 2391 } else {
2359 dasm_put(Dst, 11132); 2392 dasm_put(Dst, 11308);
2360 } 2393 }
2361 dasm_put(Dst, 10256); 2394 dasm_put(Dst, 10432);
2362 } 2395 }
2363 break; 2396 break;
2364 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2397 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
2365 dasm_put(Dst, 11284); 2398 dasm_put(Dst, 11460);
2366 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2399 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2367 switch (vk) { 2400 switch (vk) {
2368 case 0: 2401 case 0:
2369 dasm_put(Dst, 11397, LJ_TISNUM); 2402 dasm_put(Dst, 11573, LJ_TISNUM);
2370 if (LJ_DUALNUM) { 2403 if (LJ_DUALNUM) {
2371 dasm_put(Dst, 11409, LJ_TISNUM); 2404 dasm_put(Dst, 11585, LJ_TISNUM);
2372 } 2405 }
2373 if (sse) { 2406 if (sse) {
2374 dasm_put(Dst, 11864); 2407 dasm_put(Dst, 12040);
2375 } else { 2408 } else {
2376 dasm_put(Dst, 11878); 2409 dasm_put(Dst, 12054);
2377 } 2410 }
2378 break; 2411 break;
2379 case 1: 2412 case 1:
2380 dasm_put(Dst, 11442, LJ_TISNUM); 2413 dasm_put(Dst, 11618, LJ_TISNUM);
2381 if (LJ_DUALNUM) { 2414 if (LJ_DUALNUM) {
2382 dasm_put(Dst, 11454, LJ_TISNUM); 2415 dasm_put(Dst, 11630, LJ_TISNUM);
2383 } 2416 }
2384 if (sse) { 2417 if (sse) {
2385 dasm_put(Dst, 11886); 2418 dasm_put(Dst, 12062);
2386 } else { 2419 } else {
2387 dasm_put(Dst, 11900); 2420 dasm_put(Dst, 12076);
2388 } 2421 }
2389 break; 2422 break;
2390 default: 2423 default:
2391 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2424 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2392 if (sse) { 2425 if (sse) {
2393 dasm_put(Dst, 11908); 2426 dasm_put(Dst, 12084);
2394 } else { 2427 } else {
2395 dasm_put(Dst, 11922); 2428 dasm_put(Dst, 12098);
2396 } 2429 }
2397 break; 2430 break;
2398 } 2431 }
2399 if (sse) { 2432 if (sse) {
2400 dasm_put(Dst, 11120); 2433 dasm_put(Dst, 11296);
2401 } else { 2434 } else {
2402 dasm_put(Dst, 11132); 2435 dasm_put(Dst, 11308);
2403 } 2436 }
2404 dasm_put(Dst, 10256); 2437 dasm_put(Dst, 10432);
2405 break; 2438 break;
2406 case BC_MODVN: 2439 case BC_MODVN:
2407 dasm_put(Dst, 11284); 2440 dasm_put(Dst, 11460);
2408 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2441 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2409 switch (vk) { 2442 switch (vk) {
2410 case 0: 2443 case 0:
2411 dasm_put(Dst, 11397, LJ_TISNUM); 2444 dasm_put(Dst, 11573, LJ_TISNUM);
2412 if (LJ_DUALNUM) { 2445 if (LJ_DUALNUM) {
2413 dasm_put(Dst, 11409, LJ_TISNUM); 2446 dasm_put(Dst, 11585, LJ_TISNUM);
2414 } 2447 }
2415 if (sse) { 2448 if (sse) {
2416 dasm_put(Dst, 11930); 2449 dasm_put(Dst, 12106);
2417 } else { 2450 } else {
2418 dasm_put(Dst, 11944); 2451 dasm_put(Dst, 12120);
2419 } 2452 }
2420 break; 2453 break;
2421 case 1: 2454 case 1:
2422 dasm_put(Dst, 11442, LJ_TISNUM); 2455 dasm_put(Dst, 11618, LJ_TISNUM);
2423 if (LJ_DUALNUM) { 2456 if (LJ_DUALNUM) {
2424 dasm_put(Dst, 11454, LJ_TISNUM); 2457 dasm_put(Dst, 11630, LJ_TISNUM);
2425 } 2458 }
2426 if (sse) { 2459 if (sse) {
2427 dasm_put(Dst, 11952); 2460 dasm_put(Dst, 12128);
2428 } else { 2461 } else {
2429 dasm_put(Dst, 11966); 2462 dasm_put(Dst, 12142);
2430 } 2463 }
2431 break; 2464 break;
2432 default: 2465 default:
2433 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2466 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2434 if (sse) { 2467 if (sse) {
2435 dasm_put(Dst, 11974); 2468 dasm_put(Dst, 12150);
2436 } else { 2469 } else {
2437 dasm_put(Dst, 11988); 2470 dasm_put(Dst, 12164);
2438 } 2471 }
2439 break; 2472 break;
2440 } 2473 }
2441 dasm_put(Dst, 11996); 2474 dasm_put(Dst, 12172);
2442 if (sse) { 2475 if (sse) {
2443 dasm_put(Dst, 11120); 2476 dasm_put(Dst, 11296);
2444 } else { 2477 } else {
2445 dasm_put(Dst, 11132); 2478 dasm_put(Dst, 11308);
2446 } 2479 }
2447 dasm_put(Dst, 10256); 2480 dasm_put(Dst, 10432);
2448 break; 2481 break;
2449 case BC_MODNV: case BC_MODVV: 2482 case BC_MODNV: case BC_MODVV:
2450 dasm_put(Dst, 11284); 2483 dasm_put(Dst, 11460);
2451 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2484 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2452 switch (vk) { 2485 switch (vk) {
2453 case 0: 2486 case 0:
2454 dasm_put(Dst, 11397, LJ_TISNUM); 2487 dasm_put(Dst, 11573, LJ_TISNUM);
2455 if (LJ_DUALNUM) { 2488 if (LJ_DUALNUM) {
2456 dasm_put(Dst, 11409, LJ_TISNUM); 2489 dasm_put(Dst, 11585, LJ_TISNUM);
2457 } 2490 }
2458 if (sse) { 2491 if (sse) {
2459 dasm_put(Dst, 11930); 2492 dasm_put(Dst, 12106);
2460 } else { 2493 } else {
2461 dasm_put(Dst, 11944); 2494 dasm_put(Dst, 12120);
2462 } 2495 }
2463 break; 2496 break;
2464 case 1: 2497 case 1:
2465 dasm_put(Dst, 11442, LJ_TISNUM); 2498 dasm_put(Dst, 11618, LJ_TISNUM);
2466 if (LJ_DUALNUM) { 2499 if (LJ_DUALNUM) {
2467 dasm_put(Dst, 11454, LJ_TISNUM); 2500 dasm_put(Dst, 11630, LJ_TISNUM);
2468 } 2501 }
2469 if (sse) { 2502 if (sse) {
2470 dasm_put(Dst, 11952); 2503 dasm_put(Dst, 12128);
2471 } else { 2504 } else {
2472 dasm_put(Dst, 11966); 2505 dasm_put(Dst, 12142);
2473 } 2506 }
2474 break; 2507 break;
2475 default: 2508 default:
2476 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2509 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2477 if (sse) { 2510 if (sse) {
2478 dasm_put(Dst, 11974); 2511 dasm_put(Dst, 12150);
2479 } else { 2512 } else {
2480 dasm_put(Dst, 11988); 2513 dasm_put(Dst, 12164);
2481 } 2514 }
2482 break; 2515 break;
2483 } 2516 }
2484 dasm_put(Dst, 12002); 2517 dasm_put(Dst, 12178);
2485 break; 2518 break;
2486 case BC_POW: 2519 case BC_POW:
2487 dasm_put(Dst, 11284); 2520 dasm_put(Dst, 11460);
2488 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2521 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2489 switch (vk) { 2522 switch (vk) {
2490 case 0: 2523 case 0:
2491 dasm_put(Dst, 11397, LJ_TISNUM); 2524 dasm_put(Dst, 11573, LJ_TISNUM);
2492 if (LJ_DUALNUM) { 2525 if (LJ_DUALNUM) {
2493 dasm_put(Dst, 11409, LJ_TISNUM); 2526 dasm_put(Dst, 11585, LJ_TISNUM);
2494 } 2527 }
2495 if (sse) { 2528 if (sse) {
2496 dasm_put(Dst, 11930); 2529 dasm_put(Dst, 12106);
2497 } else { 2530 } else {
2498 dasm_put(Dst, 11944); 2531 dasm_put(Dst, 12120);
2499 } 2532 }
2500 break; 2533 break;
2501 case 1: 2534 case 1:
2502 dasm_put(Dst, 11442, LJ_TISNUM); 2535 dasm_put(Dst, 11618, LJ_TISNUM);
2503 if (LJ_DUALNUM) { 2536 if (LJ_DUALNUM) {
2504 dasm_put(Dst, 11454, LJ_TISNUM); 2537 dasm_put(Dst, 11630, LJ_TISNUM);
2505 } 2538 }
2506 if (sse) { 2539 if (sse) {
2507 dasm_put(Dst, 11952); 2540 dasm_put(Dst, 12128);
2508 } else { 2541 } else {
2509 dasm_put(Dst, 11966); 2542 dasm_put(Dst, 12142);
2510 } 2543 }
2511 break; 2544 break;
2512 default: 2545 default:
2513 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2546 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2514 if (sse) { 2547 if (sse) {
2515 dasm_put(Dst, 11974); 2548 dasm_put(Dst, 12150);
2516 } else { 2549 } else {
2517 dasm_put(Dst, 11988); 2550 dasm_put(Dst, 12164);
2518 } 2551 }
2519 break; 2552 break;
2520 } 2553 }
2521 dasm_put(Dst, 12007); 2554 dasm_put(Dst, 12183);
2522 if (sse) { 2555 if (sse) {
2523 dasm_put(Dst, 11120); 2556 dasm_put(Dst, 11296);
2524 } else { 2557 } else {
2525 dasm_put(Dst, 11132); 2558 dasm_put(Dst, 11308);
2526 } 2559 }
2527 dasm_put(Dst, 10256); 2560 dasm_put(Dst, 10432);
2528 break; 2561 break;
2529 2562
2530 case BC_CAT: 2563 case BC_CAT:
2531 dasm_put(Dst, 12011, Dt1(->base), Dt1(->base)); 2564 dasm_put(Dst, 12187, Dt1(->base), Dt1(->base));
2532 break; 2565 break;
2533 2566
2534 /* -- Constant ops ------------------------------------------------------ */ 2567 /* -- Constant ops ------------------------------------------------------ */
2535 2568
2536 case BC_KSTR: 2569 case BC_KSTR:
2537 dasm_put(Dst, 12094, LJ_TSTR); 2570 dasm_put(Dst, 12270, LJ_TSTR);
2538 break; 2571 break;
2539 case BC_KCDATA: 2572 case BC_KCDATA:
2540#if LJ_HASFFI 2573#if LJ_HASFFI
2541 dasm_put(Dst, 12094, LJ_TCDATA); 2574 dasm_put(Dst, 12270, LJ_TCDATA);
2542#endif 2575#endif
2543 break; 2576 break;
2544 case BC_KSHORT: 2577 case BC_KSHORT:
2545 if (LJ_DUALNUM) { 2578 if (LJ_DUALNUM) {
2546 dasm_put(Dst, 12129, LJ_TISNUM); 2579 dasm_put(Dst, 12305, LJ_TISNUM);
2547 } else if (sse) { 2580 } else if (sse) {
2548 dasm_put(Dst, 12141); 2581 dasm_put(Dst, 12317);
2549 } else { 2582 } else {
2550 dasm_put(Dst, 12156); 2583 dasm_put(Dst, 12332);
2551 } 2584 }
2552 dasm_put(Dst, 10256); 2585 dasm_put(Dst, 10432);
2553 break; 2586 break;
2554 case BC_KNUM: 2587 case BC_KNUM:
2555 if (sse) { 2588 if (sse) {
2556 dasm_put(Dst, 12164); 2589 dasm_put(Dst, 12340);
2557 } else { 2590 } else {
2558 dasm_put(Dst, 12177); 2591 dasm_put(Dst, 12353);
2559 } 2592 }
2560 dasm_put(Dst, 10256); 2593 dasm_put(Dst, 10432);
2561 break; 2594 break;
2562 case BC_KPRI: 2595 case BC_KPRI:
2563 dasm_put(Dst, 12184); 2596 dasm_put(Dst, 12360);
2564 break; 2597 break;
2565 case BC_KNIL: 2598 case BC_KNIL:
2566 dasm_put(Dst, 12212, LJ_TNIL); 2599 dasm_put(Dst, 12388, LJ_TNIL);
2567 break; 2600 break;
2568 2601
2569 /* -- Upvalue and function ops ------------------------------------------ */ 2602 /* -- Upvalue and function ops ------------------------------------------ */
2570 2603
2571 case BC_UGET: 2604 case BC_UGET:
2572 dasm_put(Dst, 12259, offsetof(GCfuncL, uvptr), DtA(->v)); 2605 dasm_put(Dst, 12435, offsetof(GCfuncL, uvptr), DtA(->v));
2573 break; 2606 break;
2574 case BC_USETV: 2607 case BC_USETV:
2575#define TV2MARKOFS \ 2608#define TV2MARKOFS \
2576 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2609 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2577 dasm_put(Dst, 12299, 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); 2610 dasm_put(Dst, 12475, 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);
2578 dasm_put(Dst, 12390); 2611 dasm_put(Dst, 12566);
2579 break; 2612 break;
2580#undef TV2MARKOFS 2613#undef TV2MARKOFS
2581 case BC_USETS: 2614 case BC_USETS:
2582 dasm_put(Dst, 12402, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2615 dasm_put(Dst, 12578, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2583 break; 2616 break;
2584 case BC_USETN: 2617 case BC_USETN:
2585 dasm_put(Dst, 12495); 2618 dasm_put(Dst, 12671);
2586 if (sse) { 2619 if (sse) {
2587 dasm_put(Dst, 12500); 2620 dasm_put(Dst, 12676);
2588 } else { 2621 } else {
2589 dasm_put(Dst, 10775); 2622 dasm_put(Dst, 10951);
2590 } 2623 }
2591 dasm_put(Dst, 12507, offsetof(GCfuncL, uvptr), DtA(->v)); 2624 dasm_put(Dst, 12683, offsetof(GCfuncL, uvptr), DtA(->v));
2592 if (sse) { 2625 if (sse) {
2593 dasm_put(Dst, 12516); 2626 dasm_put(Dst, 12692);
2594 } else { 2627 } else {
2595 dasm_put(Dst, 12522); 2628 dasm_put(Dst, 12698);
2596 } 2629 }
2597 dasm_put(Dst, 10256); 2630 dasm_put(Dst, 10432);
2598 break; 2631 break;
2599 case BC_USETP: 2632 case BC_USETP:
2600 dasm_put(Dst, 12525, offsetof(GCfuncL, uvptr), DtA(->v)); 2633 dasm_put(Dst, 12701, offsetof(GCfuncL, uvptr), DtA(->v));
2601 break; 2634 break;
2602 case BC_UCLO: 2635 case BC_UCLO:
2603 dasm_put(Dst, 12564, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2636 dasm_put(Dst, 12740, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2604 break; 2637 break;
2605 2638
2606 case BC_FNEW: 2639 case BC_FNEW:
2607 dasm_put(Dst, 12619, Dt1(->base), Dt1(->base), LJ_TFUNC); 2640 dasm_put(Dst, 12795, Dt1(->base), Dt1(->base), LJ_TFUNC);
2608 break; 2641 break;
2609 2642
2610 /* -- Table ops --------------------------------------------------------- */ 2643 /* -- Table ops --------------------------------------------------------- */
2611 2644
2612 case BC_TNEW: 2645 case BC_TNEW:
2613 dasm_put(Dst, 12685, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2646 dasm_put(Dst, 12861, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2614 break; 2647 break;
2615 case BC_TDUP: 2648 case BC_TDUP:
2616 dasm_put(Dst, 12807, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2649 dasm_put(Dst, 12983, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2617 break; 2650 break;
2618 2651
2619 case BC_GGET: 2652 case BC_GGET:
2620 dasm_put(Dst, 12902, Dt7(->env)); 2653 dasm_put(Dst, 13078, Dt7(->env));
2621 break; 2654 break;
2622 case BC_GSET: 2655 case BC_GSET:
2623 dasm_put(Dst, 12921, Dt7(->env)); 2656 dasm_put(Dst, 13097, Dt7(->env));
2624 break; 2657 break;
2625 2658
2626 case BC_TGETV: 2659 case BC_TGETV:
2627 dasm_put(Dst, 12940, LJ_TTAB); 2660 dasm_put(Dst, 13116, LJ_TTAB);
2628 if (LJ_DUALNUM) { 2661 if (LJ_DUALNUM) {
2629 dasm_put(Dst, 12963, LJ_TISNUM); 2662 dasm_put(Dst, 13139, LJ_TISNUM);
2630 } else { 2663 } else {
2631 dasm_put(Dst, 12977, LJ_TISNUM); 2664 dasm_put(Dst, 13153, LJ_TISNUM);
2632 if (sse) { 2665 if (sse) {
2633 dasm_put(Dst, 12988); 2666 dasm_put(Dst, 13164);
2634 } else { 2667 } else {
2635 } 2668 }
2636 dasm_put(Dst, 13009); 2669 dasm_put(Dst, 13185);
2637 } 2670 }
2638 dasm_put(Dst, 13014, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL); 2671 dasm_put(Dst, 13190, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2639 dasm_put(Dst, 13105, LJ_TSTR); 2672 dasm_put(Dst, 13281, LJ_TSTR);
2640 break; 2673 break;
2641 case BC_TGETS: 2674 case BC_TGETS:
2642 dasm_put(Dst, 13123, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2675 dasm_put(Dst, 13299, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2643 dasm_put(Dst, 13207, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2676 dasm_put(Dst, 13383, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2644 break; 2677 break;
2645 case BC_TGETB: 2678 case BC_TGETB:
2646 dasm_put(Dst, 13278, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2679 dasm_put(Dst, 13454, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2647 dasm_put(Dst, 13373, LJ_TNIL); 2680 dasm_put(Dst, 13549, LJ_TNIL);
2648 break; 2681 break;
2649 2682
2650 case BC_TSETV: 2683 case BC_TSETV:
2651 dasm_put(Dst, 13390, LJ_TTAB); 2684 dasm_put(Dst, 13566, LJ_TTAB);
2652 if (LJ_DUALNUM) { 2685 if (LJ_DUALNUM) {
2653 dasm_put(Dst, 12963, LJ_TISNUM); 2686 dasm_put(Dst, 13139, LJ_TISNUM);
2654 } else { 2687 } else {
2655 dasm_put(Dst, 12977, LJ_TISNUM); 2688 dasm_put(Dst, 13153, LJ_TISNUM);
2656 if (sse) { 2689 if (sse) {
2657 dasm_put(Dst, 12988); 2690 dasm_put(Dst, 13164);
2658 } else { 2691 } else {
2659 } 2692 }
2660 dasm_put(Dst, 13413); 2693 dasm_put(Dst, 13589);
2661 } 2694 }
2662 dasm_put(Dst, 13418, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 2695 dasm_put(Dst, 13594, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2663 dasm_put(Dst, 13498, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2696 dasm_put(Dst, 13674, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2664 break; 2697 break;
2665 case BC_TSETS: 2698 case BC_TSETS:
2666 dasm_put(Dst, 13555, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2699 dasm_put(Dst, 13731, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2667 dasm_put(Dst, 13631, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2700 dasm_put(Dst, 13807, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2668 dasm_put(Dst, 13719, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2701 dasm_put(Dst, 13895, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2669 break; 2702 break;
2670 case BC_TSETB: 2703 case BC_TSETB:
2671 dasm_put(Dst, 13810, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2704 dasm_put(Dst, 13986, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2672 dasm_put(Dst, 13904, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2705 dasm_put(Dst, 14080, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2673 break; 2706 break;
2674 2707
2675 case BC_TSETM: 2708 case BC_TSETM:
2676 dasm_put(Dst, 13950, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2709 dasm_put(Dst, 14126, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2677 dasm_put(Dst, 14093, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2710 dasm_put(Dst, 14269, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2678 break; 2711 break;
2679 2712
2680 /* -- Calls and vararg handling ----------------------------------------- */ 2713 /* -- Calls and vararg handling ----------------------------------------- */
2681 2714
2682 case BC_CALL: case BC_CALLM: 2715 case BC_CALL: case BC_CALLM:
2683 dasm_put(Dst, 11288); 2716 dasm_put(Dst, 11464);
2684 if (op == BC_CALLM) { 2717 if (op == BC_CALLM) {
2685 dasm_put(Dst, 14111); 2718 dasm_put(Dst, 14287);
2686 } 2719 }
2687 dasm_put(Dst, 14116, LJ_TFUNC, Dt7(->pc)); 2720 dasm_put(Dst, 14292, LJ_TFUNC, Dt7(->pc));
2688 break; 2721 break;
2689 2722
2690 case BC_CALLMT: 2723 case BC_CALLMT:
2691 dasm_put(Dst, 14111); 2724 dasm_put(Dst, 14287);
2692 break; 2725 break;
2693 case BC_CALLT: 2726 case BC_CALLT:
2694 dasm_put(Dst, 14158, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2727 dasm_put(Dst, 14334, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2695 dasm_put(Dst, 14273, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2728 dasm_put(Dst, 14449, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2696 break; 2729 break;
2697 2730
2698 case BC_ITERC: 2731 case BC_ITERC:
2699 dasm_put(Dst, 14344, LJ_TFUNC, 2+1, Dt7(->pc)); 2732 dasm_put(Dst, 14520, LJ_TFUNC, 2+1, Dt7(->pc));
2700 break; 2733 break;
2701 2734
2702 case BC_ITERN: 2735 case BC_ITERN:
2703#if LJ_HASJIT 2736#if LJ_HASJIT
2704#endif 2737#endif
2705 dasm_put(Dst, 14415, Dt6(->asize), Dt6(->array), LJ_TNIL); 2738 dasm_put(Dst, 14591, Dt6(->asize), Dt6(->array), LJ_TNIL);
2706 if (LJ_DUALNUM) { 2739 if (LJ_DUALNUM) {
2707 dasm_put(Dst, 11155, LJ_TISNUM); 2740 dasm_put(Dst, 11331, LJ_TISNUM);
2708 } else if (sse) { 2741 } else if (sse) {
2709 dasm_put(Dst, 11249); 2742 dasm_put(Dst, 11425);
2710 } else { 2743 } else {
2711 dasm_put(Dst, 14461); 2744 dasm_put(Dst, 14637);
2712 } 2745 }
2713 dasm_put(Dst, 14467); 2746 dasm_put(Dst, 14643);
2714 if (LJ_DUALNUM) { 2747 if (LJ_DUALNUM) {
2715 } else if (sse) { 2748 } else if (sse) {
2716 dasm_put(Dst, 11120); 2749 dasm_put(Dst, 11296);
2717 } else { 2750 } else {
2718 dasm_put(Dst, 11132); 2751 dasm_put(Dst, 11308);
2719 } 2752 }
2720 dasm_put(Dst, 14480, -BCBIAS_J*4); 2753 dasm_put(Dst, 14656, -BCBIAS_J*4);
2721 if (!LJ_DUALNUM && !sse) { 2754 if (!LJ_DUALNUM && !sse) {
2722 dasm_put(Dst, 14532); 2755 dasm_put(Dst, 14708);
2723 } 2756 }
2724 dasm_put(Dst, 14538, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2757 dasm_put(Dst, 14714, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2725 break; 2758 break;
2726 2759
2727 case BC_ISNEXT: 2760 case BC_ISNEXT:
2728 dasm_put(Dst, 14610, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2761 dasm_put(Dst, 14786, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2729 break; 2762 break;
2730 2763
2731 case BC_VARG: 2764 case BC_VARG:
2732 dasm_put(Dst, 14710, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2765 dasm_put(Dst, 14886, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2733 dasm_put(Dst, 14870, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2766 dasm_put(Dst, 15046, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2734 break; 2767 break;
2735 2768
2736 /* -- Returns ----------------------------------------------------------- */ 2769 /* -- Returns ----------------------------------------------------------- */
2737 2770
2738 case BC_RETM: 2771 case BC_RETM:
2739 dasm_put(Dst, 14111); 2772 dasm_put(Dst, 14287);
2740 break; 2773 break;
2741 2774
2742 case BC_RET: case BC_RET0: case BC_RET1: 2775 case BC_RET: case BC_RET0: case BC_RET1:
2743 if (op != BC_RET0) { 2776 if (op != BC_RET0) {
2744 dasm_put(Dst, 14936); 2777 dasm_put(Dst, 15112);
2745 } 2778 }
2746 dasm_put(Dst, 14940, FRAME_TYPE); 2779 dasm_put(Dst, 15116, FRAME_TYPE);
2747 switch (op) { 2780 switch (op) {
2748 case BC_RET: 2781 case BC_RET:
2749 dasm_put(Dst, 14959); 2782 dasm_put(Dst, 15135);
2750 break; 2783 break;
2751 case BC_RET1: 2784 case BC_RET1:
2752 dasm_put(Dst, 15011); 2785 dasm_put(Dst, 15187);
2753 /* fallthrough */ 2786 /* fallthrough */
2754 case BC_RET0: 2787 case BC_RET0:
2755 dasm_put(Dst, 15021); 2788 dasm_put(Dst, 15197);
2756 default: 2789 default:
2757 break; 2790 break;
2758 } 2791 }
2759 dasm_put(Dst, 15032, Dt7(->pc), PC2PROTO(k)); 2792 dasm_put(Dst, 15208, Dt7(->pc), PC2PROTO(k));
2760 if (op == BC_RET) { 2793 if (op == BC_RET) {
2761 dasm_put(Dst, 15076, LJ_TNIL); 2794 dasm_put(Dst, 15252, LJ_TNIL);
2762 } else { 2795 } else {
2763 dasm_put(Dst, 15085, LJ_TNIL); 2796 dasm_put(Dst, 15261, LJ_TNIL);
2764 } 2797 }
2765 dasm_put(Dst, 15092, -FRAME_VARG, FRAME_TYPEP); 2798 dasm_put(Dst, 15268, -FRAME_VARG, FRAME_TYPEP);
2766 if (op != BC_RET0) { 2799 if (op != BC_RET0) {
2767 dasm_put(Dst, 15116); 2800 dasm_put(Dst, 15292);
2768 } 2801 }
2769 dasm_put(Dst, 4708); 2802 dasm_put(Dst, 4717);
2770 break; 2803 break;
2771 2804
2772 /* -- Loops and branches ------------------------------------------------ */ 2805 /* -- Loops and branches ------------------------------------------------ */
@@ -2774,7 +2807,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2774 2807
2775 case BC_FORL: 2808 case BC_FORL:
2776#if LJ_HASJIT 2809#if LJ_HASJIT
2777 dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2810 dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2778#endif 2811#endif
2779 break; 2812 break;
2780 2813
@@ -2786,111 +2819,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2786 case BC_FORI: 2819 case BC_FORI:
2787 case BC_IFORL: 2820 case BC_IFORL:
2788 vk = (op == BC_IFORL || op == BC_JFORL); 2821 vk = (op == BC_IFORL || op == BC_JFORL);
2789 dasm_put(Dst, 15141); 2822 dasm_put(Dst, 15317);
2790 if (LJ_DUALNUM) { 2823 if (LJ_DUALNUM) {
2791 dasm_put(Dst, 15145, LJ_TISNUM); 2824 dasm_put(Dst, 15321, LJ_TISNUM);
2792 if (!vk) { 2825 if (!vk) {
2793 dasm_put(Dst, 15155, LJ_TISNUM, LJ_TISNUM); 2826 dasm_put(Dst, 15331, LJ_TISNUM, LJ_TISNUM);
2794 } else { 2827 } else {
2795#ifdef LUA_USE_ASSERT 2828#ifdef LUA_USE_ASSERT
2796 dasm_put(Dst, 15184, LJ_TISNUM, LJ_TISNUM); 2829 dasm_put(Dst, 15360, LJ_TISNUM, LJ_TISNUM);
2797#endif 2830#endif
2798 dasm_put(Dst, 15203); 2831 dasm_put(Dst, 15379);
2799 } 2832 }
2800 dasm_put(Dst, 15222, LJ_TISNUM); 2833 dasm_put(Dst, 15398, LJ_TISNUM);
2801 if (op == BC_FORI) { 2834 if (op == BC_FORI) {
2802 dasm_put(Dst, 15233, -BCBIAS_J*4); 2835 dasm_put(Dst, 15409, -BCBIAS_J*4);
2803 } else if (op == BC_JFORI) { 2836 } else if (op == BC_JFORI) {
2804 dasm_put(Dst, 15247, -BCBIAS_J*4, BC_JLOOP); 2837 dasm_put(Dst, 15423, -BCBIAS_J*4, BC_JLOOP);
2805 } else if (op == BC_IFORL) { 2838 } else if (op == BC_IFORL) {
2806 dasm_put(Dst, 15265, -BCBIAS_J*4); 2839 dasm_put(Dst, 15441, -BCBIAS_J*4);
2807 } else { 2840 } else {
2808 dasm_put(Dst, 15257, BC_JLOOP); 2841 dasm_put(Dst, 15433, BC_JLOOP);
2809 } 2842 }
2810 dasm_put(Dst, 15279); 2843 dasm_put(Dst, 15455);
2811 if (vk) { 2844 if (vk) {
2812 dasm_put(Dst, 15303); 2845 dasm_put(Dst, 15479);
2813 } 2846 }
2814 dasm_put(Dst, 15222, LJ_TISNUM); 2847 dasm_put(Dst, 15398, LJ_TISNUM);
2815 if (op == BC_FORI) { 2848 if (op == BC_FORI) {
2816 dasm_put(Dst, 15312); 2849 dasm_put(Dst, 15488);
2817 } else if (op == BC_JFORI) { 2850 } else if (op == BC_JFORI) {
2818 dasm_put(Dst, 15317, -BCBIAS_J*4, BC_JLOOP); 2851 dasm_put(Dst, 15493, -BCBIAS_J*4, BC_JLOOP);
2819 } else if (op == BC_IFORL) { 2852 } else if (op == BC_IFORL) {
2820 dasm_put(Dst, 15331); 2853 dasm_put(Dst, 15507);
2821 } else { 2854 } else {
2822 dasm_put(Dst, 15327, BC_JLOOP); 2855 dasm_put(Dst, 15503, BC_JLOOP);
2823 } 2856 }
2824 dasm_put(Dst, 15336); 2857 dasm_put(Dst, 15512);
2825 } else if (!vk) { 2858 } else if (!vk) {
2826 dasm_put(Dst, 15343, LJ_TISNUM); 2859 dasm_put(Dst, 15519, LJ_TISNUM);
2827 } 2860 }
2828 if (!vk) { 2861 if (!vk) {
2829 dasm_put(Dst, 15349, LJ_TISNUM); 2862 dasm_put(Dst, 15525, LJ_TISNUM);
2830 } else { 2863 } else {
2831#ifdef LUA_USE_ASSERT 2864#ifdef LUA_USE_ASSERT
2832 dasm_put(Dst, 15363, LJ_TISNUM, LJ_TISNUM); 2865 dasm_put(Dst, 15539, LJ_TISNUM, LJ_TISNUM);
2833#endif 2866#endif
2834 } 2867 }
2835 dasm_put(Dst, 15382); 2868 dasm_put(Dst, 15558);
2836 if (!vk) { 2869 if (!vk) {
2837 dasm_put(Dst, 15386, LJ_TISNUM); 2870 dasm_put(Dst, 15562, LJ_TISNUM);
2838 } 2871 }
2839 if (sse) { 2872 if (sse) {
2840 dasm_put(Dst, 15395); 2873 dasm_put(Dst, 15571);
2841 if (vk) { 2874 if (vk) {
2842 dasm_put(Dst, 15407); 2875 dasm_put(Dst, 15583);
2843 } else { 2876 } else {
2844 dasm_put(Dst, 15426); 2877 dasm_put(Dst, 15602);
2845 } 2878 }
2846 dasm_put(Dst, 15431); 2879 dasm_put(Dst, 15607);
2847 } else { 2880 } else {
2848 dasm_put(Dst, 15444); 2881 dasm_put(Dst, 15620);
2849 if (vk) { 2882 if (vk) {
2850 dasm_put(Dst, 15450); 2883 dasm_put(Dst, 15626);
2851 } else { 2884 } else {
2852 dasm_put(Dst, 15466); 2885 dasm_put(Dst, 15642);
2853 } 2886 }
2854 dasm_put(Dst, 15474); 2887 dasm_put(Dst, 15650);
2855 if (cmov) { 2888 if (cmov) {
2856 dasm_put(Dst, 10211); 2889 dasm_put(Dst, 10392);
2857 } else { 2890 } else {
2858 dasm_put(Dst, 10217); 2891 dasm_put(Dst, 10398);
2859 } 2892 }
2860 if (!cmov) { 2893 if (!cmov) {
2861 dasm_put(Dst, 15479); 2894 dasm_put(Dst, 15655);
2862 } 2895 }
2863 } 2896 }
2864 if (op == BC_FORI) { 2897 if (op == BC_FORI) {
2865 if (LJ_DUALNUM) { 2898 if (LJ_DUALNUM) {
2866 dasm_put(Dst, 15485); 2899 dasm_put(Dst, 15661);
2867 } else { 2900 } else {
2868 dasm_put(Dst, 15490, -BCBIAS_J*4); 2901 dasm_put(Dst, 15666, -BCBIAS_J*4);
2869 } 2902 }
2870 } else if (op == BC_JFORI) { 2903 } else if (op == BC_JFORI) {
2871 dasm_put(Dst, 15500, -BCBIAS_J*4, BC_JLOOP); 2904 dasm_put(Dst, 15676, -BCBIAS_J*4, BC_JLOOP);
2872 } else if (op == BC_IFORL) { 2905 } else if (op == BC_IFORL) {
2873 if (LJ_DUALNUM) { 2906 if (LJ_DUALNUM) {
2874 dasm_put(Dst, 15514); 2907 dasm_put(Dst, 15690);
2875 } else { 2908 } else {
2876 dasm_put(Dst, 15519, -BCBIAS_J*4); 2909 dasm_put(Dst, 15695, -BCBIAS_J*4);
2877 } 2910 }
2878 } else { 2911 } else {
2879 dasm_put(Dst, 15510, BC_JLOOP); 2912 dasm_put(Dst, 15686, BC_JLOOP);
2880 } 2913 }
2881 if (LJ_DUALNUM) { 2914 if (LJ_DUALNUM) {
2882 dasm_put(Dst, 10140); 2915 dasm_put(Dst, 10321);
2883 } else { 2916 } else {
2884 dasm_put(Dst, 10905); 2917 dasm_put(Dst, 11081);
2885 } 2918 }
2886 if (sse) { 2919 if (sse) {
2887 dasm_put(Dst, 15529); 2920 dasm_put(Dst, 15705);
2888 } 2921 }
2889 break; 2922 break;
2890 2923
2891 case BC_ITERL: 2924 case BC_ITERL:
2892#if LJ_HASJIT 2925#if LJ_HASJIT
2893 dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2926 dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2894#endif 2927#endif
2895 break; 2928 break;
2896 2929
@@ -2899,33 +2932,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2899 break; 2932 break;
2900#endif 2933#endif
2901 case BC_IITERL: 2934 case BC_IITERL:
2902 dasm_put(Dst, 15540, LJ_TNIL); 2935 dasm_put(Dst, 15716, LJ_TNIL);
2903 if (op == BC_JITERL) { 2936 if (op == BC_JITERL) {
2904 dasm_put(Dst, 15555, BC_JLOOP); 2937 dasm_put(Dst, 15731, BC_JLOOP);
2905 } else { 2938 } else {
2906 dasm_put(Dst, 15569, -BCBIAS_J*4); 2939 dasm_put(Dst, 15745, -BCBIAS_J*4);
2907 } 2940 }
2908 dasm_put(Dst, 10254); 2941 dasm_put(Dst, 10430);
2909 break; 2942 break;
2910 2943
2911 case BC_LOOP: 2944 case BC_LOOP:
2912#if LJ_HASJIT 2945#if LJ_HASJIT
2913 dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2946 dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2914#endif 2947#endif
2915 break; 2948 break;
2916 2949
2917 case BC_ILOOP: 2950 case BC_ILOOP:
2918 dasm_put(Dst, 10256); 2951 dasm_put(Dst, 10432);
2919 break; 2952 break;
2920 2953
2921 case BC_JLOOP: 2954 case BC_JLOOP:
2922#if LJ_HASJIT 2955#if LJ_HASJIT
2923 dasm_put(Dst, 15585, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16); 2956 dasm_put(Dst, 15761, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
2924#endif 2957#endif
2925 break; 2958 break;
2926 2959
2927 case BC_JMP: 2960 case BC_JMP:
2928 dasm_put(Dst, 15694, -BCBIAS_J*4); 2961 dasm_put(Dst, 15870, -BCBIAS_J*4);
2929 break; 2962 break;
2930 2963
2931 /* -- Function headers -------------------------------------------------- */ 2964 /* -- Function headers -------------------------------------------------- */
@@ -2939,7 +2972,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2939 2972
2940 case BC_FUNCF: 2973 case BC_FUNCF:
2941#if LJ_HASJIT 2974#if LJ_HASJIT
2942 dasm_put(Dst, 15719, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); 2975 dasm_put(Dst, 15895, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
2943#endif 2976#endif
2944 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2977 case BC_FUNCV: /* NYI: compiled vararg functions. */
2945 break; 2978 break;
@@ -2949,47 +2982,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2949 break; 2982 break;
2950#endif 2983#endif
2951 case BC_IFUNCF: 2984 case BC_IFUNCF:
2952 dasm_put(Dst, 15740, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2985 dasm_put(Dst, 15916, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2953 if (op == BC_JFUNCF) { 2986 if (op == BC_JFUNCF) {
2954 dasm_put(Dst, 15770, BC_JLOOP); 2987 dasm_put(Dst, 15946, BC_JLOOP);
2955 } else { 2988 } else {
2956 dasm_put(Dst, 10256); 2989 dasm_put(Dst, 10432);
2957 } 2990 }
2958 dasm_put(Dst, 15779, LJ_TNIL); 2991 dasm_put(Dst, 15955, LJ_TNIL);
2959 break; 2992 break;
2960 2993
2961 case BC_JFUNCV: 2994 case BC_JFUNCV:
2962#if !LJ_HASJIT 2995#if !LJ_HASJIT
2963 break; 2996 break;
2964#endif 2997#endif
2965 dasm_put(Dst, 9400); 2998 dasm_put(Dst, 9409);
2966 break; /* NYI: compiled vararg functions. */ 2999 break; /* NYI: compiled vararg functions. */
2967 3000
2968 case BC_IFUNCV: 3001 case BC_IFUNCV:
2969 dasm_put(Dst, 15801, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 3002 dasm_put(Dst, 15977, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2970 if (op == BC_JFUNCV) { 3003 if (op == BC_JFUNCV) {
2971 dasm_put(Dst, 15770, BC_JLOOP); 3004 dasm_put(Dst, 15946, BC_JLOOP);
2972 } else { 3005 } else {
2973 dasm_put(Dst, 15892, -4+PC2PROTO(k)); 3006 dasm_put(Dst, 16068, -4+PC2PROTO(k));
2974 } 3007 }
2975 dasm_put(Dst, 15915, LJ_TNIL); 3008 dasm_put(Dst, 16091, LJ_TNIL);
2976 break; 3009 break;
2977 3010
2978 case BC_FUNCC: 3011 case BC_FUNCC:
2979 case BC_FUNCCW: 3012 case BC_FUNCCW:
2980 dasm_put(Dst, 15937, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 3013 dasm_put(Dst, 16113, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2981 if (op == BC_FUNCC) { 3014 if (op == BC_FUNCC) {
2982 dasm_put(Dst, 2372); 3015 dasm_put(Dst, 2381);
2983 } else { 3016 } else {
2984 dasm_put(Dst, 15967); 3017 dasm_put(Dst, 16143);
2985 } 3018 }
2986 dasm_put(Dst, 15975, DISPATCH_GL(vmstate), ~LJ_VMST_C); 3019 dasm_put(Dst, 16151, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2987 if (op == BC_FUNCC) { 3020 if (op == BC_FUNCC) {
2988 dasm_put(Dst, 15984); 3021 dasm_put(Dst, 16160);
2989 } else { 3022 } else {
2990 dasm_put(Dst, 15988, DISPATCH_GL(wrapf)); 3023 dasm_put(Dst, 16164, DISPATCH_GL(wrapf));
2991 } 3024 }
2992 dasm_put(Dst, 15993, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 3025 dasm_put(Dst, 16169, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2993 break; 3026 break;
2994 3027
2995 /* ---------------------------------------------------------------------- */ 3028 /* ---------------------------------------------------------------------- */
@@ -3017,7 +3050,7 @@ static int build_backend(BuildCtx *ctx)
3017 3050
3018 build_subroutines(ctx, cmov, sse); 3051 build_subroutines(ctx, cmov, sse);
3019 3052
3020 dasm_put(Dst, 16018); 3053 dasm_put(Dst, 16194);
3021 for (op = 0; op < BC__MAX; op++) 3054 for (op = 0; op < BC__MAX; op++)
3022 build_ins(ctx, (BCOp)op, op, cmov, sse); 3055 build_ins(ctx, (BCOp)op, op, cmov, sse);
3023 3056
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index dd409c5c..d6dfde88 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -114,10 +114,13 @@
114|.if not X64 // x86 stack layout. 114|.if not X64 // x86 stack layout.
115| 115|
116|.define CFRAME_SPACE, aword*7 // Delta for esp (see <--). 116|.define CFRAME_SPACE, aword*7 // Delta for esp (see <--).
117|.macro saveregs 117|.macro saveregs_
118| push ebp; push edi; push esi; push ebx 118| push edi; push esi; push ebx
119| sub esp, CFRAME_SPACE 119| sub esp, CFRAME_SPACE
120|.endmacro 120|.endmacro
121|.macro saveregs
122| push ebp; saveregs_
123|.endmacro
121|.macro restoreregs 124|.macro restoreregs
122| add esp, CFRAME_SPACE 125| add esp, CFRAME_SPACE
123| pop ebx; pop esi; pop edi; pop ebp 126| pop ebx; pop esi; pop edi; pop ebp
@@ -166,10 +169,13 @@
166|.elif X64WIN // x64/Windows stack layout 169|.elif X64WIN // x64/Windows stack layout
167| 170|
168|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--). 171|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--).
169|.macro saveregs 172|.macro saveregs_
170| push rbp; push rdi; push rsi; push rbx 173| push rdi; push rsi; push rbx
171| sub rsp, CFRAME_SPACE 174| sub rsp, CFRAME_SPACE
172|.endmacro 175|.endmacro
176|.macro saveregs
177| push rbp; saveregs_
178|.endmacro
173|.macro restoreregs 179|.macro restoreregs
174| add rsp, CFRAME_SPACE 180| add rsp, CFRAME_SPACE
175| pop rbx; pop rsi; pop rdi; pop rbp 181| pop rbx; pop rsi; pop rdi; pop rbp
@@ -206,10 +212,13 @@
206|.else // x64/POSIX stack layout 212|.else // x64/POSIX stack layout
207| 213|
208|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--). 214|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--).
209|.macro saveregs 215|.macro saveregs_
210| push rbp; push rbx; push r15; push r14 216| push rbx; push r15; push r14
211| sub rsp, CFRAME_SPACE 217| sub rsp, CFRAME_SPACE
212|.endmacro 218|.endmacro
219|.macro saveregs
220| push rbp; saveregs_
221|.endmacro
213|.macro restoreregs 222|.macro restoreregs
214| add rsp, CFRAME_SPACE 223| add rsp, CFRAME_SPACE
215| pop r14; pop r15; pop rbx; pop rbp 224| pop r14; pop r15; pop rbx; pop rbp
@@ -760,14 +769,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
760 | mov PC, [RB-12] // Restore PC from [cont|PC]. 769 | mov PC, [RB-12] // Restore PC from [cont|PC].
761 |.if X64 770 |.if X64
762 | movsxd RAa, dword [RB-16] // May be negative on WIN64 with debug. 771 | movsxd RAa, dword [RB-16] // May be negative on WIN64 with debug.
763 | test RA, RA 772#if LJ_HASFFI
764 | jz >1 773 | cmp RA, 1
774 | jbe >1
775#endif
765 | lea KBASEa, qword [=>0] 776 | lea KBASEa, qword [=>0]
766 | add RAa, KBASEa 777 | add RAa, KBASEa
767 |.else 778 |.else
768 | mov RA, dword [RB-16] 779 | mov RA, dword [RB-16]
769 | test RA, RA 780#if LJ_HASFFI
770 | jz >1 781 | cmp RA, 1
782 | jbe >1
783#endif
771 |.endif 784 |.endif
772 | mov LFUNC:KBASE, [BASE-8] 785 | mov LFUNC:KBASE, [BASE-8]
773 | mov KBASE, LFUNC:KBASE->pc 786 | mov KBASE, LFUNC:KBASE->pc
@@ -775,11 +788,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
775 | // BASE = base, RC = result, RB = meta base 788 | // BASE = base, RC = result, RB = meta base
776 | jmp RAa // Jump to continuation. 789 | jmp RAa // Jump to continuation.
777 | 790 |
778 |1: // Tail call from C function. 791#if LJ_HASFFI
792 |1:
793 | je ->cont_ffi_callback // cont = 1: return from FFI callback.
794 | // cont = 0: Tail call from C function.
779 | sub RB, BASE 795 | sub RB, BASE
780 | shr RB, 3 796 | shr RB, 3
781 | lea RD, [RB-1] 797 | lea RD, [RB-1]
782 | jmp ->vm_call_tail 798 | jmp ->vm_call_tail
799#endif
783 | 800 |
784 |->cont_cat: // BASE = base, RC = result, RB = mbase 801 |->cont_cat: // BASE = base, RC = result, RB = mbase
785 | movzx RA, PC_RB 802 | movzx RA, PC_RB
@@ -3700,6 +3717,103 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
3700 |//-- FFI helper functions ----------------------------------------------- 3717 |//-- FFI helper functions -----------------------------------------------
3701 |//----------------------------------------------------------------------- 3718 |//-----------------------------------------------------------------------
3702 | 3719 |
3720 |// Handler for callback functions. Callback slot number in ah/al.
3721 |->vm_ffi_callback:
3722#if LJ_HASFFI
3723 |.type CTSTATE, CTState, PC
3724 |.if not X64
3725 | sub esp, 16 // Leave room for SAVE_ERRF etc.
3726 |.endif
3727 | saveregs_ // ebp/rbp already saved. ebp now holds global_State *.
3728 | lea DISPATCH, [ebp+GG_G2DISP]
3729 | mov CTSTATE, GL:ebp->ctype_state
3730 | movzx eax, ax
3731 | mov CTSTATE->cb.slot, eax
3732 |.if X64
3733 | mov CTSTATE->cb.gpr[0], CARG1
3734 | mov CTSTATE->cb.gpr[1], CARG2
3735 | mov CTSTATE->cb.gpr[2], CARG3
3736 | mov CTSTATE->cb.gpr[3], CARG4
3737 | movsd qword CTSTATE->cb.fpr[0], xmm0
3738 | movsd qword CTSTATE->cb.fpr[1], xmm1
3739 | movsd qword CTSTATE->cb.fpr[2], xmm2
3740 | movsd qword CTSTATE->cb.fpr[3], xmm3
3741 |.if X64WIN
3742 | lea rax, [rsp+CFRAME_SIZE+4*8]
3743 |.else
3744 | lea rax, [rsp+CFRAME_SIZE]
3745 | mov CTSTATE->cb.gpr[4], CARG5
3746 | mov CTSTATE->cb.gpr[5], CARG6
3747 | movsd qword CTSTATE->cb.fpr[4], xmm4
3748 | movsd qword CTSTATE->cb.fpr[5], xmm5
3749 | movsd qword CTSTATE->cb.fpr[6], xmm6
3750 | movsd qword CTSTATE->cb.fpr[7], xmm7
3751 |.endif
3752 | mov CTSTATE->cb.stack, rax
3753 | mov CARG2, rsp
3754 |.else
3755 | lea eax, [esp+CFRAME_SIZE+16]
3756 | mov CTSTATE->cb.gpr[0], FCARG1
3757 | mov CTSTATE->cb.gpr[1], FCARG2
3758 | mov CTSTATE->cb.stack, eax
3759 | mov FCARG1, [esp+CFRAME_SIZE+12] // Move around misplaced retaddr/ebp.
3760 | mov FCARG2, [esp+CFRAME_SIZE+8]
3761 | mov SAVE_RET, FCARG1
3762 | mov SAVE_R4, FCARG2
3763 | mov FCARG2, esp
3764 |.endif
3765 | mov SAVE_PC, CTSTATE // Any value outside of bytecode is ok.
3766 | mov FCARG1, CTSTATE
3767 | call extern lj_ccallback_enter@8 // (CTState *cts, void *cf)
3768 | // lua_State * returned in eax (RD).
3769 | set_vmstate INTERP
3770 | mov BASE, L:RD->base
3771 | mov RD, L:RD->top
3772 | sub RD, BASE
3773 | mov LFUNC:RB, [BASE-8]
3774 | shr RD, 3
3775 | add RD, 1
3776 | ins_callt
3777#endif
3778 |
3779 |->cont_ffi_callback: // Return from FFI callback.
3780#if LJ_HASFFI
3781 | mov L:RA, SAVE_L
3782 | mov CTSTATE, [DISPATCH+DISPATCH_GL(ctype_state)]
3783 | mov aword CTSTATE->L, L:RAa
3784 | mov L:RA->base, BASE
3785 | mov L:RA->top, RB
3786 | mov FCARG1, CTSTATE
3787 | mov FCARG2, RC
3788 | call extern lj_ccallback_leave@8 // (CTState *cts, TValue *o)
3789 |.if X64
3790 | mov rax, CTSTATE->cb.gpr[0]
3791 | movsd xmm0, qword CTSTATE->cb.fpr[0]
3792 | jmp ->vm_leave_unw
3793 |.else
3794 | mov L:RB, SAVE_L
3795 | mov eax, CTSTATE->cb.gpr[0]
3796 | mov edx, CTSTATE->cb.gpr[1]
3797 | cmp dword CTSTATE->cb.gpr[2], 1
3798 | jb >7
3799 | je >6
3800 | fld qword CTSTATE->cb.fpr[0].d
3801 | jmp >7
3802 |6:
3803 | fld dword CTSTATE->cb.fpr[0].f
3804 |7:
3805 | mov ecx, L:RB->top
3806 | movzx ecx, word [ecx+6] // Get stack adjustment and copy up.
3807 | mov SAVE_L, ecx // Must be one slot above SAVE_RET
3808 | restoreregs
3809 | pop ecx // Move return addr from SAVE_RET.
3810 | add esp, [esp] // Adjust stack.
3811 | add esp, 16
3812 | push ecx
3813 | ret
3814 |.endif
3815#endif
3816 |
3703 |->vm_ffi_call@4: // Call C function via FFI. 3817 |->vm_ffi_call@4: // Call C function via FFI.
3704 | // Caveat: needs special frame unwinding, see below. 3818 | // Caveat: needs special frame unwinding, see below.
3705#if LJ_HASFFI 3819#if LJ_HASFFI
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 8add07c5..cd33cf87 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[17112] = { 15static const unsigned char build_actionlist[17321] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36, 17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15, 18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15,
@@ -49,795 +49,806 @@ static const unsigned char build_actionlist[17112] = {
49 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233, 49 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,
50 252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1, 50 252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,
51 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139, 51 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,
52 117,252,244,139,77,252,240,133,201,15,132,244,247,255,139,122,252,248,139, 52 117,252,244,255,139,77,252,240,255,131,252,249,1,15,134,244,247,255,139,122,
53 191,233,139,191,233,252,255,225,248,1,41,213,193,252,237,3,141,69,252,255, 53 252,248,139,191,233,139,191,233,252,255,225,255,248,1,15,132,244,32,41,213,
54 252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41,252, 54 193,252,237,3,141,69,252,255,252,233,244,33,255,248,34,15,182,78,252,255,
55 233,15,132,244,34,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137, 55 131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,247,217,193,252,233,
56 77,4,137,69,0,137,108,36,4,252,233,244,35,248,36,137,68,36,16,199,68,36,20, 56 3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,233,244,36,
57 237,141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199, 57 248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,
58 65,4,237,137,205,252,233,244,248,248,37,255,15,182,70,252,254,255,199,68, 58 133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,38,
59 36,20,237,137,68,36,16,255,252,242,15,42,192,252,242,15,17,68,36,16,255,137, 59 15,182,70,252,254,255,199,68,36,20,237,137,68,36,16,255,252,242,15,42,192,
60 68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244,247,248,38, 60 252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,
61 15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2, 61 68,36,16,252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,
62 137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,
63 232,251,1,1,139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,139,
64 104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,
65 193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141,177,233,41,
66 214,139,105,252,248,184,237,252,233,244,30,248,39,137,68,36,16,199,68,36,
67 20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,255,141,139,233,137,
68 41,199,65,4,237,137,205,252,233,244,248,248,40,15,182,70,252,254,255,141,
69 68,36,16,252,233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,
70 110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137, 62 110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,
71 44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133,192,15,132,244, 63 44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,
72 249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137,8,248,42,139, 64 249,248,35,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,
73 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141, 65 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141,
74 233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194,137,105,20, 66 233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252,233,244,
75 137,65,16,141,177,233,41,214,139,105,252,248,184,237,252,233,244,30,248,43, 67 30,248,40,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,
76 15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139,108,36,48,137,68, 68 15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,
77 36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139, 69 248,41,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,42,15,182,70,
78 149,233,255,131,252,248,1,15,135,244,44,248,4,141,118,4,15,130,244,252,248, 70 252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,
79 5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232, 71 4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,
80 131,198,4,193,232,16,252,255,36,171,248,45,131,198,4,129,120,253,4,239,15, 72 2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,
81 130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131, 73 12,202,137,104,4,137,8,248,43,139,6,15,182,204,15,182,232,131,198,4,193,232,
82 252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137, 74 16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,
83 149,233,255,137,116,36,24,232,251,1,4,252,233,244,3,248,48,255,131,252,238, 75 108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,
84 4,139,108,36,48,137,149,233,137,252,233,139,86,252,252,137,116,36,24,232, 76 184,237,252,233,244,30,248,44,15,182,110,252,252,141,4,194,141,12,202,137,
85 251,1,5,252,233,244,3,255,248,49,255,15,182,110,252,255,255,248,50,141,4, 77 108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,
86 199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233, 78 116,36,24,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248,
87 244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,141,4, 79 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,
88 194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137, 80 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,46,
89 68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233, 81 131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120,253,
90 137,116,36,24,232,251,1,6,139,149,233,133,192,15,132,244,42,248,44,137,193, 82 4,239,252,233,244,4,248,48,131,252,238,4,137,108,36,12,139,108,36,48,137,
91 41,208,137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108, 83 68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,251,1,4,252,
92 36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,1,7,139,149, 84 233,244,3,248,49,255,131,252,238,4,139,108,36,48,137,149,233,137,252,233,
93 233,255,133,192,15,133,244,44,15,183,70,252,254,139,12,194,252,233,244,57, 85 139,86,252,252,137,116,36,24,232,251,1,5,252,233,244,3,255,248,50,255,15,
94 255,252,233,244,44,255,248,58,141,76,202,8,248,29,137,76,36,20,137,68,36, 86 182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53,141,
95 16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36, 87 4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252,233,
96 137,149,233,137,116,36,24,232,251,1,8,139,149,233,139,76,36,20,139,68,36, 88 244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12,202,
97 16,139,105,252,248,131,192,1,57,215,15,132,244,59,137,202,137,114,252,252, 89 137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,
98 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248, 90 68,36,16,137,44,36,137,149,233,137,116,36,24,232,251,1,6,139,149,233,133,
99 60,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,1, 91 192,15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237,
100 9,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164, 92 252,233,244,28,248,57,139,108,36,48,137,149,233,141,20,194,137,252,233,137,
101 253,171,233,248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253,239, 93 116,36,24,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252,
102 15,131,244,62,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137,106, 94 254,139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8,
103 252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,193,8,139,105,4,137, 95 248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,
104 105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36, 96 76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,8,139,149,
105 20,252,233,244,63,248,64,129,252,248,239,15,130,244,62,139,106,4,184,237, 97 233,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,
106 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248, 98 60,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,
107 2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237, 99 198,4,252,255,36,171,248,61,139,108,36,48,137,149,233,137,202,137,252,233,
108 137,66,252,248,252,233,244,65,248,66,129,252,248,239,15,130,244,62,139,106, 100 137,116,36,24,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232,
109 4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233, 101 193,232,16,252,255,164,253,171,233,248,62,129,252,248,239,15,130,244,63,139,
110 248,2,133,252,237,199,66,252,252,237,15,132,244,65,139,131,233,199,66,252, 102 106,4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,20,137,106,
111 252,237,255,137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233, 103 252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1,
112 248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139, 104 131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,
113 137,233,133,201,15,133,244,3,252,233,244,65,248,5,139,105,4,129,252,253,239, 105 244,1,248,2,139,68,36,20,252,233,244,64,248,65,129,252,248,239,15,130,244,
114 255,15,132,244,65,139,1,137,106,252,252,137,66,252,248,252,233,244,65,248, 106 63,139,106,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,
115 6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,254,189,237,248, 107 137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252,
116 8,252,247,213,139,172,253,171,233,252,233,244,2,248,67,129,252,248,239,15, 108 199,66,252,252,237,137,66,252,248,252,233,244,66,248,67,129,252,248,239,15,
117 130,244,62,255,129,122,253,4,239,15,133,244,62,139,42,131,189,233,0,15,133, 109 130,244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,
118 244,62,129,122,253,12,239,15,133,244,62,139,66,8,137,133,233,139,114,252, 110 139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,15,132,244,66,139,
119 252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247, 111 131,233,199,66,252,252,237,255,137,106,252,248,139,141,233,35,136,233,105,
120 128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,255,252,233,244, 112 201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,
121 65,248,68,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244,62,139, 113 244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,66,248,5,139,105,
122 2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251, 114 4,129,252,253,239,255,15,132,244,66,139,1,137,106,252,252,137,66,252,248,
123 1,10,137,252,234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252, 115 252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,
124 252,252,233,244,65,248,69,129,252,248,239,15,133,244,62,129,122,253,4,239, 116 244,254,189,237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68,
125 255,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255,15,131,244, 117 129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,63,139,42,
126 62,255,252,242,15,16,2,252,233,244,71,255,221,2,252,233,244,72,255,248,73, 118 131,189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,
127 129,252,248,239,15,130,244,62,139,114,252,252,129,122,253,4,239,15,133,244, 119 133,233,139,114,252,252,199,66,252,252,237,137,106,252,248,252,246,133,233,
128 249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,129, 120 235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,
129 122,253,4,239,15,135,244,62,131,187,233,0,15,133,244,62,139,171,233,59,171, 121 1,255,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239,
130 233,255,15,130,244,247,232,244,74,248,1,139,108,36,48,137,149,233,137,116, 122 15,133,244,63,139,2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,
131 36,24,137,252,233,255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233, 123 137,84,36,8,232,251,1,10,137,252,234,139,40,139,64,4,139,114,252,252,137,
132 244,2,248,75,129,252,248,239,15,130,244,62,15,132,244,248,248,1,129,122,253, 124 106,252,248,137,66,252,252,252,233,244,66,248,70,129,252,248,239,15,133,244,
133 4,239,15,133,244,62,139,108,36,48,137,149,233,137,149,233,139,114,252,252, 125 63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,71,248,1,15,135,
134 139,2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,137,116,36,24,232,251,1, 126 244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244,72,255,221,2,252,
135 13,139,149,233,133,192,15,132,244,249,139,106,8,139,66,12,137,106,252,248, 127 233,244,73,255,248,74,129,252,248,239,15,130,244,63,139,114,252,252,129,122,
136 137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,248,76,184,237,255,252, 128 253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,
137 233,244,77,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252, 129 233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187,233,0,15,133,244,
138 233,244,65,248,78,129,252,248,239,15,130,244,62,139,42,129,122,253,4,239, 130 63,139,171,233,59,171,233,255,15,130,244,247,232,244,75,248,1,139,108,36,
139 15,133,244,62,255,131,189,233,0,15,133,244,62,255,139,106,252,248,139,133, 131 48,137,149,233,137,116,36,24,137,252,233,255,232,251,1,11,255,232,251,1,12,
140 233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237, 132 255,139,149,233,252,233,244,2,248,76,129,252,248,239,15,130,244,63,15,132,
141 252,233,244,77,248,79,129,252,248,239,15,130,244,62,129,122,253,4,239,15, 133 244,248,248,1,129,122,253,4,239,15,133,244,63,139,108,36,48,137,149,233,137,
142 133,244,62,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,192,1, 134 149,233,139,114,252,252,139,2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,
143 199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,189,0,0,252,240, 135 137,116,36,24,232,251,1,13,139,149,233,133,192,15,132,244,249,139,106,8,139,
144 63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252, 136 66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,
145 242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,36,221,90,252,248, 137 248,77,184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3,
146 139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129, 138 199,66,252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139,
147 120,253,4,239,15,132,244,80,139,40,139,64,4,137,42,137,66,4,252,233,244,76, 139 42,129,122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139,
148 248,2,131,189,233,0,15,132,244,80,137,252,233,137,213,137,194,232,251,1,14, 140 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
149 137,252,234,133,192,15,133,244,1,248,80,184,237,252,233,244,77,248,81,255, 141 199,66,12,237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63,
150 139,106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252, 142 129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,114,252,252,255,
151 248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255, 143 139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,
152 217,252,238,221,90,8,255,184,237,252,233,244,77,248,82,129,252,248,239,15, 144 8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,
153 130,244,62,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235, 145 242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,
154 131,229,1,1,252,238,252,233,244,28,248,83,129,252,248,239,15,130,244,62,129, 146 36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,
155 122,253,12,239,15,133,244,62,255,139,106,4,137,106,12,199,66,4,237,139,42, 147 3,133,233,248,1,129,120,253,4,239,15,132,244,81,139,40,139,64,4,137,42,137,
156 139,114,8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248, 148 66,4,252,233,244,77,248,2,131,189,233,0,15,132,244,81,137,252,233,137,213,
157 84,129,252,248,239,15,130,244,62,139,42,139,114,252,252,137,116,36,24,137, 149 137,194,232,251,1,14,137,252,234,133,192,15,133,244,1,248,81,184,237,252,
158 44,36,129,122,253,4,239,15,133,244,62,131,189,233,0,15,133,244,62,128,189, 150 233,244,78,248,82,255,139,106,252,248,139,133,233,139,114,252,252,199,66,
159 233,235,15,135,244,62,139,141,233,15,132,244,247,255,59,141,233,15,132,244, 151 252,252,237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,
160 62,248,1,141,116,193,252,240,59,181,233,15,135,244,62,137,181,233,139,108, 152 252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,78,248,
161 36,48,137,149,233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206, 153 83,129,252,248,239,15,130,244,63,141,74,8,131,232,1,190,237,248,1,15,182,
162 15,132,244,249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131, 154 171,233,193,252,237,235,131,229,1,1,252,238,252,233,244,28,248,84,129,252,
163 252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76, 155 248,239,15,130,244,63,129,122,253,12,239,15,133,244,63,255,139,106,4,137,
164 36,8,232,244,25,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129, 156 106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,141,74,16,131,232,2,
165 252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137, 157 190,237,252,233,244,1,248,85,129,252,248,239,15,130,244,63,139,42,139,114,
166 252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244, 158 252,252,137,116,36,24,137,44,36,129,122,253,4,239,15,133,244,63,131,189,233,
167 255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57, 159 0,15,133,244,63,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247,
168 252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24, 160 255,59,141,233,15,132,244,63,248,1,141,116,193,252,240,59,181,233,15,135,
169 137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132, 161 244,63,137,181,233,139,108,36,48,137,149,233,131,194,8,137,149,233,141,108,
170 244,13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8, 162 194,232,41,252,245,57,206,15,132,244,249,248,2,139,68,46,4,137,70,252,252,
171 137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139, 163 139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,
172 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233, 164 4,49,201,137,76,36,12,137,76,36,8,232,244,25,199,131,233,237,255,139,108,
173 252,233,244,4,248,85,139,106,252,248,139,173,233,139,114,252,252,137,116, 165 36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,
174 36,24,137,44,36,131,189,233,0,15,133,244,62,255,128,189,233,235,15,135,244, 166 233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,
175 62,139,141,233,15,132,244,247,59,141,233,15,132,244,62,248,1,141,116,193, 167 252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,
176 252,248,59,181,233,15,135,244,62,137,181,233,139,108,36,48,137,149,233,137, 168 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,
177 149,233,141,108,194,252,240,41,252,245,57,206,15,132,244,249,248,2,255,139, 169 252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,252,255,
178 68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133, 170 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,
179 244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,25,199,131, 171 252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,66,
180 233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254, 172 4,184,237,252,233,244,7,248,9,139,12,36,137,185,233,137,252,242,137,252,233,
181 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252, 173 232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,86,139,106,252,248,139,
182 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5, 174 173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,
183 139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248, 175 63,255,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247,59,141,233,
184 6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132, 176 15,132,244,63,248,1,141,116,193,252,248,59,181,233,15,135,244,63,137,181,
185 244,13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,15,248,9,139, 177 233,139,108,36,48,137,149,233,137,149,233,141,108,194,252,240,41,252,245,
186 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233, 178 57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,252,139,4,46,137,70,
187 252,233,244,4,248,86,139,108,36,48,252,247,133,233,237,15,132,244,62,255, 179 252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,
188 137,149,233,141,68,194,252,248,137,133,233,49,192,137,133,233,176,235,136, 180 36,12,137,76,36,8,232,244,25,199,131,233,237,139,108,36,48,139,52,36,139,
189 133,233,252,233,244,16,255,248,70,255,248,72,139,114,252,252,221,90,252,248, 181 149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,
190 252,233,244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4, 182 142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,
191 239,15,133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136, 183 15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,
192 244,247,248,88,248,70,139,114,252,252,199,66,252,252,237,137,106,252,248, 184 4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137,
193 252,233,244,65,248,1,139,114,252,252,199,66,252,252,0,0,224,65,199,66,252, 185 68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252,
194 248,0,0,0,0,252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131, 186 242,137,252,233,232,251,1,15,248,9,139,12,36,137,185,233,137,252,242,137,
195 244,62,255,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209, 187 252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,87,139,108,36,
196 1,15,84,193,248,71,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217, 188 48,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,
197 225,248,71,248,72,139,114,252,252,221,90,252,248,255,248,65,184,237,248,77, 189 133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71,
198 137,68,36,20,248,63,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15, 190 255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252,
199 135,244,252,15,182,78,252,253,252,247,209,141,20,202,139,6,15,182,204,15, 191 248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252,
200 182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,194,252,244,237, 192 253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114,252,
201 131,192,1,252,233,244,5,248,7,185,252,248,252,255,252,255,252,255,252,233, 193 252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252,252,
202 244,14,248,89,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,70, 194 199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15,
203 248,1,15,135,244,62,255,252,242,15,16,2,232,244,90,255,252,242,15,45,232, 195 135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,102,15,
204 129,252,253,0,0,0,128,15,133,244,70,252,242,15,42,205,102,15,46,193,15,138, 196 252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,72,139,114,252,
205 244,71,15,132,244,70,255,221,2,232,244,90,255,219,20,36,139,44,36,129,252, 197 252,252,242,15,17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252,
206 253,0,0,0,128,15,133,244,248,217,192,219,4,36,255,223,252,233,221,216,255, 198 252,221,90,252,248,255,248,66,184,237,248,78,137,68,36,20,248,64,252,247,
207 218,252,233,223,224,158,255,15,138,244,72,15,133,244,72,248,2,221,216,252, 199 198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,
208 233,244,70,255,248,91,255,252,242,15,16,2,232,244,92,255,221,2,232,244,92, 200 252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
209 255,248,93,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 201 255,36,171,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,
210 252,242,15,81,2,252,233,244,71,255,248,93,129,252,248,239,15,130,244,62,129, 202 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,
211 122,253,4,239,15,131,244,62,221,2,217,252,250,252,233,244,72,255,248,94,129, 203 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,
212 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252,237,221, 204 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,
213 2,217,252,241,252,233,244,72,248,95,129,252,248,239,15,130,244,62,129,122, 205 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,
214 253,4,239,15,131,244,62,217,252,236,221,2,217,252,241,252,233,244,72,248, 206 91,255,219,20,36,139,44,36,129,252,253,0,0,0,128,15,133,244,248,217,192,219,
215 96,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221, 207 4,36,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,138,244,73,
216 2,232,244,97,252,233,244,72,248,98,129,252,248,239,15,130,244,62,129,122, 208 15,133,244,73,248,2,221,216,252,233,244,71,255,248,92,255,252,242,15,16,2,
217 253,4,239,15,131,244,62,221,2,217,252,254,252,233,244,72,248,99,129,252,248, 209 232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239,15,130,244,63,
218 239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,255,252, 210 129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244,72,255,248,94,
219 233,244,72,248,100,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 211 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,
220 244,62,221,2,217,252,242,221,216,252,233,244,72,248,101,129,252,248,239,15, 212 250,252,233,244,73,255,248,95,129,252,248,239,15,130,244,63,129,122,253,4,
221 130,244,62,255,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217, 213 239,15,131,244,63,217,252,237,221,2,217,252,241,252,233,244,73,248,96,129,
222 232,222,225,217,252,250,217,252,243,252,233,244,72,248,102,129,252,248,239, 214 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,236,221,
223 15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,232, 215 2,217,252,241,252,233,244,73,248,97,129,252,248,239,255,15,130,244,63,129,
224 222,225,217,252,250,217,201,217,252,243,252,233,244,72,248,103,129,252,248, 216 122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244,73,248,99,129,252,
225 239,15,130,244,62,129,122,253,4,239,15,131,244,62,255,221,2,217,232,217,252, 217 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,254,252,
226 243,252,233,244,72,255,248,104,129,252,248,239,15,130,244,62,129,122,253, 218 233,244,73,248,100,129,252,248,239,255,15,130,244,63,129,122,253,4,239,15,
227 4,239,15,131,244,62,252,242,15,16,2,252,242,15,17,4,36,255,248,104,129,252, 219 131,244,63,221,2,217,252,255,252,233,244,73,248,101,129,252,248,239,15,130,
228 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,221,28,36,255, 220 244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242,221,216,252,233,
229 137,213,232,251,1,16,137,252,234,252,233,244,72,255,248,105,129,252,248,239, 221 244,73,248,102,129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,131,
230 15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,252,242,15, 222 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
231 17,4,36,255,248,105,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 223 233,244,73,248,103,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
232 244,62,221,2,221,28,36,255,137,213,232,251,1,17,137,252,234,252,233,244,72, 224 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
233 255,248,106,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 225 243,252,233,244,73,248,104,129,252,248,239,15,130,244,63,129,122,253,4,239,
234 252,242,15,16,2,252,242,15,17,4,36,255,248,106,129,252,248,239,15,130,244, 226 15,131,244,63,255,221,2,217,232,217,252,243,252,233,244,73,255,248,105,129,
235 62,129,122,253,4,239,15,131,244,62,221,2,221,28,36,255,137,213,232,251,1, 227 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2,
236 18,137,252,234,252,233,244,72,248,107,255,248,108,129,252,248,239,15,130, 228 252,242,15,17,4,36,255,248,105,129,252,248,239,15,130,244,63,129,122,253,
237 244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,139,106,252,248,252, 229 4,239,15,131,244,63,221,2,221,28,36,255,137,213,232,251,1,16,137,252,234,
238 242,15,89,133,233,252,233,244,71,255,248,108,129,252,248,239,15,130,244,62, 230 252,233,244,73,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,
239 129,122,253,4,239,15,131,244,62,221,2,139,106,252,248,220,141,233,252,233, 231 15,131,244,63,252,242,15,16,2,252,242,15,17,4,36,255,248,106,129,252,248,
240 244,72,255,248,109,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 232 239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,221,28,36,255,137,
241 244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,217,252,243,252,233, 233 213,232,251,1,17,137,252,234,252,233,244,73,255,248,107,129,252,248,239,15,
242 244,72,248,110,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 234 130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2,252,242,15,17,
243 62,129,122,253,12,239,255,15,131,244,62,221,66,8,221,2,217,252,253,221,217, 235 4,36,255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
244 252,233,244,72,248,111,129,252,248,239,15,130,244,62,139,106,4,129,252,253, 236 63,221,2,221,28,36,255,137,213,232,251,1,18,137,252,234,252,233,244,73,248,
245 239,15,131,244,62,139,114,252,252,139,2,137,106,252,252,137,66,252,248,209, 237 108,255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
246 229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252, 238 63,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,
247 254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197, 239 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
248 255,252,242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,106,252,252, 240 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,
249 129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255, 241 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
250 252,242,15,17,2,255,221,26,255,184,237,252,233,244,77,248,3,255,15,87,192, 242 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,
251 252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2, 243 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,
252 189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15,89,193,252,242, 244 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,
253 15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,90,216,76,36,16,221,90,252, 245 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252,
254 248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,112,129, 246 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,
255 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2, 247 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,
256 255,248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 248 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,
257 221,2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15, 249 108,36,16,219,68,36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,
258 132,244,250,255,15,40,224,232,244,113,252,242,15,92,224,248,1,252,242,15, 250 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,
259 17,66,252,248,252,242,15,17,34,255,217,192,232,244,113,220,252,233,248,1, 251 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,
260 221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249, 252 252,233,244,2,255,248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,
261 248,2,184,237,252,233,244,77,248,3,129,252,245,0,0,0,128,137,106,4,252,233, 253 102,15,112,201,81,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,
262 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 254 68,36,16,0,0,128,90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,
263 1,255,248,114,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 255 4,0,0,209,229,252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129,
264 62,129,122,253,12,239,15,131,244,62,221,66,8,221,2,248,1,217,252,248,223, 256 122,253,4,239,15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15,
265 224,158,15,138,244,1,221,217,252,233,244,72,255,248,115,129,252,248,239,15, 257 130,244,63,129,122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252,
266 130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244, 258 252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,
267 62,252,242,15,16,2,252,242,15,16,74,8,232,244,116,252,233,244,71,255,248, 259 244,114,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,
268 115,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 260 255,217,192,232,244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66,
269 253,12,239,15,131,244,62,221,2,221,66,8,232,244,116,252,233,244,72,255,248, 261 252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248,
270 117,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193, 262 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
271 15,131,244,70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248, 263 244,1,255,217,252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15,
272 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,252, 264 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
273 233,244,252,248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193,15,131,244, 265 63,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
274 71,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,62,252,242,15, 266 233,244,73,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
275 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248, 267 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,
276 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,221,2,248,5,57,193,15, 268 74,8,232,244,117,252,233,244,72,255,248,116,129,252,248,239,15,130,244,63,
277 131,244,72,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,255, 269 129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,
278 219,68,202,252,248,252,233,244,253,255,15,131,244,255,255,248,6,221,68,202, 270 66,8,232,244,117,252,233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239,
279 252,248,248,7,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252, 271 255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252,
280 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,118,185,2,0,0,0, 272 252,239,15,133,244,249,59,108,202,252,248,15,79,108,202,252,248,131,193,1,
281 129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,70,129, 273 252,233,244,1,248,3,15,135,244,63,255,252,233,244,252,248,4,15,135,244,63,
282 124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252, 274 255,252,242,15,16,2,248,5,57,193,15,131,244,72,129,124,253,202,252,252,239,
283 248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242,15,16,76, 275 255,15,130,244,252,15,135,244,63,252,242,15,42,76,202,252,248,252,233,244,
284 202,252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,219,252,233, 276 253,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,
285 218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201, 277 1,252,233,244,5,255,221,2,248,5,57,193,15,131,244,73,129,124,253,202,252,
286 248,2,221,216,88,255,248,9,221,216,252,233,244,62,255,248,119,129,252,248, 278 252,239,255,15,130,244,252,15,135,244,255,219,68,202,252,248,252,233,244,
287 239,15,130,244,62,129,122,253,4,239,15,133,244,62,139,42,255,139,173,233, 279 253,255,15,131,244,255,255,248,6,221,68,202,252,248,248,7,255,219,252,233,
288 252,233,244,70,255,252,242,15,42,133,233,252,233,244,71,255,219,133,233,252, 280 219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,
289 233,244,72,255,248,120,129,252,248,239,15,133,244,62,129,122,253,4,239,15, 281 248,2,221,216,88,255,248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244,
290 133,244,62,139,42,139,114,252,252,131,189,233,1,15,130,244,80,15,182,173, 282 250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133,
291 233,255,252,242,15,42,197,252,233,244,71,255,137,108,36,16,219,68,36,16,252, 283 244,249,59,108,202,252,248,15,76,108,202,252,248,131,193,1,252,233,244,1,
292 233,244,72,255,248,121,139,171,233,59,171,233,15,130,244,247,232,244,74,248, 284 248,3,15,135,244,63,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,
293 1,129,252,248,239,15,133,244,62,129,122,253,4,239,255,15,133,244,62,139,42, 285 15,95,193,131,193,1,252,233,244,5,255,219,252,233,218,209,221,217,255,80,
294 129,252,253,252,255,0,0,0,15,135,244,62,137,108,36,20,255,15,131,244,62,252, 286 221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,255,
295 242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,62,137,108,36,20,255,15, 287 248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129,
296 131,244,62,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,62,255, 288 122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252,
297 199,68,36,8,1,0,0,0,141,68,36,20,248,122,139,108,36,48,137,149,233,137,68, 289 242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121,
298 36,4,137,44,36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199, 290 129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139,
299 66,252,252,237,137,66,252,248,252,233,244,65,248,123,139,171,233,59,171,233, 291 114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42,
300 15,130,244,247,232,244,74,248,1,199,68,36,20,252,255,252,255,252,255,252, 292 197,252,233,244,72,255,137,108,36,16,219,68,36,16,252,233,244,73,255,248,
301 255,129,252,248,239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15, 293 122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,252,248,239,
302 133,244,62,139,106,16,137,108,36,20,255,15,131,244,62,252,242,15,44,106,16, 294 15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129,252,253,252,
303 137,108,36,20,255,15,131,244,62,221,66,16,219,92,36,20,255,248,1,129,122, 295 255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,252,242,15,44,42,
304 253,4,239,15,133,244,62,129,122,253,12,239,255,139,42,137,108,36,12,139,173, 296 129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,221,
305 233,255,139,74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36, 297 2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,63,255,199,68,36,8,
306 8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248, 298 1,0,0,0,141,68,36,20,248,123,139,108,36,48,137,149,233,137,68,36,4,137,44,
307 3,139,108,36,12,41,200,15,140,244,124,141,172,253,13,233,131,192,1,248,4, 299 36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252,
308 137,68,36,8,137,232,252,233,244,122,248,5,15,140,244,252,141,68,40,1,252, 300 237,137,66,252,248,252,233,244,66,248,124,139,171,233,59,171,233,15,130,244,
309 233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233, 301 247,232,244,75,248,1,199,68,36,20,252,255,252,255,252,255,252,255,129,252,
310 131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,124,49,192,252, 302 248,239,15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63,
311 233,244,4,248,125,129,252,248,239,15,130,244,62,139,171,233,59,171,233,15, 303 139,106,16,137,108,36,20,255,15,131,244,63,252,242,15,44,106,16,137,108,36,
312 130,244,247,232,244,74,248,1,255,129,122,253,4,239,15,133,244,62,129,122, 304 20,255,15,131,244,63,221,66,16,219,92,36,20,255,248,1,129,122,253,4,239,15,
313 253,12,239,139,42,255,15,133,244,62,139,66,8,255,15,131,244,62,252,242,15, 305 133,244,63,129,122,253,12,239,255,139,42,137,108,36,12,139,173,233,255,139,
314 44,66,8,255,15,131,244,62,221,66,8,219,92,36,20,139,68,36,20,255,133,192, 306 74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,8,255,139,
315 15,142,244,124,131,189,233,1,15,130,244,124,15,133,244,126,57,131,233,15, 307 68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,
316 130,244,126,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197, 308 36,12,41,200,15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36,
317 1,131,232,1,15,133,244,1,139,131,233,252,233,244,122,248,127,129,252,248, 309 8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2,
318 239,255,15,130,244,62,139,171,233,59,171,233,15,130,244,247,232,244,74,248, 310 248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,
319 1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,133,192,15,132,244,124, 311 15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4,
320 57,131,233,15,130,244,128,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 312 248,126,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,
321 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240, 313 232,244,75,248,1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139,
322 139,116,36,20,252,233,244,122,248,129,129,252,248,239,15,130,244,62,139,171, 314 42,255,15,133,244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15,
323 233,59,171,233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244, 315 131,244,63,221,66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,125,
324 62,139,42,139,133,233,57,131,233,255,15,130,244,128,129,197,239,137,116,36, 316 131,189,233,1,15,130,244,125,15,133,244,127,57,131,233,15,130,244,127,15,
325 20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249, 317 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,
326 65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136, 318 133,244,1,139,131,233,252,233,244,123,248,128,129,252,248,239,255,15,130,
327 12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,122, 319 244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,122,253,
328 248,130,129,252,248,239,15,130,244,62,255,139,171,233,59,171,233,15,130,244, 320 4,239,15,133,244,63,139,42,139,133,233,133,192,15,132,244,125,57,131,233,
329 247,232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,57, 321 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,248,1,255,
330 131,233,15,130,244,128,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 322 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,
331 252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131, 323 36,20,252,233,244,123,248,130,129,252,248,239,15,130,244,63,139,171,233,59,
332 252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1, 324 171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,
333 15,137,244,1,137,252,240,139,116,36,20,252,233,244,122,248,131,129,252,248, 325 42,139,133,233,57,131,233,255,15,130,244,129,129,197,239,137,116,36,20,137,
334 239,15,130,244,62,129,122,253,4,239,15,133,244,62,137,213,139,10,232,251, 326 68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,
335 1,20,137,252,234,255,137,197,252,233,244,70,255,252,242,15,42,192,252,233, 327 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,
336 244,71,255,137,4,36,219,4,36,252,233,244,72,255,248,132,129,252,248,239,15, 328 3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,123,248,131,
337 130,244,62,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,88,248, 329 129,252,248,239,15,130,244,63,255,139,171,233,59,171,233,15,130,244,247,232,
338 1,15,135,244,62,255,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112, 330 244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233,
339 201,81,252,242,15,88,193,102,15,126,197,255,221,2,199,68,36,16,0,0,192,89, 331 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,
340 216,68,36,16,221,28,36,255,139,44,36,255,252,233,244,88,255,248,133,129,252, 332 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,
341 248,239,15,130,244,62,255,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 333 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,
342 255,199,68,36,16,0,0,192,89,255,15,133,244,247,139,42,252,233,244,248,248, 334 1,137,252,240,139,116,36,20,252,233,244,123,248,132,129,252,248,239,15,130,
343 1,15,135,244,62,255,252,242,15,16,2,252,242,15,88,193,102,15,126,197,255, 335 244,63,129,122,253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252,
344 221,2,216,68,36,16,221,28,36,139,44,36,255,248,2,137,68,36,20,141,68,194, 336 234,255,137,197,252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,137,
345 252,240,248,1,57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248,35, 337 4,36,219,4,36,252,233,244,73,255,248,133,129,252,248,239,15,130,244,63,129,
346 40,131,232,8,252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255,252, 338 122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248,1,15,135,244,63,
347 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16, 339 255,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,
348 221,28,36,35,44,36,255,131,232,8,252,233,244,1,248,135,129,252,248,239,15, 340 15,88,193,102,15,126,197,255,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,
349 130,244,62,255,15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135, 341 28,36,255,139,44,36,255,252,233,244,89,255,248,134,129,252,248,239,15,130,
350 244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221, 342 244,63,255,189,0,0,56,67,102,15,110,205,102,15,112,201,81,255,199,68,36,16,
351 0,216,68,36,16,221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,136,129, 343 0,0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,
352 252,248,239,15,130,244,62,255,15,133,244,248,51,40,131,232,8,252,233,244, 344 255,252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,221,2,216,68,36,
353 1,248,2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193, 345 16,221,28,36,139,44,36,255,248,2,137,68,36,20,141,68,194,252,240,248,1,57,
354 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,131,232,8,252,233,244, 346 208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8,252,
355 1,248,137,129,252,248,239,15,130,244,62,129,122,253,4,239,255,221,2,199,68, 347 233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252,242,15,16,0,252,
356 36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233, 348 242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,221,28,36,35,44,
357 244,88,248,138,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2, 349 36,255,131,232,8,252,233,244,1,248,136,129,252,248,239,15,130,244,63,255,
358 252,247,213,255,248,88,252,242,15,42,197,252,233,244,71,255,248,88,137,44, 350 15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252,
359 36,219,4,36,252,233,244,72,255,248,134,139,68,36,20,252,233,244,62,255,248, 351 242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,
360 139,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2,129,122,253, 352 221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,137,129,252,248,239,15,
361 12,239,15,133,244,62,139,74,8,255,248,139,129,252,248,239,15,130,244,62,129, 353 130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135,
362 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16, 354 244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,221,
363 2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, 355 0,216,68,36,16,221,28,36,51,44,36,255,131,232,8,252,233,244,1,248,138,129,
364 15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,139,129, 356 252,248,239,15,130,244,63,129,122,253,4,239,255,221,2,199,68,36,16,0,0,192,
365 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12, 357 89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233,244,89,248,139,
366 239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221, 358 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,252,247,213,255,
367 92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,229,252,233, 359 248,89,252,242,15,42,197,252,233,244,72,255,248,89,137,44,36,219,4,36,252,
368 244,88,255,248,140,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248, 360 233,244,73,255,248,135,139,68,36,20,252,233,244,63,255,248,140,129,252,248,
369 140,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 361 239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,244,
370 253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67, 362 63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
371 102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102, 363 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,
372 15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,130,244,62,129,122, 364 74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
373 253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,199, 365 242,15,88,202,102,15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,
374 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76, 366 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
375 36,8,139,44,36,255,211,252,237,252,233,244,88,255,248,141,129,252,248,239, 367 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
376 15,130,244,62,129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,62, 368 36,16,221,28,36,139,76,36,8,139,44,36,255,211,229,252,233,244,89,255,248,
377 129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242, 369 141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248,
378 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81, 370 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,
379 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,248, 371 244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,
380 141,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 372 15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,
381 253,12,239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36, 373 201,255,248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
382 16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,252,253, 374 63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16,0,0,192,89,
383 252,233,244,88,255,248,142,129,252,248,239,15,130,244,62,129,122,253,4,239, 375 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,
384 255,248,142,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 376 211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129,
385 129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,189,0, 377 122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239,
386 0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88, 378 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,
387 202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239,15,130,244, 379 16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
388 62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,2, 380 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239,
389 221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221, 381 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
390 28,36,139,76,36,8,139,44,36,255,211,197,252,233,244,88,255,248,143,129,252, 382 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
391 248,239,15,130,244,62,129,122,253,4,239,255,248,143,129,252,248,239,15,130, 383 36,16,221,28,36,139,76,36,8,139,44,36,255,211,252,253,252,233,244,89,255,
392 244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252, 384 248,143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,
393 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 385 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,
394 81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255, 386 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,
395 248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129, 387 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,
396 122,253,12,239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68, 388 102,15,126,201,255,248,143,129,252,248,239,15,130,244,63,129,122,253,4,239,
397 36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,205, 389 15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16,
398 252,233,244,88,248,126,184,237,252,233,244,62,248,128,184,237,248,62,139, 390 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,
399 108,36,48,139,114,252,252,137,116,36,24,137,149,233,141,68,194,252,248,141, 391 44,36,255,211,197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,
400 136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251,137,44,36,252, 392 129,122,253,4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,
401 255,144,233,139,149,233,133,192,15,143,244,77,248,1,255,139,141,233,41,209, 393 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,
402 193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,32,139,181,233, 394 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
403 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,32,137,209, 395 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,144,129,252,248,239,
404 252,247,198,237,15,133,244,249,15,182,110,252,253,252,247,213,141,20,252, 396 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
405 234,252,233,244,28,248,3,137,252,245,131,229,252,248,41,252,234,252,233,244, 397 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
406 28,248,5,186,237,137,252,233,232,251,1,0,139,149,233,49,192,252,233,244,1, 398 36,16,221,28,36,139,76,36,8,139,44,36,255,211,205,252,233,244,89,248,127,
407 248,74,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,233,255,141,68, 399 184,237,252,233,244,63,248,129,184,237,248,63,139,108,36,48,139,114,252,252,
408 194,252,248,137,252,233,137,133,233,232,251,1,21,139,149,233,139,133,233, 400 137,116,36,24,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,
409 41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,144,255,15,182,131,233, 401 66,252,248,59,141,233,15,135,244,251,137,44,36,252,255,144,233,139,149,233,
410 168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,252, 402 133,192,15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
411 255,139,233,252,233,244,247,255,248,145,15,182,131,233,168,235,15,133,244, 403 141,65,1,139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233,
412 251,252,233,244,247,248,146,15,182,131,233,168,235,15,133,244,251,168,235, 404 15,182,205,131,198,4,252,255,36,171,248,33,137,209,252,247,198,237,15,133,
413 15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244,251,248, 405 244,249,15,182,110,252,253,252,247,213,141,20,252,234,252,233,244,28,248,
414 1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,232,251,1,22,248, 406 3,137,252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137,
415 3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,252,15,183,70, 407 252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,137,108,36,
416 252,254,252,255,164,253,171,233,248,147,131,198,4,139,77,232,137,76,36,20, 408 16,139,108,36,48,137,116,36,24,137,149,233,255,141,68,194,252,248,137,252,
417 252,233,244,4,248,148,255,139,106,252,248,139,173,233,15,182,133,233,141, 409 233,137,133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,
418 4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,233,137,171, 410 192,1,139,108,36,16,85,195,248,145,255,15,182,131,233,168,235,15,133,244,
419 233,137,116,36,24,232,251,1,23,252,233,244,3,255,248,149,137,116,36,24,255, 411 251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,
420 248,150,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,248,139,108, 412 244,247,255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247,
421 36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,1,24,199,68, 413 248,147,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,
422 36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,133,233,41, 414 255,139,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,48,
423 208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,248,151,255, 415 137,149,233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,
424 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125, 416 15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,
425 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233, 417 253,171,233,248,148,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,149,
426 137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15,17,117,208,252, 418 255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,48,137,
427 242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242,15,17, 419 149,233,137,133,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,
428 85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,139,147,233, 420 251,1,23,252,233,244,3,255,248,150,137,116,36,24,255,248,151,255,137,116,
429 137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,139,233,232, 421 36,24,131,206,1,248,1,255,141,68,194,252,248,139,108,36,48,137,149,233,137,
430 251,1,25,139,141,233,129,225,239,137,204,137,169,233,139,149,233,139,177, 422 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,24,0,0,0,0,255,131,
431 233,255,248,152,255,133,192,15,136,244,249,137,68,36,20,139,122,252,248,139, 423 230,252,254,255,139,149,233,137,193,139,133,233,41,208,137,205,15,182,78,
432 191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204, 424 252,253,193,232,3,131,192,1,252,255,229,248,152,255,85,141,108,36,12,85,83,
433 15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36, 425 82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,252,248,
434 20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,251,1,26, 426 139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,252,236,
435 255,248,90,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37, 427 239,252,242,15,17,125,216,252,242,15,17,117,208,252,242,15,17,109,200,252,
436 252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, 428 242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,
437 68,36,8,195,255,248,153,102,15,252,239,210,102,15,118,210,102,15,115,210, 429 77,168,252,242,15,17,69,160,139,171,233,139,147,233,137,171,233,199,131,233,
430 0,0,0,0,137,149,233,141,84,36,16,141,139,233,232,251,1,25,139,141,233,129,
431 225,239,137,204,137,169,233,139,149,233,139,177,233,255,248,153,255,133,192,
432 15,136,244,249,137,68,36,20,139,122,252,248,139,191,233,139,191,233,199,131,
433 233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
434 16,129,252,253,239,15,130,244,248,139,68,36,20,248,2,252,255,36,171,248,3,
435 252,247,216,137,252,233,137,194,232,251,1,26,255,248,91,255,217,124,36,4,
436 137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,
437 36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,154,102,
438 15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,
439 102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
440 15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,
441 63,102,15,110,208,102,15,112,210,81,252,242,15,194,193,1,102,15,84,194,252,
442 242,15,92,200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,
443 184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,
444 6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,155,102,15,252,239,210,
445 102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,
446 81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,
447 242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,
448 110,208,102,15,112,210,81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
449 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12,
450 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
451 68,36,8,195,255,248,156,102,15,252,239,210,102,15,118,210,102,15,115,210,
438 1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202, 452 1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,
439 102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92, 453 102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,
440 203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252, 454 242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,15,112,219,81,252,242,
441 242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248, 455 15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,
442 92,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255, 456 1,195,248,157,255,15,40,232,252,242,15,94,193,102,15,252,239,210,102,15,118,
443 252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8, 457 210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,
444 195,255,248,154,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0, 458 224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,
445 0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46, 459 227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,63,102,15,110,208,102,
446 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 460 15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,
447 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15, 461 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,
448 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,113,255, 462 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,
449 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217, 463 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
450 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,155,102,15,252, 464 252,252,217,108,36,4,222,201,222,252,233,195,255,248,98,217,252,234,222,201,
451 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102, 465 248,158,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4,
452 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 466 0,0,128,252,255,15,132,244,248,248,159,217,192,217,252,252,220,252,233,217,
453 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102, 467 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
454 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15, 468 217,252,238,195,255,248,117,219,84,36,4,219,68,36,4,255,223,252,233,255,221,
455 92,200,102,15,86,202,15,40,193,248,1,195,248,156,255,15,40,232,252,242,15, 469 252,233,223,224,158,255,15,133,244,254,15,138,244,255,221,216,139,68,36,4,
456 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102, 470 131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209,
457 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134, 471 232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209,
458 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184, 472 232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,4,255,222,201,248,
459 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102, 473 5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,241,252,247,216,131,
460 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193, 474 252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,232,195,248,8,217,
461 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216, 475 84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0,0,252,255,15,132,244,
462 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 476 248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252,255,15,132,244,250,217,
463 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195, 477 252,241,252,233,244,159,248,9,255,217,232,255,223,252,234,255,221,252,234,
464 255,248,97,217,252,234,222,201,248,157,217,84,36,4,129,124,36,4,0,0,128,127, 478 223,224,158,255,15,132,244,247,217,201,248,1,221,216,195,248,2,217,225,217,
465 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,158,217,192, 479 232,255,15,132,244,249,221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,
466 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 480 209,200,51,68,36,4,15,137,244,249,217,201,248,3,221,217,217,225,195,248,4,
467 217,248,1,195,248,2,221,216,217,252,238,195,255,248,116,219,84,36,4,219,68, 481 131,124,36,4,0,15,141,244,3,221,216,221,216,133,192,15,132,244,251,217,252,
468 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138, 482 238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,4,195,255,248,117,255,248,
469 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0, 483 160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,
470 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 484 244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,
471 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233, 485 248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
472 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232, 486 15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,
473 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221, 487 252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,
474 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224, 488 132,244,5,15,130,244,253,252,247,216,232,244,1,184,0,0,252,240,63,102,15,
475 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0, 489 110,200,102,15,112,201,81,252,242,15,94,200,15,40,193,195,248,7,184,0,0,252,
476 0,252,255,15,132,244,250,217,252,241,252,233,244,158,248,9,255,217,232,255, 490 240,63,102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,
477 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1, 491 252,242,15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,
478 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217, 492 61,0,0,224,252,255,15,132,244,248,248,1,131,124,36,4,0,15,133,244,247,255,
479 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201, 493 139,68,36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,
480 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216, 494 1,221,68,36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,
481 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217, 495 201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,
482 68,36,4,195,255,248,116,255,248,159,252,242,15,45,193,252,242,15,42,208,102, 496 16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,
483 15,46,202,15,133,244,254,15,138,244,255,248,160,131,252,248,1,15,142,244, 497 102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,
484 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244, 498 102,15,118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,
485 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232, 499 208,102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,
486 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252, 500 136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,
487 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232, 501 192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,
488 244,1,184,0,0,252,240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200, 502 192,195,248,5,102,15,80,193,133,192,15,132,244,3,255,15,87,192,195,248,162,
489 15,40,193,195,248,7,184,0,0,252,240,63,102,15,110,192,102,15,112,192,81,195, 503 255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,
490 248,8,252,242,15,17,76,36,12,252,242,15,17,68,36,4,131,124,36,12,0,15,133, 504 244,248,232,244,91,252,233,244,253,248,1,232,244,93,252,233,244,253,248,2,
491 244,247,139,68,36,16,209,224,61,0,0,224,252,255,15,132,244,248,248,1,131, 505 131,252,248,3,15,132,244,247,15,135,244,248,232,244,114,255,252,233,244,253,
492 124,36,4,0,15,133,244,247,255,139,68,36,8,209,224,15,132,244,250,61,0,0,224, 506 248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,
493 252,255,15,132,244,251,248,1,221,68,36,12,221,68,36,4,217,252,241,217,192, 507 221,68,36,4,131,252,248,5,15,130,244,98,15,132,244,158,248,2,131,252,248,
494 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 508 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,
495 217,221,92,36,4,252,242,15,16,68,36,4,195,248,9,184,0,0,252,240,63,102,15, 509 217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
496 110,208,102,15,112,210,81,102,15,46,194,15,132,244,247,15,40,193,248,1,195, 510 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
497 248,2,102,15,252,239,210,102,15,118,210,102,15,115,210,1,102,15,84,194,184, 511 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
498 0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194,15,132,244, 512 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,
499 1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184, 513 91,15,132,244,93,131,252,248,3,15,130,244,114,15,135,244,248,217,252,250,
500 0,0,252,240,127,102,15,110,192,102,15,112,192,81,195,248,4,102,15,80,193, 514 195,248,2,131,252,248,5,15,130,244,98,15,132,244,158,131,252,248,7,15,132,
501 133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244, 515 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,
502 3,255,15,87,192,195,248,161,255,139,68,36,12,252,242,15,16,68,36,4,131,252, 516 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,
503 248,1,15,132,244,247,15,135,244,248,232,244,90,252,233,244,253,248,1,232, 517 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,
504 244,92,252,233,244,253,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 518 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,
505 232,244,113,255,252,233,244,253,248,1,252,242,15,81,192,248,7,252,242,15, 519 216,195,255,248,9,204,255,248,163,255,139,68,36,20,252,242,15,16,68,36,4,
506 17,68,36,4,221,68,36,4,195,248,2,221,68,36,4,131,252,248,5,15,130,244,97, 520 252,242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,
507 15,132,244,157,248,2,131,252,248,7,15,132,244,247,15,135,244,248,217,252, 521 15,88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,
508 237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131, 522 193,252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,
509 252,248,9,15,132,244,247,15,135,244,248,255,217,252,236,217,201,217,252,241, 523 15,89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,
510 195,248,1,217,252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244, 524 248,5,15,132,244,247,255,15,135,244,248,232,244,157,252,233,244,7,248,1,90,
511 255,217,252,255,195,248,1,217,252,242,221,216,195,255,139,68,36,12,221,68, 525 232,244,117,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
512 36,4,131,252,248,1,15,130,244,90,15,132,244,92,131,252,248,3,15,130,244,113, 526 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,
513 15,135,244,248,217,252,250,195,248,2,131,252,248,5,15,130,244,97,15,132,244, 527 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,
514 157,131,252,248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252, 528 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,
515 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132, 529 15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
516 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 530 2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,252,233,
517 252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255, 531 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,
518 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,162,255,139,68,36, 532 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
519 20,252,242,15,16,68,36,4,252,242,15,16,76,36,12,131,252,248,1,15,132,244, 533 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
520 247,15,135,244,248,252,242,15,88,193,248,7,252,242,15,17,68,36,4,221,68,36, 534 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,157,15,132,
521 4,195,248,1,252,242,15,92,193,252,233,244,7,248,2,131,252,248,3,15,132,244, 535 244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
522 247,15,135,244,248,252,242,15,89,193,252,233,244,7,248,1,252,242,15,94,193, 536 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
523 252,233,244,7,248,2,131,252,248,5,15,132,244,247,255,15,135,244,248,232,244, 537 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
524 156,252,233,244,7,248,1,90,232,244,116,82,252,233,244,7,248,2,131,252,248, 538 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
525 7,15,132,244,247,15,135,244,248,184,0,0,0,128,102,15,110,200,102,15,112,201, 539 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
526 81,15,87,193,252,233,244,7,248,1,102,15,252,239,201,102,15,118,201,102,15, 540 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
527 115,209,1,15,84,193,252,233,244,7,248,2,255,131,252,248,9,15,135,244,248, 541 244,248,217,201,248,2,221,216,195,255,248,164,156,90,137,209,129,252,242,
528 221,68,36,4,221,68,36,12,15,132,244,247,217,252,243,195,248,1,217,201,217, 542 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
529 252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,252, 543 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,165,
530 242,15,93,193,252,233,244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204, 544 255,204,248,166,255,131,252,236,16,87,86,83,131,252,236,28,141,157,233,139,
531 255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15, 545 181,233,15,183,192,137,134,233,141,132,253,36,233,137,142,233,137,150,233,
532 135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132, 546 137,134,233,139,140,253,36,233,139,148,253,36,233,137,76,36,44,137,84,36,
533 244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248, 547 40,137,226,137,116,36,24,137,252,241,232,251,1,27,199,131,233,237,139,144,
534 5,15,130,244,156,15,132,244,116,131,252,248,7,15,132,244,247,15,135,244,248, 548 233,139,128,233,41,208,139,106,252,248,193,232,3,131,192,1,139,181,233,139,
535 255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15, 549 14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,248,32,255,139,
536 132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221, 550 76,36,48,139,179,233,137,142,233,137,145,233,137,169,233,137,252,241,137,
537 217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233, 551 194,232,251,1,28,139,108,36,48,139,134,233,139,150,233,131,190,233,1,15,130,
538 219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223, 552 244,253,15,132,244,252,221,134,233,252,233,244,253,248,6,217,134,233,248,
539 224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225, 553 7,139,141,233,15,183,73,6,137,76,36,48,131,196,28,91,94,95,93,89,3,36,36,
540 223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,163, 554 131,196,16,81,195,255,248,167,255,85,137,229,83,137,203,43,163,233,255,137,
541 156,90,137,209,129,252,242,0,0,32,0,82,157,156,90,49,192,57,209,15,132,244, 555 163,233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,139,132,253,
542 247,139,68,36,4,87,83,15,162,139,124,36,16,137,7,137,95,4,137,79,8,137,87, 556 139,233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233,139,147,233,
543 12,91,95,248,1,195,248,164,255,204,248,165,255,85,137,229,83,137,203,43,163, 557 252,255,147,233,137,131,233,137,147,233,128,187,233,1,15,130,244,253,15,132,
544 233,255,137,163,233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1, 558 244,252,221,155,233,252,233,244,253,248,6,255,217,155,233,248,7,255,41,163,
545 139,132,253,139,233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233, 559 233,255,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239,15,133,244,
546 139,147,233,252,255,147,233,137,131,233,137,147,233,128,187,233,1,15,130, 560 253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4,59,44,194,255,
547 244,253,15,132,244,252,221,155,233,252,233,244,253,248,6,255,217,155,233, 561 15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,
548 248,7,255,41,163,233,255,139,93,252,252,201,195,255,249,255,129,124,253,202, 562 248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,
549 4,239,15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,131, 563 232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,44,129,124,253,194,
550 198,4,59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,255, 564 4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244,248,
551 255,15,142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,9, 565 255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252,242,
552 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15, 566 15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,46,193,255,15,134,244,9,
553 135,244,43,129,124,253,194,4,239,15,130,244,247,15,133,244,43,255,252,242, 567 255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,
554 15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,248, 568 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124,
555 8,15,135,244,43,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,4,102, 569 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,198,4,
556 15,46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,131,244, 570 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,198,4,
557 9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,202,4,239, 571 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,
558 15,131,244,43,129,124,253,194,4,239,15,131,244,43,255,248,1,252,242,15,16, 572 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
559 4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221, 573 16,252,255,36,171,255,139,108,194,4,131,198,4,255,129,252,253,239,15,133,
560 4,194,248,3,131,198,4,255,15,134,244,247,255,15,135,244,247,255,15,130,244, 574 244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,
561 247,255,15,131,244,247,255,15,183,70,252,254,141,180,253,134,233,248,1,139, 575 133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
562 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194, 576 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
563 4,131,198,4,255,129,252,253,239,15,133,244,253,129,124,253,202,4,239,15,133, 577 7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,
564 244,254,139,44,194,59,44,202,255,15,133,244,255,255,15,132,244,255,255,15, 578 252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,
565 183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131, 579 255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,
566 198,4,193,232,16,252,255,36,171,248,7,15,135,244,251,129,124,253,202,4,239, 580 244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,
567 15,130,244,247,15,133,244,251,255,252,242,15,42,4,202,255,219,4,202,255,252, 581 251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,
568 233,244,248,248,8,15,135,244,251,255,252,242,15,42,4,194,102,15,46,4,202, 582 4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,
569 255,219,4,194,221,4,202,255,252,233,244,250,255,129,252,253,239,15,131,244, 583 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,
570 251,129,124,253,202,4,239,15,131,244,251,255,248,1,252,242,15,16,4,202,248, 584 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,9,
571 2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,2,221,4,194,248,4,255,15, 585 255,248,5,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,
572 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15, 586 244,49,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,
573 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141, 587 202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,
574 180,253,134,233,248,1,255,252,233,244,9,255,248,5,255,129,252,253,239,15, 588 133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,
575 132,244,48,129,124,253,202,4,239,15,132,244,48,255,57,108,202,4,15,133,244, 589 255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,15,133,244,
576 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 590 9,255,252,233,244,49,255,252,247,208,139,108,202,4,131,198,4,129,252,253,
577 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 591 239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,
578 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, 592 252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,
579 248,3,129,252,253,239,255,15,133,244,9,255,252,233,244,48,255,252,247,208, 593 59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,
580 139,108,202,4,131,198,4,129,252,253,239,15,133,244,249,139,12,202,59,12,135, 594 15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,249,129,124,
581 255,139,108,202,4,131,198,4,255,129,252,253,239,15,133,244,253,129,124,253, 595 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252,
582 199,4,239,15,133,244,254,139,44,199,59,44,202,255,15,183,70,252,254,141,180, 596 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221,
583 253,134,233,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 597 4,199,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248,
584 36,171,248,7,15,135,244,249,129,124,253,199,4,239,15,130,244,247,255,252, 598 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,248,4,255,252,
585 242,15,42,4,199,255,219,4,199,255,252,233,244,248,248,8,255,252,242,15,42, 599 247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,
586 4,202,102,15,46,4,199,255,219,4,202,221,4,199,255,129,252,253,239,15,131, 600 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
587 244,249,255,248,1,252,242,15,16,4,199,248,2,102,15,46,4,202,248,4,255,248, 601 252,255,36,171,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132,
588 1,221,4,199,248,2,221,4,202,248,4,255,252,247,208,139,108,202,4,131,198,4, 602 244,248,129,252,253,239,15,132,244,49,15,183,70,252,254,141,180,253,134,233,
589 57,197,255,15,133,244,249,15,183,70,252,254,141,180,253,134,233,248,2,139, 603 248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
590 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,129,252, 604 139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139,44,194,137,
591 253,239,15,133,244,2,252,233,244,48,255,15,132,244,248,129,252,253,239,15, 605 44,202,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,
592 132,244,48,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15, 606 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,
593 182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129, 607 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
594 252,253,239,255,137,108,202,4,139,44,194,137,44,202,255,139,108,194,4,139, 608 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,133,244,251,139,44,
595 4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232, 609 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15,
596 16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108, 610 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,199,68,202,4,
597 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 611 0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255,129,124,
598 129,124,253,194,4,239,15,133,244,251,139,44,194,252,247,221,15,128,244,250, 612 253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,184,0,0,0,128,102,15,
599 199,68,202,4,237,137,44,202,248,9,139,6,15,182,204,15,182,232,131,198,4,193, 613 110,200,102,15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,
600 232,16,252,255,36,171,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252, 614 224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,
601 233,244,9,248,5,15,135,244,53,255,129,124,253,194,4,239,15,131,244,53,255, 615 128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,
602 252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87, 616 233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,
603 193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253, 617 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,
604 194,4,239,15,133,244,248,139,4,194,255,139,128,233,248,1,199,68,202,4,237, 618 194,4,239,15,133,244,57,139,12,194,255,139,169,233,131,252,253,0,15,133,244,
605 137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255, 619 255,248,3,255,248,58,137,213,232,251,1,20,255,252,242,15,42,192,255,137,4,
606 219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,198,4,193, 620 36,219,4,36,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252,
607 232,16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,56,139,12,194, 621 246,133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192,
608 255,139,169,233,131,252,253,0,15,133,244,255,248,3,255,248,57,137,213,232, 622 255,129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,
609 251,1,20,255,252,242,15,42,192,255,137,4,36,219,4,36,255,137,252,234,15,182, 623 244,51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,
610 78,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,3,252,233, 624 15,133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15,
611 244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,133, 625 128,244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,
612 244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,3,44,199,15,128, 626 239,15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,
613 244,49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4,239, 627 237,255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239,
614 15,133,244,52,139,4,199,3,4,252,234,15,128,244,51,255,129,124,253,252,234, 628 15,131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,
615 4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234,3, 629 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253,
616 44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,234,4,239,15, 630 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,
617 131,244,50,255,129,124,253,199,4,239,15,131,244,50,255,252,242,15,16,4,252, 631 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124,
618 234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234, 632 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194,
619 4,239,15,131,244,52,255,129,124,253,199,4,239,15,131,244,52,255,252,242,15, 633 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129,
620 16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, 634 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255,
621 253,252,234,4,239,15,131,244,55,129,124,253,194,4,239,15,131,244,55,255,252, 635 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
622 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,129, 636 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15,
623 124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139, 637 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15,
624 44,252,234,43,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 638 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
625 52,129,124,253,199,4,239,15,133,244,52,139,4,199,43,4,252,234,15,128,244, 639 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
626 51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133, 640 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
627 244,55,139,44,252,234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234, 641 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124,
628 252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199, 642 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255,
629 252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4, 643 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
630 252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253, 644 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,
631 252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252, 645 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44,
632 234,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 646 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
633 52,129,124,253,199,4,239,15,133,244,52,139,4,199,15,175,4,252,234,15,128, 647 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,
634 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239, 648 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
635 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16, 649 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,
636 4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15, 650 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,
637 16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242, 651 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
638 15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252, 652 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
639 242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255, 653 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
640 252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234, 654 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
641 255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52, 655 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,
642 194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221, 656 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,141,
643 4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221, 657 12,194,41,232,137,76,36,4,137,68,36,8,248,36,139,108,36,48,137,44,36,137,
644 4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252, 658 149,233,137,116,36,24,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,
645 234,221,4,194,255,248,166,232,244,156,255,252,233,244,166,255,232,244,116, 659 110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,
646 255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,8,248, 660 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
647 35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,27,139,149, 661 171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,
648 233,133,192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68,252, 662 15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,199,68,202,
649 234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232, 663 4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,
650 131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,202, 664 223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,
651 4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 665 221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,
652 36,171,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252,242,15, 666 232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,
653 42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16, 667 237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,
654 4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,252,247,208,137,68, 668 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,
655 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 669 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,
656 141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8, 670 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,
657 57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 671 248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,
658 255,36,171,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139, 672 137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,
659 109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232, 673 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,
660 16,252,255,36,171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139, 674 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,
661 173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246, 675 213,141,139,233,255,232,251,1,30,137,252,234,252,233,244,1,255,252,247,208,
662 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193, 676 139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,
663 232,16,252,255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252, 677 237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,
664 246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,28,137,252, 678 131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,
665 234,252,233,244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139, 679 1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,30,137,
666 12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248, 680 252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,
667 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 681 172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,
668 2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137, 682 139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,
669 194,141,139,233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248, 683 15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,
670 255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15, 684 108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,
671 17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141, 685 232,251,1,31,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
672 233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 686 232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,
673 171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137, 687 48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,
674 149,233,141,20,202,137,252,233,232,251,1,29,139,149,233,248,1,139,6,15,182, 688 32,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
675 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74, 689 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,36,48,137,
676 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149, 690 149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248,1,137,193,
677 233,137,116,36,24,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199, 691 37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,132,244,249,
678 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 692 248,2,137,44,36,137,68,36,4,232,251,1,33,139,149,233,15,182,78,252,253,137,
679 171,255,139,108,36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15, 693 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
680 131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61, 694 255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,34,
681 252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,31,139, 695 15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,139,139,233,
682 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15, 696 137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,
683 182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244, 697 252,233,232,251,1,35,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,
684 2,248,5,137,252,233,232,251,1,32,15,183,70,252,254,252,233,244,1,255,252, 698 237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,
685 247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,233,15, 699 137,252,233,232,251,1,34,15,183,70,252,254,252,247,208,252,233,244,2,255,
686 131,244,249,248,2,139,20,135,137,252,233,232,251,1,33,139,149,233,15,182, 700 252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,169,255,252,
687 78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198, 701 247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,170,255,15,182,
688 4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,32,15,183,70,252, 702 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,
689 254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,139,173,233, 703 255,129,124,253,194,4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,
690 139,4,135,252,233,244,167,255,252,247,208,139,106,252,248,139,173,233,139, 704 239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,
691 4,135,252,233,244,168,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 705 200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,39,255,
692 239,15,133,244,38,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251, 706 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
693 139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,252,242,15,16,4,194, 707 248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182,
694 252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36, 708 232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249,
695 219,4,36,255,15,133,244,38,255,59,133,233,15,131,244,38,193,224,3,3,133,233, 709 139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3,199,
696 129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4, 710 68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,39,
697 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 711 139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,252,247,208,139,4,
698 2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244, 712 135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,139,141,
699 38,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,248,5,255,129,124, 713 233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,
700 253,194,4,239,15,133,244,38,139,4,194,252,233,244,167,255,15,182,252,236, 714 57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,
701 15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36, 715 253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204,15,
702 139,44,252,234,248,167,139,141,233,35,136,233,105,201,239,3,141,233,248,1, 716 182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,199,68,
703 129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239, 717 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
704 15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,76,194,4, 718 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
705 248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 719 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,
706 248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233, 720 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,
707 133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233, 721 239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,
708 235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,253, 722 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,
709 252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224, 723 0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,
710 3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137, 724 78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,
711 68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 725 192,129,124,253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,
712 171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15, 726 42,255,59,133,233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,
713 132,244,37,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255, 727 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,
714 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44, 728 139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,
715 252,234,255,15,133,244,41,255,59,133,233,15,131,244,41,193,224,3,3,133,233, 729 16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
716 129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253, 730 233,235,255,15,132,244,42,15,182,78,252,253,252,233,244,1,248,5,129,124,253,
717 248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232, 731 194,4,239,15,133,244,42,139,4,194,252,233,244,170,248,7,128,165,233,235,139,
718 131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139, 732 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,
719 141,233,252,246,129,233,235,255,15,132,244,41,15,182,78,252,253,252,233,244, 733 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
720 1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,168,248, 734 244,40,139,44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133,
721 7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252, 735 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
722 233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,253, 736 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
723 252,234,4,239,15,133,244,39,139,44,252,234,248,168,139,141,233,35,136,233, 737 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,
724 105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251, 738 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,
725 57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252, 739 233,0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,
726 246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4,139, 740 40,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,
727 4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 741 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,40,248,
728 255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233,252, 742 6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,
729 246,129,233,235,15,132,244,39,139,76,36,16,252,233,244,2,248,5,139,137,233, 743 108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,36,139,
730 133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,233, 744 149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,
731 235,15,132,244,39,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68, 745 233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,
732 36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116, 746 124,253,252,234,4,239,15,133,244,41,139,44,252,234,59,133,233,15,131,244,
733 36,24,232,251,1,34,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7, 747 41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,
734 128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15, 748 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,
735 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252, 749 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,
736 234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132, 750 233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,41,15,182,
737 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139, 751 78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,
738 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 752 141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,139,60,199,248,
739 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233, 753 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
740 235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, 754 68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,233,15,135,244,251,41,
741 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124, 755 252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,
742 36,16,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15, 756 4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,
743 133,244,253,248,2,139,68,36,20,131,232,1,15,132,244,250,1,252,248,59,133, 757 182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,
744 233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139, 758 48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,1,37,139,149,233,
745 105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 759 15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,137,
746 36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 760 171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,
747 5,137,108,36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36, 761 139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233,139,14,
748 24,232,251,1,35,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 762 15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,
749 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 763 139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60,139,114,252,
750 20,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8,137,114, 764 252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,
751 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 765 232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,131,193,8,137,111,4,131,
752 171,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133, 766 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,
753 244,29,248,59,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106, 767 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
754 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105, 768 4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,
755 4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248, 769 252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,
756 3,139,68,36,20,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182, 770 4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,137,215,
757 252,233,15,182,205,131,198,4,252,255,36,171,248,5,255,252,247,198,237,15, 771 139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,141,76,
758 133,244,4,15,182,78,252,253,252,247,209,141,12,202,139,121,252,248,139,191, 772 202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,
759 233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15,133, 773 244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,
760 244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198,239, 774 252,129,252,248,239,184,237,15,133,244,29,137,202,137,114,252,252,139,181,
761 252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4, 775 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,137,124,
762 139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,228, 776 36,16,137,92,36,20,139,108,202,252,240,139,68,202,252,248,139,157,233,131,
763 137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,29,137, 777 198,4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,
764 202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198, 778 244,250,255,219,68,202,252,248,255,139,108,199,4,137,108,202,12,139,44,199,
765 4,252,255,36,171,255,137,124,36,16,137,92,36,20,139,108,202,252,240,139,68, 779 137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,
766 202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,15,131,244,251, 780 180,253,134,233,248,3,139,92,36,20,139,124,36,16,139,6,15,182,204,15,182,
767 129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,255,139,108,199, 781 232,131,198,4,193,232,16,252,255,36,171,248,4,131,192,1,255,137,68,202,252,
768 4,137,108,202,12,139,44,199,137,108,202,8,131,192,1,255,137,68,202,252,248, 782 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252,
769 248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,20,139,124,36, 783 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,139,175,233,
770 16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4, 784 139,135,233,137,44,202,137,68,202,4,139,175,233,139,135,233,137,108,202,8,
771 131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59, 785 137,68,202,12,137,92,202,252,248,252,233,244,2,248,7,255,131,192,1,252,233,
772 133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244, 786 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
773 253,141,92,24,1,139,175,233,139,135,233,137,44,202,137,68,202,4,139,175,233, 787 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
774 139,135,233,137,108,202,8,137,68,202,12,137,92,202,252,248,252,233,244,2, 788 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
775 248,7,255,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133, 789 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
776 244,251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124, 790 36,171,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,244,
777 253,202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180, 791 1,255,15,182,252,236,15,182,192,137,124,36,16,141,188,253,194,233,141,12,
778 253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232, 792 202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,
779 131,198,4,193,232,16,252,255,36,171,248,5,198,70,252,252,235,141,180,253, 793 215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,
780 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36, 794 65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,
781 16,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251, 795 4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182,
782 141,108,252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1, 796 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,
783 139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57, 797 0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,
784 215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248, 798 36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,255,139,71,252,
785 3,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 799 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
786 36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197, 800 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,139,84,36,
787 193,252,237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135, 801 20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,
788 244,253,248,6,255,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4, 802 233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,
789 131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233, 803 237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,139,
790 137,116,36,24,41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139, 804 44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15,
791 149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252, 805 133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252,
792 252,137,68,36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232, 806 255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,70,
793 1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252, 807 252,255,15,135,244,252,255,15,182,78,252,253,252,247,209,141,20,202,139,122,
794 252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255, 808 252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,
795 248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137, 809 232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,
796 106,252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253, 810 252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,
797 252,247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182, 811 15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,
798 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252, 812 239,102,129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121,
799 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 813 253,4,239,15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253,
800 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255, 814 20,239,15,133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,
801 137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244, 815 239,15,133,244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252,
802 148,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12, 816 237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,
803 239,15,133,244,60,129,121,253,20,239,15,133,244,60,139,41,131,121,16,0,15, 817 137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,
804 140,244,251,255,129,121,253,12,239,15,133,244,164,129,121,253,20,239,15,133, 818 253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,
805 244,164,255,139,105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,137, 819 6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,
806 41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244,253,248,1,248,6,141, 820 4,193,232,16,252,255,36,171,248,5,255,3,41,15,128,244,1,137,41,255,15,141,
807 180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,142,245,248, 821 244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,
808 1,248,6,255,15,143,244,253,248,6,141,180,253,134,233,248,1,255,248,7,139, 822 7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121,
809 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,255,3,41, 823 253,12,239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253,
810 15,128,244,1,137,41,255,15,141,244,7,255,141,180,253,134,233,15,183,70,252, 824 20,239,15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255,
811 254,15,141,245,255,15,140,244,7,255,252,233,244,6,248,9,255,129,121,253,4, 825 252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,
812 239,255,15,131,244,60,129,121,253,12,239,15,131,244,60,255,129,121,253,12, 826 1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,
813 239,15,131,244,164,129,121,253,20,239,15,131,244,164,255,139,105,20,255,129, 827 242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,
814 252,253,239,15,131,244,60,255,252,242,15,16,1,252,242,15,16,73,8,255,252, 828 237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,
815 242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244, 829 183,70,252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255,
816 249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220, 830 141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15,
817 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244, 831 130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,
818 247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,7,255,15,131,244, 832 141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,
819 248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131, 833 41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,
820 245,255,15,130,244,7,255,15,130,244,248,141,180,253,134,233,255,248,3,102, 834 252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,137,
821 15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, 835 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,
822 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253, 836 15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,252,245,209,252,237,
823 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,139, 837 129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139,190,233,139,
824 128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141,180,253, 838 108,36,48,141,12,202,59,141,233,15,135,244,24,15,182,142,233,57,200,15,134,
825 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 839 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,
826 137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244, 840 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,
827 150,255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,244,24,15, 841 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,
828 182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245, 842 200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233,133,252,237,15,
829 255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244, 843 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
830 2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252, 844 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
831 248,139,108,36,48,141,12,200,59,141,233,15,135,244,23,137,209,137,194,15, 845 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
832 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244, 846 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,
833 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252, 847 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,
834 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204, 848 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,
835 15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3,199,64,4,237,131, 849 137,124,36,4,137,44,36,255,15,135,244,22,199,131,233,237,255,252,255,215,
836 192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,139,189, 850 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,
837 233,139,108,36,48,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137, 851 3,141,233,139,114,252,252,252,233,244,12,255,254,0
838 133,233,255,137,44,36,255,137,124,36,4,137,44,36,255,15,135,244,22,199,131,
839 233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,
840 141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
841}; 852};
842 853
843enum { 854enum {
@@ -863,6 +874,7 @@ enum {
863 GLOB_vmeta_call, 874 GLOB_vmeta_call,
864 GLOB_vm_call_dispatch_f, 875 GLOB_vm_call_dispatch_f,
865 GLOB_vm_cpcall, 876 GLOB_vm_cpcall,
877 GLOB_cont_ffi_callback,
866 GLOB_vm_call_tail, 878 GLOB_vm_call_tail,
867 GLOB_cont_cat, 879 GLOB_cont_cat,
868 GLOB_cont_ra, 880 GLOB_cont_ra,
@@ -996,6 +1008,7 @@ enum {
996 GLOB_vm_foldarith, 1008 GLOB_vm_foldarith,
997 GLOB_vm_cpuid, 1009 GLOB_vm_cpuid,
998 GLOB_assert_bad_for_arg_type, 1010 GLOB_assert_bad_for_arg_type,
1011 GLOB_vm_ffi_callback,
999 GLOB_vm_ffi_call, 1012 GLOB_vm_ffi_call,
1000 GLOB_BC_MODVN_Z, 1013 GLOB_BC_MODVN_Z,
1001 GLOB_BC_TGETS_Z, 1014 GLOB_BC_TGETS_Z,
@@ -1025,6 +1038,7 @@ static const char *const globnames[] = {
1025 "vmeta_call", 1038 "vmeta_call",
1026 "vm_call_dispatch_f", 1039 "vm_call_dispatch_f",
1027 "vm_cpcall", 1040 "vm_cpcall",
1041 "cont_ffi_callback",
1028 "vm_call_tail", 1042 "vm_call_tail",
1029 "cont_cat", 1043 "cont_cat",
1030 "cont_ra", 1044 "cont_ra",
@@ -1158,6 +1172,7 @@ static const char *const globnames[] = {
1158 "vm_foldarith", 1172 "vm_foldarith",
1159 "vm_cpuid", 1173 "vm_cpuid",
1160 "assert_bad_for_arg_type", 1174 "assert_bad_for_arg_type",
1175 "vm_ffi_callback",
1161 "vm_ffi_call@4", 1176 "vm_ffi_call@4",
1162 "BC_MODVN_Z", 1177 "BC_MODVN_Z",
1163 "BC_TGETS_Z", 1178 "BC_TGETS_Z",
@@ -1192,6 +1207,8 @@ static const char *const extnames[] = {
1192 "lj_dispatch_call@8", 1207 "lj_dispatch_call@8",
1193 "lj_trace_exit@8", 1208 "lj_trace_exit@8",
1194 "lj_err_throw@8", 1209 "lj_err_throw@8",
1210 "lj_ccallback_enter@8",
1211 "lj_ccallback_leave@8",
1195 "lj_meta_cat", 1212 "lj_meta_cat",
1196 "lj_gc_barrieruv@8", 1213 "lj_gc_barrieruv@8",
1197 "lj_func_closeuv@8", 1214 "lj_func_closeuv@8",
@@ -1232,762 +1249,780 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1232 dasm_put(Dst, 353, Dt1(->top), 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); 1249 dasm_put(Dst, 353, Dt1(->top), 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);
1233 dasm_put(Dst, 495, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1250 dasm_put(Dst, 495, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1234 dasm_put(Dst, 573, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); 1251 dasm_put(Dst, 573, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
1235 dasm_put(Dst, 753, Dt7(->pc), PC2PROTO(k), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1252#if LJ_HASFFI
1236 dasm_put(Dst, 875); 1253#endif
1254 dasm_put(Dst, 743);
1255#if LJ_HASFFI
1256 dasm_put(Dst, 748);
1257#endif
1258 dasm_put(Dst, 757, Dt7(->pc), PC2PROTO(k));
1259#if LJ_HASFFI
1260 dasm_put(Dst, 771);
1261#endif
1262 dasm_put(Dst, 792, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1237 if (LJ_DUALNUM) { 1263 if (LJ_DUALNUM) {
1238 dasm_put(Dst, 881, LJ_TISNUM); 1264 dasm_put(Dst, 890, LJ_TISNUM);
1239 } else if (sse) { 1265 } else if (sse) {
1240 dasm_put(Dst, 891); 1266 dasm_put(Dst, 900);
1241 } else { 1267 } else {
1242 dasm_put(Dst, 904); 1268 dasm_put(Dst, 913);
1243 } 1269 }
1244 dasm_put(Dst, 917, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1270 dasm_put(Dst, 926, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1245 dasm_put(Dst, 1069, DISPATCH_GL(tmptv), LJ_TTAB); 1271 dasm_put(Dst, 1078, DISPATCH_GL(tmptv), LJ_TTAB);
1246 if (LJ_DUALNUM) { 1272 if (LJ_DUALNUM) {
1247 dasm_put(Dst, 881, LJ_TISNUM); 1273 dasm_put(Dst, 890, LJ_TISNUM);
1248 } else if (sse) { 1274 } else if (sse) {
1249 dasm_put(Dst, 891); 1275 dasm_put(Dst, 900);
1250 } else { 1276 } else {
1251 dasm_put(Dst, 904); 1277 dasm_put(Dst, 913);
1252 } 1278 }
1253 dasm_put(Dst, 1092, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1279 dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1254 dasm_put(Dst, 1286, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1280 dasm_put(Dst, 1295, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1255 dasm_put(Dst, 1393); 1281 dasm_put(Dst, 1402);
1256#if LJ_HASFFI 1282#if LJ_HASFFI
1257 dasm_put(Dst, 1408, Dt1(->base)); 1283 dasm_put(Dst, 1417, Dt1(->base));
1258#endif 1284#endif
1259 dasm_put(Dst, 1439); 1285 dasm_put(Dst, 1448);
1260#if LJ_DUALNUM 1286#if LJ_DUALNUM
1261 dasm_put(Dst, 1442); 1287 dasm_put(Dst, 1451);
1262#endif 1288#endif
1263 dasm_put(Dst, 1448); 1289 dasm_put(Dst, 1457);
1264#if LJ_DUALNUM 1290#if LJ_DUALNUM
1265 dasm_put(Dst, 875); 1291 dasm_put(Dst, 884);
1266#endif 1292#endif
1267 dasm_put(Dst, 1460); 1293 dasm_put(Dst, 1469);
1268#if LJ_DUALNUM 1294#if LJ_DUALNUM
1269 dasm_put(Dst, 1442); 1295 dasm_put(Dst, 1451);
1270#endif 1296#endif
1271 dasm_put(Dst, 1488, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); 1297 dasm_put(Dst, 1497, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
1272#ifdef LUAJIT_ENABLE_LUA52COMPAT 1298#ifdef LUAJIT_ENABLE_LUA52COMPAT
1273 dasm_put(Dst, 1598); 1299 dasm_put(Dst, 1607);
1274#else 1300#else
1275 dasm_put(Dst, 1617); 1301 dasm_put(Dst, 1626);
1276#endif 1302#endif
1277 dasm_put(Dst, 1622, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1303 dasm_put(Dst, 1631, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1278 dasm_put(Dst, 1811, 1+1, ~LJ_TNUMX); 1304 dasm_put(Dst, 1820, 1+1, ~LJ_TNUMX);
1279 if (cmov) { 1305 if (cmov) {
1280 dasm_put(Dst, 1869); 1306 dasm_put(Dst, 1878);
1281 } else { 1307 } else {
1282 dasm_put(Dst, 1873); 1308 dasm_put(Dst, 1882);
1283 } 1309 }
1284 dasm_put(Dst, 1882, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB); 1310 dasm_put(Dst, 1891, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
1285 dasm_put(Dst, 1965, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1311 dasm_put(Dst, 1974, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1286 dasm_put(Dst, 2023, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1); 1312 dasm_put(Dst, 2032, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
1287 dasm_put(Dst, 2086, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1313 dasm_put(Dst, 2095, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1288 dasm_put(Dst, 2158, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1314 dasm_put(Dst, 2167, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1289 if (LJ_DUALNUM) { 1315 if (LJ_DUALNUM) {
1290 dasm_put(Dst, 2247); 1316 dasm_put(Dst, 2256);
1291 } else { 1317 } else {
1292 dasm_put(Dst, 2264); 1318 dasm_put(Dst, 2273);
1293 } 1319 }
1294 if (sse) { 1320 if (sse) {
1295 dasm_put(Dst, 2269); 1321 dasm_put(Dst, 2278);
1296 } else { 1322 } else {
1297 dasm_put(Dst, 2279); 1323 dasm_put(Dst, 2288);
1298 } 1324 }
1299 dasm_put(Dst, 2286, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1325 dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1300 dasm_put(Dst, 2352, Dt1(->base)); 1326 dasm_put(Dst, 2361, Dt1(->base));
1301 if (LJ_DUALNUM) { 1327 if (LJ_DUALNUM) {
1302 dasm_put(Dst, 2376); 1328 dasm_put(Dst, 2385);
1303 } else { 1329 } else {
1304 dasm_put(Dst, 2381); 1330 dasm_put(Dst, 2390);
1305 } 1331 }
1306 dasm_put(Dst, 2386, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); 1332 dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1307 dasm_put(Dst, 2495, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1333 dasm_put(Dst, 2504, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1308#ifdef LUAJIT_ENABLE_LUA52COMPAT 1334#ifdef LUAJIT_ENABLE_LUA52COMPAT
1309 dasm_put(Dst, 2542, Dt6(->metatable)); 1335 dasm_put(Dst, 2551, Dt6(->metatable));
1310#endif 1336#endif
1311 dasm_put(Dst, 2551, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1337 dasm_put(Dst, 2560, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1312 if (LJ_DUALNUM) { 1338 if (LJ_DUALNUM) {
1313 dasm_put(Dst, 2537); 1339 dasm_put(Dst, 2546);
1314 } else { 1340 } else {
1315 dasm_put(Dst, 2264); 1341 dasm_put(Dst, 2273);
1316 } 1342 }
1317 dasm_put(Dst, 2606); 1343 dasm_put(Dst, 2615);
1318 if (LJ_DUALNUM) { 1344 if (LJ_DUALNUM) {
1319 dasm_put(Dst, 2611, LJ_TISNUM); 1345 dasm_put(Dst, 2620, LJ_TISNUM);
1320 } else if (sse) { 1346 } else if (sse) {
1321 dasm_put(Dst, 2627); 1347 dasm_put(Dst, 2636);
1322 } else { 1348 } else {
1323 dasm_put(Dst, 2666); 1349 dasm_put(Dst, 2675);
1324 } 1350 }
1325 dasm_put(Dst, 2684, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1351 dasm_put(Dst, 2693, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1326 dasm_put(Dst, 2522, 1+1, LJ_TTAB); 1352 dasm_put(Dst, 2531, 1+1, LJ_TTAB);
1327#ifdef LUAJIT_ENABLE_LUA52COMPAT 1353#ifdef LUAJIT_ENABLE_LUA52COMPAT
1328 dasm_put(Dst, 2542, Dt6(->metatable)); 1354 dasm_put(Dst, 2551, Dt6(->metatable));
1329#endif 1355#endif
1330 dasm_put(Dst, 2765, Dt8(->upvalue[0]), LJ_TFUNC); 1356 dasm_put(Dst, 2774, Dt8(->upvalue[0]), LJ_TFUNC);
1331 if (LJ_DUALNUM) { 1357 if (LJ_DUALNUM) {
1332 dasm_put(Dst, 2786, LJ_TISNUM); 1358 dasm_put(Dst, 2795, LJ_TISNUM);
1333 } else if (sse) { 1359 } else if (sse) {
1334 dasm_put(Dst, 2798); 1360 dasm_put(Dst, 2807);
1335 } else { 1361 } else {
1336 dasm_put(Dst, 2808); 1362 dasm_put(Dst, 2817);
1337 } 1363 }
1338 dasm_put(Dst, 2815, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1364 dasm_put(Dst, 2824, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1339 dasm_put(Dst, 2879, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1365 dasm_put(Dst, 2888, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1340 dasm_put(Dst, 2967, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1366 dasm_put(Dst, 2976, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1341 dasm_put(Dst, 3068, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1367 dasm_put(Dst, 3077, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1342 dasm_put(Dst, 3182, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1368 dasm_put(Dst, 3191, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1343 dasm_put(Dst, 3280, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1369 dasm_put(Dst, 3289, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1344 dasm_put(Dst, 3346, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1370 dasm_put(Dst, 3355, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1345 dasm_put(Dst, 3447, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1371 dasm_put(Dst, 3456, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1346 dasm_put(Dst, 3560, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1372 dasm_put(Dst, 3569, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1347 if (!LJ_DUALNUM) { 1373 if (!LJ_DUALNUM) {
1348 dasm_put(Dst, 3586); 1374 dasm_put(Dst, 3595);
1349 } 1375 }
1350 if (sse) { 1376 if (sse) {
1351 dasm_put(Dst, 3589); 1377 dasm_put(Dst, 3598);
1352 } 1378 }
1353 dasm_put(Dst, 3604, 1+1); 1379 dasm_put(Dst, 3613, 1+1);
1354 if (LJ_DUALNUM) { 1380 if (LJ_DUALNUM) {
1355 dasm_put(Dst, 3615, LJ_TISNUM, LJ_TISNUM); 1381 dasm_put(Dst, 3624, LJ_TISNUM, LJ_TISNUM);
1356 } else { 1382 } else {
1357 dasm_put(Dst, 3695, LJ_TISNUM); 1383 dasm_put(Dst, 3704, LJ_TISNUM);
1358 } 1384 }
1359 if (sse) { 1385 if (sse) {
1360 dasm_put(Dst, 3705); 1386 dasm_put(Dst, 3714);
1361 } else { 1387 } else {
1362 dasm_put(Dst, 3741); 1388 dasm_put(Dst, 3750);
1363 } 1389 }
1364 dasm_put(Dst, 3758, 1+1, FRAME_TYPE, LJ_TNIL); 1390 dasm_put(Dst, 3767, 1+1, FRAME_TYPE, LJ_TNIL);
1365 if (LJ_DUALNUM) { 1391 if (LJ_DUALNUM) {
1366 dasm_put(Dst, 3850, LJ_TISNUM); 1392 dasm_put(Dst, 3859, LJ_TISNUM);
1367 } else { 1393 } else {
1368 dasm_put(Dst, 3695, LJ_TISNUM); 1394 dasm_put(Dst, 3704, LJ_TISNUM);
1369 } 1395 }
1370 if (sse) { 1396 if (sse) {
1371 dasm_put(Dst, 3872);
1372 if (LJ_DUALNUM) {
1373 dasm_put(Dst, 3881); 1397 dasm_put(Dst, 3881);
1398 if (LJ_DUALNUM) {
1399 dasm_put(Dst, 3890);
1374 } 1400 }
1375 dasm_put(Dst, 2274); 1401 dasm_put(Dst, 2283);
1376 } else { 1402 } else {
1377 dasm_put(Dst, 3915); 1403 dasm_put(Dst, 3924);
1378 if (LJ_DUALNUM) { 1404 if (LJ_DUALNUM) {
1379 dasm_put(Dst, 3921); 1405 dasm_put(Dst, 3930);
1380 if (cmov) { 1406 if (cmov) {
1381 dasm_put(Dst, 3944); 1407 dasm_put(Dst, 3953);
1382 } else { 1408 } else {
1383 dasm_put(Dst, 3950); 1409 dasm_put(Dst, 3959);
1384 } 1410 }
1385 dasm_put(Dst, 3957); 1411 dasm_put(Dst, 3966);
1386 } else { 1412 } else {
1387 dasm_put(Dst, 2281); 1413 dasm_put(Dst, 2290);
1388 } 1414 }
1389 } 1415 }
1390 dasm_put(Dst, 3974); 1416 dasm_put(Dst, 3983);
1391 if (LJ_DUALNUM) { 1417 if (LJ_DUALNUM) {
1392 dasm_put(Dst, 3850, LJ_TISNUM); 1418 dasm_put(Dst, 3859, LJ_TISNUM);
1393 } else { 1419 } else {
1394 dasm_put(Dst, 3695, LJ_TISNUM); 1420 dasm_put(Dst, 3704, LJ_TISNUM);
1395 } 1421 }
1396 if (sse) { 1422 if (sse) {
1397 dasm_put(Dst, 3977); 1423 dasm_put(Dst, 3986);
1398 if (LJ_DUALNUM) { 1424 if (LJ_DUALNUM) {
1399 dasm_put(Dst, 3881); 1425 dasm_put(Dst, 3890);
1400 } 1426 }
1401 dasm_put(Dst, 2274); 1427 dasm_put(Dst, 2283);
1402 } else { 1428 } else {
1403 dasm_put(Dst, 3986); 1429 dasm_put(Dst, 3995);
1404 if (LJ_DUALNUM) { 1430 if (LJ_DUALNUM) {
1405 dasm_put(Dst, 3921); 1431 dasm_put(Dst, 3930);
1406 if (cmov) { 1432 if (cmov) {
1407 dasm_put(Dst, 3944); 1433 dasm_put(Dst, 3953);
1408 } else { 1434 } else {
1409 dasm_put(Dst, 3950); 1435 dasm_put(Dst, 3959);
1410 } 1436 }
1411 dasm_put(Dst, 3957); 1437 dasm_put(Dst, 3966);
1412 } else { 1438 } else {
1413 dasm_put(Dst, 2281); 1439 dasm_put(Dst, 2290);
1414 } 1440 }
1415 } 1441 }
1416 if (sse) { 1442 if (sse) {
1417 dasm_put(Dst, 3992, 1+1, LJ_TISNUM); 1443 dasm_put(Dst, 4001, 1+1, LJ_TISNUM);
1418 } else { 1444 } else {
1419 dasm_put(Dst, 4021, 1+1, LJ_TISNUM); 1445 dasm_put(Dst, 4030, 1+1, LJ_TISNUM);
1420 } 1446 }
1421 dasm_put(Dst, 4050, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1447 dasm_put(Dst, 4059, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1422 dasm_put(Dst, 4119, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1448 dasm_put(Dst, 4128, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1423 dasm_put(Dst, 4176, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1449 dasm_put(Dst, 4185, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1424 dasm_put(Dst, 4239, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1450 dasm_put(Dst, 4248, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1425 dasm_put(Dst, 4329); 1451 dasm_put(Dst, 4338);
1426 if (sse) { 1452 if (sse) {
1427 dasm_put(Dst, 4341, 1+1, LJ_TISNUM); 1453 dasm_put(Dst, 4350, 1+1, LJ_TISNUM);
1428 } else { 1454 } else {
1429 dasm_put(Dst, 4372, 1+1, LJ_TISNUM); 1455 dasm_put(Dst, 4381, 1+1, LJ_TISNUM);
1430 } 1456 }
1431 dasm_put(Dst, 4397); 1457 dasm_put(Dst, 4406);
1432 if (sse) { 1458 if (sse) {
1433 dasm_put(Dst, 4411, 1+1, LJ_TISNUM); 1459 dasm_put(Dst, 4420, 1+1, LJ_TISNUM);
1434 } else { 1460 } else {
1435 dasm_put(Dst, 4442, 1+1, LJ_TISNUM); 1461 dasm_put(Dst, 4451, 1+1, LJ_TISNUM);
1436 } 1462 }
1437 dasm_put(Dst, 4467); 1463 dasm_put(Dst, 4476);
1438 if (sse) { 1464 if (sse) {
1439 dasm_put(Dst, 4481, 1+1, LJ_TISNUM); 1465 dasm_put(Dst, 4490, 1+1, LJ_TISNUM);
1440 } else { 1466 } else {
1441 dasm_put(Dst, 4512, 1+1, LJ_TISNUM); 1467 dasm_put(Dst, 4521, 1+1, LJ_TISNUM);
1442 } 1468 }
1443 dasm_put(Dst, 4537); 1469 dasm_put(Dst, 4546);
1444 if (sse) { 1470 if (sse) {
1445 dasm_put(Dst, 4553, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1471 dasm_put(Dst, 4562, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1446 } else { 1472 } else {
1447 dasm_put(Dst, 4592, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1473 dasm_put(Dst, 4601, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1448 } 1474 }
1449 dasm_put(Dst, 4625, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1475 dasm_put(Dst, 4634, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1450 dasm_put(Dst, 4690, 1+1, LJ_TISNUM); 1476 dasm_put(Dst, 4699, 1+1, LJ_TISNUM);
1451 if (sse) { 1477 if (sse) {
1452 dasm_put(Dst, 4789); 1478 dasm_put(Dst, 4798);
1453 } else { 1479 } else {
1454 dasm_put(Dst, 4795); 1480 dasm_put(Dst, 4804);
1455 } 1481 }
1456 dasm_put(Dst, 4804); 1482 dasm_put(Dst, 4813);
1457 if (sse) { 1483 if (sse) {
1458 dasm_put(Dst, 4829); 1484 dasm_put(Dst, 4838);
1459 } else { 1485 } else {
1460 dasm_put(Dst, 4835); 1486 dasm_put(Dst, 4844);
1461 } 1487 }
1462 dasm_put(Dst, 4838, 1+2); 1488 dasm_put(Dst, 4847, 1+2);
1463 if (sse) { 1489 if (sse) {
1464 dasm_put(Dst, 4847); 1490 dasm_put(Dst, 4856);
1465 } else { 1491 } else {
1466 dasm_put(Dst, 4855); 1492 dasm_put(Dst, 4864);
1467 } 1493 }
1468 dasm_put(Dst, 4863); 1494 dasm_put(Dst, 4872);
1469 if (sse) { 1495 if (sse) {
1470 dasm_put(Dst, 4866); 1496 dasm_put(Dst, 4875);
1471 } else { 1497 } else {
1472 dasm_put(Dst, 4898); 1498 dasm_put(Dst, 4907);
1473 } 1499 }
1474 dasm_put(Dst, 4917); 1500 dasm_put(Dst, 4926);
1475 if (sse) { 1501 if (sse) {
1476 dasm_put(Dst, 4933, 1+1, LJ_TISNUM); 1502 dasm_put(Dst, 4942, 1+1, LJ_TISNUM);
1477 } else { 1503 } else {
1478 dasm_put(Dst, 4958, 1+1, LJ_TISNUM); 1504 dasm_put(Dst, 4967, 1+1, LJ_TISNUM);
1479 } 1505 }
1480 dasm_put(Dst, 4980); 1506 dasm_put(Dst, 4989);
1481 if (sse) { 1507 if (sse) {
1482 dasm_put(Dst, 5002); 1508 dasm_put(Dst, 5011);
1483 } else { 1509 } else {
1484 dasm_put(Dst, 5028); 1510 dasm_put(Dst, 5037);
1485 } 1511 }
1486 dasm_put(Dst, 5045, 1+2); 1512 dasm_put(Dst, 5054, 1+2);
1487 if (sse) { 1513 if (sse) {
1488 dasm_put(Dst, 5085); 1514 dasm_put(Dst, 5094);
1489 } else { 1515 } else {
1490 dasm_put(Dst, 5093); 1516 dasm_put(Dst, 5102);
1491 } 1517 }
1492 dasm_put(Dst, 5103, 2+1, LJ_TISNUM, LJ_TISNUM); 1518 dasm_put(Dst, 5112, 2+1, LJ_TISNUM, LJ_TISNUM);
1493 if (sse) { 1519 if (sse) {
1494 dasm_put(Dst, 5155, 2+1, LJ_TISNUM, LJ_TISNUM); 1520 dasm_put(Dst, 5164, 2+1, LJ_TISNUM, LJ_TISNUM);
1495 } else { 1521 } else {
1496 dasm_put(Dst, 5202, 2+1, LJ_TISNUM, LJ_TISNUM); 1522 dasm_put(Dst, 5211, 2+1, LJ_TISNUM, LJ_TISNUM);
1497 } 1523 }
1498 dasm_put(Dst, 5243, LJ_TISNUM); 1524 dasm_put(Dst, 5252, LJ_TISNUM);
1499 if (LJ_DUALNUM) { 1525 if (LJ_DUALNUM) {
1500 dasm_put(Dst, 5256, LJ_TISNUM); 1526 dasm_put(Dst, 5265, LJ_TISNUM);
1501 if (sse) { 1527 if (sse) {
1502 dasm_put(Dst, 4789); 1528 dasm_put(Dst, 4798);
1503 } else { 1529 } else {
1504 dasm_put(Dst, 4795); 1530 dasm_put(Dst, 4804);
1505 } 1531 }
1506 dasm_put(Dst, 5306); 1532 dasm_put(Dst, 5315);
1507 } else { 1533 } else {
1508 dasm_put(Dst, 2264); 1534 dasm_put(Dst, 2273);
1509 } 1535 }
1510 if (sse) { 1536 if (sse) {
1511 dasm_put(Dst, 5317, LJ_TISNUM); 1537 dasm_put(Dst, 5326, LJ_TISNUM);
1512 if (LJ_DUALNUM) { 1538 if (LJ_DUALNUM) {
1513 dasm_put(Dst, 5338); 1539 dasm_put(Dst, 5347);
1514 } else { 1540 } else {
1515 dasm_put(Dst, 2264); 1541 dasm_put(Dst, 2273);
1516 } 1542 }
1517 dasm_put(Dst, 5359); 1543 dasm_put(Dst, 5368);
1518 } else { 1544 } else {
1519 dasm_put(Dst, 5384, LJ_TISNUM); 1545 dasm_put(Dst, 5393, LJ_TISNUM);
1520 if (LJ_DUALNUM) { 1546 if (LJ_DUALNUM) {
1521 dasm_put(Dst, 5402); 1547 dasm_put(Dst, 5411);
1522 } else { 1548 } else {
1523 dasm_put(Dst, 5420); 1549 dasm_put(Dst, 5429);
1524 } 1550 }
1525 dasm_put(Dst, 5425); 1551 dasm_put(Dst, 5434);
1526 if (cmov) { 1552 if (cmov) {
1527 dasm_put(Dst, 5435); 1553 dasm_put(Dst, 5444);
1528 } else { 1554 } else {
1529 dasm_put(Dst, 5443); 1555 dasm_put(Dst, 5452);
1530 } 1556 }
1531 dasm_put(Dst, 5376); 1557 dasm_put(Dst, 5385);
1532 } 1558 }
1533 dasm_put(Dst, 5464, LJ_TISNUM); 1559 dasm_put(Dst, 5473, LJ_TISNUM);
1534 if (LJ_DUALNUM) { 1560 if (LJ_DUALNUM) {
1535 dasm_put(Dst, 5477, LJ_TISNUM); 1561 dasm_put(Dst, 5486, LJ_TISNUM);
1536 if (sse) { 1562 if (sse) {
1537 dasm_put(Dst, 4789); 1563 dasm_put(Dst, 4798);
1538 } else { 1564 } else {
1539 dasm_put(Dst, 4795); 1565 dasm_put(Dst, 4804);
1540 } 1566 }
1541 dasm_put(Dst, 5306); 1567 dasm_put(Dst, 5315);
1542 } else { 1568 } else {
1543 dasm_put(Dst, 2264); 1569 dasm_put(Dst, 2273);
1544 } 1570 }
1545 if (sse) { 1571 if (sse) {
1546 dasm_put(Dst, 5317, LJ_TISNUM); 1572 dasm_put(Dst, 5326, LJ_TISNUM);
1547 if (LJ_DUALNUM) { 1573 if (LJ_DUALNUM) {
1548 dasm_put(Dst, 5338); 1574 dasm_put(Dst, 5347);
1549 } else { 1575 } else {
1550 dasm_put(Dst, 2264); 1576 dasm_put(Dst, 2273);
1551 } 1577 }
1552 dasm_put(Dst, 5527); 1578 dasm_put(Dst, 5536);
1553 } else { 1579 } else {
1554 dasm_put(Dst, 5384, LJ_TISNUM); 1580 dasm_put(Dst, 5393, LJ_TISNUM);
1555 if (LJ_DUALNUM) { 1581 if (LJ_DUALNUM) {
1556 dasm_put(Dst, 5402); 1582 dasm_put(Dst, 5411);
1557 } else { 1583 } else {
1558 dasm_put(Dst, 5420); 1584 dasm_put(Dst, 5429);
1559 } 1585 }
1560 dasm_put(Dst, 5425); 1586 dasm_put(Dst, 5434);
1561 if (cmov) { 1587 if (cmov) {
1562 dasm_put(Dst, 5552); 1588 dasm_put(Dst, 5561);
1563 } else { 1589 } else {
1564 dasm_put(Dst, 5560); 1590 dasm_put(Dst, 5569);
1565 } 1591 }
1566 dasm_put(Dst, 5376); 1592 dasm_put(Dst, 5385);
1567 } 1593 }
1568 if (!sse) { 1594 if (!sse) {
1569 dasm_put(Dst, 5581); 1595 dasm_put(Dst, 5590);
1570 } 1596 }
1571 dasm_put(Dst, 5590, 1+1, LJ_TSTR); 1597 dasm_put(Dst, 5599, 1+1, LJ_TSTR);
1572 if (LJ_DUALNUM) { 1598 if (LJ_DUALNUM) {
1573 dasm_put(Dst, 5612, Dt5(->len)); 1599 dasm_put(Dst, 5621, Dt5(->len));
1574 } else if (sse) { 1600 } else if (sse) {
1575 dasm_put(Dst, 5620, Dt5(->len)); 1601 dasm_put(Dst, 5629, Dt5(->len));
1576 } else { 1602 } else {
1577 dasm_put(Dst, 5631, Dt5(->len)); 1603 dasm_put(Dst, 5640, Dt5(->len));
1578 } 1604 }
1579 dasm_put(Dst, 5639, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1605 dasm_put(Dst, 5648, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1580 if (LJ_DUALNUM) { 1606 if (LJ_DUALNUM) {
1581 dasm_put(Dst, 3969); 1607 dasm_put(Dst, 3978);
1582 } else if (sse) { 1608 } else if (sse) {
1583 dasm_put(Dst, 5677); 1609 dasm_put(Dst, 5686);
1584 } else { 1610 } else {
1585 dasm_put(Dst, 5687); 1611 dasm_put(Dst, 5696);
1586 } 1612 }
1587 dasm_put(Dst, 5700, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1613 dasm_put(Dst, 5709, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1588 if (LJ_DUALNUM) { 1614 if (LJ_DUALNUM) {
1589 dasm_put(Dst, 5731); 1615 dasm_put(Dst, 5740);
1590 } else if (sse) { 1616 } else if (sse) {
1591 dasm_put(Dst, 5754); 1617 dasm_put(Dst, 5763);
1592 } else { 1618 } else {
1593 dasm_put(Dst, 5780); 1619 dasm_put(Dst, 5789);
1594 } 1620 }
1595 dasm_put(Dst, 5804, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1621 dasm_put(Dst, 5813, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1596 if (LJ_DUALNUM) { 1622 if (LJ_DUALNUM) {
1597 dasm_put(Dst, 5907); 1623 dasm_put(Dst, 5916);
1598 } else if (sse) { 1624 } else if (sse) {
1599 dasm_put(Dst, 5919); 1625 dasm_put(Dst, 5928);
1600 } else { 1626 } else {
1601 dasm_put(Dst, 5934); 1627 dasm_put(Dst, 5943);
1602 } 1628 }
1603 dasm_put(Dst, 5946, LJ_TSTR, LJ_TISNUM); 1629 dasm_put(Dst, 5955, LJ_TSTR, LJ_TISNUM);
1604 if (LJ_DUALNUM) { 1630 if (LJ_DUALNUM) {
1605 dasm_put(Dst, 2537); 1631 dasm_put(Dst, 2546);
1606 } else { 1632 } else {
1607 dasm_put(Dst, 2264); 1633 dasm_put(Dst, 2273);
1608 } 1634 }
1609 dasm_put(Dst, 5963, Dt5(->len)); 1635 dasm_put(Dst, 5972, Dt5(->len));
1610 if (LJ_DUALNUM) { 1636 if (LJ_DUALNUM) {
1611 dasm_put(Dst, 5973); 1637 dasm_put(Dst, 5982);
1612 } else if (sse) { 1638 } else if (sse) {
1613 dasm_put(Dst, 5977); 1639 dasm_put(Dst, 5986);
1614 } else { 1640 } else {
1615 dasm_put(Dst, 5984); 1641 dasm_put(Dst, 5993);
1616 } 1642 }
1617 dasm_put(Dst, 5996, sizeof(GCstr)-1); 1643 dasm_put(Dst, 6005, sizeof(GCstr)-1);
1618 dasm_put(Dst, 6071, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1644 dasm_put(Dst, 6080, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1619 dasm_put(Dst, 6130, LJ_TSTR, LJ_TISNUM); 1645 dasm_put(Dst, 6139, LJ_TSTR, LJ_TISNUM);
1620 if (LJ_DUALNUM) { 1646 if (LJ_DUALNUM) {
1621 dasm_put(Dst, 6147); 1647 dasm_put(Dst, 6156);
1622 } else if (sse) { 1648 } else if (sse) {
1623 dasm_put(Dst, 6155); 1649 dasm_put(Dst, 6164);
1624 } else { 1650 } else {
1625 dasm_put(Dst, 6166); 1651 dasm_put(Dst, 6175);
1626 } 1652 }
1627 dasm_put(Dst, 6182, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1653 dasm_put(Dst, 6191, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1628 dasm_put(Dst, 6247, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1654 dasm_put(Dst, 6256, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1629 dasm_put(Dst, 6310, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1655 dasm_put(Dst, 6319, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1630 dasm_put(Dst, 6381, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1656 dasm_put(Dst, 6390, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1631 dasm_put(Dst, 6466, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1657 dasm_put(Dst, 6475, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1632 dasm_put(Dst, 6536, 1+1, LJ_TTAB); 1658 dasm_put(Dst, 6545, 1+1, LJ_TTAB);
1633 if (LJ_DUALNUM) { 1659 if (LJ_DUALNUM) {
1634 dasm_put(Dst, 6604); 1660 dasm_put(Dst, 6613);
1635 } else if (sse) { 1661 } else if (sse) {
1636 dasm_put(Dst, 6611); 1662 dasm_put(Dst, 6620);
1637 } else { 1663 } else {
1638 dasm_put(Dst, 6621); 1664 dasm_put(Dst, 6630);
1639 } 1665 }
1640 dasm_put(Dst, 6632, 1+1, LJ_TISNUM); 1666 dasm_put(Dst, 6641, 1+1, LJ_TISNUM);
1641 if (LJ_DUALNUM) { 1667 if (LJ_DUALNUM) {
1642 dasm_put(Dst, 6648); 1668 dasm_put(Dst, 6657);
1643 } else { 1669 } else {
1644 dasm_put(Dst, 2264); 1670 dasm_put(Dst, 2273);
1645 } 1671 }
1646 if (sse) { 1672 if (sse) {
1647 dasm_put(Dst, 6665); 1673 dasm_put(Dst, 6674);
1648 } else { 1674 } else {
1649 dasm_put(Dst, 6694); 1675 dasm_put(Dst, 6703);
1650 } 1676 }
1651 dasm_put(Dst, 111); 1677 dasm_put(Dst, 111);
1652 if (LJ_DUALNUM || sse) { 1678 if (LJ_DUALNUM || sse) {
1653 if (!sse) { 1679 if (!sse) {
1654 dasm_put(Dst, 6712); 1680 dasm_put(Dst, 6721);
1655 } 1681 }
1656 dasm_put(Dst, 6716); 1682 dasm_put(Dst, 6725);
1657 } else { 1683 } else {
1658 dasm_put(Dst, 6624); 1684 dasm_put(Dst, 6633);
1659 } 1685 }
1660 dasm_put(Dst, 6721, 1+1); 1686 dasm_put(Dst, 6730, 1+1);
1661 if (sse) { 1687 if (sse) {
1662 dasm_put(Dst, 6732); 1688 dasm_put(Dst, 6741);
1663 } else { 1689 } else {
1664 dasm_put(Dst, 6747); 1690 dasm_put(Dst, 6756);
1665 } 1691 }
1666 dasm_put(Dst, 2241, LJ_TISNUM); 1692 dasm_put(Dst, 2250, LJ_TISNUM);
1667 if (LJ_DUALNUM) { 1693 if (LJ_DUALNUM) {
1668 dasm_put(Dst, 6756); 1694 dasm_put(Dst, 6765);
1669 } else { 1695 } else {
1670 dasm_put(Dst, 2264); 1696 dasm_put(Dst, 2273);
1671 } 1697 }
1672 if (sse) { 1698 if (sse) {
1673 dasm_put(Dst, 6773); 1699 dasm_put(Dst, 6782);
1674 } else { 1700 } else {
1675 dasm_put(Dst, 6788); 1701 dasm_put(Dst, 6797);
1676 } 1702 }
1677 dasm_put(Dst, 6801, LJ_TISNUM); 1703 dasm_put(Dst, 6810, LJ_TISNUM);
1678 if (LJ_DUALNUM) { 1704 if (LJ_DUALNUM) {
1679 dasm_put(Dst, 6826); 1705 dasm_put(Dst, 6835);
1680 } else { 1706 } else {
1681 dasm_put(Dst, 6846); 1707 dasm_put(Dst, 6855);
1682 } 1708 }
1683 if (sse) { 1709 if (sse) {
1684 dasm_put(Dst, 6851); 1710 dasm_put(Dst, 6860);
1685 } else { 1711 } else {
1686 dasm_put(Dst, 6868); 1712 dasm_put(Dst, 6877);
1687 } 1713 }
1688 dasm_put(Dst, 6881, 1+1); 1714 dasm_put(Dst, 6890, 1+1);
1689 if (sse) { 1715 if (sse) {
1690 dasm_put(Dst, 6732); 1716 dasm_put(Dst, 6741);
1691 } else { 1717 } else {
1692 dasm_put(Dst, 6747); 1718 dasm_put(Dst, 6756);
1693 } 1719 }
1694 dasm_put(Dst, 2241, LJ_TISNUM); 1720 dasm_put(Dst, 2250, LJ_TISNUM);
1695 if (LJ_DUALNUM) { 1721 if (LJ_DUALNUM) {
1696 dasm_put(Dst, 6756); 1722 dasm_put(Dst, 6765);
1697 } else { 1723 } else {
1698 dasm_put(Dst, 2264); 1724 dasm_put(Dst, 2273);
1699 } 1725 }
1700 if (sse) { 1726 if (sse) {
1701 dasm_put(Dst, 6773); 1727 dasm_put(Dst, 6782);
1702 } else { 1728 } else {
1703 dasm_put(Dst, 6788); 1729 dasm_put(Dst, 6797);
1704 } 1730 }
1705 dasm_put(Dst, 6801, LJ_TISNUM); 1731 dasm_put(Dst, 6810, LJ_TISNUM);
1706 if (LJ_DUALNUM) { 1732 if (LJ_DUALNUM) {
1707 dasm_put(Dst, 6899); 1733 dasm_put(Dst, 6908);
1708 } else { 1734 } else {
1709 dasm_put(Dst, 6846); 1735 dasm_put(Dst, 6855);
1710 } 1736 }
1711 if (sse) { 1737 if (sse) {
1712 dasm_put(Dst, 6919); 1738 dasm_put(Dst, 6928);
1713 } else { 1739 } else {
1714 dasm_put(Dst, 6936); 1740 dasm_put(Dst, 6945);
1715 } 1741 }
1716 dasm_put(Dst, 6949, 1+1); 1742 dasm_put(Dst, 6958, 1+1);
1717 if (sse) { 1743 if (sse) {
1718 dasm_put(Dst, 6732); 1744 dasm_put(Dst, 6741);
1719 } else { 1745 } else {
1720 dasm_put(Dst, 6747); 1746 dasm_put(Dst, 6756);
1721 } 1747 }
1722 dasm_put(Dst, 2241, LJ_TISNUM); 1748 dasm_put(Dst, 2250, LJ_TISNUM);
1723 if (LJ_DUALNUM) { 1749 if (LJ_DUALNUM) {
1724 dasm_put(Dst, 6756); 1750 dasm_put(Dst, 6765);
1725 } else { 1751 } else {
1726 dasm_put(Dst, 2264); 1752 dasm_put(Dst, 2273);
1727 } 1753 }
1728 if (sse) { 1754 if (sse) {
1729 dasm_put(Dst, 6773); 1755 dasm_put(Dst, 6782);
1730 } else { 1756 } else {
1731 dasm_put(Dst, 6788); 1757 dasm_put(Dst, 6797);
1732 } 1758 }
1733 dasm_put(Dst, 6801, LJ_TISNUM); 1759 dasm_put(Dst, 6810, LJ_TISNUM);
1734 if (LJ_DUALNUM) { 1760 if (LJ_DUALNUM) {
1735 dasm_put(Dst, 6967); 1761 dasm_put(Dst, 6976);
1736 } else { 1762 } else {
1737 dasm_put(Dst, 6846); 1763 dasm_put(Dst, 6855);
1738 } 1764 }
1739 if (sse) { 1765 if (sse) {
1740 dasm_put(Dst, 6987); 1766 dasm_put(Dst, 6996);
1741 } else { 1767 } else {
1742 dasm_put(Dst, 7004); 1768 dasm_put(Dst, 7013);
1743 } 1769 }
1744 dasm_put(Dst, 7017, 1+1, LJ_TISNUM); 1770 dasm_put(Dst, 7026, 1+1, LJ_TISNUM);
1745 if (LJ_DUALNUM) { 1771 if (LJ_DUALNUM) {
1746 dasm_put(Dst, 6756); 1772 dasm_put(Dst, 6765);
1747 } else { 1773 } else {
1748 dasm_put(Dst, 2264); 1774 dasm_put(Dst, 2273);
1749 } 1775 }
1750 if (sse) { 1776 if (sse) {
1751 dasm_put(Dst, 6665); 1777 dasm_put(Dst, 6674);
1752 } else { 1778 } else {
1753 dasm_put(Dst, 7040); 1779 dasm_put(Dst, 7049);
1754 } 1780 }
1755 dasm_put(Dst, 7061, 1+1, LJ_TISNUM); 1781 dasm_put(Dst, 7070, 1+1, LJ_TISNUM);
1756 if (LJ_DUALNUM) { 1782 if (LJ_DUALNUM) {
1757 dasm_put(Dst, 6756); 1783 dasm_put(Dst, 6765);
1758 } else { 1784 } else {
1759 dasm_put(Dst, 2264); 1785 dasm_put(Dst, 2273);
1760 } 1786 }
1761 if (sse) { 1787 if (sse) {
1762 dasm_put(Dst, 6665); 1788 dasm_put(Dst, 6674);
1763 } else { 1789 } else {
1764 dasm_put(Dst, 7040); 1790 dasm_put(Dst, 7049);
1765 } 1791 }
1766 dasm_put(Dst, 7085); 1792 dasm_put(Dst, 7094);
1767 if (LJ_DUALNUM) { 1793 if (LJ_DUALNUM) {
1768 dasm_put(Dst, 6716); 1794 dasm_put(Dst, 6725);
1769 } else if (sse) { 1795 } else if (sse) {
1770 dasm_put(Dst, 7091); 1796 dasm_put(Dst, 7100);
1771 } else { 1797 } else {
1772 dasm_put(Dst, 7103); 1798 dasm_put(Dst, 7112);
1773 } 1799 }
1774 dasm_put(Dst, 7116); 1800 dasm_put(Dst, 7125);
1775 if (LJ_DUALNUM) { 1801 if (LJ_DUALNUM) {
1776 dasm_put(Dst, 7127, 1+1, LJ_TISNUM); 1802 dasm_put(Dst, 7136, 1+1, LJ_TISNUM);
1777 if (LJ_DUALNUM) { 1803 if (LJ_DUALNUM) {
1778 dasm_put(Dst, 6756); 1804 dasm_put(Dst, 6765);
1779 } else { 1805 } else {
1780 dasm_put(Dst, 2264); 1806 dasm_put(Dst, 2273);
1781 } 1807 }
1782 if (sse) { 1808 if (sse) {
1783 dasm_put(Dst, 6665); 1809 dasm_put(Dst, 6674);
1784 } else { 1810 } else {
1785 dasm_put(Dst, 7040); 1811 dasm_put(Dst, 7049);
1786 } 1812 }
1787 dasm_put(Dst, 7143, LJ_TISNUM); 1813 dasm_put(Dst, 7152, LJ_TISNUM);
1788 } else if (sse) { 1814 } else if (sse) {
1789 dasm_put(Dst, 7158, 2+1, LJ_TISNUM, LJ_TISNUM); 1815 dasm_put(Dst, 7167, 2+1, LJ_TISNUM, LJ_TISNUM);
1790 } else { 1816 } else {
1791 dasm_put(Dst, 7230, 2+1, LJ_TISNUM, LJ_TISNUM); 1817 dasm_put(Dst, 7239, 2+1, LJ_TISNUM, LJ_TISNUM);
1792 } 1818 }
1793 dasm_put(Dst, 7294); 1819 dasm_put(Dst, 7303);
1794 if (LJ_DUALNUM) { 1820 if (LJ_DUALNUM) {
1795 dasm_put(Dst, 7301, 1+1, LJ_TISNUM); 1821 dasm_put(Dst, 7310, 1+1, LJ_TISNUM);
1796 if (LJ_DUALNUM) { 1822 if (LJ_DUALNUM) {
1797 dasm_put(Dst, 6756); 1823 dasm_put(Dst, 6765);
1798 } else { 1824 } else {
1799 dasm_put(Dst, 2264); 1825 dasm_put(Dst, 2273);
1800 } 1826 }
1801 if (sse) { 1827 if (sse) {
1802 dasm_put(Dst, 6665); 1828 dasm_put(Dst, 6674);
1803 } else { 1829 } else {
1804 dasm_put(Dst, 7040); 1830 dasm_put(Dst, 7049);
1805 } 1831 }
1806 dasm_put(Dst, 7143, LJ_TISNUM); 1832 dasm_put(Dst, 7152, LJ_TISNUM);
1807 } else if (sse) { 1833 } else if (sse) {
1808 dasm_put(Dst, 7317, 2+1, LJ_TISNUM, LJ_TISNUM); 1834 dasm_put(Dst, 7326, 2+1, LJ_TISNUM, LJ_TISNUM);
1809 } else { 1835 } else {
1810 dasm_put(Dst, 7389, 2+1, LJ_TISNUM, LJ_TISNUM); 1836 dasm_put(Dst, 7398, 2+1, LJ_TISNUM, LJ_TISNUM);
1811 } 1837 }
1812 dasm_put(Dst, 7453); 1838 dasm_put(Dst, 7462);
1813 if (LJ_DUALNUM) { 1839 if (LJ_DUALNUM) {
1814 dasm_put(Dst, 7461, 1+1, LJ_TISNUM); 1840 dasm_put(Dst, 7470, 1+1, LJ_TISNUM);
1815 if (LJ_DUALNUM) { 1841 if (LJ_DUALNUM) {
1816 dasm_put(Dst, 6756); 1842 dasm_put(Dst, 6765);
1817 } else { 1843 } else {
1818 dasm_put(Dst, 2264); 1844 dasm_put(Dst, 2273);
1819 } 1845 }
1820 if (sse) { 1846 if (sse) {
1821 dasm_put(Dst, 6665); 1847 dasm_put(Dst, 6674);
1822 } else { 1848 } else {
1823 dasm_put(Dst, 7040); 1849 dasm_put(Dst, 7049);
1824 } 1850 }
1825 dasm_put(Dst, 7143, LJ_TISNUM); 1851 dasm_put(Dst, 7152, LJ_TISNUM);
1826 } else if (sse) { 1852 } else if (sse) {
1827 dasm_put(Dst, 7477, 2+1, LJ_TISNUM, LJ_TISNUM); 1853 dasm_put(Dst, 7486, 2+1, LJ_TISNUM, LJ_TISNUM);
1828 } else { 1854 } else {
1829 dasm_put(Dst, 7549, 2+1, LJ_TISNUM, LJ_TISNUM); 1855 dasm_put(Dst, 7558, 2+1, LJ_TISNUM, LJ_TISNUM);
1830 } 1856 }
1831 dasm_put(Dst, 7613); 1857 dasm_put(Dst, 7622);
1832 if (LJ_DUALNUM) { 1858 if (LJ_DUALNUM) {
1833 dasm_put(Dst, 7621, 1+1, LJ_TISNUM); 1859 dasm_put(Dst, 7630, 1+1, LJ_TISNUM);
1834 if (LJ_DUALNUM) { 1860 if (LJ_DUALNUM) {
1835 dasm_put(Dst, 6756); 1861 dasm_put(Dst, 6765);
1836 } else { 1862 } else {
1837 dasm_put(Dst, 2264); 1863 dasm_put(Dst, 2273);
1838 } 1864 }
1839 if (sse) { 1865 if (sse) {
1840 dasm_put(Dst, 6665); 1866 dasm_put(Dst, 6674);
1841 } else { 1867 } else {
1842 dasm_put(Dst, 7040); 1868 dasm_put(Dst, 7049);
1843 } 1869 }
1844 dasm_put(Dst, 7143, LJ_TISNUM); 1870 dasm_put(Dst, 7152, LJ_TISNUM);
1845 } else if (sse) { 1871 } else if (sse) {
1846 dasm_put(Dst, 7637, 2+1, LJ_TISNUM, LJ_TISNUM); 1872 dasm_put(Dst, 7646, 2+1, LJ_TISNUM, LJ_TISNUM);
1847 } else { 1873 } else {
1848 dasm_put(Dst, 7709, 2+1, LJ_TISNUM, LJ_TISNUM); 1874 dasm_put(Dst, 7718, 2+1, LJ_TISNUM, LJ_TISNUM);
1849 } 1875 }
1850 dasm_put(Dst, 7773); 1876 dasm_put(Dst, 7782);
1851 if (LJ_DUALNUM) { 1877 if (LJ_DUALNUM) {
1852 dasm_put(Dst, 7780, 1+1, LJ_TISNUM); 1878 dasm_put(Dst, 7789, 1+1, LJ_TISNUM);
1853 if (LJ_DUALNUM) { 1879 if (LJ_DUALNUM) {
1854 dasm_put(Dst, 6756); 1880 dasm_put(Dst, 6765);
1855 } else { 1881 } else {
1856 dasm_put(Dst, 2264); 1882 dasm_put(Dst, 2273);
1857 } 1883 }
1858 if (sse) { 1884 if (sse) {
1859 dasm_put(Dst, 6665); 1885 dasm_put(Dst, 6674);
1860 } else { 1886 } else {
1861 dasm_put(Dst, 7040); 1887 dasm_put(Dst, 7049);
1862 } 1888 }
1863 dasm_put(Dst, 7143, LJ_TISNUM); 1889 dasm_put(Dst, 7152, LJ_TISNUM);
1864 } else if (sse) { 1890 } else if (sse) {
1865 dasm_put(Dst, 7796, 2+1, LJ_TISNUM, LJ_TISNUM); 1891 dasm_put(Dst, 7805, 2+1, LJ_TISNUM, LJ_TISNUM);
1866 } else { 1892 } else {
1867 dasm_put(Dst, 7868, 2+1, LJ_TISNUM, LJ_TISNUM); 1893 dasm_put(Dst, 7877, 2+1, LJ_TISNUM, LJ_TISNUM);
1868 } 1894 }
1869 dasm_put(Dst, 7932, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1895 dasm_put(Dst, 7941, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1870 dasm_put(Dst, 8008, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1896 dasm_put(Dst, 8017, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1871 dasm_put(Dst, 8132, Dt1(->top), Dt1(->base), Dt1(->top)); 1897 dasm_put(Dst, 8141, Dt1(->top), Dt1(->base), Dt1(->top));
1872#if LJ_HASJIT 1898#if LJ_HASJIT
1873 dasm_put(Dst, 8170, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1899 dasm_put(Dst, 8179, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1874#endif 1900#endif
1875 dasm_put(Dst, 8201, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1901 dasm_put(Dst, 8210, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1876 dasm_put(Dst, 8252, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1902 dasm_put(Dst, 8261, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1877#if LJ_HASJIT 1903#if LJ_HASJIT
1878 dasm_put(Dst, 8318, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1904 dasm_put(Dst, 8327, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1879#endif 1905#endif
1880 dasm_put(Dst, 8364); 1906 dasm_put(Dst, 8373);
1881#if LJ_HASJIT 1907#if LJ_HASJIT
1882 dasm_put(Dst, 8196); 1908 dasm_put(Dst, 8205);
1883#endif 1909#endif
1884 dasm_put(Dst, 8371); 1910 dasm_put(Dst, 8380);
1885#if LJ_HASJIT 1911#if LJ_HASJIT
1886 dasm_put(Dst, 8374); 1912 dasm_put(Dst, 8383);
1887#endif 1913#endif
1888 dasm_put(Dst, 8384, Dt1(->base), Dt1(->top)); 1914 dasm_put(Dst, 8393, Dt1(->base), Dt1(->top));
1889#if LJ_HASJIT 1915#if LJ_HASJIT
1890 dasm_put(Dst, 8418); 1916 dasm_put(Dst, 8427);
1891#endif 1917#endif
1892 dasm_put(Dst, 8423, Dt1(->base), Dt1(->top)); 1918 dasm_put(Dst, 8432, Dt1(->base), Dt1(->top));
1893#if LJ_HASJIT 1919#if LJ_HASJIT
1894 dasm_put(Dst, 8452, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); 1920 dasm_put(Dst, 8461, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
1895#endif 1921#endif
1896 dasm_put(Dst, 8595); 1922 dasm_put(Dst, 8604);
1897#if LJ_HASJIT 1923#if LJ_HASJIT
1898 dasm_put(Dst, 8598, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1924 dasm_put(Dst, 8607, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1899#endif 1925#endif
1900 dasm_put(Dst, 8676); 1926 dasm_put(Dst, 8685);
1901 if (!sse) { 1927 if (!sse) {
1902 dasm_put(Dst, 8679); 1928 dasm_put(Dst, 8688);
1903 } 1929 }
1904 dasm_put(Dst, 8724); 1930 dasm_put(Dst, 8733);
1905 if (!sse) { 1931 if (!sse) {
1906 dasm_put(Dst, 8826); 1932 dasm_put(Dst, 8835);
1907 } 1933 }
1908 dasm_put(Dst, 8871); 1934 dasm_put(Dst, 8880);
1909 if (!sse) { 1935 if (!sse) {
1910 dasm_put(Dst, 8973); 1936 dasm_put(Dst, 8982);
1911 } 1937 }
1912 dasm_put(Dst, 9012); 1938 dasm_put(Dst, 9021);
1913 if (sse) { 1939 if (sse) {
1914 dasm_put(Dst, 9117); 1940 dasm_put(Dst, 9126);
1915 } else { 1941 } else {
1916 dasm_put(Dst, 9247); 1942 dasm_put(Dst, 9256);
1917 } 1943 }
1918 dasm_put(Dst, 9294); 1944 dasm_put(Dst, 9303);
1919 if (!sse) { 1945 if (!sse) {
1920 dasm_put(Dst, 9368); 1946 dasm_put(Dst, 9377);
1921 if (cmov) { 1947 if (cmov) {
1922 dasm_put(Dst, 9379); 1948 dasm_put(Dst, 9388);
1923 } else { 1949 } else {
1924 dasm_put(Dst, 9383); 1950 dasm_put(Dst, 9392);
1925 } 1951 }
1926 dasm_put(Dst, 9390); 1952 dasm_put(Dst, 9399);
1927 dasm_put(Dst, 9464); 1953 dasm_put(Dst, 9473);
1928 dasm_put(Dst, 9564); 1954 dasm_put(Dst, 9573);
1929 if (cmov) { 1955 if (cmov) {
1930 dasm_put(Dst, 9567); 1956 dasm_put(Dst, 9576);
1931 } else { 1957 } else {
1932 dasm_put(Dst, 9571); 1958 dasm_put(Dst, 9580);
1933 } 1959 }
1934 dasm_put(Dst, 9578); 1960 dasm_put(Dst, 9587);
1935 if (cmov) { 1961 if (cmov) {
1936 dasm_put(Dst, 9379); 1962 dasm_put(Dst, 9388);
1937 } else { 1963 } else {
1938 dasm_put(Dst, 9383); 1964 dasm_put(Dst, 9392);
1939 } 1965 }
1940 dasm_put(Dst, 9596); 1966 dasm_put(Dst, 9605);
1941 } else { 1967 } else {
1942 dasm_put(Dst, 9675); 1968 dasm_put(Dst, 9684);
1943 } 1969 }
1944 dasm_put(Dst, 9678); 1970 dasm_put(Dst, 9687);
1945 dasm_put(Dst, 9763); 1971 dasm_put(Dst, 9772);
1946 dasm_put(Dst, 9893); 1972 dasm_put(Dst, 9902);
1947 dasm_put(Dst, 10099); 1973 dasm_put(Dst, 10108);
1948#if LJ_HASJIT 1974#if LJ_HASJIT
1949 if (sse) { 1975 if (sse) {
1950 dasm_put(Dst, 10106); 1976 dasm_put(Dst, 10115);
1951 dasm_put(Dst, 10163); 1977 dasm_put(Dst, 10172);
1952 dasm_put(Dst, 10254); 1978 dasm_put(Dst, 10263);
1953 } else { 1979 } else {
1954 dasm_put(Dst, 10296); 1980 dasm_put(Dst, 10305);
1955 dasm_put(Dst, 10388); 1981 dasm_put(Dst, 10397);
1956 } 1982 }
1957 dasm_put(Dst, 10434); 1983 dasm_put(Dst, 10443);
1958#endif 1984#endif
1959 dasm_put(Dst, 10438); 1985 dasm_put(Dst, 10447);
1960 if (sse) { 1986 if (sse) {
1961 dasm_put(Dst, 10441); 1987 dasm_put(Dst, 10450);
1962 dasm_put(Dst, 10546); 1988 dasm_put(Dst, 10555);
1963 dasm_put(Dst, 10629); 1989 dasm_put(Dst, 10638);
1964 } else { 1990 } else {
1965 dasm_put(Dst, 10701); 1991 dasm_put(Dst, 10710);
1966 dasm_put(Dst, 10784); 1992 dasm_put(Dst, 10793);
1967 if (cmov) { 1993 if (cmov) {
1968 dasm_put(Dst, 10839); 1994 dasm_put(Dst, 10848);
1969 } else { 1995 } else {
1970 dasm_put(Dst, 10858); 1996 dasm_put(Dst, 10867);
1971 } 1997 }
1972 dasm_put(Dst, 10434); 1998 dasm_put(Dst, 10443);
1973 } 1999 }
1974 dasm_put(Dst, 10899); 2000 dasm_put(Dst, 10908);
1975#ifdef LUA_USE_ASSERT 2001#ifdef LUA_USE_ASSERT
1976 dasm_put(Dst, 10436); 2002 dasm_put(Dst, 10445);
2003#endif
2004 dasm_put(Dst, 10964);
2005#if LJ_HASFFI
2006#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
2007 dasm_put(Dst, 10968, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), CFRAME_SIZE+16, DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.stack), CFRAME_SIZE+12, CFRAME_SIZE+8, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc));
1977#endif 2008#endif
1978 dasm_put(Dst, 10955); 2009 dasm_put(Dst, 11078);
1979#if LJ_HASFFI 2010#if LJ_HASFFI
1980#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 2011 dasm_put(Dst, 11081, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.fpr[0].d), DtE(->cb.fpr[0].f), Dt1(->top));
1981 dasm_put(Dst, 10959, DtE(->spadj)); 2012#endif
2013 dasm_put(Dst, 11170);
2014#if LJ_HASFFI
2015#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
2016 dasm_put(Dst, 11173, DtF(->spadj));
1982#if LJ_TARGET_WINDOWS 2017#if LJ_TARGET_WINDOWS
1983 dasm_put(Dst, 10969, DtE(->spadj)); 2018 dasm_put(Dst, 11183, DtF(->spadj));
1984#endif 2019#endif
1985 dasm_put(Dst, 10973, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0])); 2020 dasm_put(Dst, 11187, DtF(->nsp), offsetof(CCallState, stack), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->func), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->resx87), DtF(->fpr[0].d[0]));
1986 dasm_put(Dst, 11043, DtE(->fpr[0].f[0])); 2021 dasm_put(Dst, 11257, DtF(->fpr[0].f[0]));
1987#if LJ_TARGET_WINDOWS 2022#if LJ_TARGET_WINDOWS
1988 dasm_put(Dst, 11049, DtE(->spadj)); 2023 dasm_put(Dst, 11263, DtF(->spadj));
1989#endif 2024#endif
1990 dasm_put(Dst, 11053); 2025 dasm_put(Dst, 11267);
1991#endif 2026#endif
1992} 2027}
1993 2028
@@ -1995,7 +2030,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1995static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 2030static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1996{ 2031{
1997 int vk = 0; 2032 int vk = 0;
1998 dasm_put(Dst, 11060, defop); 2033 dasm_put(Dst, 11274, defop);
1999 2034
2000 switch (op) { 2035 switch (op) {
2001 2036
@@ -2006,303 +2041,303 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2006 2041
2007 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 2042 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
2008 if (LJ_DUALNUM) { 2043 if (LJ_DUALNUM) {
2009 dasm_put(Dst, 11062, LJ_TISNUM, LJ_TISNUM); 2044 dasm_put(Dst, 11276, LJ_TISNUM, LJ_TISNUM);
2010 switch (op) { 2045 switch (op) {
2011 case BC_ISLT: 2046 case BC_ISLT:
2012 dasm_put(Dst, 11092); 2047 dasm_put(Dst, 11306);
2013 break; 2048 break;
2014 case BC_ISGE: 2049 case BC_ISGE:
2015 dasm_put(Dst, 11097); 2050 dasm_put(Dst, 11311);
2016 break; 2051 break;
2017 case BC_ISLE: 2052 case BC_ISLE:
2018 dasm_put(Dst, 11102); 2053 dasm_put(Dst, 11316);
2019 break; 2054 break;
2020 case BC_ISGT: 2055 case BC_ISGT:
2021 dasm_put(Dst, 11107); 2056 dasm_put(Dst, 11321);
2022 break; 2057 break;
2023 default: break; /* Shut up GCC. */ 2058 default: break; /* Shut up GCC. */
2024 } 2059 }
2025 dasm_put(Dst, 11112, -BCBIAS_J*4, LJ_TISNUM); 2060 dasm_put(Dst, 11326, -BCBIAS_J*4, LJ_TISNUM);
2026 if (sse) { 2061 if (sse) {
2027 dasm_put(Dst, 11165); 2062 dasm_put(Dst, 11379);
2028 } else { 2063 } else {
2029 dasm_put(Dst, 11176); 2064 dasm_put(Dst, 11390);
2030 } 2065 }
2031 dasm_put(Dst, 11187); 2066 dasm_put(Dst, 11401);
2032 if (sse) { 2067 if (sse) {
2033 dasm_put(Dst, 11194); 2068 dasm_put(Dst, 11408);
2034 switch (op) { 2069 switch (op) {
2035 case BC_ISLT: 2070 case BC_ISLT:
2036 dasm_put(Dst, 11214); 2071 dasm_put(Dst, 11428);
2037 break; 2072 break;
2038 case BC_ISGE: 2073 case BC_ISGE:
2039 dasm_put(Dst, 11219); 2074 dasm_put(Dst, 11433);
2040 break; 2075 break;
2041 case BC_ISLE: 2076 case BC_ISLE:
2042 dasm_put(Dst, 11224); 2077 dasm_put(Dst, 11438);
2043 break; 2078 break;
2044 case BC_ISGT: 2079 case BC_ISGT:
2045 dasm_put(Dst, 11229); 2080 dasm_put(Dst, 11443);
2046 break; 2081 break;
2047 default: break; /* Shut up GCC. */ 2082 default: break; /* Shut up GCC. */
2048 } 2083 }
2049 dasm_put(Dst, 11234); 2084 dasm_put(Dst, 11448);
2050 } else { 2085 } else {
2051 dasm_put(Dst, 11239); 2086 dasm_put(Dst, 11453);
2052 } 2087 }
2053 } else { 2088 } else {
2054 dasm_put(Dst, 11247, LJ_TISNUM, LJ_TISNUM); 2089 dasm_put(Dst, 11461, LJ_TISNUM, LJ_TISNUM);
2055 } 2090 }
2056 if (sse) { 2091 if (sse) {
2057 dasm_put(Dst, 11268); 2092 dasm_put(Dst, 11482);
2058 } else { 2093 } else {
2059 dasm_put(Dst, 11289); 2094 dasm_put(Dst, 11503);
2060 if (cmov) { 2095 if (cmov) {
2061 dasm_put(Dst, 3944); 2096 dasm_put(Dst, 3953);
2062 } else { 2097 } else {
2063 dasm_put(Dst, 3950); 2098 dasm_put(Dst, 3959);
2064 } 2099 }
2065 } 2100 }
2066 if (LJ_DUALNUM) { 2101 if (LJ_DUALNUM) {
2067 switch (op) { 2102 switch (op) {
2068 case BC_ISLT: 2103 case BC_ISLT:
2069 dasm_put(Dst, 11214); 2104 dasm_put(Dst, 11428);
2070 break; 2105 break;
2071 case BC_ISGE: 2106 case BC_ISGE:
2072 dasm_put(Dst, 11219); 2107 dasm_put(Dst, 11433);
2073 break; 2108 break;
2074 case BC_ISLE: 2109 case BC_ISLE:
2075 dasm_put(Dst, 11224); 2110 dasm_put(Dst, 11438);
2076 break; 2111 break;
2077 case BC_ISGT: 2112 case BC_ISGT:
2078 dasm_put(Dst, 11229); 2113 dasm_put(Dst, 11443);
2079 break; 2114 break;
2080 default: break; /* Shut up GCC. */ 2115 default: break; /* Shut up GCC. */
2081 } 2116 }
2082 dasm_put(Dst, 11234); 2117 dasm_put(Dst, 11448);
2083 } else { 2118 } else {
2084 switch (op) { 2119 switch (op) {
2085 case BC_ISLT: 2120 case BC_ISLT:
2086 dasm_put(Dst, 11305); 2121 dasm_put(Dst, 752);
2087 break; 2122 break;
2088 case BC_ISGE: 2123 case BC_ISGE:
2089 dasm_put(Dst, 11310); 2124 dasm_put(Dst, 11519);
2090 break; 2125 break;
2091 case BC_ISLE: 2126 case BC_ISLE:
2092 dasm_put(Dst, 11315); 2127 dasm_put(Dst, 11524);
2093 break; 2128 break;
2094 case BC_ISGT: 2129 case BC_ISGT:
2095 dasm_put(Dst, 11320); 2130 dasm_put(Dst, 11529);
2096 break; 2131 break;
2097 default: break; /* Shut up GCC. */ 2132 default: break; /* Shut up GCC. */
2098 } 2133 }
2099 dasm_put(Dst, 11325, -BCBIAS_J*4); 2134 dasm_put(Dst, 11534, -BCBIAS_J*4);
2100 } 2135 }
2101 break; 2136 break;
2102 2137
2103 case BC_ISEQV: case BC_ISNEV: 2138 case BC_ISEQV: case BC_ISNEV:
2104 vk = op == BC_ISEQV; 2139 vk = op == BC_ISEQV;
2105 dasm_put(Dst, 11356); 2140 dasm_put(Dst, 11565);
2106 if (LJ_DUALNUM) { 2141 if (LJ_DUALNUM) {
2107 dasm_put(Dst, 11364, LJ_TISNUM, LJ_TISNUM); 2142 dasm_put(Dst, 11573, LJ_TISNUM, LJ_TISNUM);
2108 if (vk) { 2143 if (vk) {
2109 dasm_put(Dst, 11389); 2144 dasm_put(Dst, 11598);
2110 } else { 2145 } else {
2111 dasm_put(Dst, 11394); 2146 dasm_put(Dst, 11603);
2112 } 2147 }
2113 dasm_put(Dst, 11399, -BCBIAS_J*4, LJ_TISNUM); 2148 dasm_put(Dst, 11608, -BCBIAS_J*4, LJ_TISNUM);
2114 if (sse) { 2149 if (sse) {
2115 dasm_put(Dst, 11450); 2150 dasm_put(Dst, 11659);
2116 } else { 2151 } else {
2117 dasm_put(Dst, 11457); 2152 dasm_put(Dst, 11666);
2118 } 2153 }
2119 dasm_put(Dst, 11461); 2154 dasm_put(Dst, 11670);
2120 if (sse) { 2155 if (sse) {
2121 dasm_put(Dst, 11472); 2156 dasm_put(Dst, 11681);
2122 } else { 2157 } else {
2123 dasm_put(Dst, 11484); 2158 dasm_put(Dst, 11693);
2124 } 2159 }
2125 dasm_put(Dst, 11491); 2160 dasm_put(Dst, 11700);
2126 } else { 2161 } else {
2127 dasm_put(Dst, 11496, LJ_TISNUM, LJ_TISNUM); 2162 dasm_put(Dst, 11705, LJ_TISNUM, LJ_TISNUM);
2128 } 2163 }
2129 if (sse) { 2164 if (sse) {
2130 dasm_put(Dst, 11515); 2165 dasm_put(Dst, 11724);
2131 } else { 2166 } else {
2132 dasm_put(Dst, 11533); 2167 dasm_put(Dst, 11742);
2133 if (cmov) { 2168 if (cmov) {
2134 dasm_put(Dst, 3944); 2169 dasm_put(Dst, 3953);
2135 } else { 2170 } else {
2136 dasm_put(Dst, 3950); 2171 dasm_put(Dst, 3959);
2137 } 2172 }
2138 } 2173 }
2139 iseqne_fp: 2174 iseqne_fp:
2140 if (vk) { 2175 if (vk) {
2141 dasm_put(Dst, 11546); 2176 dasm_put(Dst, 11755);
2142 } else { 2177 } else {
2143 dasm_put(Dst, 11555); 2178 dasm_put(Dst, 11764);
2144 } 2179 }
2145 iseqne_end: 2180 iseqne_end:
2146 if (vk) { 2181 if (vk) {
2147 dasm_put(Dst, 11564, -BCBIAS_J*4); 2182 dasm_put(Dst, 11773, -BCBIAS_J*4);
2148 if (!LJ_HASFFI) { 2183 if (!LJ_HASFFI) {
2149 dasm_put(Dst, 4844); 2184 dasm_put(Dst, 4853);
2150 } 2185 }
2151 } else { 2186 } else {
2152 if (!LJ_HASFFI) { 2187 if (!LJ_HASFFI) {
2153 dasm_put(Dst, 4844); 2188 dasm_put(Dst, 4853);
2154 } 2189 }
2155 dasm_put(Dst, 11579, -BCBIAS_J*4); 2190 dasm_put(Dst, 11788, -BCBIAS_J*4);
2156 } 2191 }
2157 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || 2192 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
2158 op == BC_ISEQN || op == BC_ISNEN)) { 2193 op == BC_ISEQN || op == BC_ISNEN)) {
2159 dasm_put(Dst, 11594); 2194 dasm_put(Dst, 11803);
2160 } else { 2195 } else {
2161 dasm_put(Dst, 11337); 2196 dasm_put(Dst, 11546);
2162 } 2197 }
2163 if (op == BC_ISEQV || op == BC_ISNEV) { 2198 if (op == BC_ISEQV || op == BC_ISNEV) {
2164 dasm_put(Dst, 11599); 2199 dasm_put(Dst, 11808);
2165 if (LJ_HASFFI) { 2200 if (LJ_HASFFI) {
2166 dasm_put(Dst, 11602, LJ_TCDATA, LJ_TCDATA); 2201 dasm_put(Dst, 11811, LJ_TCDATA, LJ_TCDATA);
2167 } 2202 }
2168 dasm_put(Dst, 11621, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 2203 dasm_put(Dst, 11830, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
2169 if (vk) { 2204 if (vk) {
2170 dasm_put(Dst, 11677); 2205 dasm_put(Dst, 11886);
2171 } else { 2206 } else {
2172 dasm_put(Dst, 11681); 2207 dasm_put(Dst, 11890);
2173 } 2208 }
2174 dasm_put(Dst, 11687); 2209 dasm_put(Dst, 11896);
2175 } else if (LJ_HASFFI) { 2210 } else if (LJ_HASFFI) {
2176 dasm_put(Dst, 11692, LJ_TCDATA); 2211 dasm_put(Dst, 11901, LJ_TCDATA);
2177 if (LJ_DUALNUM && vk) { 2212 if (LJ_DUALNUM && vk) {
2178 dasm_put(Dst, 11699); 2213 dasm_put(Dst, 11908);
2179 } else { 2214 } else {
2180 dasm_put(Dst, 11672); 2215 dasm_put(Dst, 11881);
2181 } 2216 }
2182 dasm_put(Dst, 11704); 2217 dasm_put(Dst, 11913);
2183 } 2218 }
2184 break; 2219 break;
2185 case BC_ISEQS: case BC_ISNES: 2220 case BC_ISEQS: case BC_ISNES:
2186 vk = op == BC_ISEQS; 2221 vk = op == BC_ISEQS;
2187 dasm_put(Dst, 11709, LJ_TSTR); 2222 dasm_put(Dst, 11918, LJ_TSTR);
2188 iseqne_test: 2223 iseqne_test:
2189 if (vk) { 2224 if (vk) {
2190 dasm_put(Dst, 11550); 2225 dasm_put(Dst, 11759);
2191 } else { 2226 } else {
2192 dasm_put(Dst, 748); 2227 dasm_put(Dst, 2971);
2193 } 2228 }
2194 goto iseqne_end; 2229 goto iseqne_end;
2195 case BC_ISEQN: case BC_ISNEN: 2230 case BC_ISEQN: case BC_ISNEN:
2196 vk = op == BC_ISEQN; 2231 vk = op == BC_ISEQN;
2197 dasm_put(Dst, 11734); 2232 dasm_put(Dst, 11943);
2198 if (LJ_DUALNUM) { 2233 if (LJ_DUALNUM) {
2199 dasm_put(Dst, 11742, LJ_TISNUM, LJ_TISNUM); 2234 dasm_put(Dst, 11951, LJ_TISNUM, LJ_TISNUM);
2200 if (vk) { 2235 if (vk) {
2201 dasm_put(Dst, 11389); 2236 dasm_put(Dst, 11598);
2202 } else { 2237 } else {
2203 dasm_put(Dst, 11394); 2238 dasm_put(Dst, 11603);
2204 } 2239 }
2205 dasm_put(Dst, 11767, -BCBIAS_J*4, LJ_TISNUM); 2240 dasm_put(Dst, 11976, -BCBIAS_J*4, LJ_TISNUM);
2206 if (sse) { 2241 if (sse) {
2207 dasm_put(Dst, 11814); 2242 dasm_put(Dst, 12023);
2208 } else { 2243 } else {
2209 dasm_put(Dst, 11821); 2244 dasm_put(Dst, 12030);
2210 } 2245 }
2211 dasm_put(Dst, 11825); 2246 dasm_put(Dst, 12034);
2212 if (sse) { 2247 if (sse) {
2213 dasm_put(Dst, 11832); 2248 dasm_put(Dst, 12041);
2214 } else { 2249 } else {
2215 dasm_put(Dst, 11844); 2250 dasm_put(Dst, 12053);
2216 } 2251 }
2217 dasm_put(Dst, 11491); 2252 dasm_put(Dst, 11700);
2218 } else { 2253 } else {
2219 dasm_put(Dst, 11851, LJ_TISNUM); 2254 dasm_put(Dst, 12060, LJ_TISNUM);
2220 } 2255 }
2221 if (sse) { 2256 if (sse) {
2222 dasm_put(Dst, 11860); 2257 dasm_put(Dst, 12069);
2223 } else { 2258 } else {
2224 dasm_put(Dst, 11878); 2259 dasm_put(Dst, 12087);
2225 if (cmov) { 2260 if (cmov) {
2226 dasm_put(Dst, 3944); 2261 dasm_put(Dst, 3953);
2227 } else { 2262 } else {
2228 dasm_put(Dst, 3950); 2263 dasm_put(Dst, 3959);
2229 } 2264 }
2230 } 2265 }
2231 goto iseqne_fp; 2266 goto iseqne_fp;
2232 case BC_ISEQP: case BC_ISNEP: 2267 case BC_ISEQP: case BC_ISNEP:
2233 vk = op == BC_ISEQP; 2268 vk = op == BC_ISEQP;
2234 dasm_put(Dst, 11891); 2269 dasm_put(Dst, 12100);
2235 if (!LJ_HASFFI) goto iseqne_test; 2270 if (!LJ_HASFFI) goto iseqne_test;
2236 if (vk) { 2271 if (vk) {
2237 dasm_put(Dst, 11904, -BCBIAS_J*4, LJ_TCDATA); 2272 dasm_put(Dst, 12113, -BCBIAS_J*4, LJ_TCDATA);
2238 } else { 2273 } else {
2239 dasm_put(Dst, 11953, LJ_TCDATA, -BCBIAS_J*4); 2274 dasm_put(Dst, 12162, LJ_TCDATA, -BCBIAS_J*4);
2240 } 2275 }
2241 break; 2276 break;
2242 2277
2243 /* -- Unary test and copy ops ------------------------------------------- */ 2278 /* -- Unary test and copy ops ------------------------------------------- */
2244 2279
2245 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2280 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
2246 dasm_put(Dst, 11996, LJ_TISTRUECOND); 2281 dasm_put(Dst, 12205, LJ_TISTRUECOND);
2247 if (op == BC_IST || op == BC_ISTC) { 2282 if (op == BC_IST || op == BC_ISTC) {
2248 dasm_put(Dst, 11320); 2283 dasm_put(Dst, 11529);
2249 } else { 2284 } else {
2250 dasm_put(Dst, 11315); 2285 dasm_put(Dst, 11524);
2251 } 2286 }
2252 if (op == BC_ISTC || op == BC_ISFC) { 2287 if (op == BC_ISTC || op == BC_ISFC) {
2253 dasm_put(Dst, 12008); 2288 dasm_put(Dst, 12217);
2254 } 2289 }
2255 dasm_put(Dst, 11325, -BCBIAS_J*4); 2290 dasm_put(Dst, 11534, -BCBIAS_J*4);
2256 break; 2291 break;
2257 2292
2258 /* -- Unary ops --------------------------------------------------------- */ 2293 /* -- Unary ops --------------------------------------------------------- */
2259 2294
2260 case BC_MOV: 2295 case BC_MOV:
2261 dasm_put(Dst, 12019); 2296 dasm_put(Dst, 12228);
2262 break; 2297 break;
2263 case BC_NOT: 2298 case BC_NOT:
2264 dasm_put(Dst, 12052, LJ_TISTRUECOND, LJ_TTRUE); 2299 dasm_put(Dst, 12261, LJ_TISTRUECOND, LJ_TTRUE);
2265 break; 2300 break;
2266 case BC_UNM: 2301 case BC_UNM:
2267 if (LJ_DUALNUM) { 2302 if (LJ_DUALNUM) {
2268 dasm_put(Dst, 12087, LJ_TISNUM, LJ_TISNUM); 2303 dasm_put(Dst, 12296, LJ_TISNUM, LJ_TISNUM);
2269 } else { 2304 } else {
2270 dasm_put(Dst, 12163, LJ_TISNUM); 2305 dasm_put(Dst, 12372, LJ_TISNUM);
2271 } 2306 }
2272 if (sse) { 2307 if (sse) {
2273 dasm_put(Dst, 12174); 2308 dasm_put(Dst, 12383);
2274 } else { 2309 } else {
2275 dasm_put(Dst, 12204); 2310 dasm_put(Dst, 12413);
2276 } 2311 }
2277 if (LJ_DUALNUM) { 2312 if (LJ_DUALNUM) {
2278 dasm_put(Dst, 11594); 2313 dasm_put(Dst, 11803);
2279 } else { 2314 } else {
2280 dasm_put(Dst, 11337); 2315 dasm_put(Dst, 11546);
2281 } 2316 }
2282 break; 2317 break;
2283 case BC_LEN: 2318 case BC_LEN:
2284 dasm_put(Dst, 12213, LJ_TSTR); 2319 dasm_put(Dst, 12422, LJ_TSTR);
2285 if (LJ_DUALNUM) { 2320 if (LJ_DUALNUM) {
2286 dasm_put(Dst, 12227, Dt5(->len), LJ_TISNUM); 2321 dasm_put(Dst, 12436, Dt5(->len), LJ_TISNUM);
2287 } else if (sse) { 2322 } else if (sse) {
2288 dasm_put(Dst, 12241, Dt5(->len)); 2323 dasm_put(Dst, 12450, Dt5(->len));
2289 } else { 2324 } else {
2290 dasm_put(Dst, 12259, Dt5(->len)); 2325 dasm_put(Dst, 12468, Dt5(->len));
2291 } 2326 }
2292 dasm_put(Dst, 12268, LJ_TTAB); 2327 dasm_put(Dst, 12477, LJ_TTAB);
2293#ifdef LUAJIT_ENABLE_LUA52COMPAT 2328#ifdef LUAJIT_ENABLE_LUA52COMPAT
2294 dasm_put(Dst, 12302, Dt6(->metatable)); 2329 dasm_put(Dst, 12511, Dt6(->metatable));
2295#endif 2330#endif
2296 dasm_put(Dst, 12316); 2331 dasm_put(Dst, 12525);
2297 if (LJ_DUALNUM) { 2332 if (LJ_DUALNUM) {
2298 } else if (sse) { 2333 } else if (sse) {
2299 dasm_put(Dst, 12325); 2334 dasm_put(Dst, 12534);
2300 } else { 2335 } else {
2301 dasm_put(Dst, 12331); 2336 dasm_put(Dst, 12540);
2302 } 2337 }
2303 dasm_put(Dst, 12338); 2338 dasm_put(Dst, 12547);
2304#ifdef LUAJIT_ENABLE_LUA52COMPAT 2339#ifdef LUAJIT_ENABLE_LUA52COMPAT
2305 dasm_put(Dst, 12351, Dt6(->nomm), 1<<MM_len); 2340 dasm_put(Dst, 12560, Dt6(->nomm), 1<<MM_len);
2306#endif 2341#endif
2307 break; 2342 break;
2308 2343
@@ -2311,620 +2346,620 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2311 2346
2312 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2347 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
2313 if (LJ_DUALNUM) { 2348 if (LJ_DUALNUM) {
2314 dasm_put(Dst, 12367); 2349 dasm_put(Dst, 12576);
2315 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2350 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2316 switch (vk) { 2351 switch (vk) {
2317 case 0: 2352 case 0:
2318 dasm_put(Dst, 12375, LJ_TISNUM, LJ_TISNUM); 2353 dasm_put(Dst, 12584, LJ_TISNUM, LJ_TISNUM);
2319 break; 2354 break;
2320 case 1: 2355 case 1:
2321 dasm_put(Dst, 12408, LJ_TISNUM, LJ_TISNUM); 2356 dasm_put(Dst, 12617, LJ_TISNUM, LJ_TISNUM);
2322 break; 2357 break;
2323 default: 2358 default:
2324 dasm_put(Dst, 12441, LJ_TISNUM, LJ_TISNUM); 2359 dasm_put(Dst, 12650, LJ_TISNUM, LJ_TISNUM);
2325 break; 2360 break;
2326 } 2361 }
2327 dasm_put(Dst, 12474, LJ_TISNUM); 2362 dasm_put(Dst, 12683, LJ_TISNUM);
2328 if (vk == 1) { 2363 if (vk == 1) {
2329 dasm_put(Dst, 12237); 2364 dasm_put(Dst, 12446);
2330 } else { 2365 } else {
2331 dasm_put(Dst, 12015); 2366 dasm_put(Dst, 12224);
2332 } 2367 }
2333 dasm_put(Dst, 11337); 2368 dasm_put(Dst, 11546);
2334 } else { 2369 } else {
2335 dasm_put(Dst, 12367); 2370 dasm_put(Dst, 12576);
2336 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2371 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2337 switch (vk) { 2372 switch (vk) {
2338 case 0: 2373 case 0:
2339 dasm_put(Dst, 12480, LJ_TISNUM); 2374 dasm_put(Dst, 12689, LJ_TISNUM);
2340 if (LJ_DUALNUM) { 2375 if (LJ_DUALNUM) {
2341 dasm_put(Dst, 12492, LJ_TISNUM); 2376 dasm_put(Dst, 12701, LJ_TISNUM);
2342 } 2377 }
2343 if (sse) { 2378 if (sse) {
2344 dasm_put(Dst, 12503); 2379 dasm_put(Dst, 12712);
2345 } else { 2380 } else {
2346 dasm_put(Dst, 12517); 2381 dasm_put(Dst, 12726);
2347 } 2382 }
2348 break; 2383 break;
2349 case 1: 2384 case 1:
2350 dasm_put(Dst, 12525, LJ_TISNUM); 2385 dasm_put(Dst, 12734, LJ_TISNUM);
2351 if (LJ_DUALNUM) { 2386 if (LJ_DUALNUM) {
2352 dasm_put(Dst, 12537, LJ_TISNUM); 2387 dasm_put(Dst, 12746, LJ_TISNUM);
2353 } 2388 }
2354 if (sse) { 2389 if (sse) {
2355 dasm_put(Dst, 12548); 2390 dasm_put(Dst, 12757);
2356 } else { 2391 } else {
2357 dasm_put(Dst, 12562); 2392 dasm_put(Dst, 12771);
2358 } 2393 }
2359 break; 2394 break;
2360 default: 2395 default:
2361 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2396 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2362 if (sse) { 2397 if (sse) {
2363 dasm_put(Dst, 12592); 2398 dasm_put(Dst, 12801);
2364 } else { 2399 } else {
2365 dasm_put(Dst, 12606); 2400 dasm_put(Dst, 12815);
2366 } 2401 }
2367 break; 2402 break;
2368 } 2403 }
2369 if (sse) { 2404 if (sse) {
2370 dasm_put(Dst, 12197); 2405 dasm_put(Dst, 12406);
2371 } else { 2406 } else {
2372 dasm_put(Dst, 12209); 2407 dasm_put(Dst, 12418);
2373 } 2408 }
2374 dasm_put(Dst, 11337); 2409 dasm_put(Dst, 11546);
2375 } 2410 }
2376 break; 2411 break;
2377 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2412 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
2378 if (LJ_DUALNUM) { 2413 if (LJ_DUALNUM) {
2379 dasm_put(Dst, 12367); 2414 dasm_put(Dst, 12576);
2380 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2415 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2381 switch (vk) { 2416 switch (vk) {
2382 case 0: 2417 case 0:
2383 dasm_put(Dst, 12614, LJ_TISNUM, LJ_TISNUM); 2418 dasm_put(Dst, 12823, LJ_TISNUM, LJ_TISNUM);
2384 break; 2419 break;
2385 case 1: 2420 case 1:
2386 dasm_put(Dst, 12647, LJ_TISNUM, LJ_TISNUM); 2421 dasm_put(Dst, 12856, LJ_TISNUM, LJ_TISNUM);
2387 break; 2422 break;
2388 default: 2423 default:
2389 dasm_put(Dst, 12680, LJ_TISNUM, LJ_TISNUM); 2424 dasm_put(Dst, 12889, LJ_TISNUM, LJ_TISNUM);
2390 break; 2425 break;
2391 } 2426 }
2392 dasm_put(Dst, 12474, LJ_TISNUM); 2427 dasm_put(Dst, 12683, LJ_TISNUM);
2393 if (vk == 1) { 2428 if (vk == 1) {
2394 dasm_put(Dst, 12237); 2429 dasm_put(Dst, 12446);
2395 } else { 2430 } else {
2396 dasm_put(Dst, 12015); 2431 dasm_put(Dst, 12224);
2397 } 2432 }
2398 dasm_put(Dst, 11337); 2433 dasm_put(Dst, 11546);
2399 } else { 2434 } else {
2400 dasm_put(Dst, 12367); 2435 dasm_put(Dst, 12576);
2401 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2436 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2402 switch (vk) { 2437 switch (vk) {
2403 case 0: 2438 case 0:
2404 dasm_put(Dst, 12480, LJ_TISNUM); 2439 dasm_put(Dst, 12689, LJ_TISNUM);
2405 if (LJ_DUALNUM) { 2440 if (LJ_DUALNUM) {
2406 dasm_put(Dst, 12492, LJ_TISNUM); 2441 dasm_put(Dst, 12701, LJ_TISNUM);
2407 } 2442 }
2408 if (sse) { 2443 if (sse) {
2409 dasm_put(Dst, 12713); 2444 dasm_put(Dst, 12922);
2410 } else { 2445 } else {
2411 dasm_put(Dst, 12727); 2446 dasm_put(Dst, 12936);
2412 } 2447 }
2413 break; 2448 break;
2414 case 1: 2449 case 1:
2415 dasm_put(Dst, 12525, LJ_TISNUM); 2450 dasm_put(Dst, 12734, LJ_TISNUM);
2416 if (LJ_DUALNUM) { 2451 if (LJ_DUALNUM) {
2417 dasm_put(Dst, 12537, LJ_TISNUM); 2452 dasm_put(Dst, 12746, LJ_TISNUM);
2418 } 2453 }
2419 if (sse) { 2454 if (sse) {
2420 dasm_put(Dst, 12735); 2455 dasm_put(Dst, 12944);
2421 } else { 2456 } else {
2422 dasm_put(Dst, 12749); 2457 dasm_put(Dst, 12958);
2423 } 2458 }
2424 break; 2459 break;
2425 default: 2460 default:
2426 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2461 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2427 if (sse) { 2462 if (sse) {
2428 dasm_put(Dst, 12757); 2463 dasm_put(Dst, 12966);
2429 } else { 2464 } else {
2430 dasm_put(Dst, 12771); 2465 dasm_put(Dst, 12980);
2431 } 2466 }
2432 break; 2467 break;
2433 } 2468 }
2434 if (sse) { 2469 if (sse) {
2435 dasm_put(Dst, 12197); 2470 dasm_put(Dst, 12406);
2436 } else { 2471 } else {
2437 dasm_put(Dst, 12209); 2472 dasm_put(Dst, 12418);
2438 } 2473 }
2439 dasm_put(Dst, 11337); 2474 dasm_put(Dst, 11546);
2440 } 2475 }
2441 break; 2476 break;
2442 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2477 case BC_MULVN: case BC_MULNV: case BC_MULVV:
2443 if (LJ_DUALNUM) { 2478 if (LJ_DUALNUM) {
2444 dasm_put(Dst, 12367); 2479 dasm_put(Dst, 12576);
2445 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2480 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2446 switch (vk) { 2481 switch (vk) {
2447 case 0: 2482 case 0:
2448 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM); 2483 dasm_put(Dst, 12988, LJ_TISNUM, LJ_TISNUM);
2449 break; 2484 break;
2450 case 1: 2485 case 1:
2451 dasm_put(Dst, 12813, LJ_TISNUM, LJ_TISNUM); 2486 dasm_put(Dst, 13022, LJ_TISNUM, LJ_TISNUM);
2452 break; 2487 break;
2453 default: 2488 default:
2454 dasm_put(Dst, 12847, LJ_TISNUM, LJ_TISNUM); 2489 dasm_put(Dst, 13056, LJ_TISNUM, LJ_TISNUM);
2455 break; 2490 break;
2456 } 2491 }
2457 dasm_put(Dst, 12474, LJ_TISNUM); 2492 dasm_put(Dst, 12683, LJ_TISNUM);
2458 if (vk == 1) { 2493 if (vk == 1) {
2459 dasm_put(Dst, 12237); 2494 dasm_put(Dst, 12446);
2460 } else { 2495 } else {
2461 dasm_put(Dst, 12015); 2496 dasm_put(Dst, 12224);
2462 } 2497 }
2463 dasm_put(Dst, 11337); 2498 dasm_put(Dst, 11546);
2464 } else { 2499 } else {
2465 dasm_put(Dst, 12367); 2500 dasm_put(Dst, 12576);
2466 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2501 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2467 switch (vk) { 2502 switch (vk) {
2468 case 0: 2503 case 0:
2469 dasm_put(Dst, 12480, LJ_TISNUM); 2504 dasm_put(Dst, 12689, LJ_TISNUM);
2470 if (LJ_DUALNUM) { 2505 if (LJ_DUALNUM) {
2471 dasm_put(Dst, 12492, LJ_TISNUM); 2506 dasm_put(Dst, 12701, LJ_TISNUM);
2472 } 2507 }
2473 if (sse) { 2508 if (sse) {
2474 dasm_put(Dst, 12881); 2509 dasm_put(Dst, 13090);
2475 } else { 2510 } else {
2476 dasm_put(Dst, 12895); 2511 dasm_put(Dst, 13104);
2477 } 2512 }
2478 break; 2513 break;
2479 case 1: 2514 case 1:
2480 dasm_put(Dst, 12525, LJ_TISNUM); 2515 dasm_put(Dst, 12734, LJ_TISNUM);
2481 if (LJ_DUALNUM) { 2516 if (LJ_DUALNUM) {
2482 dasm_put(Dst, 12537, LJ_TISNUM); 2517 dasm_put(Dst, 12746, LJ_TISNUM);
2483 } 2518 }
2484 if (sse) { 2519 if (sse) {
2485 dasm_put(Dst, 12903); 2520 dasm_put(Dst, 13112);
2486 } else { 2521 } else {
2487 dasm_put(Dst, 12917); 2522 dasm_put(Dst, 13126);
2488 } 2523 }
2489 break; 2524 break;
2490 default: 2525 default:
2491 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2526 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2492 if (sse) { 2527 if (sse) {
2493 dasm_put(Dst, 12925); 2528 dasm_put(Dst, 13134);
2494 } else { 2529 } else {
2495 dasm_put(Dst, 12939); 2530 dasm_put(Dst, 13148);
2496 } 2531 }
2497 break; 2532 break;
2498 } 2533 }
2499 if (sse) { 2534 if (sse) {
2500 dasm_put(Dst, 12197); 2535 dasm_put(Dst, 12406);
2501 } else { 2536 } else {
2502 dasm_put(Dst, 12209); 2537 dasm_put(Dst, 12418);
2503 } 2538 }
2504 dasm_put(Dst, 11337); 2539 dasm_put(Dst, 11546);
2505 } 2540 }
2506 break; 2541 break;
2507 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2542 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
2508 dasm_put(Dst, 12367); 2543 dasm_put(Dst, 12576);
2509 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2544 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2510 switch (vk) { 2545 switch (vk) {
2511 case 0: 2546 case 0:
2512 dasm_put(Dst, 12480, LJ_TISNUM); 2547 dasm_put(Dst, 12689, LJ_TISNUM);
2513 if (LJ_DUALNUM) { 2548 if (LJ_DUALNUM) {
2514 dasm_put(Dst, 12492, LJ_TISNUM); 2549 dasm_put(Dst, 12701, LJ_TISNUM);
2515 } 2550 }
2516 if (sse) { 2551 if (sse) {
2517 dasm_put(Dst, 12947); 2552 dasm_put(Dst, 13156);
2518 } else { 2553 } else {
2519 dasm_put(Dst, 12961); 2554 dasm_put(Dst, 13170);
2520 } 2555 }
2521 break; 2556 break;
2522 case 1: 2557 case 1:
2523 dasm_put(Dst, 12525, LJ_TISNUM); 2558 dasm_put(Dst, 12734, LJ_TISNUM);
2524 if (LJ_DUALNUM) { 2559 if (LJ_DUALNUM) {
2525 dasm_put(Dst, 12537, LJ_TISNUM); 2560 dasm_put(Dst, 12746, LJ_TISNUM);
2526 } 2561 }
2527 if (sse) { 2562 if (sse) {
2528 dasm_put(Dst, 12969); 2563 dasm_put(Dst, 13178);
2529 } else { 2564 } else {
2530 dasm_put(Dst, 12983); 2565 dasm_put(Dst, 13192);
2531 } 2566 }
2532 break; 2567 break;
2533 default: 2568 default:
2534 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2569 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2535 if (sse) { 2570 if (sse) {
2536 dasm_put(Dst, 12991); 2571 dasm_put(Dst, 13200);
2537 } else { 2572 } else {
2538 dasm_put(Dst, 13005); 2573 dasm_put(Dst, 13214);
2539 } 2574 }
2540 break; 2575 break;
2541 } 2576 }
2542 if (sse) { 2577 if (sse) {
2543 dasm_put(Dst, 12197); 2578 dasm_put(Dst, 12406);
2544 } else { 2579 } else {
2545 dasm_put(Dst, 12209); 2580 dasm_put(Dst, 12418);
2546 } 2581 }
2547 dasm_put(Dst, 11337); 2582 dasm_put(Dst, 11546);
2548 break; 2583 break;
2549 case BC_MODVN: 2584 case BC_MODVN:
2550 dasm_put(Dst, 12367); 2585 dasm_put(Dst, 12576);
2551 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2586 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2552 switch (vk) { 2587 switch (vk) {
2553 case 0: 2588 case 0:
2554 dasm_put(Dst, 12480, LJ_TISNUM); 2589 dasm_put(Dst, 12689, LJ_TISNUM);
2555 if (LJ_DUALNUM) { 2590 if (LJ_DUALNUM) {
2556 dasm_put(Dst, 12492, LJ_TISNUM); 2591 dasm_put(Dst, 12701, LJ_TISNUM);
2557 } 2592 }
2558 if (sse) { 2593 if (sse) {
2559 dasm_put(Dst, 13013); 2594 dasm_put(Dst, 13222);
2560 } else { 2595 } else {
2561 dasm_put(Dst, 13027); 2596 dasm_put(Dst, 13236);
2562 } 2597 }
2563 break; 2598 break;
2564 case 1: 2599 case 1:
2565 dasm_put(Dst, 12525, LJ_TISNUM); 2600 dasm_put(Dst, 12734, LJ_TISNUM);
2566 if (LJ_DUALNUM) { 2601 if (LJ_DUALNUM) {
2567 dasm_put(Dst, 12537, LJ_TISNUM); 2602 dasm_put(Dst, 12746, LJ_TISNUM);
2568 } 2603 }
2569 if (sse) { 2604 if (sse) {
2570 dasm_put(Dst, 13035); 2605 dasm_put(Dst, 13244);
2571 } else { 2606 } else {
2572 dasm_put(Dst, 13049); 2607 dasm_put(Dst, 13258);
2573 } 2608 }
2574 break; 2609 break;
2575 default: 2610 default:
2576 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2611 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2577 if (sse) { 2612 if (sse) {
2578 dasm_put(Dst, 13057); 2613 dasm_put(Dst, 13266);
2579 } else { 2614 } else {
2580 dasm_put(Dst, 13071); 2615 dasm_put(Dst, 13280);
2581 } 2616 }
2582 break; 2617 break;
2583 } 2618 }
2584 dasm_put(Dst, 13079); 2619 dasm_put(Dst, 13288);
2585 if (sse) { 2620 if (sse) {
2586 dasm_put(Dst, 12197); 2621 dasm_put(Dst, 12406);
2587 } else { 2622 } else {
2588 dasm_put(Dst, 12209); 2623 dasm_put(Dst, 12418);
2589 } 2624 }
2590 dasm_put(Dst, 11337); 2625 dasm_put(Dst, 11546);
2591 break; 2626 break;
2592 case BC_MODNV: case BC_MODVV: 2627 case BC_MODNV: case BC_MODVV:
2593 dasm_put(Dst, 12367); 2628 dasm_put(Dst, 12576);
2594 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2629 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2595 switch (vk) { 2630 switch (vk) {
2596 case 0: 2631 case 0:
2597 dasm_put(Dst, 12480, LJ_TISNUM); 2632 dasm_put(Dst, 12689, LJ_TISNUM);
2598 if (LJ_DUALNUM) { 2633 if (LJ_DUALNUM) {
2599 dasm_put(Dst, 12492, LJ_TISNUM); 2634 dasm_put(Dst, 12701, LJ_TISNUM);
2600 } 2635 }
2601 if (sse) { 2636 if (sse) {
2602 dasm_put(Dst, 13013); 2637 dasm_put(Dst, 13222);
2603 } else { 2638 } else {
2604 dasm_put(Dst, 13027); 2639 dasm_put(Dst, 13236);
2605 } 2640 }
2606 break; 2641 break;
2607 case 1: 2642 case 1:
2608 dasm_put(Dst, 12525, LJ_TISNUM); 2643 dasm_put(Dst, 12734, LJ_TISNUM);
2609 if (LJ_DUALNUM) { 2644 if (LJ_DUALNUM) {
2610 dasm_put(Dst, 12537, LJ_TISNUM); 2645 dasm_put(Dst, 12746, LJ_TISNUM);
2611 } 2646 }
2612 if (sse) { 2647 if (sse) {
2613 dasm_put(Dst, 13035); 2648 dasm_put(Dst, 13244);
2614 } else { 2649 } else {
2615 dasm_put(Dst, 13049); 2650 dasm_put(Dst, 13258);
2616 } 2651 }
2617 break; 2652 break;
2618 default: 2653 default:
2619 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2654 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2620 if (sse) { 2655 if (sse) {
2621 dasm_put(Dst, 13057); 2656 dasm_put(Dst, 13266);
2622 } else { 2657 } else {
2623 dasm_put(Dst, 13071); 2658 dasm_put(Dst, 13280);
2624 } 2659 }
2625 break; 2660 break;
2626 } 2661 }
2627 dasm_put(Dst, 13085); 2662 dasm_put(Dst, 13294);
2628 break; 2663 break;
2629 case BC_POW: 2664 case BC_POW:
2630 dasm_put(Dst, 12367); 2665 dasm_put(Dst, 12576);
2631 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2666 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2632 switch (vk) { 2667 switch (vk) {
2633 case 0: 2668 case 0:
2634 dasm_put(Dst, 12480, LJ_TISNUM); 2669 dasm_put(Dst, 12689, LJ_TISNUM);
2635 if (LJ_DUALNUM) { 2670 if (LJ_DUALNUM) {
2636 dasm_put(Dst, 12492, LJ_TISNUM); 2671 dasm_put(Dst, 12701, LJ_TISNUM);
2637 } 2672 }
2638 if (sse) { 2673 if (sse) {
2639 dasm_put(Dst, 13013); 2674 dasm_put(Dst, 13222);
2640 } else { 2675 } else {
2641 dasm_put(Dst, 13027); 2676 dasm_put(Dst, 13236);
2642 } 2677 }
2643 break; 2678 break;
2644 case 1: 2679 case 1:
2645 dasm_put(Dst, 12525, LJ_TISNUM); 2680 dasm_put(Dst, 12734, LJ_TISNUM);
2646 if (LJ_DUALNUM) { 2681 if (LJ_DUALNUM) {
2647 dasm_put(Dst, 12537, LJ_TISNUM); 2682 dasm_put(Dst, 12746, LJ_TISNUM);
2648 } 2683 }
2649 if (sse) { 2684 if (sse) {
2650 dasm_put(Dst, 13035); 2685 dasm_put(Dst, 13244);
2651 } else { 2686 } else {
2652 dasm_put(Dst, 13049); 2687 dasm_put(Dst, 13258);
2653 } 2688 }
2654 break; 2689 break;
2655 default: 2690 default:
2656 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2691 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2657 if (sse) { 2692 if (sse) {
2658 dasm_put(Dst, 13057); 2693 dasm_put(Dst, 13266);
2659 } else { 2694 } else {
2660 dasm_put(Dst, 13071); 2695 dasm_put(Dst, 13280);
2661 } 2696 }
2662 break; 2697 break;
2663 } 2698 }
2664 dasm_put(Dst, 13090); 2699 dasm_put(Dst, 13299);
2665 if (sse) { 2700 if (sse) {
2666 dasm_put(Dst, 12197); 2701 dasm_put(Dst, 12406);
2667 } else { 2702 } else {
2668 dasm_put(Dst, 12209); 2703 dasm_put(Dst, 12418);
2669 } 2704 }
2670 dasm_put(Dst, 11337); 2705 dasm_put(Dst, 11546);
2671 break; 2706 break;
2672 2707
2673 case BC_CAT: 2708 case BC_CAT:
2674 dasm_put(Dst, 13094, Dt1(->base), Dt1(->base)); 2709 dasm_put(Dst, 13303, Dt1(->base), Dt1(->base));
2675 break; 2710 break;
2676 2711
2677 /* -- Constant ops ------------------------------------------------------ */ 2712 /* -- Constant ops ------------------------------------------------------ */
2678 2713
2679 case BC_KSTR: 2714 case BC_KSTR:
2680 dasm_put(Dst, 13188, LJ_TSTR); 2715 dasm_put(Dst, 13397, LJ_TSTR);
2681 break; 2716 break;
2682 case BC_KCDATA: 2717 case BC_KCDATA:
2683#if LJ_HASFFI 2718#if LJ_HASFFI
2684 dasm_put(Dst, 13188, LJ_TCDATA); 2719 dasm_put(Dst, 13397, LJ_TCDATA);
2685#endif 2720#endif
2686 break; 2721 break;
2687 case BC_KSHORT: 2722 case BC_KSHORT:
2688 if (LJ_DUALNUM) { 2723 if (LJ_DUALNUM) {
2689 dasm_put(Dst, 13221, LJ_TISNUM); 2724 dasm_put(Dst, 13430, LJ_TISNUM);
2690 } else if (sse) { 2725 } else if (sse) {
2691 dasm_put(Dst, 13233); 2726 dasm_put(Dst, 13442);
2692 } else { 2727 } else {
2693 dasm_put(Dst, 13248); 2728 dasm_put(Dst, 13457);
2694 } 2729 }
2695 dasm_put(Dst, 11337); 2730 dasm_put(Dst, 11546);
2696 break; 2731 break;
2697 case BC_KNUM: 2732 case BC_KNUM:
2698 if (sse) { 2733 if (sse) {
2699 dasm_put(Dst, 13256); 2734 dasm_put(Dst, 13465);
2700 } else { 2735 } else {
2701 dasm_put(Dst, 13269); 2736 dasm_put(Dst, 13478);
2702 } 2737 }
2703 dasm_put(Dst, 11337); 2738 dasm_put(Dst, 11546);
2704 break; 2739 break;
2705 case BC_KPRI: 2740 case BC_KPRI:
2706 dasm_put(Dst, 13276); 2741 dasm_put(Dst, 13485);
2707 break; 2742 break;
2708 case BC_KNIL: 2743 case BC_KNIL:
2709 dasm_put(Dst, 13302, LJ_TNIL); 2744 dasm_put(Dst, 13511, LJ_TNIL);
2710 break; 2745 break;
2711 2746
2712 /* -- Upvalue and function ops ------------------------------------------ */ 2747 /* -- Upvalue and function ops ------------------------------------------ */
2713 2748
2714 case BC_UGET: 2749 case BC_UGET:
2715 dasm_put(Dst, 13348, offsetof(GCfuncL, uvptr), DtA(->v)); 2750 dasm_put(Dst, 13557, offsetof(GCfuncL, uvptr), DtA(->v));
2716 break; 2751 break;
2717 case BC_USETV: 2752 case BC_USETV:
2718#define TV2MARKOFS \ 2753#define TV2MARKOFS \
2719 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2754 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2720 dasm_put(Dst, 13392, 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); 2755 dasm_put(Dst, 13601, 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);
2721 dasm_put(Dst, 13482); 2756 dasm_put(Dst, 13691);
2722 break; 2757 break;
2723#undef TV2MARKOFS 2758#undef TV2MARKOFS
2724 case BC_USETS: 2759 case BC_USETS:
2725 dasm_put(Dst, 13494, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2760 dasm_put(Dst, 13703, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2726 break; 2761 break;
2727 case BC_USETN: 2762 case BC_USETN:
2728 dasm_put(Dst, 13585); 2763 dasm_put(Dst, 13794);
2729 if (sse) { 2764 if (sse) {
2730 dasm_put(Dst, 13590); 2765 dasm_put(Dst, 13799);
2731 } else { 2766 } else {
2732 dasm_put(Dst, 11847); 2767 dasm_put(Dst, 12056);
2733 } 2768 }
2734 dasm_put(Dst, 13597, offsetof(GCfuncL, uvptr), DtA(->v)); 2769 dasm_put(Dst, 13806, offsetof(GCfuncL, uvptr), DtA(->v));
2735 if (sse) { 2770 if (sse) {
2736 dasm_put(Dst, 13606); 2771 dasm_put(Dst, 13815);
2737 } else { 2772 } else {
2738 dasm_put(Dst, 13612); 2773 dasm_put(Dst, 13821);
2739 } 2774 }
2740 dasm_put(Dst, 11337); 2775 dasm_put(Dst, 11546);
2741 break; 2776 break;
2742 case BC_USETP: 2777 case BC_USETP:
2743 dasm_put(Dst, 13615, offsetof(GCfuncL, uvptr), DtA(->v)); 2778 dasm_put(Dst, 13824, offsetof(GCfuncL, uvptr), DtA(->v));
2744 break; 2779 break;
2745 case BC_UCLO: 2780 case BC_UCLO:
2746 dasm_put(Dst, 13652, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2781 dasm_put(Dst, 13861, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2747 break; 2782 break;
2748 2783
2749 case BC_FNEW: 2784 case BC_FNEW:
2750 dasm_put(Dst, 13706, Dt1(->base), Dt1(->base), LJ_TFUNC); 2785 dasm_put(Dst, 13915, Dt1(->base), Dt1(->base), LJ_TFUNC);
2751 break; 2786 break;
2752 2787
2753 /* -- Table ops --------------------------------------------------------- */ 2788 /* -- Table ops --------------------------------------------------------- */
2754 2789
2755 case BC_TNEW: 2790 case BC_TNEW:
2756 dasm_put(Dst, 13777, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2791 dasm_put(Dst, 13986, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2757 break; 2792 break;
2758 case BC_TDUP: 2793 case BC_TDUP:
2759 dasm_put(Dst, 13903, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2794 dasm_put(Dst, 14112, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2760 break; 2795 break;
2761 2796
2762 case BC_GGET: 2797 case BC_GGET:
2763 dasm_put(Dst, 13995, Dt7(->env)); 2798 dasm_put(Dst, 14204, Dt7(->env));
2764 break; 2799 break;
2765 case BC_GSET: 2800 case BC_GSET:
2766 dasm_put(Dst, 14013, Dt7(->env)); 2801 dasm_put(Dst, 14222, Dt7(->env));
2767 break; 2802 break;
2768 2803
2769 case BC_TGETV: 2804 case BC_TGETV:
2770 dasm_put(Dst, 14031, LJ_TTAB); 2805 dasm_put(Dst, 14240, LJ_TTAB);
2771 if (LJ_DUALNUM) { 2806 if (LJ_DUALNUM) {
2772 dasm_put(Dst, 14054, LJ_TISNUM); 2807 dasm_put(Dst, 14263, LJ_TISNUM);
2773 } else { 2808 } else {
2774 dasm_put(Dst, 14068, LJ_TISNUM); 2809 dasm_put(Dst, 14277, LJ_TISNUM);
2775 if (sse) { 2810 if (sse) {
2776 dasm_put(Dst, 14079); 2811 dasm_put(Dst, 14288);
2777 } else { 2812 } else {
2778 dasm_put(Dst, 14100); 2813 dasm_put(Dst, 14309);
2779 if (cmov) { 2814 if (cmov) {
2780 dasm_put(Dst, 3944); 2815 dasm_put(Dst, 3953);
2781 } else { 2816 } else {
2782 dasm_put(Dst, 3950); 2817 dasm_put(Dst, 3959);
2783 } 2818 }
2784 dasm_put(Dst, 2680); 2819 dasm_put(Dst, 2689);
2785 } 2820 }
2786 dasm_put(Dst, 14110); 2821 dasm_put(Dst, 14319);
2787 } 2822 }
2788 dasm_put(Dst, 14115, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL); 2823 dasm_put(Dst, 14324, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2789 dasm_put(Dst, 14210, LJ_TSTR); 2824 dasm_put(Dst, 14419, LJ_TSTR);
2790 break; 2825 break;
2791 case BC_TGETS: 2826 case BC_TGETS:
2792 dasm_put(Dst, 14228, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2827 dasm_put(Dst, 14437, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2793 dasm_put(Dst, 14316, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2828 dasm_put(Dst, 14525, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2794 break; 2829 break;
2795 case BC_TGETB: 2830 case BC_TGETB:
2796 dasm_put(Dst, 14386, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2831 dasm_put(Dst, 14595, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2797 dasm_put(Dst, 14485, LJ_TNIL); 2832 dasm_put(Dst, 14694, LJ_TNIL);
2798 break; 2833 break;
2799 2834
2800 case BC_TSETV: 2835 case BC_TSETV:
2801 dasm_put(Dst, 14502, LJ_TTAB); 2836 dasm_put(Dst, 14711, LJ_TTAB);
2802 if (LJ_DUALNUM) { 2837 if (LJ_DUALNUM) {
2803 dasm_put(Dst, 14054, LJ_TISNUM); 2838 dasm_put(Dst, 14263, LJ_TISNUM);
2804 } else { 2839 } else {
2805 dasm_put(Dst, 14068, LJ_TISNUM); 2840 dasm_put(Dst, 14277, LJ_TISNUM);
2806 if (sse) { 2841 if (sse) {
2807 dasm_put(Dst, 14079); 2842 dasm_put(Dst, 14288);
2808 } else { 2843 } else {
2809 dasm_put(Dst, 14100); 2844 dasm_put(Dst, 14309);
2810 if (cmov) { 2845 if (cmov) {
2811 dasm_put(Dst, 3944); 2846 dasm_put(Dst, 3953);
2812 } else { 2847 } else {
2813 dasm_put(Dst, 3950); 2848 dasm_put(Dst, 3959);
2814 } 2849 }
2815 dasm_put(Dst, 2680); 2850 dasm_put(Dst, 2689);
2816 } 2851 }
2817 dasm_put(Dst, 14525); 2852 dasm_put(Dst, 14734);
2818 } 2853 }
2819 dasm_put(Dst, 14530, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 2854 dasm_put(Dst, 14739, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2820 dasm_put(Dst, 14614, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2855 dasm_put(Dst, 14823, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2821 break; 2856 break;
2822 case BC_TSETS: 2857 case BC_TSETS:
2823 dasm_put(Dst, 14671, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2858 dasm_put(Dst, 14880, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2824 dasm_put(Dst, 14746, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2859 dasm_put(Dst, 14955, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2825 dasm_put(Dst, 14838, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2860 dasm_put(Dst, 15047, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2826 break; 2861 break;
2827 case BC_TSETB: 2862 case BC_TSETB:
2828 dasm_put(Dst, 14934, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2863 dasm_put(Dst, 15143, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2829 dasm_put(Dst, 15032, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2864 dasm_put(Dst, 15241, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2830 break; 2865 break;
2831 2866
2832 case BC_TSETM: 2867 case BC_TSETM:
2833 dasm_put(Dst, 15078, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2868 dasm_put(Dst, 15287, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2834 dasm_put(Dst, 15227, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2869 dasm_put(Dst, 15436, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2835 break; 2870 break;
2836 2871
2837 /* -- Calls and vararg handling ----------------------------------------- */ 2872 /* -- Calls and vararg handling ----------------------------------------- */
2838 2873
2839 case BC_CALL: case BC_CALLM: 2874 case BC_CALL: case BC_CALLM:
2840 dasm_put(Dst, 12371); 2875 dasm_put(Dst, 12580);
2841 if (op == BC_CALLM) { 2876 if (op == BC_CALLM) {
2842 dasm_put(Dst, 15245); 2877 dasm_put(Dst, 15454);
2843 } 2878 }
2844 dasm_put(Dst, 15250, LJ_TFUNC, Dt7(->pc)); 2879 dasm_put(Dst, 15459, LJ_TFUNC, Dt7(->pc));
2845 break; 2880 break;
2846 2881
2847 case BC_CALLMT: 2882 case BC_CALLMT:
2848 dasm_put(Dst, 15245); 2883 dasm_put(Dst, 15454);
2849 break; 2884 break;
2850 case BC_CALLT: 2885 case BC_CALLT:
2851 dasm_put(Dst, 15291, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2886 dasm_put(Dst, 15500, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2852 dasm_put(Dst, 15409, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2887 dasm_put(Dst, 15618, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2853 break; 2888 break;
2854 2889
2855 case BC_ITERC: 2890 case BC_ITERC:
2856 dasm_put(Dst, 15479, LJ_TFUNC, 2+1, Dt7(->pc)); 2891 dasm_put(Dst, 15688, LJ_TFUNC, 2+1, Dt7(->pc));
2857 break; 2892 break;
2858 2893
2859 case BC_ITERN: 2894 case BC_ITERN:
2860#if LJ_HASJIT 2895#if LJ_HASJIT
2861#endif 2896#endif
2862 dasm_put(Dst, 15559, Dt6(->asize), Dt6(->array), LJ_TNIL); 2897 dasm_put(Dst, 15768, Dt6(->asize), Dt6(->array), LJ_TNIL);
2863 if (LJ_DUALNUM) { 2898 if (LJ_DUALNUM) {
2864 dasm_put(Dst, 12232, LJ_TISNUM); 2899 dasm_put(Dst, 12441, LJ_TISNUM);
2865 } else if (sse) { 2900 } else if (sse) {
2866 dasm_put(Dst, 12325); 2901 dasm_put(Dst, 12534);
2867 } else { 2902 } else {
2868 dasm_put(Dst, 15605); 2903 dasm_put(Dst, 15814);
2869 } 2904 }
2870 dasm_put(Dst, 15611); 2905 dasm_put(Dst, 15820);
2871 if (LJ_DUALNUM) { 2906 if (LJ_DUALNUM) {
2872 } else if (sse) { 2907 } else if (sse) {
2873 dasm_put(Dst, 12197); 2908 dasm_put(Dst, 12406);
2874 } else { 2909 } else {
2875 dasm_put(Dst, 12209); 2910 dasm_put(Dst, 12418);
2876 } 2911 }
2877 dasm_put(Dst, 15630, -BCBIAS_J*4); 2912 dasm_put(Dst, 15839, -BCBIAS_J*4);
2878 if (!LJ_DUALNUM && !sse) { 2913 if (!LJ_DUALNUM && !sse) {
2879 dasm_put(Dst, 15681); 2914 dasm_put(Dst, 15890);
2880 } 2915 }
2881 dasm_put(Dst, 15687, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); 2916 dasm_put(Dst, 15896, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
2882 dasm_put(Dst, 15762); 2917 dasm_put(Dst, 15971);
2883 break; 2918 break;
2884 2919
2885 case BC_ISNEXT: 2920 case BC_ISNEXT:
2886 dasm_put(Dst, 15770, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2921 dasm_put(Dst, 15979, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2887 break; 2922 break;
2888 2923
2889 case BC_VARG: 2924 case BC_VARG:
2890 dasm_put(Dst, 15869, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2925 dasm_put(Dst, 16078, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2891 dasm_put(Dst, 16033, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2926 dasm_put(Dst, 16242, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2892 break; 2927 break;
2893 2928
2894 /* -- Returns ----------------------------------------------------------- */ 2929 /* -- Returns ----------------------------------------------------------- */
2895 2930
2896 case BC_RETM: 2931 case BC_RETM:
2897 dasm_put(Dst, 15245); 2932 dasm_put(Dst, 15454);
2898 break; 2933 break;
2899 2934
2900 case BC_RET: case BC_RET0: case BC_RET1: 2935 case BC_RET: case BC_RET0: case BC_RET1:
2901 if (op != BC_RET0) { 2936 if (op != BC_RET0) {
2902 dasm_put(Dst, 16104); 2937 dasm_put(Dst, 16313);
2903 } 2938 }
2904 dasm_put(Dst, 16108, FRAME_TYPE); 2939 dasm_put(Dst, 16317, FRAME_TYPE);
2905 switch (op) { 2940 switch (op) {
2906 case BC_RET: 2941 case BC_RET:
2907 dasm_put(Dst, 16127); 2942 dasm_put(Dst, 16336);
2908 break; 2943 break;
2909 case BC_RET1: 2944 case BC_RET1:
2910 dasm_put(Dst, 16185); 2945 dasm_put(Dst, 16394);
2911 /* fallthrough */ 2946 /* fallthrough */
2912 case BC_RET0: 2947 case BC_RET0:
2913 dasm_put(Dst, 16201); 2948 dasm_put(Dst, 16410);
2914 default: 2949 default:
2915 break; 2950 break;
2916 } 2951 }
2917 dasm_put(Dst, 16212, Dt7(->pc), PC2PROTO(k)); 2952 dasm_put(Dst, 16421, Dt7(->pc), PC2PROTO(k));
2918 if (op == BC_RET) { 2953 if (op == BC_RET) {
2919 dasm_put(Dst, 16254, LJ_TNIL); 2954 dasm_put(Dst, 16463, LJ_TNIL);
2920 } else { 2955 } else {
2921 dasm_put(Dst, 16263, LJ_TNIL); 2956 dasm_put(Dst, 16472, LJ_TNIL);
2922 } 2957 }
2923 dasm_put(Dst, 16270, -FRAME_VARG, FRAME_TYPEP); 2958 dasm_put(Dst, 16479, -FRAME_VARG, FRAME_TYPEP);
2924 if (op != BC_RET0) { 2959 if (op != BC_RET0) {
2925 dasm_put(Dst, 16294); 2960 dasm_put(Dst, 16503);
2926 } 2961 }
2927 dasm_put(Dst, 4928); 2962 dasm_put(Dst, 4937);
2928 break; 2963 break;
2929 2964
2930 /* -- Loops and branches ------------------------------------------------ */ 2965 /* -- Loops and branches ------------------------------------------------ */
@@ -2932,7 +2967,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2932 2967
2933 case BC_FORL: 2968 case BC_FORL:
2934#if LJ_HASJIT 2969#if LJ_HASJIT
2935 dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2970 dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2936#endif 2971#endif
2937 break; 2972 break;
2938 2973
@@ -2944,111 +2979,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2944 case BC_FORI: 2979 case BC_FORI:
2945 case BC_IFORL: 2980 case BC_IFORL:
2946 vk = (op == BC_IFORL || op == BC_JFORL); 2981 vk = (op == BC_IFORL || op == BC_JFORL);
2947 dasm_put(Dst, 16319); 2982 dasm_put(Dst, 16528);
2948 if (LJ_DUALNUM) { 2983 if (LJ_DUALNUM) {
2949 dasm_put(Dst, 16323, LJ_TISNUM); 2984 dasm_put(Dst, 16532, LJ_TISNUM);
2950 if (!vk) { 2985 if (!vk) {
2951 dasm_put(Dst, 16333, LJ_TISNUM, LJ_TISNUM); 2986 dasm_put(Dst, 16542, LJ_TISNUM, LJ_TISNUM);
2952 } else { 2987 } else {
2953#ifdef LUA_USE_ASSERT 2988#ifdef LUA_USE_ASSERT
2954 dasm_put(Dst, 16362, LJ_TISNUM, LJ_TISNUM); 2989 dasm_put(Dst, 16571, LJ_TISNUM, LJ_TISNUM);
2955#endif 2990#endif
2956 dasm_put(Dst, 16381); 2991 dasm_put(Dst, 16590);
2957 } 2992 }
2958 dasm_put(Dst, 16400, LJ_TISNUM); 2993 dasm_put(Dst, 16609, LJ_TISNUM);
2959 if (op == BC_FORI) { 2994 if (op == BC_FORI) {
2960 dasm_put(Dst, 16411, -BCBIAS_J*4); 2995 dasm_put(Dst, 16620, -BCBIAS_J*4);
2961 } else if (op == BC_JFORI) { 2996 } else if (op == BC_JFORI) {
2962 dasm_put(Dst, 16425, -BCBIAS_J*4, BC_JLOOP); 2997 dasm_put(Dst, 16634, -BCBIAS_J*4, BC_JLOOP);
2963 } else if (op == BC_IFORL) { 2998 } else if (op == BC_IFORL) {
2964 dasm_put(Dst, 16443, -BCBIAS_J*4); 2999 dasm_put(Dst, 16652, -BCBIAS_J*4);
2965 } else { 3000 } else {
2966 dasm_put(Dst, 16435, BC_JLOOP); 3001 dasm_put(Dst, 16644, BC_JLOOP);
2967 } 3002 }
2968 dasm_put(Dst, 16457); 3003 dasm_put(Dst, 16666);
2969 if (vk) { 3004 if (vk) {
2970 dasm_put(Dst, 16480); 3005 dasm_put(Dst, 16689);
2971 } 3006 }
2972 dasm_put(Dst, 16400, LJ_TISNUM); 3007 dasm_put(Dst, 16609, LJ_TISNUM);
2973 if (op == BC_FORI) { 3008 if (op == BC_FORI) {
2974 dasm_put(Dst, 16489); 3009 dasm_put(Dst, 16698);
2975 } else if (op == BC_JFORI) { 3010 } else if (op == BC_JFORI) {
2976 dasm_put(Dst, 16494, -BCBIAS_J*4, BC_JLOOP); 3011 dasm_put(Dst, 16703, -BCBIAS_J*4, BC_JLOOP);
2977 } else if (op == BC_IFORL) { 3012 } else if (op == BC_IFORL) {
2978 dasm_put(Dst, 16508); 3013 dasm_put(Dst, 16717);
2979 } else { 3014 } else {
2980 dasm_put(Dst, 16504, BC_JLOOP); 3015 dasm_put(Dst, 16713, BC_JLOOP);
2981 } 3016 }
2982 dasm_put(Dst, 16513); 3017 dasm_put(Dst, 16722);
2983 } else if (!vk) { 3018 } else if (!vk) {
2984 dasm_put(Dst, 16520, LJ_TISNUM); 3019 dasm_put(Dst, 16729, LJ_TISNUM);
2985 } 3020 }
2986 if (!vk) { 3021 if (!vk) {
2987 dasm_put(Dst, 16526, LJ_TISNUM); 3022 dasm_put(Dst, 16735, LJ_TISNUM);
2988 } else { 3023 } else {
2989#ifdef LUA_USE_ASSERT 3024#ifdef LUA_USE_ASSERT
2990 dasm_put(Dst, 16540, LJ_TISNUM, LJ_TISNUM); 3025 dasm_put(Dst, 16749, LJ_TISNUM, LJ_TISNUM);
2991#endif 3026#endif
2992 } 3027 }
2993 dasm_put(Dst, 16559); 3028 dasm_put(Dst, 16768);
2994 if (!vk) { 3029 if (!vk) {
2995 dasm_put(Dst, 16563, LJ_TISNUM); 3030 dasm_put(Dst, 16772, LJ_TISNUM);
2996 } 3031 }
2997 if (sse) { 3032 if (sse) {
2998 dasm_put(Dst, 16572); 3033 dasm_put(Dst, 16781);
2999 if (vk) { 3034 if (vk) {
3000 dasm_put(Dst, 16584); 3035 dasm_put(Dst, 16793);
3001 } else { 3036 } else {
3002 dasm_put(Dst, 16603); 3037 dasm_put(Dst, 16812);
3003 } 3038 }
3004 dasm_put(Dst, 16608); 3039 dasm_put(Dst, 16817);
3005 } else { 3040 } else {
3006 dasm_put(Dst, 16621); 3041 dasm_put(Dst, 16830);
3007 if (vk) { 3042 if (vk) {
3008 dasm_put(Dst, 16627); 3043 dasm_put(Dst, 16836);
3009 } else { 3044 } else {
3010 dasm_put(Dst, 16643); 3045 dasm_put(Dst, 16852);
3011 } 3046 }
3012 dasm_put(Dst, 16651); 3047 dasm_put(Dst, 16860);
3013 if (cmov) { 3048 if (cmov) {
3014 dasm_put(Dst, 3944); 3049 dasm_put(Dst, 3953);
3015 } else { 3050 } else {
3016 dasm_put(Dst, 3950); 3051 dasm_put(Dst, 3959);
3017 } 3052 }
3018 if (!cmov) { 3053 if (!cmov) {
3019 dasm_put(Dst, 16656); 3054 dasm_put(Dst, 16865);
3020 } 3055 }
3021 } 3056 }
3022 if (op == BC_FORI) { 3057 if (op == BC_FORI) {
3023 if (LJ_DUALNUM) { 3058 if (LJ_DUALNUM) {
3024 dasm_put(Dst, 16662); 3059 dasm_put(Dst, 16871);
3025 } else { 3060 } else {
3026 dasm_put(Dst, 16667, -BCBIAS_J*4); 3061 dasm_put(Dst, 16876, -BCBIAS_J*4);
3027 } 3062 }
3028 } else if (op == BC_JFORI) { 3063 } else if (op == BC_JFORI) {
3029 dasm_put(Dst, 16677, -BCBIAS_J*4, BC_JLOOP); 3064 dasm_put(Dst, 16886, -BCBIAS_J*4, BC_JLOOP);
3030 } else if (op == BC_IFORL) { 3065 } else if (op == BC_IFORL) {
3031 if (LJ_DUALNUM) { 3066 if (LJ_DUALNUM) {
3032 dasm_put(Dst, 16691); 3067 dasm_put(Dst, 16900);
3033 } else { 3068 } else {
3034 dasm_put(Dst, 16696, -BCBIAS_J*4); 3069 dasm_put(Dst, 16905, -BCBIAS_J*4);
3035 } 3070 }
3036 } else { 3071 } else {
3037 dasm_put(Dst, 16687, BC_JLOOP); 3072 dasm_put(Dst, 16896, BC_JLOOP);
3038 } 3073 }
3039 if (LJ_DUALNUM) { 3074 if (LJ_DUALNUM) {
3040 dasm_put(Dst, 11234); 3075 dasm_put(Dst, 11448);
3041 } else { 3076 } else {
3042 dasm_put(Dst, 11975); 3077 dasm_put(Dst, 12184);
3043 } 3078 }
3044 if (sse) { 3079 if (sse) {
3045 dasm_put(Dst, 16706); 3080 dasm_put(Dst, 16915);
3046 } 3081 }
3047 break; 3082 break;
3048 3083
3049 case BC_ITERL: 3084 case BC_ITERL:
3050#if LJ_HASJIT 3085#if LJ_HASJIT
3051 dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 3086 dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
3052#endif 3087#endif
3053 break; 3088 break;
3054 3089
@@ -3057,33 +3092,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3057 break; 3092 break;
3058#endif 3093#endif
3059 case BC_IITERL: 3094 case BC_IITERL:
3060 dasm_put(Dst, 16717, LJ_TNIL); 3095 dasm_put(Dst, 16926, LJ_TNIL);
3061 if (op == BC_JITERL) { 3096 if (op == BC_JITERL) {
3062 dasm_put(Dst, 16732, BC_JLOOP); 3097 dasm_put(Dst, 16941, BC_JLOOP);
3063 } else { 3098 } else {
3064 dasm_put(Dst, 16746, -BCBIAS_J*4); 3099 dasm_put(Dst, 16955, -BCBIAS_J*4);
3065 } 3100 }
3066 dasm_put(Dst, 11335); 3101 dasm_put(Dst, 11544);
3067 break; 3102 break;
3068 3103
3069 case BC_LOOP: 3104 case BC_LOOP:
3070#if LJ_HASJIT 3105#if LJ_HASJIT
3071 dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 3106 dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
3072#endif 3107#endif
3073 break; 3108 break;
3074 3109
3075 case BC_ILOOP: 3110 case BC_ILOOP:
3076 dasm_put(Dst, 11337); 3111 dasm_put(Dst, 11546);
3077 break; 3112 break;
3078 3113
3079 case BC_JLOOP: 3114 case BC_JLOOP:
3080#if LJ_HASJIT 3115#if LJ_HASJIT
3081 dasm_put(Dst, 16762, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 3116 dasm_put(Dst, 16971, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
3082#endif 3117#endif
3083 break; 3118 break;
3084 3119
3085 case BC_JMP: 3120 case BC_JMP:
3086 dasm_put(Dst, 16785, -BCBIAS_J*4); 3121 dasm_put(Dst, 16994, -BCBIAS_J*4);
3087 break; 3122 break;
3088 3123
3089 /* -- Function headers -------------------------------------------------- */ 3124 /* -- Function headers -------------------------------------------------- */
@@ -3097,7 +3132,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3097 3132
3098 case BC_FUNCF: 3133 case BC_FUNCF:
3099#if LJ_HASJIT 3134#if LJ_HASJIT
3100 dasm_put(Dst, 16809, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); 3135 dasm_put(Dst, 17018, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
3101#endif 3136#endif
3102 case BC_FUNCV: /* NYI: compiled vararg functions. */ 3137 case BC_FUNCV: /* NYI: compiled vararg functions. */
3103 break; 3138 break;
@@ -3107,47 +3142,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3107 break; 3142 break;
3108#endif 3143#endif
3109 case BC_IFUNCF: 3144 case BC_IFUNCF:
3110 dasm_put(Dst, 16830, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 3145 dasm_put(Dst, 17039, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
3111 if (op == BC_JFUNCF) { 3146 if (op == BC_JFUNCF) {
3112 dasm_put(Dst, 16860, BC_JLOOP); 3147 dasm_put(Dst, 17069, BC_JLOOP);
3113 } else { 3148 } else {
3114 dasm_put(Dst, 11337); 3149 dasm_put(Dst, 11546);
3115 } 3150 }
3116 dasm_put(Dst, 16869, LJ_TNIL); 3151 dasm_put(Dst, 17078, LJ_TNIL);
3117 break; 3152 break;
3118 3153
3119 case BC_JFUNCV: 3154 case BC_JFUNCV:
3120#if !LJ_HASJIT 3155#if !LJ_HASJIT
3121 break; 3156 break;
3122#endif 3157#endif
3123 dasm_put(Dst, 10436); 3158 dasm_put(Dst, 10445);
3124 break; /* NYI: compiled vararg functions. */ 3159 break; /* NYI: compiled vararg functions. */
3125 3160
3126 case BC_IFUNCV: 3161 case BC_IFUNCV:
3127 dasm_put(Dst, 16891, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 3162 dasm_put(Dst, 17100, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
3128 if (op == BC_JFUNCV) { 3163 if (op == BC_JFUNCV) {
3129 dasm_put(Dst, 16860, BC_JLOOP); 3164 dasm_put(Dst, 17069, BC_JLOOP);
3130 } else { 3165 } else {
3131 dasm_put(Dst, 16982, -4+PC2PROTO(k)); 3166 dasm_put(Dst, 17191, -4+PC2PROTO(k));
3132 } 3167 }
3133 dasm_put(Dst, 17004, LJ_TNIL); 3168 dasm_put(Dst, 17213, LJ_TNIL);
3134 break; 3169 break;
3135 3170
3136 case BC_FUNCC: 3171 case BC_FUNCC:
3137 case BC_FUNCCW: 3172 case BC_FUNCCW:
3138 dasm_put(Dst, 17026, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 3173 dasm_put(Dst, 17235, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
3139 if (op == BC_FUNCC) { 3174 if (op == BC_FUNCC) {
3140 dasm_put(Dst, 17055); 3175 dasm_put(Dst, 17264);
3141 } else { 3176 } else {
3142 dasm_put(Dst, 17059); 3177 dasm_put(Dst, 17268);
3143 } 3178 }
3144 dasm_put(Dst, 17067, DISPATCH_GL(vmstate), ~LJ_VMST_C); 3179 dasm_put(Dst, 17276, DISPATCH_GL(vmstate), ~LJ_VMST_C);
3145 if (op == BC_FUNCC) { 3180 if (op == BC_FUNCC) {
3146 dasm_put(Dst, 17076); 3181 dasm_put(Dst, 17285);
3147 } else { 3182 } else {
3148 dasm_put(Dst, 17080, DISPATCH_GL(wrapf)); 3183 dasm_put(Dst, 17289, DISPATCH_GL(wrapf));
3149 } 3184 }
3150 dasm_put(Dst, 17085, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 3185 dasm_put(Dst, 17294, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
3151 break; 3186 break;
3152 3187
3153 /* ---------------------------------------------------------------------- */ 3188 /* ---------------------------------------------------------------------- */
@@ -3175,7 +3210,7 @@ static int build_backend(BuildCtx *ctx)
3175 3210
3176 build_subroutines(ctx, cmov, sse); 3211 build_subroutines(ctx, cmov, sse);
3177 3212
3178 dasm_put(Dst, 17110); 3213 dasm_put(Dst, 17319);
3179 for (op = 0; op < BC__MAX; op++) 3214 for (op = 0; op < BC__MAX; op++)
3180 build_ins(ctx, (BCOp)op, op, cmov, sse); 3215 build_ins(ctx, (BCOp)op, op, cmov, sse);
3181 3216
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index af500118..850805e6 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -27,6 +27,7 @@
27#include "lj_cconv.h" 27#include "lj_cconv.h"
28#include "lj_carith.h" 28#include "lj_carith.h"
29#include "lj_ccall.h" 29#include "lj_ccall.h"
30#include "lj_ccallback.h"
30#include "lj_clib.h" 31#include "lj_clib.h"
31#include "lj_ff.h" 32#include "lj_ff.h"
32#include "lj_lib.h" 33#include "lj_lib.h"
@@ -384,6 +385,50 @@ LJLIB_CF(ffi_clib___gc)
384 385
385#include "lj_libdef.h" 386#include "lj_libdef.h"
386 387
388/* -- Callback function metamethods --------------------------------------- */
389
390#define LJLIB_MODULE_ffi_callback
391
392static int ffi_callback_set(lua_State *L, GCfunc *fn)
393{
394 GCcdata *cd = ffi_checkcdata(L, 1);
395 CTState *cts = ctype_cts(L);
396 CType *ct = ctype_raw(cts, cd->typeid);
397 if (ctype_isptr(ct->info) && (LJ_32 || ct->size == 8)) {
398 MSize slot = lj_ccallback_ptr2slot(cts, *(void **)cdataptr(cd));
399 if (slot < cts->cb.sizeid && cts->cb.cbid[slot] != 0) {
400 GCtab *t = cts->miscmap;
401 TValue *tv = lj_tab_setint(L, t, (int32_t)slot);
402 if (fn) {
403 setfuncV(L, tv, fn);
404 lj_gc_anybarriert(L, t);
405 } else {
406 setnilV(tv);
407 cts->cb.cbid[slot] = 0;
408 cts->cb.topid = slot < cts->cb.topid ? slot : cts->cb.topid;
409 }
410 return 0;
411 }
412 }
413 lj_err_caller(L, LJ_ERR_FFI_BADCBACK);
414 return 0;
415}
416
417LJLIB_CF(ffi_callback_free)
418{
419 return ffi_callback_set(L, NULL);
420}
421
422LJLIB_CF(ffi_callback_set)
423{
424 GCfunc *fn = lj_lib_checkfunc(L, 2);
425 return ffi_callback_set(L, fn);
426}
427
428LJLIB_PUSH(top-1) LJLIB_SET(__index)
429
430#include "lj_libdef.h"
431
387/* -- FFI library functions ----------------------------------------------- */ 432/* -- FFI library functions ----------------------------------------------- */
388 433
389#define LJLIB_MODULE_ffi 434#define LJLIB_MODULE_ffi
@@ -428,7 +473,7 @@ LJLIB_CF(ffi_new) LJLIB_REC(.)
428 o, (MSize)(L->top - o)); /* Initialize cdata. */ 473 o, (MSize)(L->top - o)); /* Initialize cdata. */
429 if (ctype_isstruct(ct->info)) { 474 if (ctype_isstruct(ct->info)) {
430 /* Handle ctype __gc metamethod. Use the fast lookup here. */ 475 /* Handle ctype __gc metamethod. Use the fast lookup here. */
431 cTValue *tv = lj_tab_getint(cts->metatype, (int32_t)id); 476 cTValue *tv = lj_tab_getinth(cts->miscmap, -(int32_t)id);
432 if (tv && tvistab(tv) && (tv = lj_meta_fast(L, tabV(tv), MM_gc))) { 477 if (tv && tvistab(tv) && (tv = lj_meta_fast(L, tabV(tv), MM_gc))) {
433 GCtab *t = cts->finalizer; 478 GCtab *t = cts->finalizer;
434 if (gcref(t->metatable)) { 479 if (gcref(t->metatable)) {
@@ -650,21 +695,21 @@ LJLIB_CF(ffi_abi) LJLIB_REC(.)
650 695
651#undef H_ 696#undef H_
652 697
653LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to metatype table. */ 698LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to miscmap table. */
654 699
655LJLIB_CF(ffi_metatype) 700LJLIB_CF(ffi_metatype)
656{ 701{
657 CTState *cts = ctype_cts(L); 702 CTState *cts = ctype_cts(L);
658 CTypeID id = ffi_checkctype(L, cts); 703 CTypeID id = ffi_checkctype(L, cts);
659 GCtab *mt = lj_lib_checktab(L, 2); 704 GCtab *mt = lj_lib_checktab(L, 2);
660 GCtab *t = cts->metatype; 705 GCtab *t = cts->miscmap;
661 CType *ct = ctype_get(cts, id); /* Only allow raw types. */ 706 CType *ct = ctype_get(cts, id); /* Only allow raw types. */
662 TValue *tv; 707 TValue *tv;
663 GCcdata *cd; 708 GCcdata *cd;
664 if (!(ctype_isstruct(ct->info) || ctype_iscomplex(ct->info) || 709 if (!(ctype_isstruct(ct->info) || ctype_iscomplex(ct->info) ||
665 ctype_isvector(ct->info))) 710 ctype_isvector(ct->info)))
666 lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE); 711 lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE);
667 tv = lj_tab_setint(L, t, (int32_t)id); 712 tv = lj_tab_setinth(L, t, -(int32_t)id);
668 if (!tvisnil(tv)) 713 if (!tvisnil(tv))
669 lj_err_caller(L, LJ_ERR_PROTMT); 714 lj_err_caller(L, LJ_ERR_PROTMT);
670 settabV(L, tv, mt); 715 settabV(L, tv, mt);
@@ -745,12 +790,16 @@ static void ffi_register_module(lua_State *L)
745LUALIB_API int luaopen_ffi(lua_State *L) 790LUALIB_API int luaopen_ffi(lua_State *L)
746{ 791{
747 CTState *cts = lj_ctype_init(L); 792 CTState *cts = lj_ctype_init(L);
748 settabV(L, L->top++, (cts->metatype = lj_tab_new(L, 0, 0))); 793 settabV(L, L->top++, (cts->miscmap = lj_tab_new(L, 0, 1)));
749 cts->finalizer = ffi_finalizer(L); 794 cts->finalizer = ffi_finalizer(L);
750 LJ_LIB_REG(L, NULL, ffi_meta); 795 LJ_LIB_REG(L, NULL, ffi_meta);
751 /* NOBARRIER: basemt is a GC root. */ 796 /* NOBARRIER: basemt is a GC root. */
752 setgcref(basemt_it(G(L), LJ_TCDATA), obj2gco(tabV(L->top-1))); 797 setgcref(basemt_it(G(L), LJ_TCDATA), obj2gco(tabV(L->top-1)));
753 LJ_LIB_REG(L, NULL, ffi_clib); 798 LJ_LIB_REG(L, NULL, ffi_clib);
799 LJ_LIB_REG(L, NULL, ffi_callback);
800 /* NOBARRIER: the key is new and lj_tab_newkey() handles the barrier. */
801 settabV(L, lj_tab_setstr(L, cts->miscmap, &cts->g->strempty), tabV(L->top-1));
802 L->top--;
754 lj_clib_default(L, tabV(L->top-1)); /* Create ffi.C default namespace. */ 803 lj_clib_default(L, tabV(L->top-1)); /* Create ffi.C default namespace. */
755 lua_pushliteral(L, LJ_OS_NAME); 804 lua_pushliteral(L, LJ_OS_NAME);
756 lua_pushliteral(L, LJ_ARCH_NAME); 805 lua_pushliteral(L, LJ_ARCH_NAME);
diff --git a/src/lj_ccall.c b/src/lj_ccall.c
index c1c04b6f..5ed1bf5b 100644
--- a/src/lj_ccall.c
+++ b/src/lj_ccall.c
@@ -10,6 +10,7 @@
10#include "lj_gc.h" 10#include "lj_gc.h"
11#include "lj_err.h" 11#include "lj_err.h"
12#include "lj_str.h" 12#include "lj_str.h"
13#include "lj_tab.h"
13#include "lj_ctype.h" 14#include "lj_ctype.h"
14#include "lj_cconv.h" 15#include "lj_cconv.h"
15#include "lj_cdata.h" 16#include "lj_cdata.h"
@@ -290,7 +291,7 @@
290 } 291 }
291 292
292#else 293#else
293#error "missing calling convention definitions for this architecture" 294#error "Missing calling convention definitions for this architecture"
294#endif 295#endif
295 296
296#ifndef CCALL_HANDLE_STRUCTRET2 297#ifndef CCALL_HANDLE_STRUCTRET2
@@ -649,7 +650,13 @@ int lj_ccall_func(lua_State *L, GCcdata *cd)
649 int gcsteps, ret; 650 int gcsteps, ret;
650 cc.func = (void (*)(void))cdata_getptr(cdataptr(cd), sz); 651 cc.func = (void (*)(void))cdata_getptr(cdataptr(cd), sz);
651 gcsteps = ccall_set_args(L, cts, ct, &cc); 652 gcsteps = ccall_set_args(L, cts, ct, &cc);
653 cts->cb.slot = ~0u;
652 lj_vm_ffi_call(&cc); 654 lj_vm_ffi_call(&cc);
655 if (cts->cb.slot != ~0u) { /* Blacklist function that called a callback. */
656 TValue tv;
657 setlightudV(&tv, (void *)cc.func);
658 setboolV(lj_tab_set(L, cts->miscmap, &tv), 1);
659 }
653 gcsteps += ccall_get_results(L, cts, ct, &cc, &ret); 660 gcsteps += ccall_get_results(L, cts, ct, &cc, &ret);
654#if LJ_TARGET_X86 && LJ_ABI_WIN 661#if LJ_TARGET_X86 && LJ_ABI_WIN
655 /* Automatically detect __stdcall and fix up C function declaration. */ 662 /* Automatically detect __stdcall and fix up C function declaration. */
diff --git a/src/lj_ccall.h b/src/lj_ccall.h
index 14f61924..0641625f 100644
--- a/src/lj_ccall.h
+++ b/src/lj_ccall.h
@@ -81,7 +81,7 @@ typedef double FPRArg;
81typedef intptr_t GPRArg; 81typedef intptr_t GPRArg;
82 82
83#else 83#else
84#error "missing calling convention definitions for this architecture" 84#error "Missing calling convention definitions for this architecture"
85#endif 85#endif
86 86
87#ifndef CCALL_SPS_EXTRA 87#ifndef CCALL_SPS_EXTRA
@@ -99,6 +99,10 @@ typedef intptr_t GPRArg;
99#define CCALL_NUM_FPR \ 99#define CCALL_NUM_FPR \
100 (CCALL_NARG_FPR > CCALL_NRET_FPR ? CCALL_NARG_FPR : CCALL_NRET_FPR) 100 (CCALL_NARG_FPR > CCALL_NRET_FPR ? CCALL_NARG_FPR : CCALL_NRET_FPR)
101 101
102/* Check against constants in lj_ctype.h. */
103LJ_STATIC_ASSERT(CCALL_NUM_GPR <= CCALL_MAX_GPR);
104LJ_STATIC_ASSERT(CCALL_NUM_FPR <= CCALL_MAX_FPR);
105
102#define CCALL_MAXSTACK 32 106#define CCALL_MAXSTACK 32
103 107
104/* -- C call state -------------------------------------------------------- */ 108/* -- C call state -------------------------------------------------------- */
diff --git a/src/lj_ccallback.c b/src/lj_ccallback.c
new file mode 100644
index 00000000..8aab7f36
--- /dev/null
+++ b/src/lj_ccallback.c
@@ -0,0 +1,461 @@
1/*
2** FFI C callback handling.
3** Copyright (C) 2005-2011 Mike Pall. See Copyright Notice in luajit.h
4*/
5
6#include "lj_obj.h"
7
8#if LJ_HASFFI
9
10#include "lj_gc.h"
11#include "lj_err.h"
12#include "lj_tab.h"
13#include "lj_state.h"
14#include "lj_frame.h"
15#include "lj_ctype.h"
16#include "lj_cconv.h"
17#include "lj_ccall.h"
18#include "lj_ccallback.h"
19#include "lj_target.h"
20#include "lj_vm.h"
21
22/* -- Target-specific handling of callback slots -------------------------- */
23
24#define CALLBACK_MCODE_SIZE (LJ_PAGESIZE * LJ_NUM_CBPAGE)
25
26#if LJ_TARGET_X86ORX64
27
28#define CALLBACK_MCODE_HEAD (LJ_64 ? 8 : 0)
29#define CALLBACK_MCODE_GROUP (-2+1+2+5+(LJ_64 ? 6 : 5))
30
31#define CALLBACK_SLOT2OFS(slot) \
32 (CALLBACK_MCODE_HEAD + CALLBACK_MCODE_GROUP*((slot)/32) + 4*(slot))
33
34static MSize CALLBACK_OFS2SLOT(MSize ofs)
35{
36 MSize group;
37 ofs -= CALLBACK_MCODE_HEAD;
38 group = ofs / (32*4 + CALLBACK_MCODE_GROUP);
39 return (ofs % (32*4 + CALLBACK_MCODE_GROUP))/4 + group*32;
40}
41
42#define CALLBACK_MAX_SLOT \
43 (((CALLBACK_MCODE_SIZE-CALLBACK_MCODE_HEAD)/(CALLBACK_MCODE_GROUP+4*32))*32)
44
45#else
46
47/* Missing support for this architecture. */
48#define CALLBACK_SLOT2OFS(slot) (0*(slot))
49#define CALLBACK_OFS2SLOT(ofs) (0*(ofs))
50#define CALLBACK_MAX_SLOT 0
51
52#endif
53
54/* Convert callback slot number to callback function pointer. */
55static void *callback_slot2ptr(CTState *cts, MSize slot)
56{
57 return (uint8_t *)cts->cb.mcode + CALLBACK_SLOT2OFS(slot);
58}
59
60/* Convert callback function pointer to slot number. */
61MSize lj_ccallback_ptr2slot(CTState *cts, void *p)
62{
63 uintptr_t ofs = (uintptr_t)((uint8_t *)p -(uint8_t *)cts->cb.mcode);
64 if (ofs < CALLBACK_MCODE_SIZE) {
65 MSize slot = CALLBACK_OFS2SLOT((MSize)ofs);
66 if (CALLBACK_SLOT2OFS(slot) == (MSize)ofs)
67 return slot;
68 }
69 return ~0u; /* Not a known callback function pointer. */
70}
71
72#if LJ_TARGET_X86ORX64
73/* Initialize machine code for callback function pointers. */
74static void callback_mcode_init(global_State *g, uint8_t *page)
75{
76 uint8_t *p = page;
77 uint8_t *target = (uint8_t *)(void *)lj_vm_ffi_callback;
78 MSize slot;
79#if LJ_64
80 *(void **)p = target; p += 8;
81#endif
82 for (slot = 0; slot < CALLBACK_MAX_SLOT; slot++) {
83 /* mov al, slot; jmp group */
84 *p++ = XI_MOVrib | RID_EAX; *p++ = (uint8_t)slot;
85 if ((slot & 31) == 31 || slot == CALLBACK_MAX_SLOT-1) {
86 /* push ebp/rbp; mov ah, slot>>8; mov ebp, &g. */
87 *p++ = XI_PUSH + RID_EBP;
88 *p++ = XI_MOVrib | (RID_EAX+4); *p++ = (uint8_t)(slot >> 8);
89 *p++ = XI_MOVri | RID_EBP;
90 *(int32_t *)p = i32ptr(g); p += 4;
91#if LJ_64
92 /* jmp [rip-pageofs] where lj_vm_ffi_callback is stored. */
93 *p++ = XI_GROUP5; *p++ = XM_OFS0 + (XOg_JMP<<3) + RID_EBP;
94 *(int32_t *)p = (int32_t)(page-(p+4)); p += 4;
95#else
96 /* jmp lj_vm_ffi_callback. */
97 *p++ = XI_JMP; *(int32_t *)p = target-(p+4); p += 4;
98#endif
99 } else {
100 *p++ = XI_JMPs; *p++ = (uint8_t)((2+2)*(31-(slot&31)) - 2);
101 }
102 }
103 lua_assert(p - page <= CALLBACK_MCODE_SIZE);
104}
105#else
106/* Missing support for this architecture. */
107#define callback_mcode_init(g, p) UNUSED(p)
108#endif
109
110/* -- Machine code management --------------------------------------------- */
111
112#if LJ_TARGET_WINDOWS
113
114#define WIN32_LEAN_AND_MEAN
115#include <windows.h>
116
117#elif LJ_TARGET_POSIX
118
119#include <sys/mman.h>
120#ifndef MAP_ANONYMOUS
121#define MAP_ANONYMOUS MAP_ANON
122#endif
123
124#endif
125
126/* Allocate and initialize area for callback function pointers. */
127static void callback_mcode_new(CTState *cts)
128{
129 size_t sz = (size_t)CALLBACK_MCODE_SIZE;
130 void *p;
131 if (CALLBACK_MAX_SLOT == 0)
132 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
133#if LJ_TARGET_WINDOWS
134 p = VirtualAlloc(NULL, sz, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
135 if (!p)
136 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
137#elif LJ_TARGET_POSIX
138 p = mmap(NULL, sz, (PROT_READ|PROT_WRITE), MAP_PRIVATE|MAP_ANONYMOUS,
139 -1, 0);
140 if (p == MAP_FAILED)
141 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
142#else
143 /* Fallback allocator. Fails if memory is not executable by default. */
144 p = lj_mem_new(cts->L, sz);
145#endif
146 cts->cb.mcode = p;
147 callback_mcode_init(cts->g, p);
148#if LJ_TARGET_WINDOWS
149 {
150 DWORD oprot;
151 VirtualProtect(p, sz, PAGE_EXECUTE_READ, &oprot);
152 }
153#elif LJ_TARGET_POSIX
154 mprotect(p, sz, (PROT_READ|PROT_EXEC));
155#endif
156}
157
158/* Free area for callback function pointers. */
159void lj_ccallback_mcode_free(CTState *cts)
160{
161 size_t sz = (size_t)CALLBACK_MCODE_SIZE;
162 void *p = cts->cb.mcode;
163 if (p == NULL) return;
164#if LJ_TARGET_WINDOWS
165 VirtualFree(p, 0, MEM_RELEASE);
166 UNUSED(sz);
167#elif LJ_TARGET_POSIX
168 munmap(p, sz);
169#else
170 lj_mem_free(cts->g, p, sz);
171#endif
172}
173
174/* -- C callback entry ---------------------------------------------------- */
175
176/* Target-specific handling of register arguments. Similar to lj_ccall.c. */
177#if LJ_TARGET_X86
178
179#define CALLBACK_HANDLE_REGARG \
180 if (!isfp) { /* Only non-FP values may be passed in registers. */ \
181 if (n > 1) { /* Anything > 32 bit is passed on the stack. */ \
182 if (!LJ_ABI_WIN) ngpr = maxgpr; /* Prevent reordering. */ \
183 } else if (ngpr + 1 <= maxgpr) { \
184 sp = &cts->cb.gpr[ngpr]; \
185 ngpr += n; \
186 goto done; \
187 } \
188 }
189
190#elif LJ_TARGET_X64 && LJ_ABI_WIN
191
192/* Windows/x64 argument registers are strictly positional (use ngpr). */
193#define CALLBACK_HANDLE_REGARG \
194 if (isfp) { \
195 if (ngpr < 4) { sp = &cts->cb.fpr[ngpr++]; nfpr = ngpr; goto done; } \
196 } else { \
197 if (ngpr < 4) { sp = &cts->cb.gpr[ngpr++]; goto done; } \
198 }
199
200#elif LJ_TARGET_X64
201
202#define CALLBACK_HANDLE_REGARG \
203 if (isfp) { \
204 if (nfpr + n <= CCALL_NARG_FPR) { \
205 sp = &cts->cb.fpr[nfpr]; \
206 nfpr += n; \
207 goto done; \
208 } \
209 } else { \
210 if (ngpr + n <= maxgpr) { \
211 sp = &cts->cb.gpr[ngpr]; \
212 ngpr += n; \
213 goto done; \
214 } \
215 }
216
217#elif LJ_TARGET_ARM
218
219#define CALLBACK_HANDLE_REGARG \
220 UNUSED(ngpr); UNUSED(maxgpr); goto done; /* NYI */
221
222#elif LJ_TARGET_PPC
223
224#define CALLBACK_HANDLE_REGARG \
225 UNUSED(ngpr); UNUSED(nfpr); UNUSED(maxgpr); goto done; /* NYI */
226#define CALLBACK_HANDLE_RET /* NYI */
227
228#else
229#error "Missing calling convention definitions for this architecture"
230#endif
231
232/* Convert and push callback arguments to Lua stack. */
233static void callback_conv_args(CTState *cts, lua_State *L)
234{
235 TValue *o = L->top;
236 intptr_t *stack = cts->cb.stack;
237 MSize slot = cts->cb.slot;
238 CTypeID id = 0, rid, fid;
239 CType *ct;
240 GCfunc *fn;
241 MSize ngpr = 0, nsp = 0, maxgpr = CCALL_NARG_GPR;
242#if CCALL_NARG_FPR
243 MSize nfpr = 0;
244#endif
245
246 if (slot < cts->cb.sizeid && (id = cts->cb.cbid[slot]) != 0) {
247 ct = ctype_get(cts, id);
248 rid = ctype_cid(ct->info);
249 fn = funcV(lj_tab_getint(cts->miscmap, (int32_t)slot));
250 } else { /* Must set up frame first, before throwing the error. */
251 ct = NULL;
252 rid = 0;
253 fn = (GCfunc *)L;
254 }
255 o->u32.lo = LJ_CONT_FFI_CALLBACK; /* Continuation returns from callback. */
256 o->u32.hi = rid; /* Return type. x86: +(spadj<<16). */
257 o++;
258 setframe_gc(o, obj2gco(fn));
259 setframe_ftsz(o, (int)((char *)(o+1) - (char *)L->base) + FRAME_CONT);
260 L->top = L->base = ++o;
261 if (!ct)
262 lj_err_caller(cts->L, LJ_ERR_FFI_BADCBACK);
263 if (isluafunc(fn))
264 setcframe_pc(L->cframe, proto_bc(funcproto(fn))+1);
265 lj_state_checkstack(L, LUA_MINSTACK); /* May throw. */
266 o = L->base; /* Might have been reallocated. */
267
268#if LJ_TARGET_X86
269 /* x86 has several different calling conventions. */
270 switch (ctype_cconv(ct->info)) {
271 case CTCC_FASTCALL: maxgpr = 2; break;
272 case CTCC_THISCALL: maxgpr = 1; break;
273 default: maxgpr = 0; break;
274 }
275#endif
276
277 fid = ct->sib;
278 while (fid) {
279 CType *ctf = ctype_get(cts, fid);
280 if (!ctype_isattrib(ctf->info)) {
281 CType *cta;
282 void *sp;
283 CTSize sz;
284 int isfp;
285 MSize n;
286 lua_assert(ctype_isfield(ctf->info));
287 cta = ctype_rawchild(cts, ctf);
288 if (ctype_isenum(cta->info)) cta = ctype_child(cts, cta);
289 isfp = ctype_isfp(cta->info);
290 sz = (cta->size + CTSIZE_PTR-1) & ~(CTSIZE_PTR-1);
291 n = sz / CTSIZE_PTR; /* Number of GPRs or stack slots needed. */
292
293 CALLBACK_HANDLE_REGARG /* Handle register arguments. */
294
295 /* Otherwise pass argument on stack. */
296 if (CCALL_ALIGN_STACKARG && LJ_32 && sz == 8)
297 nsp = (nsp + 1) & ~1u; /* Align 64 bit argument on stack. */
298 sp = &stack[nsp];
299 nsp += n;
300
301 done:
302 if (LJ_BE && cta->size < CTSIZE_PTR)
303 sp = (void *)((uint8_t *)sp + CTSIZE_PTR-cta->size);
304 lj_cconv_tv_ct(cts, cta, 0, o++, sp);
305 }
306 fid = ctf->sib;
307 }
308 L->top = o;
309#if LJ_TARGET_X86
310 /* Store stack adjustment for returns from fastcall/stdcall callbacks. */
311 switch (ctype_cconv(ct->info)) {
312 case CTCC_FASTCALL: case CTCC_STDCALL:
313 (L->base-2)->u32.hi |= (nsp << (16+2));
314 break;
315 }
316#endif
317}
318
319/* Convert Lua object to callback result. */
320static void callback_conv_result(CTState *cts, lua_State *L, TValue *o)
321{
322 CType *ctr = ctype_raw(cts, (uint16_t)(L->base-2)->u32.hi);
323#if LJ_TARGET_X86
324 cts->cb.gpr[2] = 0;
325#endif
326 if (!ctype_isvoid(ctr->info)) {
327 uint8_t *dp = (uint8_t *)&cts->cb.gpr[0];
328#ifdef CALLBACK_HANDLE_RET
329 CALLBACK_HANDLE_RET
330#endif
331#if CCALL_NUM_FPR
332 if (ctype_isfp(ctr->info))
333 dp = (uint8_t *)&cts->cb.fpr[0];
334#endif
335 lj_cconv_ct_tv(cts, ctr, dp, o, 0);
336 /* Extend returned integers to (at least) 32 bits. */
337 if (ctype_isinteger_or_bool(ctr->info) && ctr->size < 4) {
338 if (ctr->info & CTF_UNSIGNED)
339 *(uint32_t *)dp = ctr->size == 1 ? (uint32_t)*(uint8_t *)dp :
340 (uint32_t)*(uint16_t *)dp;
341 else
342 *(int32_t *)dp = ctr->size == 1 ? (int32_t)*(int8_t *)dp :
343 (int32_t)*(int16_t *)dp;
344 }
345#if LJ_TARGET_X86
346 if (ctype_isfp(ctr->info))
347 cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2;
348#endif
349 }
350}
351
352/* Enter callback. */
353lua_State * LJ_FASTCALL lj_ccallback_enter(CTState *cts, void *cf)
354{
355 lua_State *L = cts->L;
356 lua_assert(L != NULL);
357 if (gcref(cts->g->jit_L))
358 lj_err_caller(gco2th(gcref(cts->g->jit_L)), LJ_ERR_FFI_BADCBACK);
359 /* Setup C frame. */
360 cframe_prev(cf) = L->cframe;
361 setcframe_L(cf, L);
362 cframe_errfunc(cf) = -1;
363 cframe_nres(cf) = 0;
364 L->cframe = cf;
365 callback_conv_args(cts, L);
366 return L; /* Now call the function on this stack. */
367}
368
369/* Leave callback. */
370void LJ_FASTCALL lj_ccallback_leave(CTState *cts, TValue *o)
371{
372 lua_State *L = cts->L;
373 GCfunc *fn;
374 TValue *obase = L->base;
375 L->base = L->top; /* Keep continuation frame for throwing errors. */
376 /* PC of RET* is lost. Point to last line for result conv. errors. */
377 fn = curr_func(L);
378 if (isluafunc(fn)) {
379 GCproto *pt = funcproto(fn);
380 setcframe_pc(L->cframe, proto_bc(pt)+pt->sizebc);
381 }
382 callback_conv_result(cts, L, o);
383 /* Finally drop C frame and continuation frame. */
384 L->cframe = cframe_prev(L->cframe);
385 L->top -= 2;
386 L->base = obase;
387}
388
389/* -- C callback management ----------------------------------------------- */
390
391/* Get an unused slot in the callback slot table. */
392static MSize callback_slot_new(CTState *cts, CType *ct)
393{
394 CTypeID id = ctype_typeid(cts, ct);
395 CTypeID1 *cbid = cts->cb.cbid;
396 MSize top;
397 for (top = cts->cb.topid; top < cts->cb.sizeid; top++)
398 if (LJ_LIKELY(cbid[top] == 0))
399 goto found;
400#if CALLBACK_MAX_SLOT
401 if (top >= CALLBACK_MAX_SLOT)
402#endif
403 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
404 if (!cts->cb.mcode)
405 callback_mcode_new(cts);
406 lj_mem_growvec(cts->L, cbid, cts->cb.sizeid, CALLBACK_MAX_SLOT, CTypeID1);
407 cts->cb.cbid = cbid;
408 memset(cbid+top, 0, (cts->cb.sizeid-top)*sizeof(CTypeID1));
409found:
410 cbid[top] = id;
411 cts->cb.topid = top+1;
412 return top;
413}
414
415/* Check for function pointer and supported argument/result types. */
416static CType *callback_checkfunc(CTState *cts, CType *ct)
417{
418 int narg = 0;
419 if (!ctype_isptr(ct->info) || (LJ_64 && ct->size != CTSIZE_PTR))
420 return NULL;
421 ct = ctype_rawchild(cts, ct);
422 if (ctype_isfunc(ct->info)) {
423 CType *ctr = ctype_rawchild(cts, ct);
424 CTypeID fid = ct->sib;
425 if (!(ctype_isvoid(ctr->info) || ctype_isenum(ctr->info) ||
426 ctype_isptr(ctr->info) || (ctype_isnum(ctr->info) && ctr->size <= 8)))
427 return NULL;
428 if ((ct->info & CTF_VARARG))
429 return NULL;
430 while (fid) {
431 CType *ctf = ctype_get(cts, fid);
432 if (!ctype_isattrib(ctf->info)) {
433 CType *cta;
434 lua_assert(ctype_isfield(ctf->info));
435 cta = ctype_rawchild(cts, ctf);
436 if (!(ctype_isenum(cta->info) || ctype_isptr(cta->info) ||
437 (ctype_isnum(cta->info) && cta->size <= 8)) ||
438 ++narg >= LUA_MINSTACK-3)
439 return NULL;
440 }
441 fid = ctf->sib;
442 }
443 return ct;
444 }
445 return NULL;
446}
447
448/* Create a new callback and return the callback function pointer. */
449void *lj_ccallback_new(CTState *cts, CType *ct, GCfunc *fn)
450{
451 ct = callback_checkfunc(cts, ct);
452 if (ct) {
453 MSize slot = callback_slot_new(cts, ct);
454 GCtab *t = cts->miscmap;
455 setfuncV(cts->L, lj_tab_setint(cts->L, t, (int32_t)slot), fn);
456 return callback_slot2ptr(cts, slot);
457 }
458 return NULL; /* Bad conversion. */
459}
460
461#endif
diff --git a/src/lj_ccallback.h b/src/lj_ccallback.h
new file mode 100644
index 00000000..cbdc1e89
--- /dev/null
+++ b/src/lj_ccallback.h
@@ -0,0 +1,25 @@
1/*
2** FFI C callback handling.
3** Copyright (C) 2005-2011 Mike Pall. See Copyright Notice in luajit.h
4*/
5
6#ifndef _LJ_CCALLBACK_H
7#define _LJ_CCALLBACK_H
8
9#include "lj_obj.h"
10#include "lj_ctype.h"
11
12#if LJ_HASFFI
13
14/* Really belongs to lj_vm.h. */
15LJ_ASMF void lj_vm_ffi_callback(void);
16
17LJ_FUNC MSize lj_ccallback_ptr2slot(CTState *cts, void *p);
18LJ_FUNCA lua_State * LJ_FASTCALL lj_ccallback_enter(CTState *cts, void *cf);
19LJ_FUNCA void LJ_FASTCALL lj_ccallback_leave(CTState *cts, TValue *o);
20LJ_FUNC void *lj_ccallback_new(CTState *cts, CType *ct, GCfunc *fn);
21LJ_FUNC void lj_ccallback_mcode_free(CTState *cts);
22
23#endif
24
25#endif
diff --git a/src/lj_cconv.c b/src/lj_cconv.c
index 884edef1..d73984f4 100644
--- a/src/lj_cconv.c
+++ b/src/lj_cconv.c
@@ -12,6 +12,7 @@
12#include "lj_ctype.h" 12#include "lj_ctype.h"
13#include "lj_cdata.h" 13#include "lj_cdata.h"
14#include "lj_cconv.h" 14#include "lj_cconv.h"
15#include "lj_ccallback.h"
15 16
16/* -- Conversion errors --------------------------------------------------- */ 17/* -- Conversion errors --------------------------------------------------- */
17 18
@@ -603,6 +604,13 @@ void lj_cconv_ct_tv(CTState *cts, CType *d,
603 tmpptr = uddata(udataV(o)); 604 tmpptr = uddata(udataV(o));
604 } else if (tvislightud(o)) { 605 } else if (tvislightud(o)) {
605 tmpptr = lightudV(o); 606 tmpptr = lightudV(o);
607 } else if (tvisfunc(o)) {
608 void *p = lj_ccallback_new(cts, d, funcV(o));
609 if (p) {
610 *(void **)dp = p;
611 return;
612 }
613 goto err_conv;
606 } else { 614 } else {
607 err_conv: 615 err_conv:
608 cconv_err_convtv(cts, d, o, flags); 616 cconv_err_convtv(cts, d, o, flags);
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 2c63e8a6..9457b519 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -15,6 +15,7 @@
15#include "lj_tab.h" 15#include "lj_tab.h"
16#include "lj_frame.h" 16#include "lj_frame.h"
17#include "lj_ctype.h" 17#include "lj_ctype.h"
18#include "lj_cdata.h"
18#include "lj_cparse.h" 19#include "lj_cparse.h"
19#include "lj_cconv.h" 20#include "lj_cconv.h"
20#include "lj_clib.h" 21#include "lj_clib.h"
@@ -785,7 +786,7 @@ static TRef crec_call_args(jit_State *J, RecordFFData *rd,
785 did = ctype_cid(ctf->info); 786 did = ctype_cid(ctf->info);
786 } else { 787 } else {
787 if (!(ct->info & CTF_VARARG)) 788 if (!(ct->info & CTF_VARARG))
788 lj_trace_err(J, LJ_TRERR_NYICALL); /* Too many arguments. */ 789 lj_trace_err(J, LJ_TRERR_NYICALL); /* Too many arguments. */
789 did = lj_ccall_ctid_vararg(cts, o); /* Infer vararg type. */ 790 did = lj_ccall_ctid_vararg(cts, o); /* Infer vararg type. */
790 } 791 }
791 d = ctype_raw(cts, did); 792 d = ctype_raw(cts, did);
@@ -853,6 +854,12 @@ static int crec_call(jit_State *J, RecordFFData *rd, GCcdata *cd)
853 CType *ctr = ctype_rawchild(cts, ct); 854 CType *ctr = ctype_rawchild(cts, ct);
854 IRType t = crec_ct2irt(ctr); 855 IRType t = crec_ct2irt(ctr);
855 TRef tr; 856 TRef tr;
857 TValue tv;
858 /* Check for blacklisted C functions that might call a callback. */
859 setlightudV(&tv,
860 cdata_getptr(cdataptr(cd), (LJ_64 && tp == IRT_P64) ? 8 : 4));
861 if (tvistrue(lj_tab_get(J->L, cts->miscmap, &tv)))
862 lj_trace_err(J, LJ_TRERR_BLACKL);
856 if (ctype_isvoid(ctr->info)) { 863 if (ctype_isvoid(ctr->info)) {
857 t = IRT_NIL; 864 t = IRT_NIL;
858 rd->nres = 0; 865 rd->nres = 0;
diff --git a/src/lj_ctype.c b/src/lj_ctype.c
index 85e9a0ba..7187d6ff 100644
--- a/src/lj_ctype.c
+++ b/src/lj_ctype.c
@@ -12,6 +12,7 @@
12#include "lj_str.h" 12#include "lj_str.h"
13#include "lj_tab.h" 13#include "lj_tab.h"
14#include "lj_ctype.h" 14#include "lj_ctype.h"
15#include "lj_ccallback.h"
15 16
16/* -- C type definitions -------------------------------------------------- */ 17/* -- C type definitions -------------------------------------------------- */
17 18
@@ -315,7 +316,11 @@ cTValue *lj_ctype_meta(CTState *cts, CTypeID id, MMS mm)
315 id = ctype_cid(ct->info); 316 id = ctype_cid(ct->info);
316 ct = ctype_get(cts, id); 317 ct = ctype_get(cts, id);
317 } 318 }
318 tv = lj_tab_getint(cts->metatype, (int32_t)id); 319 if (ctype_isptr(ct->info) &&
320 ctype_isfunc(ctype_get(cts, ctype_cid(ct->info))->info))
321 tv = lj_tab_getstr(cts->miscmap, &cts->g->strempty);
322 else
323 tv = lj_tab_getinth(cts->miscmap, -(int32_t)id);
319 if (tv && tvistab(tv) && 324 if (tv && tvistab(tv) &&
320 (tv = lj_tab_getstr(tabV(tv), mmname_str(cts->g, mm))) && !tvisnil(tv)) 325 (tv = lj_tab_getstr(tabV(tv), mmname_str(cts->g, mm))) && !tvisnil(tv))
321 return tv; 326 return tv;
@@ -592,7 +597,9 @@ void lj_ctype_freestate(global_State *g)
592{ 597{
593 CTState *cts = ctype_ctsG(g); 598 CTState *cts = ctype_ctsG(g);
594 if (cts) { 599 if (cts) {
600 lj_ccallback_mcode_free(cts);
595 lj_mem_freevec(g, cts->tab, cts->sizetab, CType); 601 lj_mem_freevec(g, cts->tab, cts->sizetab, CType);
602 lj_mem_freevec(g, cts->cb.cbid, cts->cb.sizeid, CTypeID1);
596 lj_mem_freet(g, cts); 603 lj_mem_freet(g, cts);
597 } 604 }
598} 605}
diff --git a/src/lj_ctype.h b/src/lj_ctype.h
index 49f28108..da313851 100644
--- a/src/lj_ctype.h
+++ b/src/lj_ctype.h
@@ -151,6 +151,25 @@ typedef struct CType {
151#define CTHASH_SIZE 128 /* Number of hash anchors. */ 151#define CTHASH_SIZE 128 /* Number of hash anchors. */
152#define CTHASH_MASK (CTHASH_SIZE-1) 152#define CTHASH_MASK (CTHASH_SIZE-1)
153 153
154/* Simplify target-specific configuration. Checked in lj_ccall.h. */
155#define CCALL_MAX_GPR 8
156#define CCALL_MAX_FPR 8
157
158typedef LJ_ALIGN(8) union FPRCBArg { double d; float f; } FPRCBArg;
159
160/* C callback state. Defined here, to avoid dragging in lj_ccall.h. */
161
162typedef LJ_ALIGN(8) struct CCallback {
163 FPRCBArg fpr[CCALL_MAX_FPR]; /* Arguments/results in FPRs. */
164 intptr_t gpr[CCALL_MAX_GPR]; /* Arguments/results in GPRs. */
165 intptr_t *stack; /* Pointer to arguments on stack. */
166 void *mcode; /* Machine code for callback func. pointers. */
167 CTypeID1 *cbid; /* Callback type table. */
168 MSize sizeid; /* Size of callback type table. */
169 MSize topid; /* Highest unused callback type table slot. */
170 MSize slot; /* Current callback slot. */
171} CCallback;
172
154/* C type state. */ 173/* C type state. */
155typedef struct CTState { 174typedef struct CTState {
156 CType *tab; /* C type table. */ 175 CType *tab; /* C type table. */
@@ -159,7 +178,8 @@ typedef struct CTState {
159 lua_State *L; /* Lua state (needed for errors and allocations). */ 178 lua_State *L; /* Lua state (needed for errors and allocations). */
160 global_State *g; /* Global state. */ 179 global_State *g; /* Global state. */
161 GCtab *finalizer; /* Map of cdata to finalizer. */ 180 GCtab *finalizer; /* Map of cdata to finalizer. */
162 GCtab *metatype; /* Map of CTypeID to metatable. */ 181 GCtab *miscmap; /* Map of -CTypeID to metatable and cb slot to func. */
182 CCallback cb; /* Temporary callback state. */
163 CTypeID1 hash[CTHASH_SIZE]; /* Hash anchors for C type table. */ 183 CTypeID1 hash[CTHASH_SIZE]; /* Hash anchors for C type table. */
164} CTState; 184} CTState;
165 185
diff --git a/src/lj_debug.c b/src/lj_debug.c
index 699fca28..4038e209 100644
--- a/src/lj_debug.c
+++ b/src/lj_debug.c
@@ -107,6 +107,7 @@ BCLine LJ_FASTCALL lj_debug_line(GCproto *pt, BCPos pc)
107 const void *lineinfo = proto_lineinfo(pt); 107 const void *lineinfo = proto_lineinfo(pt);
108 if (pc < pt->sizebc && lineinfo) { 108 if (pc < pt->sizebc && lineinfo) {
109 BCLine first = pt->firstline; 109 BCLine first = pt->firstline;
110 if (pc == pt->sizebc-1) return first + pt->numline;
110 if (pc-- == 0) return first; 111 if (pc-- == 0) return first;
111 if (pt->numline < 256) 112 if (pt->numline < 256)
112 return first + (BCLine)((const uint8_t *)lineinfo)[pc]; 113 return first + (BCLine)((const uint8_t *)lineinfo)[pc];
@@ -124,7 +125,7 @@ static BCLine debug_frameline(lua_State *L, GCfunc *fn, cTValue *nextframe)
124 BCPos pc = debug_framepc(L, fn, nextframe); 125 BCPos pc = debug_framepc(L, fn, nextframe);
125 if (pc != NO_BCPOS) { 126 if (pc != NO_BCPOS) {
126 GCproto *pt = funcproto(fn); 127 GCproto *pt = funcproto(fn);
127 lua_assert(pc < pt->sizebc); 128 lua_assert(pc <= pt->sizebc);
128 return lj_debug_line(pt, pc); 129 return lj_debug_line(pt, pc);
129 } 130 }
130 return -1; 131 return -1;
diff --git a/src/lj_def.h b/src/lj_def.h
index dadb8c0a..5d21d584 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -67,6 +67,8 @@ typedef unsigned int uintptr_t;
67#define LJ_MAX_IDXCHAIN 100 /* __index/__newindex chain limit. */ 67#define LJ_MAX_IDXCHAIN 100 /* __index/__newindex chain limit. */
68#define LJ_STACK_EXTRA 5 /* Extra stack space (metamethods). */ 68#define LJ_STACK_EXTRA 5 /* Extra stack space (metamethods). */
69 69
70#define LJ_NUM_CBPAGE 1 /* Number of FFI callback pages. */
71
70/* Minimum table/buffer sizes. */ 72/* Minimum table/buffer sizes. */
71#define LJ_MIN_GLOBAL 6 /* Min. global table size (hbits). */ 73#define LJ_MIN_GLOBAL 6 /* Min. global table size (hbits). */
72#define LJ_MIN_REGISTRY 2 /* Min. registry size (hbits). */ 74#define LJ_MIN_REGISTRY 2 /* Min. registry size (hbits). */
diff --git a/src/lj_err.c b/src/lj_err.c
index 406c833d..b0f3e5c7 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -113,6 +113,9 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
113 frame = frame_prevl(frame); 113 frame = frame_prevl(frame);
114 break; 114 break;
115 case FRAME_C: /* C frame. */ 115 case FRAME_C: /* C frame. */
116#if LJ_HASFFI
117 unwind_c:
118#endif
116#if LJ_UNWIND_EXT 119#if LJ_UNWIND_EXT
117 if (errcode) { 120 if (errcode) {
118 L->cframe = cframe_prev(cf); 121 L->cframe = cframe_prev(cf);
@@ -145,6 +148,10 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
145 } 148 }
146 return cf; 149 return cf;
147 case FRAME_CONT: /* Continuation frame. */ 150 case FRAME_CONT: /* Continuation frame. */
151#if LJ_HASFFI
152 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
153 goto unwind_c;
154#endif
148 case FRAME_VARG: /* Vararg frame. */ 155 case FRAME_VARG: /* Vararg frame. */
149 frame = frame_prevd(frame); 156 frame = frame_prevd(frame);
150 break; 157 break;
@@ -464,6 +471,10 @@ static ptrdiff_t finderrfunc(lua_State *L)
464 cf = cframe_prev(cf); 471 cf = cframe_prev(cf);
465 /* fallthrough */ 472 /* fallthrough */
466 case FRAME_CONT: 473 case FRAME_CONT:
474#if LJ_HASFFI
475 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
476 cf = cframe_prev(cf);
477#endif
467 case FRAME_VARG: 478 case FRAME_VARG:
468 frame = frame_prevd(frame); 479 frame = frame_prevd(frame);
469 break; 480 break;
@@ -591,15 +602,23 @@ LJ_NOINLINE void lj_err_callermsg(lua_State *L, const char *msg)
591 if (frame_islua(frame)) { 602 if (frame_islua(frame)) {
592 pframe = frame_prevl(frame); 603 pframe = frame_prevl(frame);
593 } else if (frame_iscont(frame)) { 604 } else if (frame_iscont(frame)) {
594 pframe = frame_prevd(frame);
595#if LJ_HASFFI 605#if LJ_HASFFI
596 /* Remove frame for FFI metamethods. */ 606 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK) {
597 if (frame_func(frame)->c.ffid >= FF_ffi_meta___index && 607 pframe = frame;
598 frame_func(frame)->c.ffid <= FF_ffi_meta___tostring) { 608 frame = NULL;
599 L->base = pframe+1; 609 } else
600 L->top = frame; 610#endif
601 } 611 {
612 pframe = frame_prevd(frame);
613#if LJ_HASFFI
614 /* Remove frame for FFI metamethods. */
615 if (frame_func(frame)->c.ffid >= FF_ffi_meta___index &&
616 frame_func(frame)->c.ffid <= FF_ffi_meta___tostring) {
617 L->base = pframe+1;
618 L->top = frame;
619 }
602#endif 620#endif
621 }
603 } 622 }
604 lj_debug_addloc(L, msg, pframe, frame); 623 lj_debug_addloc(L, msg, pframe, frame);
605 lj_err_run(L); 624 lj_err_run(L);
diff --git a/src/lj_errmsg.h b/src/lj_errmsg.h
index dc015ef2..e9ad0451 100644
--- a/src/lj_errmsg.h
+++ b/src/lj_errmsg.h
@@ -160,6 +160,12 @@ ERRDEF(FFI_BADMEMBER, LUA_QS " has no member named " LUA_QS)
160ERRDEF(FFI_BADIDX, LUA_QS " cannot be indexed") 160ERRDEF(FFI_BADIDX, LUA_QS " cannot be indexed")
161ERRDEF(FFI_WRCONST, "attempt to write to constant location") 161ERRDEF(FFI_WRCONST, "attempt to write to constant location")
162ERRDEF(FFI_NODECL, "missing declaration for symbol " LUA_QS) 162ERRDEF(FFI_NODECL, "missing declaration for symbol " LUA_QS)
163ERRDEF(FFI_BADCBACK, "bad callback")
164#if LJ_TARGET_X86ORX64
165ERRDEF(FFI_CBACKOV, "too many callbacks")
166#else
167ERRDEF(FFI_CBACKOV, "no support for callbacks (yet)")
168#endif
163ERRDEF(FFI_NYIPACKBIT, "NYI: packed bit fields") 169ERRDEF(FFI_NYIPACKBIT, "NYI: packed bit fields")
164ERRDEF(FFI_NYICALL, "NYI: cannot call this C function (yet)") 170ERRDEF(FFI_NYICALL, "NYI: cannot call this C function (yet)")
165#endif 171#endif
diff --git a/src/lj_frame.h b/src/lj_frame.h
index 89484565..3497671b 100644
--- a/src/lj_frame.h
+++ b/src/lj_frame.h
@@ -138,6 +138,8 @@ enum {
138 (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th) 138 (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
139#define cframe_pc(cf) \ 139#define cframe_pc(cf) \
140 (mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns)) 140 (mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns))
141#define setcframe_L(cf, L) \
142 (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_L), (L)))
141#define setcframe_pc(cf, pc) \ 143#define setcframe_pc(cf, pc) \
142 (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc))) 144 (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc)))
143#define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_RESUME) 145#define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_RESUME)
diff --git a/src/lj_meta.c b/src/lj_meta.c
index 278d2d34..f258e3e1 100644
--- a/src/lj_meta.c
+++ b/src/lj_meta.c
@@ -77,7 +77,7 @@ int lj_meta_tailcall(lua_State *L, cTValue *tv)
77 TValue *top = L->top; 77 TValue *top = L->top;
78 const BCIns *pc = frame_pc(base-1); /* Preserve old PC from frame. */ 78 const BCIns *pc = frame_pc(base-1); /* Preserve old PC from frame. */
79 copyTV(L, base-1, tv); /* Replace frame with new object. */ 79 copyTV(L, base-1, tv); /* Replace frame with new object. */
80 top->u64 = 0; 80 top->u32.lo = LJ_CONT_TAILCALL;
81 setframe_pc(top, pc); 81 setframe_pc(top, pc);
82 setframe_gc(top+1, obj2gco(L)); /* Dummy frame object. */ 82 setframe_gc(top+1, obj2gco(L)); /* Dummy frame object. */
83 setframe_ftsz(top+1, (int)((char *)(top+2) - (char *)base) + FRAME_CONT); 83 setframe_ftsz(top+1, (int)((char *)(top+2) - (char *)base) + FRAME_CONT);
diff --git a/src/lj_target_x86.h b/src/lj_target_x86.h
index 233b77e5..593e7b00 100644
--- a/src/lj_target_x86.h
+++ b/src/lj_target_x86.h
@@ -192,6 +192,7 @@ typedef enum {
192 XI_CALL = 0xe8, 192 XI_CALL = 0xe8,
193 XI_JMP = 0xe9, 193 XI_JMP = 0xe9,
194 XI_JMPs = 0xeb, 194 XI_JMPs = 0xeb,
195 XI_PUSH = 0x50, /* Really 50+r. */
195 XI_JCCs = 0x70, /* Really 7x. */ 196 XI_JCCs = 0x70, /* Really 7x. */
196 XI_JCCn = 0x80, /* Really 0f8x. */ 197 XI_JCCn = 0x80, /* Really 0f8x. */
197 XI_LEA = 0x8d, 198 XI_LEA = 0x8d,
@@ -203,6 +204,7 @@ typedef enum {
203 XI_PUSHi8 = 0x6a, 204 XI_PUSHi8 = 0x6a,
204 XI_TEST = 0x85, 205 XI_TEST = 0x85,
205 XI_MOVmi = 0xc7, 206 XI_MOVmi = 0xc7,
207 XI_GROUP5 = 0xff,
206 208
207 /* Note: little-endian byte-order! */ 209 /* Note: little-endian byte-order! */
208 XI_FLDZ = 0xeed9, 210 XI_FLDZ = 0xeed9,
diff --git a/src/lj_vm.h b/src/lj_vm.h
index 5a82dab0..9ce14acc 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -88,6 +88,8 @@ LJ_ASMF void lj_cont_condt(void); /* Branch if result is true. */
88LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */ 88LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */
89LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */ 89LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */
90 90
91enum { LJ_CONT_TAILCALL, LJ_CONT_FFI_CALLBACK }; /* Special continuations. */
92
91/* Start of the ASM code. */ 93/* Start of the ASM code. */
92LJ_ASMF char lj_vm_asm_begin[]; 94LJ_ASMF char lj_vm_asm_begin[];
93 95
diff --git a/src/ljamalg.c b/src/ljamalg.c
index cc32bf30..17c4b65e 100644
--- a/src/ljamalg.c
+++ b/src/ljamalg.c
@@ -52,6 +52,7 @@
52#include "lj_cdata.c" 52#include "lj_cdata.c"
53#include "lj_cconv.c" 53#include "lj_cconv.c"
54#include "lj_ccall.c" 54#include "lj_ccall.c"
55#include "lj_ccallback.c"
55#include "lj_carith.c" 56#include "lj_carith.c"
56#include "lj_clib.c" 57#include "lj_clib.c"
57#include "lj_cparse.c" 58#include "lj_cparse.c"