aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api.html38
-rw-r--r--src/Makefile4
-rw-r--r--src/Makefile.dep51
-rw-r--r--src/buildvm.c12
-rw-r--r--src/buildvm_lib.c31
-rw-r--r--src/buildvm_peobj.c7
-rw-r--r--src/buildvm_x64.h2225
-rw-r--r--src/buildvm_x64win.h2289
-rw-r--r--src/buildvm_x86.dasc1181
-rw-r--r--src/buildvm_x86.h2361
-rw-r--r--src/lib_base.c18
-rw-r--r--src/lib_io.c3
-rw-r--r--src/lib_jit.c8
-rw-r--r--src/lib_package.c4
-rw-r--r--src/lib_string.c3
-rw-r--r--src/lj_api.c5
-rw-r--r--src/lj_asm.c4
-rw-r--r--src/lj_bc.c7
-rw-r--r--src/lj_bc.h21
-rw-r--r--src/lj_def.h12
-rw-r--r--src/lj_dispatch.c62
-rw-r--r--src/lj_dispatch.h22
-rw-r--r--src/lj_err.c17
-rw-r--r--src/lj_func.c3
-rw-r--r--src/lj_gdbjit.c5
-rw-r--r--src/lj_lib.c11
-rw-r--r--src/lj_lib.h13
-rw-r--r--src/lj_obj.h9
-rw-r--r--src/lj_parse.c38
-rw-r--r--src/lj_record.c8
-rw-r--r--src/lj_state.c14
-rw-r--r--src/lj_trace.c8
-rw-r--r--src/lj_vm.h6
-rw-r--r--src/msvcbuild.bat2
34 files changed, 4324 insertions, 4178 deletions
diff --git a/doc/api.html b/doc/api.html
index af438ad2..f20e5e21 100644
--- a/doc/api.html
+++ b/doc/api.html
@@ -258,13 +258,12 @@ side traces from the cache.
258 258
259<h3 id="mode_engine"><tt>luaJIT_setmode(L, idx, LUAJIT_MODE_WRAPCFUNC|flag)</tt></h3> 259<h3 id="mode_engine"><tt>luaJIT_setmode(L, idx, LUAJIT_MODE_WRAPCFUNC|flag)</tt></h3>
260<p> 260<p>
261This mode defines a wrapper function for calls to C functions. The 261This mode defines a wrapper function for calls to C functions. If
262first time this is called with <tt>LUAJIT_MODE_ON</tt>, the stack 262called with <tt>LUAJIT_MODE_ON</tt>, the stack index at <tt>idx</tt>
263index at <tt>idx</tt> must be a <tt>lightuserdata</tt> object holding 263must be a <tt>lightuserdata</tt> object holding a pointer to the wrapper
264a pointer to the wrapper function. All <b>subsequently created C 264function. From now on all C functions are called through the wrapper
265functions</b> are called through the wrapper functions. After the initial 265function. If called with <tt>LUAJIT_MODE_OFF</tt> this mode is turned
266definition <tt>idx</tt> can be left at <tt>0</tt> when turning the mode 266off and all C functions are directly called.
267on or off.
268</p> 267</p>
269<p> 268<p>
270The wrapper function can be used for debugging purposes or to catch 269The wrapper function can be used for debugging purposes or to catch
@@ -291,38 +290,27 @@ static int wrap_exceptions(lua_State *L, lua_CFunction f)
291 return lua_error(L); // Rethrow as a Lua error. 290 return lua_error(L); // Rethrow as a Lua error.
292} 291}
293 292
294static int myregister(lua_State *L) 293static int myinit(lua_State *L)
295{ 294{
296 ... 295 ...
297 // Define wrapper function and enable it. 296 // Define wrapper function and enable it.
298 lua_pushlightuserdata(L, (void *)wrap_exceptions); 297 lua_pushlightuserdata(L, (void *)wrap_exceptions);
299 luaJIT_setmode(L, -1, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_ON); 298 luaJIT_setmode(L, -1, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_ON);
300 lua_pop(L, 1); 299 lua_pop(L, 1);
301 luaL_register(L, "mymodule", myfuncs); // Pass luaL_Reg list.
302 luaJIT_setmode(L, 0, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_OFF);
303 ...
304 // Wrap some more C++ functions which might throw an exception.
305 luaJIT_setmode(L, 0, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_ON);
306 lua_pushcfunction(L, mythrowingfunc1);
307 lua_pushcclosure(L, mythrowingfunc2, 1);
308 luaJIT_setmode(L, 0, LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_OFF);
309 ... 300 ...
310} 301}
311</pre> 302</pre>
312<p> 303<p>
313Note that you can only define <b>a single global wrapper function</b>, 304Note that you can only define <b>a single global wrapper function</b>,
314so be careful when using this mechanism from multiple C++ modules. 305so be careful when using this mechanism from multiple C++ modules.
315Also note that this mechanism is not without overhead. It should only 306Also note that this mechanism is not without overhead.
316be enabled for definitions of C++ functions that can actually throw
317exceptions. If you're embedding LuaJIT into an application, only
318enable it <b>after</b> running <tt>luaL_openlibs</tt>.
319</p> 307</p>
320<p> 308<p>
321LuaJIT already intercepts exception handling for all x64 systems and 309LuaJIT already intercepts exception handling for systems using DWARF2
322for x86 systems using DWARF2 stack unwinding (e.g. Linux, OSX). This 310stack unwinding (e.g. Linux or OSX) and for Windows/x64 (but <b>not</b>
323is a zero-cost mechanism and always enabled. You don't need to use any 311for Windows/x86). This is a zero-cost mechanism and always enabled.
324wrapper functions, except when you want to get a more specific error 312You don't need to use any wrapper functions, except when you want to get
325message than <tt>"C++&nbsp;exception"</tt>. 313a more specific error message than <tt>"C++&nbsp;exception"</tt>.
326</p> 314</p>
327<br class="flush"> 315<br class="flush">
328</div> 316</div>
diff --git a/src/Makefile b/src/Makefile
index e3a3fbc2..5fef367a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -412,9 +412,9 @@ $(LJVM_BOUT): $(BUILDVM_T)
412 $(E) "BUILDVM $@" 412 $(E) "BUILDVM $@"
413 $(Q)$(BUILDVM_X) -m $(LJVM_MODE) -o $@ 413 $(Q)$(BUILDVM_X) -m $(LJVM_MODE) -o $@
414 414
415lj_bcdef.h: $(BUILDVM_T) 415lj_bcdef.h: $(BUILDVM_T) $(LJLIB_C)
416 $(E) "BUILDVM $@" 416 $(E) "BUILDVM $@"
417 $(Q)$(BUILDVM_X) -m bcdef -o $@ 417 $(Q)$(BUILDVM_X) -m bcdef -o $@ $(LJLIB_C)
418 418
419lj_ffdef.h: $(BUILDVM_T) $(LJLIB_C) 419lj_ffdef.h: $(BUILDVM_T) $(LJLIB_C)
420 $(E) "BUILDVM $@" 420 $(E) "BUILDVM $@"
diff --git a/src/Makefile.dep b/src/Makefile.dep
index ef64bd9a..68b4f532 100644
--- a/src/Makefile.dep
+++ b/src/Makefile.dep
@@ -14,7 +14,8 @@ lib_aux.o: lib_aux.c lua.h luaconf.h lauxlib.h lj_obj.h lj_def.h \
14 lj_arch.h lj_err.h lj_errmsg.h lj_state.h lj_lib.h lj_alloc.h 14 lj_arch.h lj_err.h lj_errmsg.h lj_state.h lj_lib.h lj_alloc.h
15lib_base.o: lib_base.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ 15lib_base.o: lib_base.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
16 lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h \ 16 lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h \
17 lj_meta.h lj_state.h lj_ff.h lj_ffdef.h lj_ctype.h lj_lib.h lj_libdef.h 17 lj_meta.h lj_state.h lj_bc.h lj_ff.h lj_ffdef.h lj_dispatch.h lj_jit.h \
18 lj_ir.h lj_ctype.h lj_lib.h lj_libdef.h
18lib_bit.o: lib_bit.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 19lib_bit.o: lib_bit.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
19 lj_arch.h lj_err.h lj_errmsg.h lj_str.h lj_lib.h lj_libdef.h 20 lj_arch.h lj_err.h lj_errmsg.h lj_str.h lj_lib.h lj_libdef.h
20lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ 21lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
@@ -22,8 +23,8 @@ lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
22lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h 23lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h
23lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 24lib_io.o: lib_io.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_ff.h lj_ffdef.h \ 25 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \
25 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_lib.h \ 26 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h lj_traceerr.h \
26 lj_libdef.h 27 lj_lib.h lj_libdef.h
27lib_jit.o: lib_jit.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h \ 28lib_jit.o: lib_jit.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h \
28 lj_obj.h lj_def.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_bc.h \ 29 lj_obj.h lj_def.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_bc.h \
29 lj_ir.h lj_jit.h lj_iropt.h lj_dispatch.h lj_vm.h lj_vmevent.h lj_lib.h \ 30 lj_ir.h lj_jit.h lj_iropt.h lj_dispatch.h lj_vm.h lj_vmevent.h lj_lib.h \
@@ -43,7 +44,7 @@ lib_table.o: lib_table.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
43lj_alloc.o: lj_alloc.c lj_def.h lua.h luaconf.h lj_arch.h lj_alloc.h 44lj_alloc.o: lj_alloc.c lj_def.h lua.h luaconf.h lj_arch.h lj_alloc.h
44lj_api.o: lj_api.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 45lj_api.o: lj_api.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
45 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \ 46 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \
46 lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \ 47 lj_state.h lj_bc.h lj_frame.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \
47 lj_traceerr.h lj_vm.h lj_lex.h lj_parse.h 48 lj_traceerr.h lj_vm.h lj_lex.h lj_parse.h
48lj_asm.o: lj_asm.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 49lj_asm.o: lj_asm.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
49 lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ir.h lj_jit.h lj_iropt.h \ 50 lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ir.h lj_jit.h lj_iropt.h \
@@ -53,14 +54,15 @@ lj_bc.o: lj_bc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_bc.h \
53 lj_bcdef.h 54 lj_bcdef.h
54lj_ctype.o: lj_ctype.c lj_ctype.h lj_def.h lua.h luaconf.h 55lj_ctype.o: lj_ctype.c lj_ctype.h lj_def.h lua.h luaconf.h
55lj_dispatch.o: lj_dispatch.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 56lj_dispatch.o: lj_dispatch.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
56 lj_err.h lj_errmsg.h lj_state.h lj_frame.h lj_bc.h lj_jit.h lj_ir.h \ 57 lj_err.h lj_errmsg.h lj_state.h lj_frame.h lj_bc.h lj_ff.h lj_ffdef.h \
57 lj_trace.h lj_dispatch.h lj_traceerr.h lj_vm.h luajit.h 58 lj_jit.h lj_ir.h lj_trace.h lj_dispatch.h lj_traceerr.h lj_vm.h \
59 luajit.h
58lj_err.o: lj_err.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_err.h \ 60lj_err.o: lj_err.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_err.h \
59 lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_state.h lj_frame.h lj_bc.h \ 61 lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_state.h lj_frame.h lj_bc.h \
60 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h 62 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h
61lj_func.o: lj_func.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 63lj_func.o: lj_func.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
62 lj_func.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h \ 64 lj_func.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
63 lj_vm.h 65 lj_traceerr.h lj_vm.h
64lj_gc.o: lj_gc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 66lj_gc.o: lj_gc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
65 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \ 67 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \
66 lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \ 68 lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \
@@ -70,14 +72,14 @@ lj_gdbjit.o: lj_gdbjit.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
70 lj_ir.h lj_dispatch.h 72 lj_ir.h lj_dispatch.h
71lj_ir.o: lj_ir.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 73lj_ir.o: lj_ir.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
72 lj_str.h lj_tab.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \ 74 lj_str.h lj_tab.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \
73 lj_traceerr.h lj_lib.h 75 lj_bc.h lj_traceerr.h lj_lib.h
74lj_lex.o: lj_lex.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 76lj_lex.o: lj_lex.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
75 lj_err.h lj_errmsg.h lj_str.h lj_lex.h lj_parse.h lj_ctype.h 77 lj_err.h lj_errmsg.h lj_str.h lj_lex.h lj_parse.h lj_ctype.h
76lj_lib.o: lj_lib.c lauxlib.h lua.h luaconf.h lj_obj.h lj_def.h lj_arch.h \ 78lj_lib.o: lj_lib.c lauxlib.h lua.h luaconf.h lj_obj.h lj_def.h lj_arch.h \
77 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_vm.h \ 79 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_bc.h \
78 lj_lib.h 80 lj_dispatch.h lj_jit.h lj_ir.h lj_vm.h lj_lib.h
79lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 81lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
80 lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h \ 82 lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h lj_bc.h \
81 lj_traceerr.h 83 lj_traceerr.h
82lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 84lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
83 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_bc.h lj_vm.h 85 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_bc.h lj_vm.h
@@ -85,11 +87,11 @@ lj_obj.o: lj_obj.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h
85lj_opt_dce.o: lj_opt_dce.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 87lj_opt_dce.o: lj_opt_dce.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
86 lj_ir.h lj_jit.h lj_iropt.h 88 lj_ir.h lj_jit.h lj_iropt.h
87lj_opt_fold.o: lj_opt_fold.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 89lj_opt_fold.o: lj_opt_fold.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
88 lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \ 90 lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h lj_bc.h \
89 lj_traceerr.h lj_vm.h lj_folddef.h 91 lj_traceerr.h lj_vm.h lj_folddef.h
90lj_opt_loop.o: lj_opt_loop.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 92lj_opt_loop.o: lj_opt_loop.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
91 lj_err.h lj_errmsg.h lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h \ 93 lj_err.h lj_errmsg.h lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h \
92 lj_dispatch.h lj_traceerr.h lj_snap.h lj_vm.h 94 lj_dispatch.h lj_bc.h lj_traceerr.h lj_snap.h lj_vm.h
93lj_opt_mem.o: lj_opt_mem.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 95lj_opt_mem.o: lj_opt_mem.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
94 lj_tab.h lj_ir.h lj_jit.h lj_iropt.h 96 lj_tab.h lj_ir.h lj_jit.h lj_iropt.h
95lj_opt_narrow.o: lj_opt_narrow.c lj_obj.h lua.h luaconf.h lj_def.h \ 97lj_opt_narrow.o: lj_opt_narrow.c lj_obj.h lua.h luaconf.h lj_def.h \
@@ -122,21 +124,20 @@ lj_trace.o: lj_trace.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
122lj_udata.o: lj_udata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 124lj_udata.o: lj_udata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
123 lj_gc.h lj_udata.h 125 lj_gc.h lj_udata.h
124lj_vmevent.o: lj_vmevent.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 126lj_vmevent.o: lj_vmevent.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
125 lj_str.h lj_tab.h lj_state.h lj_dispatch.h lj_jit.h lj_ir.h lj_vm.h \ 127 lj_str.h lj_tab.h lj_state.h lj_dispatch.h lj_bc.h lj_jit.h lj_ir.h \
126 lj_vmevent.h 128 lj_vm.h lj_vmevent.h
127ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \ 129ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \
128 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h \ 130 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h \
129 lj_udata.h lj_meta.h lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h \ 131 lj_udata.h lj_meta.h lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h \
130 lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h lj_err.c lj_ctype.c \ 132 lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h lj_err.c lj_ctype.c \
131 lj_ctype.h lj_bc.c lj_bcdef.h lj_obj.c lj_str.c lj_tab.c lj_func.c \ 133 lj_ctype.h lj_bc.c lj_bcdef.h lj_obj.c lj_str.c lj_tab.c lj_func.c \
132 lj_udata.c lj_meta.c lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c \ 134 lj_udata.c lj_meta.c lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c \
133 luajit.h lj_vmevent.c lj_vmevent.h lj_api.c lj_parse.h lj_lex.c \ 135 lj_ff.h lj_ffdef.h luajit.h lj_vmevent.c lj_vmevent.h lj_api.c \
134 lj_parse.c lj_lib.c lj_lib.h lj_ir.c lj_iropt.h lj_opt_mem.c \ 136 lj_parse.h lj_lex.c lj_parse.c lj_lib.c lj_lib.h lj_ir.c lj_iropt.h \
135 lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c lj_opt_loop.c \ 137 lj_opt_mem.c lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c \
136 lj_snap.h lj_mcode.c lj_mcode.h lj_snap.c lj_target.h lj_target_x86.h \ 138 lj_opt_loop.c lj_snap.h lj_mcode.c lj_mcode.h lj_snap.c lj_target.h \
137 lj_record.c lj_ff.h lj_ffdef.h lj_record.h lj_asm.h lj_recdef.h \ 139 lj_target_x86.h lj_record.c lj_record.h lj_asm.h lj_recdef.h lj_asm.c \
138 lj_asm.c lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c \ 140 lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c \
139 lib_base.c lualib.h lj_libdef.h lib_math.c lib_string.c lib_table.c \ 141 lualib.h lj_libdef.h lib_math.c lib_string.c lib_table.c lib_io.c \
140 lib_io.c lib_os.c lib_package.c lib_debug.c lib_bit.c lib_jit.c \ 142 lib_os.c lib_package.c lib_debug.c lib_bit.c lib_jit.c lib_init.c
141 lib_init.c
142luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h 143luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h
diff --git a/src/buildvm.c b/src/buildvm.c
index 44fd2c71..dd0cbcc6 100644
--- a/src/buildvm.c
+++ b/src/buildvm.c
@@ -256,12 +256,12 @@ static void emit_bcdef(BuildCtx *ctx)
256{ 256{
257 int i; 257 int i;
258 fprintf(ctx->fp, "/* This is a generated file. DO NOT EDIT! */\n\n"); 258 fprintf(ctx->fp, "/* This is a generated file. DO NOT EDIT! */\n\n");
259 fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_ofs[BC__MAX+1] = {\n "); 259 fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_ofs[] = {\n");
260 for (i = 0; i < ctx->npc; i++) { 260 for (i = 0; i < ctx->npc; i++) {
261 fprintf(ctx->fp, " %4d,", ctx->sym_ofs[i]); 261 if (i != 0)
262 if ((i & 7) == 7) fprintf(ctx->fp, "\n "); 262 fprintf(ctx->fp, ",\n");
263 fprintf(ctx->fp, "%d", ctx->sym_ofs[i]);
263 } 264 }
264 fprintf(ctx->fp, " 0\n};\n\n");
265} 265}
266 266
267/* Emit VM definitions as Lua code for debug modules. */ 267/* Emit VM definitions as Lua code for debug modules. */
@@ -433,10 +433,12 @@ int main(int argc, char **argv)
433 break; 433 break;
434 case BUILD_bcdef: 434 case BUILD_bcdef:
435 emit_bcdef(ctx); 435 emit_bcdef(ctx);
436 emit_lib(ctx);
436 break; 437 break;
437 case BUILD_vmdef: 438 case BUILD_vmdef:
438 emit_vmdef(ctx); 439 emit_vmdef(ctx);
439 /* fallthrough */ 440 emit_lib(ctx);
441 break;
440 case BUILD_ffdef: 442 case BUILD_ffdef:
441 case BUILD_libdef: 443 case BUILD_libdef:
442 case BUILD_recdef: 444 case BUILD_recdef:
diff --git a/src/buildvm_lib.c b/src/buildvm_lib.c
index 3cf8f522..e77240c5 100644
--- a/src/buildvm_lib.c
+++ b/src/buildvm_lib.c
@@ -15,7 +15,7 @@ static char modname[80];
15static size_t modnamelen; 15static size_t modnamelen;
16static char funcname[80]; 16static char funcname[80];
17static int modstate, regfunc; 17static int modstate, regfunc;
18static int ffid, recffid; 18static int ffid, recffid, ffasmfunc;
19 19
20enum { 20enum {
21 REGFUNC_OK, 21 REGFUNC_OK,
@@ -77,7 +77,8 @@ static void libdef_module(BuildCtx *ctx, char *p, int arg)
77 libdef_endmodule(ctx); 77 libdef_endmodule(ctx);
78 optr = obuf; 78 optr = obuf;
79 *optr++ = (uint8_t)ffid; 79 *optr++ = (uint8_t)ffid;
80 *optr++ = 0; 80 *optr++ = (uint8_t)ffasmfunc;
81 *optr++ = 0; /* Hash table size. */
81 modstate = 1; 82 modstate = 1;
82 fprintf(ctx->fp, "#ifdef %sMODULE_%s\n", LIBDEF_PREFIX, p); 83 fprintf(ctx->fp, "#ifdef %sMODULE_%s\n", LIBDEF_PREFIX, p);
83 fprintf(ctx->fp, "#undef %sMODULE_%s\n", LIBDEF_PREFIX, p); 84 fprintf(ctx->fp, "#undef %sMODULE_%s\n", LIBDEF_PREFIX, p);
@@ -108,8 +109,9 @@ static int find_ffofs(BuildCtx *ctx, const char *name)
108 109
109static void libdef_func(BuildCtx *ctx, char *p, int arg) 110static void libdef_func(BuildCtx *ctx, char *p, int arg)
110{ 111{
112 if (arg != LIBINIT_CF)
113 ffasmfunc++;
111 if (ctx->mode == BUILD_libdef) { 114 if (ctx->mode == BUILD_libdef) {
112 int ofs = arg != LIBINIT_CF ? find_ffofs(ctx, p) : 0;
113 if (modstate == 0) { 115 if (modstate == 0) {
114 fprintf(stderr, "Error: no module for function definition %s\n", p); 116 fprintf(stderr, "Error: no module for function definition %s\n", p);
115 exit(1); 117 exit(1);
@@ -126,12 +128,8 @@ static void libdef_func(BuildCtx *ctx, char *p, int arg)
126 modstate = 2; 128 modstate = 2;
127 fprintf(ctx->fp, " %s%s", arg ? LABEL_PREFIX_FFH : LABEL_PREFIX_CF, p); 129 fprintf(ctx->fp, " %s%s", arg ? LABEL_PREFIX_FFH : LABEL_PREFIX_CF, p);
128 } 130 }
129 if (regfunc != REGFUNC_NOREGUV) obuf[1]++; /* Bump hash table size. */ 131 if (regfunc != REGFUNC_NOREGUV) obuf[2]++; /* Bump hash table size. */
130 libdef_name(regfunc == REGFUNC_NOREGUV ? "" : p, arg); 132 libdef_name(regfunc == REGFUNC_NOREGUV ? "" : p, arg);
131 if (arg) {
132 *optr++ = (uint8_t)ofs;
133 *optr++ = (uint8_t)(ofs >> 8);
134 }
135 } 133 }
136 } else if (ctx->mode == BUILD_ffdef) { 134 } else if (ctx->mode == BUILD_ffdef) {
137 fprintf(ctx->fp, "FFDEF(%s)\n", p); 135 fprintf(ctx->fp, "FFDEF(%s)\n", p);
@@ -146,6 +144,9 @@ static void libdef_func(BuildCtx *ctx, char *p, int arg)
146 for (i = 1; p[i] && modname[i-1]; i++) 144 for (i = 1; p[i] && modname[i-1]; i++)
147 if (p[i] == '_') p[i] = '.'; 145 if (p[i] == '_') p[i] = '.';
148 fprintf(ctx->fp, "\"%s\",\n", p); 146 fprintf(ctx->fp, "\"%s\",\n", p);
147 } else if (ctx->mode == BUILD_bcdef) {
148 if (arg != LIBINIT_CF)
149 fprintf(ctx->fp, ",\n%d", find_ffofs(ctx, p));
149 } 150 }
150 ffid++; 151 ffid++;
151 regfunc = REGFUNC_OK; 152 regfunc = REGFUNC_OK;
@@ -253,7 +254,7 @@ static void libdef_set(BuildCtx *ctx, char *p, int arg)
253 if (p[0] == '!' && p[1] == '\0') p[0] = '\0'; /* Set env. */ 254 if (p[0] == '!' && p[1] == '\0') p[0] = '\0'; /* Set env. */
254 libdef_name(p, LIBINIT_STRING); 255 libdef_name(p, LIBINIT_STRING);
255 *optr++ = LIBINIT_SET; 256 *optr++ = LIBINIT_SET;
256 obuf[1]++; /* Bump hash table size. */ 257 obuf[2]++; /* Bump hash table size. */
257 } 258 }
258} 259}
259 260
@@ -298,6 +299,7 @@ void emit_lib(BuildCtx *ctx)
298 if (ctx->mode == BUILD_recdef) 299 if (ctx->mode == BUILD_recdef)
299 fprintf(ctx->fp, "static const uint16_t recff_idmap[] = {\n0,\n0x0100"); 300 fprintf(ctx->fp, "static const uint16_t recff_idmap[] = {\n0,\n0x0100");
300 recffid = ffid = FF_C+1; 301 recffid = ffid = FF_C+1;
302 ffasmfunc = 0;
301 303
302 while ((fname = *ctx->args++)) { 304 while ((fname = *ctx->args++)) {
303 char buf[256]; /* We don't care about analyzing lines longer than that. */ 305 char buf[256]; /* We don't care about analyzing lines longer than that. */
@@ -347,8 +349,19 @@ void emit_lib(BuildCtx *ctx)
347 349
348 if (ctx->mode == BUILD_ffdef) { 350 if (ctx->mode == BUILD_ffdef) {
349 fprintf(ctx->fp, "\n#undef FFDEF\n\n"); 351 fprintf(ctx->fp, "\n#undef FFDEF\n\n");
352 fprintf(ctx->fp,
353 "#ifndef FF_NUM_ASMFUNC\n#define FF_NUM_ASMFUNC %d\n#endif\n\n",
354 ffasmfunc);
350 } else if (ctx->mode == BUILD_vmdef) { 355 } else if (ctx->mode == BUILD_vmdef) {
351 fprintf(ctx->fp, "}\n\n"); 356 fprintf(ctx->fp, "}\n\n");
357 } else if (ctx->mode == BUILD_bcdef) {
358 int i;
359 fprintf(ctx->fp, "\n};\n\n");
360 fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_mode[] = {\n");
361 fprintf(ctx->fp, "BCDEF(BCMODE)\n");
362 for (i = ffasmfunc-1; i > 0; i--)
363 fprintf(ctx->fp, "BCMODE_FF,\n");
364 fprintf(ctx->fp, "BCMODE_FF\n};\n\n");
352 } else if (ctx->mode == BUILD_recdef) { 365 } else if (ctx->mode == BUILD_recdef) {
353 char *p = (char *)obuf; 366 char *p = (char *)obuf;
354 fprintf(ctx->fp, "\n};\n\n"); 367 fprintf(ctx->fp, "\n};\n\n");
diff --git a/src/buildvm_peobj.c b/src/buildvm_peobj.c
index 5f4075af..2ff274f9 100644
--- a/src/buildvm_peobj.c
+++ b/src/buildvm_peobj.c
@@ -238,7 +238,7 @@ void emit_peobj(BuildCtx *ctx)
238 for (relocsyms = 0; ctx->extnames[relocsyms]; relocsyms++) ; 238 for (relocsyms = 0; ctx->extnames[relocsyms]; relocsyms++) ;
239 pehdr.nsyms = 1+PEOBJ_NSECTIONS*2 + 1+(ctx->nsym-nzsym) + relocsyms; 239 pehdr.nsyms = 1+PEOBJ_NSECTIONS*2 + 1+(ctx->nsym-nzsym) + relocsyms;
240#if !LJ_HASJIT 240#if !LJ_HASJIT
241 pehdr.nsyms -= 7; 241 pehdr.nsyms -= 11; /* See below, removes [IJ]* opcode symbols. */
242#endif 242#endif
243#if LJ_TARGET_X64 243#if LJ_TARGET_X64
244 pehdr.nsyms += 1; /* Symbol for lj_err_unwind_win64. */ 244 pehdr.nsyms += 1; /* Symbol for lj_err_unwind_win64. */
@@ -353,8 +353,9 @@ void emit_peobj(BuildCtx *ctx)
353 } else { 353 } else {
354#else 354#else
355 } else if (!(pi == BC_JFORI || pi == BC_JFORL || pi == BC_JITERL || 355 } else if (!(pi == BC_JFORI || pi == BC_JFORL || pi == BC_JITERL ||
356 pi == BC_JLOOP || pi == BC_IFORL || pi == BC_IITERL || 356 pi == BC_JLOOP || pi == BC_JFUNCF || pi == BC_JFUNCV ||
357 pi == BC_ILOOP)) { 357 pi == BC_IFORL || pi == BC_IITERL || pi == BC_ILOOP ||
358 pi == BC_IFUNCF || pi == BC_IFUNCV)) {
358#endif 359#endif
359 sprintf(name, PEOBJ_SYM_PREFIX LABEL_PREFIX_BC "%s", 360 sprintf(name, PEOBJ_SYM_PREFIX LABEL_PREFIX_BC "%s",
360 bc_names[pi]); 361 bc_names[pi]);
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 95af6a6c..a9e093bf 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,416 +12,396 @@
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[13650] = { 15static const unsigned char build_actionlist[13578] = {
16 254,1,248,10,137,202,137,90,252,252,139,157,233,15,182,139,233,68,139,187, 16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
17 233,139,108,36,16,141,12,202,59,141,233,15,135,244,11,15,182,139,233,57,200, 17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
18 15,134,244,249,248,2,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 18 252,247,195,237,15,132,244,13,248,14,252,247,195,237,15,132,244,10,65,199,
19 65,252,255,36,252,238,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, 19 134,233,237,131,227,252,248,41,211,252,247,219,131,232,1,15,132,244,248,248,
20 244,3,252,233,244,2,248,12,137,89,252,252,141,28,197,237,141,148,253,25,233, 20 1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
21 137,106,252,248,137,90,252,252,139,157,233,15,182,171,233,68,141,60,252,234, 21 1,15,133,244,1,248,2,255,139,108,36,16,137,157,233,248,3,139,68,36,4,139,
22 139,108,36,16,68,59,189,233,15,135,244,13,137,208,15,182,171,233,133,252, 22 76,36,8,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,15,
23 237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,68,139,121,252, 23 72,139,76,36,32,72,137,141,233,49,192,248,16,72,131,196,40,65,94,65,95,91,
24 248,68,137,56,68,139,121,252,252,68,137,120,4,131,192,8,199,65,252,252,237, 24 93,195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,
25 131,252,237,1,15,133,244,1,248,2,68,139,187,233,255,139,3,15,182,204,15,182, 25 131,194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,
26 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,199,64,4,237,131,192, 26 20,202,252,233,244,5,248,8,137,149,233,137,68,36,4,137,206,137,252,239,232,
27 8,131,252,237,1,15,133,244,3,252,233,244,2,248,14,137,89,252,252,76,139,189, 27 251,1,0,139,149,233,252,233,244,3,248,17,137,252,240,72,137,252,252,248,18,
28 233,139,108,36,16,141,68,193,252,248,137,141,233,141,136,233,137,133,233, 28 139,108,36,16,139,173,233,199,133,233,237,252,233,244,16,248,19,72,129,231,
29 59,141,233,76,137,252,254,137,252,239,15,135,244,15,65,199,134,233,237,65, 29 239,72,137,252,252,248,20,139,108,36,16,72,199,193,252,248,252,255,252,255,
30 252,255,150,233,65,199,134,233,237,139,149,233,255,141,12,194,252,247,217, 30 252,255,184,237,255,139,149,233,68,139,181,233,65,129,198,239,139,90,252,
31 3,141,233,248,16,131,192,1,137,68,36,4,252,247,195,237,15,132,244,17,252, 31 252,199,66,252,252,237,65,199,134,233,237,252,233,244,12,248,21,190,237,252,
32 233,244,18,248,19,137,89,252,252,76,139,189,233,139,108,36,16,141,68,193, 32 233,244,248,248,22,131,232,8,252,233,244,247,248,23,141,68,194,252,248,248,
33 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,252,239,15,135, 33 1,15,182,139,233,131,195,4,137,149,233,137,133,233,255,137,92,36,20,137,206,
34 244,15,65,199,134,233,237,65,252,255,215,65,199,134,233,237,139,149,233,255, 34 248,2,137,252,239,232,251,1,0,139,149,233,139,133,233,139,106,252,248,139,
35 141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,4,252,247,195, 35 90,252,252,41,208,193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,
36 237,15,132,244,17,248,18,252,247,195,237,15,132,244,20,65,199,134,233,237, 36 182,205,131,195,4,65,252,255,36,252,238,248,24,85,83,65,87,65,86,72,131,252,
37 131,227,252,248,41,211,252,247,219,131,232,1,15,132,244,248,248,1,139,44, 37 236,40,137,252,253,137,124,36,16,137,252,241,187,237,49,192,76,141,188,253,
38 10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,1,15,133, 38 36,233,68,139,181,233,65,129,198,239,76,137,189,233,137,68,36,20,72,137,68,
39 244,1,248,2,139,108,36,16,137,157,233,248,3,139,68,36,4,139,76,36,8,248,4, 39 36,32,137,68,36,8,137,68,36,12,56,133,233,15,132,244,249,65,199,134,233,237,
40 255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,21,72,139,76, 40 136,133,233,139,149,233,139,133,233,41,200,193,232,3,131,192,1,41,209,139,
41 36,32,72,137,141,233,49,192,248,22,72,131,196,40,65,94,65,95,91,93,195,248, 41 90,252,252,137,68,36,4,252,247,195,237,15,132,244,13,255,252,233,244,14,248,
42 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131, 42 25,85,83,65,87,65,86,72,131,252,236,40,187,237,137,76,36,12,252,233,244,247,
43 192,1,252,233,244,4,248,7,133,201,15,132,244,5,41,193,141,20,202,252,233, 43 248,26,85,83,65,87,65,86,72,131,252,236,40,187,237,248,1,137,84,36,8,137,
44 244,5,248,8,255,137,149,233,137,68,36,4,137,206,137,252,239,232,251,1,0,139, 44 252,253,137,124,36,16,137,252,241,248,2,76,139,189,233,76,137,124,36,32,137,
45 149,233,252,233,244,3,248,23,137,252,240,72,137,252,252,248,24,139,108,36, 45 108,36,20,72,137,165,233,68,139,181,233,65,129,198,239,248,3,65,199,134,233,
46 16,139,173,233,199,133,233,237,252,233,244,22,248,25,72,129,231,239,72,137, 46 237,139,149,233,1,203,41,211,139,133,233,41,200,193,232,3,131,192,1,248,27,
47 252,252,248,26,139,108,36,16,72,199,193,252,248,252,255,252,255,252,255,184, 47 255,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,29,137,202,
48 237,139,149,233,68,139,181,233,65,129,198,239,139,90,252,252,199,66,252,252, 48 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,
49 237,65,199,134,233,237,255,252,233,244,16,248,20,252,247,195,237,15,132,244, 49 252,255,36,252,238,248,30,85,83,65,87,65,86,72,131,252,236,40,137,252,253,
50 27,131,227,252,248,41,218,72,141,76,25,252,248,139,90,252,252,199,68,10,4, 50 137,124,36,16,137,108,36,20,68,139,189,233,68,43,189,233,199,68,36,12,0,0,
51 237,252,233,244,16,248,15,190,237,252,233,244,247,248,13,137,202,248,11,141, 51 0,0,68,137,124,36,8,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,
52 68,194,252,248,15,182,139,233,131,195,4,137,149,233,137,133,233,137,92,36, 52 209,133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,
53 20,137,206,248,1,137,252,239,232,251,1,0,139,141,233,255,139,133,233,139, 53 227,252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,
54 105,252,248,139,89,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248, 54 72,99,77,252,240,76,141,61,245,76,1,252,249,68,139,122,252,248,69,139,191,
55 28,85,83,65,87,65,86,72,131,252,236,40,137,252,253,137,124,36,16,137,252, 55 233,255,69,139,191,233,252,255,225,248,31,15,182,75,252,255,131,252,237,16,
56 241,187,237,49,192,76,141,188,253,36,233,68,139,181,233,65,129,198,239,76, 56 141,12,202,41,252,233,15,132,244,32,252,247,217,193,252,233,3,139,124,36,
57 137,189,233,137,68,36,20,72,137,68,36,32,137,68,36,8,137,68,36,12,56,133, 57 16,137,151,233,137,202,139,72,4,139,0,137,77,4,137,69,0,137,252,238,252,233,
58 233,15,132,244,249,65,199,134,233,237,136,133,233,139,149,233,139,133,233, 58 244,33,248,34,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,
59 41,200,193,232,3,131,192,1,41,209,139,90,252,252,137,68,36,4,252,247,195, 59 133,244,247,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,
60 237,15,132,244,17,252,233,244,18,248,29,255,85,83,65,87,65,86,72,131,252, 60 35,15,182,67,252,254,255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,
61 236,40,187,237,137,76,36,12,252,233,244,247,248,30,85,83,65,87,65,86,72,131, 61 4,36,252,233,244,247,248,36,15,182,67,252,254,141,4,194,248,1,15,182,107,
62 252,236,40,187,237,248,1,137,84,36,8,137,252,253,137,124,36,16,137,252,241, 62 252,255,141,44,252,234,248,2,139,124,36,16,137,151,233,137,252,238,72,137,
63 248,2,76,139,189,233,76,137,124,36,32,137,108,36,20,72,137,165,233,68,139, 63 194,137,252,253,137,92,36,20,232,251,1,1,139,149,233,133,192,15,132,244,249,
64 181,233,65,129,198,239,248,3,65,199,134,233,237,139,149,233,1,203,41,211, 64 248,32,15,182,75,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,3,15,
65 139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252, 65 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,
66 239,15,133,244,31,252,255,165,233,248,32,255,85,83,65,87,65,86,72,131,252, 66 233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,237,252,233,244,
67 236,40,137,252,253,137,124,36,16,137,108,36,20,68,139,189,233,68,43,189,233, 67 29,248,37,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,
68 199,68,36,12,0,0,0,0,68,137,124,36,8,76,139,189,233,76,137,124,36,32,72,137, 68 244,247,255,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,
69 165,233,252,255,209,133,192,15,132,244,21,137,193,187,237,252,233,244,2,248, 69 38,15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,39,15,182,67,252,
70 27,1,209,131,227,252,248,137,213,41,218,199,68,193,252,252,237,137,200,139, 70 254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,
71 93,252,244,72,99,77,252,240,76,141,61,245,76,1,252,249,68,139,122,252,248, 71 137,151,233,137,252,238,72,137,194,137,252,253,137,92,36,20,232,251,1,2,139,
72 69,139,191,233,69,139,191,233,252,255,225,248,33,15,182,75,252,255,131,252, 72 149,233,133,192,15,132,244,249,15,182,75,252,253,139,108,202,4,139,12,202,
73 237,16,141,12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,139, 73 137,104,4,137,8,248,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
74 124,36,16,137,151,233,137,202,139,72,4,139,0,137,77,4,137,69,0,137,252,238, 74 252,255,36,252,238,248,3,139,141,233,137,89,252,244,15,182,67,252,253,139,
75 252,233,244,35,248,36,255,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252, 75 108,194,4,139,4,194,137,105,20,137,65,16,141,153,233,41,211,139,105,252,248,
76 252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137,205,252,233, 76 184,237,252,233,244,29,248,41,139,108,36,16,137,149,233,141,52,202,141,20,
77 244,248,248,37,15,182,67,252,254,255,252,242,15,42,192,252,242,15,17,4,36, 77 194,137,252,239,15,182,75,252,252,137,92,36,20,232,251,1,3,248,3,139,149,
78 255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141,4,194,248,1, 78 233,255,131,252,248,1,15,135,244,42,248,4,141,91,4,15,130,244,252,248,5,15,
79 15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,137,151,233,137,252, 79 183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15,182,232,131,
80 238,72,137,194,137,252,253,137,92,36,20,232,251,1,1,139,149,233,133,192,15, 80 195,4,193,232,16,65,252,255,36,252,238,248,43,131,195,4,129,120,253,4,239,
81 132,244,249,248,34,15,182,75,252,253,139,104,4,139,0,137,108,202,4,137,4, 81 15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,244,4,248,45,
82 202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 82 131,252,235,4,137,206,137,252,233,139,108,36,16,137,149,233,255,137,194,137,
83 248,3,139,141,233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,3, 83 252,239,137,92,36,20,232,251,1,4,252,233,244,3,248,46,65,141,4,199,252,233,
84 0,0,0,252,255,165,233,248,39,137,4,36,199,68,36,4,237,72,141,4,36,128,123, 84 244,247,248,47,65,141,4,199,141,44,252,234,149,252,233,244,248,248,48,141,
85 252,252,235,15,133,244,247,65,141,142,233,255,137,41,199,65,4,237,137,205, 85 4,194,137,197,252,233,244,248,248,49,141,4,194,248,1,141,44,252,234,248,2,
86 252,233,244,248,248,40,15,182,67,252,254,255,72,141,4,36,252,233,244,247, 86 141,12,202,68,15,182,67,252,252,137,206,137,193,139,124,36,16,137,151,233,
87 248,41,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234, 87 137,252,234,137,252,253,137,92,36,20,232,251,1,5,139,149,233,133,192,15,132,
88 248,2,139,124,36,16,137,151,233,137,252,238,72,137,194,137,252,253,137,92, 88 244,40,248,42,137,193,41,208,137,89,252,244,141,152,233,255,184,237,252,233,
89 36,20,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,75,252,253,139, 89 244,27,248,50,139,108,36,16,137,149,233,141,52,194,137,252,239,137,92,36,
90 108,202,4,139,12,202,137,104,4,137,8,248,42,139,3,15,182,204,15,182,232,131, 90 20,232,251,1,6,139,149,233,252,233,244,42,248,51,141,76,202,8,248,28,137,
91 195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,15, 91 76,36,4,137,4,36,131,252,233,8,139,108,36,16,137,149,233,137,206,141,20,193,
92 182,67,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,153,233,41, 92 137,252,239,137,92,36,20,232,251,1,7,139,149,233,139,76,36,4,139,4,36,139,
93 211,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,139,108,36,16,137, 93 105,252,248,131,192,1,65,57,215,15,132,244,52,137,202,137,90,252,252,139,
94 149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,20, 94 157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,
95 232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255,141,91, 95 248,53,139,108,36,16,137,149,233,137,206,137,252,239,137,92,36,20,232,251,
96 4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3, 96 1,8,139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,
97 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,45,131, 97 164,253,252,238,233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,
98 195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120,253,4,239, 98 252,253,239,15,131,244,55,139,90,252,252,137,68,36,4,137,106,252,252,139,
99 252,233,244,4,248,47,131,252,235,4,137,206,137,252,233,139,108,36,16,137, 99 42,137,106,252,248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,
100 149,233,137,194,137,252,239,137,92,36,20,232,251,1,4,252,233,244,3,248,48, 100 4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,
101 255,65,141,4,199,252,233,244,247,248,49,65,141,4,199,141,44,252,234,149,252, 101 68,36,4,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,
102 233,244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141,4,194,248, 102 237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,
103 1,141,44,252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,137,193,139, 103 139,106,252,248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,
104 124,36,16,137,151,233,137,252,234,137,252,253,137,92,36,20,232,251,1,5,139, 104 66,252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,
105 149,233,133,192,15,132,244,42,248,44,137,193,41,208,137,89,252,244,141,152, 105 139,90,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,
106 233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,244,31,255, 106 2,133,252,237,199,66,252,252,237,15,132,244,58,65,139,134,233,199,66,252,
107 252,255,165,233,248,52,139,108,36,16,137,149,233,141,52,194,137,252,239,137, 107 252,237,137,106,252,248,139,141,233,255,35,136,233,105,201,239,3,141,233,
108 92,36,20,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76,36,4,137,4, 108 248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,
109 36,131,252,233,8,139,108,36,16,137,149,233,137,206,141,20,193,137,252,239, 109 137,233,133,201,15,133,244,3,252,233,244,58,248,5,139,105,4,129,252,253,239,
110 137,92,36,20,232,251,1,7,139,149,233,139,76,36,4,139,4,36,139,105,252,248, 110 15,132,244,58,255,139,1,137,106,252,252,137,66,252,248,252,233,244,58,248,
111 131,192,1,65,57,215,15,132,244,53,252,255,165,233,248,54,139,108,36,16,137, 111 6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,
112 149,233,137,206,137,252,239,137,92,36,20,232,251,1,8,139,149,233,139,67,252, 112 7,252,247,213,65,139,172,253,174,233,252,233,244,2,248,60,129,252,248,239,
113 252,15,182,204,15,182,232,193,232,16,65,252,255,164,253,252,238,233,248,55, 113 15,130,244,55,129,122,253,4,239,15,133,244,55,255,139,42,131,189,233,0,15,
114 129,252,248,239,15,130,244,56,255,139,105,4,129,252,253,239,15,131,244,56, 114 133,244,55,129,122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,90,252,
115 137,68,36,4,137,105,252,252,139,41,137,105,252,248,131,232,2,15,132,244,248, 115 252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,
116 137,12,36,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248, 116 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,248,1,252,233,244,
117 131,232,1,15,133,244,1,139,12,36,248,2,139,68,36,4,252,233,244,57,248,58, 117 58,248,61,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,
118 129,252,248,239,15,130,244,56,139,105,4,184,237,252,247,213,57,232,255,15, 118 55,137,213,139,50,141,82,8,139,124,36,16,232,251,1,9,137,252,234,139,40,139,
119 71,197,255,15,134,244,247,137,232,248,1,255,139,105,252,248,139,132,253,197, 119 64,4,139,90,252,252,137,106,252,248,137,66,252,252,252,233,244,58,248,62,
120 233,199,65,252,252,237,137,65,252,248,252,233,244,59,248,60,129,252,248,239, 120 129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,
121 15,130,244,56,139,105,4,129,252,253,239,15,133,244,252,248,1,139,41,139,173, 121 15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,129,252,248,239,
122 233,248,2,133,252,237,199,65,252,252,237,15,132,244,59,139,65,252,248,65, 122 15,130,244,55,139,90,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,
123 139,134,233,199,65,252,252,237,137,105,252,248,137,12,36,139,141,233,255, 123 199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,122,253,4,239,
124 35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57, 124 15,135,244,55,65,131,190,233,0,15,133,244,55,65,139,174,233,65,59,174,233,
125 129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244, 125 255,15,130,244,247,232,244,66,248,1,139,108,36,16,137,149,233,137,92,36,20,
126 59,248,5,139,105,4,129,252,253,239,15,132,244,59,255,139,1,139,12,36,137, 126 137,214,137,252,239,232,251,1,10,139,149,233,252,233,244,2,248,67,129,252,
127 105,252,252,137,65,252,248,252,233,244,59,248,6,129,252,253,239,15,132,244, 127 248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15,133,244,55,
128 1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,65,139,172,253, 128 139,108,36,16,137,149,233,255,139,90,252,252,139,50,141,82,8,137,252,239,
129 174,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,129,121,253,4, 129 137,92,36,20,232,251,1,11,139,149,233,133,192,15,132,244,249,139,106,8,139,
130 239,15,133,244,56,255,139,41,131,189,233,0,15,133,244,56,129,121,253,12,239, 130 66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,
131 15,133,244,56,139,65,8,137,133,233,199,65,252,252,237,137,105,252,248,252, 131 248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,233,244,1,248,3,199,
132 246,133,233,235,15,132,244,247,128,165,233,235,65,139,134,233,65,137,174, 132 66,252,252,237,252,233,244,58,248,70,129,252,248,239,15,130,244,55,139,106,
133 233,137,133,233,248,1,252,233,244,59,248,62,255,129,252,248,239,15,130,244, 133 252,248,129,122,253,4,239,255,15,133,244,55,139,133,233,139,90,252,252,199,
134 56,129,121,253,4,239,15,133,244,56,137,20,36,137,205,139,49,141,81,8,139, 134 66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,69,248,71,
135 124,36,16,232,251,1,9,137,252,233,139,20,36,139,40,139,64,4,137,105,252,248, 135 129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,129,122,253,
136 137,65,252,252,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,121, 136 12,239,15,135,244,55,139,90,252,252,255,252,242,15,16,66,8,72,189,237,237,
137 253,4,239,15,135,244,56,255,252,242,15,16,1,252,233,244,64,255,221,1,252, 137 102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,
138 233,244,65,255,248,66,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 138 248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
139 133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244,59, 139 253,4,239,15,132,244,72,139,40,139,64,4,137,42,137,66,4,252,233,244,68,248,
140 248,3,129,121,253,4,239,15,135,244,56,65,131,190,233,0,15,133,244,56,65,139, 140 2,131,189,233,0,15,132,244,72,137,252,239,137,213,137,198,232,251,1,12,137,
141 174,233,65,59,174,233,255,15,130,244,247,232,244,67,248,1,139,108,36,16,137, 141 252,234,133,192,15,133,244,1,248,72,184,237,252,233,244,69,248,73,255,129,
142 141,233,137,89,252,252,137,92,36,20,137,20,36,137,206,137,252,239,232,251, 142 252,248,239,15,130,244,55,139,106,252,248,129,122,253,4,239,15,133,244,55,
143 1,10,139,141,233,139,20,36,252,233,244,2,248,68,129,252,248,239,15,130,244, 143 139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,255,15,87,192,
144 56,15,132,244,248,248,1,129,121,253,4,239,15,133,244,56,137,20,36,139,49, 144 252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,69,248,
145 139,108,36,16,137,141,233,255,137,89,252,252,141,81,8,137,252,239,137,92, 145 74,129,252,248,239,15,130,244,55,141,74,8,131,232,1,187,237,248,1,65,15,182,
146 36,20,232,251,1,11,139,141,233,139,20,36,133,192,15,132,244,249,139,105,8, 146 174,233,193,252,237,235,131,229,1,1,252,235,252,233,244,27,248,75,129,252,
147 139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,20,137,41,137, 147 248,239,15,130,244,55,129,122,253,12,239,15,133,244,55,255,139,106,4,137,
148 65,4,248,69,184,237,252,233,244,70,248,2,199,65,12,237,252,233,244,1,248, 148 106,12,199,66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,
149 3,199,65,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56, 149 187,237,252,233,244,1,248,76,129,252,248,239,15,130,244,55,139,42,139,90,
150 129,121,253,4,239,255,15,133,244,56,139,133,233,199,65,252,252,237,137,65, 150 252,252,137,92,36,20,137,44,36,129,122,253,4,239,15,133,244,55,72,131,189,
151 252,248,199,65,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130, 151 233,0,15,133,244,55,128,189,233,235,15,135,244,55,139,141,233,15,132,244,
152 244,56,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,255, 152 247,255,59,141,233,15,132,244,55,248,1,141,92,193,252,240,59,157,233,15,135,
153 252,242,15,16,65,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252, 153 244,55,137,157,233,139,108,36,16,137,149,233,131,194,8,137,149,233,141,108,
154 242,15,45,192,252,242,15,17,65,252,248,255,139,41,59,133,233,15,131,244,248, 154 194,232,72,41,221,57,203,15,132,244,249,248,2,139,68,43,4,137,67,252,252,
155 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,139,40,139,64,4, 155 139,4,43,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,139,
156 137,41,137,65,4,252,233,244,69,248,2,131,189,233,0,15,132,244,73,137,20,36, 156 60,36,232,244,24,65,199,134,233,237,255,139,108,36,16,139,28,36,139,149,233,
157 137,252,239,137,205,137,198,232,251,1,12,137,252,233,139,20,36,133,192,15, 157 129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,
158 133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15,130, 158 68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,
159 244,56,129,121,253,4,239,15,133,244,56,139,133,233,199,65,252,252,237,137, 159 135,244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,
160 65,252,248,255,15,87,192,252,242,15,17,65,8,255,217,252,238,221,89,8,255, 160 193,8,68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,
161 184,237,252,233,244,70,248,75,129,252,248,239,15,130,244,56,137,89,252,252, 161 139,92,36,20,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,
162 187,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,65,252,246,134, 162 195,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,139,
163 233,235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,31,252,255, 163 233,131,252,233,8,137,139,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,
164 165,233,248,3,131,195,1,252,233,244,2,248,76,255,129,252,248,239,15,130,244, 164 244,7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,
165 56,129,121,253,12,239,15,133,244,56,137,89,252,252,139,105,4,137,105,12,199, 165 149,233,252,233,244,4,248,77,139,106,252,248,139,173,233,139,90,252,252,137,
166 65,4,237,139,41,139,89,8,137,105,8,137,25,187,237,137,202,129,193,239,131, 166 92,36,20,137,44,36,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,
167 232,2,252,233,244,1,248,9,139,92,36,20,252,233,244,56,248,77,129,252,248, 167 135,244,55,139,141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,
168 239,15,130,244,56,139,41,137,89,252,252,137,92,36,20,137,44,36,129,121,253, 168 92,193,252,248,59,157,233,15,135,244,55,137,157,233,139,108,36,16,137,149,
169 4,239,15,133,244,9,255,72,131,189,233,0,15,133,244,9,128,189,233,235,15,135, 169 233,137,149,233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,
170 244,9,139,157,233,137,92,36,4,15,132,244,247,59,157,233,15,132,244,9,248, 170 255,139,68,43,4,137,67,252,252,139,4,43,137,67,252,248,131,252,235,8,57,203,
171 1,141,92,195,252,240,59,157,233,15,135,244,9,137,157,233,139,108,36,16,137, 171 15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,139,108,
172 141,233,131,193,8,137,141,233,255,139,108,36,4,141,76,193,232,72,41,217,57, 172 36,16,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,
173 252,235,15,132,244,249,248,2,139,68,11,4,137,67,252,252,139,4,11,137,67,252, 173 233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,
174 248,131,252,235,8,57,252,235,15,133,244,2,248,3,139,60,36,139,116,36,4,232, 174 26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,139,
175 244,28,65,199,134,233,237,139,108,36,16,139,28,36,139,149,233,129,252,248, 175 1,137,4,41,139,65,4,137,68,41,4,131,193,8,68,57,252,249,15,133,244,5,248,
176 239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68,137,252, 176 6,141,67,1,248,7,139,92,36,20,137,68,36,4,49,201,252,247,195,237,15,132,244,
177 251,41,203,15,132,244,252,255,141,4,26,193,252,235,3,59,133,233,15,135,244, 177 13,252,233,244,14,248,8,137,222,137,252,239,232,251,1,13,248,9,139,12,36,
178 255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8, 178 68,137,185,233,137,222,137,252,239,232,251,1,0,139,149,233,252,233,244,4,
179 68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,139,92, 179 248,78,139,108,36,16,72,252,247,133,233,237,15,132,244,55,255,137,149,233,
180 36,20,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,195, 180 141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,
181 237,15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,139,233,131, 181 252,233,244,16,255,248,64,139,90,252,252,221,90,252,248,252,233,244,58,248,
182 252,233,8,137,139,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7, 182 79,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
183 248,9,255,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,149, 183 15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,63,139,90,252,252,
184 233,252,233,244,4,248,9,139,92,36,20,252,233,244,56,248,78,139,173,233,137, 184 252,242,15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,
185 89,252,252,137,92,36,20,137,44,36,72,131,189,233,0,15,133,244,9,128,189,233, 185 253,4,239,15,135,244,55,221,2,217,225,248,63,248,64,139,90,252,252,221,90,
186 235,15,135,244,9,139,157,233,137,92,36,4,15,132,244,247,59,157,233,255,15, 186 252,248,255,248,58,184,237,248,69,137,68,36,4,248,56,252,247,195,237,15,133,
187 132,244,9,248,1,141,92,195,252,248,59,157,233,15,135,244,9,137,157,233,139, 187 244,253,248,5,56,67,252,255,15,135,244,252,15,182,75,252,253,72,252,247,209,
188 108,36,16,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,72,41,217, 188 141,20,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
189 57,252,235,15,132,244,249,248,2,139,68,11,4,137,67,252,252,139,4,11,137,67, 189 252,238,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,
190 252,248,131,252,235,8,57,252,235,15,133,244,2,248,3,139,60,36,139,116,36, 190 193,252,248,252,255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,
191 4,232,244,28,65,199,134,233,237,139,108,36,16,139,28,36,139,149,233,255,129, 191 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,
192 252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68, 192 244,63,248,81,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
193 137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,135, 193 55,252,242,15,16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,
194 244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193, 194 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,
195 8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,20,137,68,36, 195 233,244,63,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
196 4,49,201,252,247,195,237,15,132,244,17,255,252,233,244,18,248,8,137,222,137, 196 135,244,55,221,2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,
197 252,239,232,251,1,13,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232, 197 244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,
198 251,1,0,139,149,233,252,233,244,4,248,79,139,108,36,16,137,89,252,252,72, 198 83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
199 252,247,133,233,237,15,132,244,56,137,141,233,141,68,193,252,248,137,133, 199 2,232,244,84,252,233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,
200 233,49,192,72,137,133,233,176,235,136,133,233,252,233,244,22,255,248,65,221, 200 122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,
201 89,252,248,252,233,244,59,248,80,129,252,248,239,15,130,244,56,129,121,253, 201 248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,
202 4,239,15,135,244,56,252,242,15,16,1,72,184,237,237,102,72,15,110,200,15,84, 202 252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,248,239,255,15,130,
203 193,248,64,252,242,15,17,65,252,248,255,248,80,129,252,248,239,15,130,244, 203 244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,
204 56,129,121,253,4,239,15,135,244,56,221,1,217,225,248,64,248,65,221,89,252, 204 89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,
205 248,255,248,59,184,237,248,70,137,68,36,4,248,57,252,247,195,237,15,133,244, 205 252,254,252,233,244,64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,
206 253,248,5,56,67,252,255,15,135,244,252,139,3,15,182,204,15,182,232,131,195, 206 4,239,15,135,244,55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,
207 4,193,232,16,65,252,255,36,252,238,248,6,199,68,193,252,244,237,131,192,1, 207 15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,
208 252,233,244,5,248,7,137,202,72,199,193,252,248,252,255,252,255,252,255,252, 208 233,244,64,248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,
209 233,244,18,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 209 135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
210 135,244,56,252,242,15,81,1,252,233,244,64,248,82,129,252,248,239,15,130,244, 210 252,233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
211 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,83,252,233,244, 211 135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
212 64,248,84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 212 252,243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,
213 56,252,242,15,16,1,232,244,85,252,233,244,64,255,248,81,129,252,248,239,15, 213 239,15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,
214 130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,250,252,233,244, 214 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
215 65,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, 215 16,2,255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248,96,129,252,
216 1,232,244,83,252,233,244,65,248,84,255,129,252,248,239,15,130,244,56,129, 216 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,
217 121,253,4,239,15,135,244,56,221,1,232,244,85,252,233,244,65,255,248,86,129, 217 137,213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129,252,248,239,
218 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252,237,221, 218 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,213,
219 1,217,252,241,252,233,244,65,248,87,129,252,248,239,15,130,244,56,129,121, 219 232,251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129,252,248,239,
220 253,4,239,15,135,244,56,217,252,236,221,1,217,252,241,252,233,244,65,248, 220 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,139,106,252,
221 88,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221, 221 248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248,239,15,130,
222 1,232,244,89,252,233,244,65,248,90,129,252,248,239,15,130,244,56,129,121, 222 244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220,141,233,
223 253,4,239,15,135,244,56,221,1,217,252,254,252,233,244,65,248,91,129,252,248, 223 252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122,253,4,239,
224 239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,255,252, 224 15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217,252,243,
225 233,244,65,248,92,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 225 252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
226 244,56,221,1,217,252,242,221,216,252,233,244,65,248,93,129,252,248,239,15, 226 135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217,252,253,
227 130,244,56,255,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217, 227 221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139,106,4,129,
228 232,222,225,217,252,250,217,252,243,252,233,244,65,248,94,129,252,248,239, 228 252,253,239,15,135,244,55,139,90,252,252,139,2,137,106,252,252,137,66,252,
229 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,232, 229 248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,
230 222,225,217,252,250,217,201,217,252,243,252,233,244,65,248,95,129,252,248, 230 184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,
231 239,15,130,244,56,129,121,253,4,239,15,135,244,56,255,221,1,217,232,217,252, 231 41,197,255,252,242,15,42,197,255,137,44,36,219,4,36,255,139,106,252,252,129,
232 243,252,233,244,65,255,248,96,129,252,248,239,15,130,244,56,129,121,253,4, 232 229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,
233 239,15,135,244,56,252,242,15,16,1,255,137,12,36,137,213,232,251,1,14,139, 233 242,15,17,2,255,221,26,255,184,237,252,233,244,69,248,3,255,15,87,192,252,
234 12,36,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,244,56, 234 233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,72,
235 129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,137,12,36,137,213,232, 235 189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,66,252,248,
236 251,1,15,139,12,36,137,252,234,252,233,244,64,255,248,98,129,252,248,239, 236 255,221,2,199,4,36,0,0,128,90,216,12,36,221,90,252,248,255,139,106,252,252,
237 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,137,12, 237 184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,248,239,15,130,244,
238 36,137,213,232,251,1,16,139,12,36,137,252,234,252,233,244,64,248,99,255,248, 238 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,248,103,129,252,248,
239 100,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 239 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,255,139,106,4,139,
240 15,16,1,252,242,15,89,133,233,252,233,244,64,255,248,100,129,252,248,239, 240 90,252,252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,
241 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,220,141,233,252,233,244, 241 232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,
242 65,255,248,101,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 242 34,255,217,192,232,244,104,220,252,233,248,1,221,90,252,248,221,26,255,139,
243 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,217,252,243,252,233,244, 243 66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,69,248,
244 65,248,102,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 244 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
245 129,121,253,12,239,255,15,135,244,56,221,65,8,221,1,217,252,253,221,217,252, 245 244,1,255,217,252,238,217,201,252,233,244,1,255,248,105,129,252,248,239,15,
246 233,244,65,248,103,129,252,248,239,15,130,244,56,139,105,4,129,252,253,239, 246 130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
247 15,135,244,56,139,1,137,105,252,252,137,65,252,248,209,229,129,252,253,0, 247 55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
248 0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252, 248 233,244,64,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
249 253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42, 249 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
250 197,255,137,44,36,219,4,36,255,139,105,252,252,129,229,252,255,252,255,15, 250 74,8,232,244,107,252,233,244,63,255,248,106,129,252,248,239,15,130,244,55,
251 128,129,205,0,0,224,63,137,105,252,252,248,2,255,252,242,15,17,1,255,221, 251 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,
252 25,255,184,237,252,233,244,70,248,3,255,15,87,192,252,233,244,2,255,217,252, 252 66,8,232,244,107,252,233,244,64,255,248,108,129,252,248,239,15,130,244,55,
253 238,252,233,244,2,255,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252, 253 129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,
254 242,15,89,193,252,242,15,17,65,252,248,255,221,1,199,4,36,0,0,128,90,216, 254 15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,242,15,16,
255 12,36,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244, 255 76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,109,
256 1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 256 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
257 56,252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253, 257 16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,
258 4,239,15,135,244,56,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255, 258 15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,
259 15,132,244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242, 259 1,252,233,244,1,255,248,5,221,216,252,233,244,55,255,248,110,129,252,248,
260 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,220,252,233,248, 260 239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42,255,252,242,15,42,
261 1,221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, 261 133,233,252,233,244,63,255,219,133,233,252,233,244,64,255,248,111,129,252,
262 248,2,184,237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,105,4,252,233, 262 248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139,42,139,90,252,252,
263 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 263 131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,15,42,197,252,233,
264 1,255,248,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 264 244,63,255,137,44,36,219,4,36,252,233,244,64,255,248,112,65,139,174,233,65,
265 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223, 265 59,174,233,15,130,244,247,232,244,66,248,1,129,252,248,239,15,133,244,55,
266 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15, 266 129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61,252,255,0,0,0,15,135,
267 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 267 244,55,137,68,36,4,255,221,2,219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,
268 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248, 268 244,55,255,199,68,36,24,1,0,0,0,72,141,68,36,4,248,113,139,108,36,16,137,
269 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, 269 149,233,139,84,36,24,72,137,198,137,252,239,137,92,36,20,232,251,1,17,139,
270 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248, 270 149,233,139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,58,248,
271 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 271 114,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,199,68,36,
272 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252, 272 4,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,55,15,134,244,
273 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, 273 247,129,122,253,20,239,255,252,242,15,45,106,16,137,108,36,4,255,221,66,16,
274 197,1,252,233,244,1,255,248,110,129,252,248,239,15,130,244,56,129,121,253, 274 219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,55,129,122,253,12,239,
275 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64, 275 15,135,244,55,139,42,137,108,36,24,139,173,233,255,252,242,15,45,74,8,255,
276 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252, 276 139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,
277 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244, 277 108,36,24,41,200,15,140,244,115,141,172,253,13,233,131,192,1,248,4,137,68,
278 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 278 36,24,137,232,252,233,244,113,248,5,15,140,244,252,141,68,40,1,252,233,244,
279 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233, 279 2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,
280 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133, 280 1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,115,49,192,252,233,244,
281 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42, 281 4,248,116,129,252,248,239,15,130,244,55,65,139,174,233,65,59,174,233,15,130,
282 197,252,233,244,64,255,137,44,36,219,4,36,252,233,244,65,255,248,113,65,139, 282 244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,55,129,122,253,
283 174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,129,252,248,239,15, 283 12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,66,8,219,92,36,
284 133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252,255, 284 4,139,68,36,4,255,133,192,15,142,244,115,131,189,233,1,15,130,244,115,15,
285 0,0,0,15,135,244,56,137,68,36,4,255,221,1,219,92,36,4,129,124,36,4,252,255, 285 133,244,117,65,57,134,233,15,130,244,117,15,182,141,233,65,139,174,233,137,
286 0,0,0,15,135,244,56,255,199,68,36,24,1,0,0,0,72,141,68,36,4,137,12,36,248, 286 68,36,24,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,
287 114,139,108,36,16,137,149,233,139,84,36,24,72,137,198,137,252,239,137,92, 287 233,244,113,248,118,129,252,248,239,255,15,130,244,55,65,139,174,233,65,59,
288 36,20,232,251,1,17,139,12,36,139,149,233,199,65,252,252,237,137,65,252,248, 288 174,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,
289 252,233,244,59,248,115,65,139,174,233,65,59,174,233,15,130,244,247,232,244, 289 42,139,133,233,133,192,15,132,244,115,65,57,134,233,15,130,244,119,129,197,
290 67,248,1,137,12,36,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248, 290 239,137,92,36,4,137,68,36,24,65,139,158,233,248,1,255,15,182,77,0,131,197,
291 239,15,130,244,56,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105, 291 1,131,232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,113,248,
292 16,137,108,36,4,255,221,65,16,219,92,36,4,255,248,1,129,121,253,4,239,15, 292 120,129,252,248,239,15,130,244,55,65,139,174,233,65,59,174,233,15,130,244,
293 133,244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36,24,139,173, 293 247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,65,
294 233,255,252,242,15,45,73,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133, 294 57,134,233,255,15,130,244,119,129,197,239,137,92,36,4,137,68,36,24,65,139,
295 201,15,142,244,253,248,3,139,108,36,24,41,200,15,140,244,116,141,172,253, 295 158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,
296 13,233,131,192,1,248,4,137,68,36,24,137,232,252,233,244,114,248,5,15,140, 296 131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,
297 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15, 297 1,15,137,244,1,137,216,139,92,36,4,252,233,244,113,248,121,129,252,248,239,
298 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244, 298 15,130,244,55,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,
299 3,248,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,65,139, 299 248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,65,57,134,233,15,
300 174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,255,137,12,36,129,121, 300 130,244,119,129,197,239,137,92,36,4,137,68,36,24,65,139,158,233,252,233,244,
301 253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255,252,242, 301 249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,
302 15,45,65,8,255,221,65,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,116, 302 15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,
303 131,189,233,1,15,130,244,116,15,133,244,118,65,57,134,233,15,130,244,118, 303 137,216,139,92,36,4,252,233,244,113,248,122,129,252,248,239,15,130,244,55,
304 15,182,141,233,65,139,174,233,137,68,36,24,248,1,136,77,0,131,197,1,131,232, 304 129,122,253,4,239,15,133,244,55,137,213,139,58,232,251,1,18,137,252,234,255,
305 1,15,133,244,1,65,139,134,233,252,233,244,114,248,119,129,252,248,239,255, 305 252,242,15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,244,55,
306 15,130,244,56,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248, 306 129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,
307 1,137,12,36,129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15, 307 110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,
308 132,244,116,65,57,134,233,15,130,244,120,129,197,239,137,92,36,4,137,68,36, 308 255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
309 24,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133, 309 252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,
310 244,1,137,216,139,92,36,4,252,233,244,114,248,121,129,252,248,239,15,130, 310 126,197,255,137,68,36,4,141,68,194,252,240,248,1,57,208,15,134,244,125,129,
311 244,56,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,137,12, 311 120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,
312 36,129,121,253,4,239,15,133,244,56,139,41,139,133,233,65,57,134,233,255,15, 312 126,193,33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,
313 130,244,120,129,197,239,137,92,36,4,137,68,36,24,65,139,158,233,252,233,244, 313 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,
314 249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135, 314 102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,
315 244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216, 315 242,15,88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,130,244,
316 139,92,36,4,252,233,244,114,248,122,129,252,248,239,15,130,244,56,255,65, 316 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,
317 139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,137,12,36,129,121, 317 15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,
318 253,4,239,15,133,244,56,139,41,139,133,233,65,57,134,233,15,130,244,120,129, 318 88,193,102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,55,129,
319 197,239,137,92,36,4,137,68,36,24,65,139,158,233,252,233,244,249,248,1,15, 319 122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,
320 182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248, 320 205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,248,130,
321 131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92, 321 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
322 36,4,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4, 322 16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
323 239,15,133,244,56,137,20,36,137,205,139,57,232,251,1,18,137,252,233,139,20, 323 252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,126,139,
324 36,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239,15,130, 324 68,36,4,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,
325 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237,237,102, 325 253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,
326 72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233, 326 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
327 244,64,255,248,125,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
328 244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
329 102,15,126,197,255,137,68,36,4,141,68,193,252,240,255,137,20,36,255,248,1,
330 57,200,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,
331 0,252,242,15,88,193,102,15,126,194,33,213,255,131,232,8,252,233,244,1,255,
332 248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,
333 242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,
334 197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,255,248,129,
335 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,
336 16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
337 252,242,15,16,0,252,242,15,88,193,102,15,126,194,49,213,255,248,130,129,252,
338 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,
339 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,
340 252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129,121,253,4,239,
341 15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,
342 88,193,102,15,126,197,255,252,247,213,255,248,131,252,242,15,42,197,252,233,
343 244,64,248,126,252,242,15,42,197,139,20,36,252,233,244,64,255,248,127,255,
344 139,68,36,4,252,233,244,56,255,248,133,129,252,248,239,15,130,244,56,129,
345 121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,
346 1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
347 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252, 327 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252,
348 233,244,131,255,248,134,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 328 233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
349 135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16, 329 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
350 73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202, 330 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,
351 137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244, 331 137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244,
352 131,255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 332 125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
353 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72, 333 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,
354 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, 334 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
355 102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,131,255, 335 102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,125,255,
356 248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129, 336 248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,
357 121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,189,237, 337 122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,
358 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15, 338 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
359 126,197,102,15,126,201,255,211,197,137,193,252,233,244,131,255,248,137,129, 339 126,197,102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,135,129,
360 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12, 340 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,
361 239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,189,237,237,102,72, 341 239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,
362 15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, 342 15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
363 15,126,201,255,211,205,137,193,252,233,244,131,248,118,184,237,252,233,244, 343 15,126,201,255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,
364 56,248,120,184,237,248,56,139,108,36,16,41,202,137,89,252,252,137,92,36,20, 344 55,248,119,184,237,248,55,139,108,36,16,139,90,252,252,137,92,36,20,137,149,
365 137,20,36,137,141,233,141,68,193,252,248,141,144,233,137,133,233,139,65,252, 345 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,
366 248,59,149,233,15,135,244,251,137,252,239,252,255,144,233,133,192,15,133, 346 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,133,244,
367 244,249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139, 347 69,248,1,255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,90,
368 105,252,248,139,20,36,1,202,57,89,252,252,15,133,244,248,252,255,165,233, 348 252,252,15,133,244,248,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
369 248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,139,141, 349 4,65,252,255,36,252,238,248,2,137,209,252,247,195,237,15,133,244,249,15,182,
370 233,139,20,36,1,202,252,233,244,70,248,5,190,237,137,252,239,232,251,1,0, 350 107,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,221,131,
371 252,233,244,1,248,67,93,72,137,108,36,24,139,108,36,16,41,202,137,84,36,4, 351 229,252,248,41,252,234,252,233,244,27,248,5,190,237,137,252,239,232,251,1,
372 137,89,252,252,137,92,36,20,137,141,233,141,68,193,252,248,137,252,239,137, 352 0,139,149,233,252,233,244,1,248,66,93,72,137,108,36,24,139,108,36,16,137,
373 133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192, 353 92,36,20,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232,251,
374 1,139,89,252,252,139,84,36,4,1,202,72,139,108,36,24,85,139,105,252,248,195, 354 1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,24,
375 248,138,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,133,244,247, 355 85,195,248,136,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,133,
376 168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,248,139,65, 356 244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,248,
377 15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255,142, 357 137,65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,
378 233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,16,137,149,233, 358 255,142,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,16,137,
379 137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75,252,253, 359 149,233,137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75,
380 248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252,238, 360 252,253,248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,
381 233,248,140,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,141,255,204, 361 252,238,233,248,138,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,139,
382 255,248,142,255,248,143,255,248,144,255,68,139,122,252,248,69,139,191,233, 362 255,204,255,248,140,255,248,141,255,248,142,255,68,139,122,252,248,69,139,
383 69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204, 363 191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,
384 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,248,83,255,217, 364 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,248,82,
385 124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 365 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
386 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248, 366 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,
387 145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15, 367 255,248,143,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
388 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15, 368 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,
389 88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252, 369 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,
390 242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248, 370 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,
391 85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255, 371 195,248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,
392 252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8, 372 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
393 195,255,248,146,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15, 373 68,36,8,195,255,248,144,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
394 110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208, 374 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
395 252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15, 375 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
396 110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248, 376 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,
397 1,195,248,105,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102, 377 193,248,1,195,248,104,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,
398 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248, 378 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,
399 147,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15, 379 255,248,145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
400 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193, 380 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,
401 252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216,252, 381 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216,
402 242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193, 382 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,
403 248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184,237,237,102,72,15, 383 193,248,1,195,248,146,255,15,40,232,252,242,15,94,193,72,184,237,237,102,
404 110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102,15,46, 384 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102,
405 220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102, 385 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,
406 15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,84, 386 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,
407 194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,248, 387 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,
408 1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,241, 388 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,
409 217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68, 389 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,
410 36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,248, 390 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,
411 89,217,252,234,222,201,248,149,217,84,36,252,248,129,124,36,252,248,0,0,128, 391 248,88,217,252,234,222,201,248,147,217,84,36,252,248,129,124,36,252,248,0,
412 127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,15,132,244,248,248, 392 0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,15,132,244,248,
413 150,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217, 393 248,148,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
414 252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,255,248, 394 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,107,255,
415 151,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138, 395 248,149,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
416 244,255,248,152,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244, 396 15,138,244,255,248,150,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
417 248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 397 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,
418 15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255, 398 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,
419 252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15, 399 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,
420 132,244,5,15,130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,15,94, 400 6,15,132,244,5,15,130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,
421 200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248, 401 15,94,200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,
422 7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224, 402 1,248,7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,
423 72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,72, 403 224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,
424 209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251, 404 72,209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,
425 252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240, 405 252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,
426 221,68,36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217, 406 221,68,36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,
427 252,240,217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15, 407 252,240,217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,
@@ -431,27 +411,27 @@ static const unsigned char build_actionlist[13650] = {
431 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184, 411 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,
432 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244, 412 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,
433 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248, 413 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,
434 153,255,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130,244, 414 151,255,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130,244,
435 105,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248, 415 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,
436 221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,89, 416 221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,88,
437 252,233,244,253,248,1,232,244,149,255,252,233,244,253,248,2,131,252,255,7, 417 252,233,244,253,248,1,232,244,147,255,252,233,244,253,248,2,131,252,255,7,
438 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244, 418 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,
439 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9, 419 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,
440 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244, 420 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,
441 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244, 421 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,
442 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216, 422 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,
443 248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12, 423 248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,
444 221,68,36,4,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130, 424 221,68,36,4,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130,
445 244,105,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,89, 425 244,104,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,88,
446 15,132,244,149,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217, 426 15,132,244,147,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,
447 201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255, 427 201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,
448 9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248, 428 9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,
449 1,217,252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217, 429 1,217,252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,
450 252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,154,255,131,252, 430 252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,152,255,131,252,
451 255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15, 431 255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,
452 92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89, 432 92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,
453 193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,148,15, 433 193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,146,15,
454 132,244,108,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255, 434 132,244,107,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,
455 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15, 435 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,
456 84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248, 436 84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,
457 252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244, 437 252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,
@@ -461,241 +441,258 @@ static const unsigned char build_actionlist[13650] = {
461 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, 441 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,
462 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, 442 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,
463 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 443 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,
464 252,248,5,15,130,244,148,15,132,244,108,131,252,248,7,15,132,244,247,15,135, 444 252,248,5,15,130,244,146,15,132,244,107,131,252,248,7,15,132,244,247,15,135,
465 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 445 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,
466 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 446 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,
467 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 447 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,
468 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 448 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,
469 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 449 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,
470 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 450 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,
471 155,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,129, 451 153,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,249,
472 124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252, 452 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,
473 242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,194,131,195, 453 41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,
474 4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248, 454 194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,
475 255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2, 455 134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,
476 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 456 233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
477 139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,253,202,4, 457 252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,
478 239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202, 458 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
479 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, 459 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
480 247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,2,15,183, 460 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,
481 67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4,15,133,244,2, 461 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4,
482 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 462 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,
483 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 463 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,
484 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, 464 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,
485 72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244,248,139,12,202, 465 233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244,
486 65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244,248,255,252,242, 466 248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244,
487 65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199,255,72,252,247, 467 248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199,
488 208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129,252,253,239,255, 468 255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129,
489 15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202, 469 252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,
490 255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,204,15,182,232, 470 194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,
491 131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,139,4,194,137, 471 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,
492 108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, 472 4,139,4,194,137,108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,
493 255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202, 473 193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,
494 4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 474 213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
495 255,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237, 475 252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,
496 237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224, 476 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,
497 221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192, 477 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,
498 252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221, 478 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,
499 28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 479 128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,
500 252,238,248,2,129,124,253,194,4,239,15,133,244,52,139,60,194,137,213,232, 480 16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,
501 251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252,233, 481 194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,
502 244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135, 482 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,
503 244,48,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234, 483 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,
504 65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,65,15, 484 221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,
505 16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255,129,124, 485 252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,
506 253,252,234,4,239,15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252, 486 234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,
507 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, 487 135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,
508 242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,65,220,36,199, 488 234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,
509 255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,4,199,220,36, 489 4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,
510 252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234, 490 255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,
511 220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199,255,221,4,252, 491 4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,
512 234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255, 492 15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,
513 65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194, 493 242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,
514 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,65,15,94, 494 234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,
515 4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,16,4,199,252,242, 495 252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,
516 15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234, 496 65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,
517 252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252, 497 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,
518 234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,4,199,255,252,242,65, 498 255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,
519 15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,221,4,252,234,255,252, 499 221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,
520 242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255, 500 4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,
521 248,156,232,244,148,255,252,233,244,156,255,232,244,108,255,15,182,252,236, 501 221,4,252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,154,255,232,
522 15,182,192,139,124,36,16,137,151,233,141,52,194,137,194,41,252,234,248,35, 502 244,107,255,15,182,252,236,15,182,192,139,124,36,16,137,151,233,141,52,194,
523 137,252,253,137,92,36,20,232,251,1,21,139,149,233,133,192,15,133,244,44,15, 503 137,194,41,252,234,248,33,137,252,253,137,92,36,20,232,251,1,21,139,149,233,
524 182,107,252,255,15,182,75,252,253,139,68,252,234,4,139,44,252,234,137,68, 504 133,192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,139,68,252,234,
525 202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, 505 4,139,44,252,234,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,
526 255,36,252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202, 506 195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,199,
527 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 507 68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
528 15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28, 508 252,255,36,252,238,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,
529 202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28, 509 223,67,252,254,221,28,202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,
530 202,255,72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4, 510 255,65,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,3,15,182,
531 193,232,16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137, 511 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,76,202,
532 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15, 512 12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,
533 182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139, 513 134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
534 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139, 514 252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,
535 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139, 515 109,0,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
536 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139, 516 16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189,
537 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244, 517 233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,
538 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 518 252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,
539 252,238,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235, 519 195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239,
540 15,132,244,1,137,252,238,137,213,65,141,190,233,255,232,251,1,22,137,252, 520 15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141,
541 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233, 521 190,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,
542 65,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244, 522 106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4,
543 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 523 237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,
544 252,238,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1, 524 131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132,
545 137,213,137,198,65,141,190,233,232,251,1,22,137,252,234,252,233,244,1,255, 525 244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1,
546 139,106,252,248,255,252,242,65,15,16,4,199,255,139,172,253,141,233,139,141, 526 22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199,
547 233,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137, 527 255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,
548 65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 528 252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,
549 255,141,156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149, 529 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,
550 233,141,52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204, 530 156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149,233,141,
551 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208, 531 52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204,15,182,
552 139,108,36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92, 532 232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,139,108,
553 36,20,232,251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237, 533 36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,36,20,232,
554 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 534 251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,
555 139,124,36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61, 535 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,124,
556 252,255,7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65, 536 36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,
557 59,134,233,137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75, 537 7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65,59,134,233,
558 252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4, 538 137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75,252,253,137,
559 193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232, 539 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
560 251,1,26,15,183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139, 540 252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,
561 108,36,16,65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244, 541 183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139,108,36,16,
562 249,248,2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252, 542 65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244,249,248,
563 253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193, 543 2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252,253,137,
564 232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252, 544 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
565 254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173, 545 252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252,254,72,252,
566 233,65,139,4,135,252,233,244,157,255,72,252,247,208,139,106,252,248,139,173, 546 247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
567 233,65,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192,129,124,253, 547 4,135,252,233,244,155,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
568 252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194,4,239,15,135,244, 548 4,135,252,233,244,156,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
569 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46, 549 239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,
570 193,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, 550 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
571 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139, 551 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
572 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2, 552 239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,
573 131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,38, 553 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,
574 15,182,75,252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, 554 233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,
575 38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192,72,252,247,208, 555 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,139,4,
576 65,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157, 556 194,252,233,244,155,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,
577 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, 557 135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,155,139,141,
578 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, 558 233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,
579 67,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182, 559 57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,67,252,
580 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67, 560 253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182,204,15,
581 252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248, 561 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,
582 5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233, 562 185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,
583 244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, 563 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,
584 37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253, 564 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,
585 4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3, 565 44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,
586 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131, 566 15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,182,
587 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37,255, 567 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,
588 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44, 568 0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,252,
589 252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133,233, 569 236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,
590 15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1, 570 124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,
591 252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, 571 39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,
592 4,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 572 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,
593 238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235, 573 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,
594 15,132,244,41,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239, 574 131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,
595 15,133,244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,65,139,142, 575 39,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
596 233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182, 576 39,139,4,194,252,233,244,156,248,7,128,165,233,235,65,139,142,233,65,137,
597 252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239, 577 174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,
598 15,133,244,39,139,44,252,234,248,158,139,141,233,35,136,233,105,201,239,198, 578 182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,
599 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133, 579 37,139,44,252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,
600 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15, 580 0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,
601 133,244,253,248,3,15,182,67,252,253,139,108,194,4,139,4,194,137,105,4,137, 581 129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,
602 1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 582 253,248,3,15,182,67,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,3,
603 248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235, 583 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,131,
604 15,132,244,39,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244, 584 189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,15,132,244,
605 1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39, 585 37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,
606 248,6,137,4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72, 586 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,
607 141,20,36,137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139, 587 4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72,141,20,36,
608 108,36,24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137, 588 137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139,108,36,
609 174,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253, 589 24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174,
610 252,234,4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224, 590 233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,
611 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15, 591 234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,
612 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204, 592 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,
613 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0, 593 244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204,15,
614 15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,75, 594 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15,
615 252,253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233, 595 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,252,
616 137,141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141, 596 253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233,137,
617 12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36, 597 141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141,12,
618 4,255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248, 598 202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,4,
619 59,133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139, 599 255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248,59,
600 133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139,
620 41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133, 601 41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133,
621 244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 602 244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
622 65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194, 603 65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194,
623 137,252,253,137,92,36,20,232,251,1,29,139,149,233,15,182,75,252,253,252,233, 604 137,252,253,137,92,36,20,232,251,1,29,139,149,233,15,182,75,252,253,252,233,
624 244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233, 605 244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233,
625 252,233,244,2,255,3,68,36,4,255,141,76,202,8,139,105,252,248,129,121,253, 606 252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,
626 252,252,239,15,133,244,31,252,255,165,233,255,141,76,202,8,65,137,215,139, 607 51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,
627 105,252,248,129,121,253,252,252,239,15,133,244,31,248,53,139,90,252,252,252, 608 131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,
628 247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15, 609 129,121,253,252,252,239,15,133,244,28,248,52,139,90,252,252,252,247,195,237,
629 132,244,249,248,2,139,41,65,137,47,139,105,4,65,137,111,4,65,131,199,8,131, 610 15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,
630 193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1, 611 248,2,139,41,65,137,47,139,105,4,65,137,111,4,65,131,199,8,131,193,8,131,
631 15,135,244,251,248,4,139,68,36,4,252,255,165,233,248,5,255,252,247,195,237, 612 232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,
632 15,133,244,4,15,182,67,252,253,72,252,247,208,141,20,194,68,139,122,252,248, 613 244,251,248,4,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,
633 69,139,191,233,69,139,191,233,252,233,244,4,248,7,15,139,244,1,131,227,252, 614 255,36,252,238,248,5,255,252,247,195,237,15,133,244,4,15,182,75,252,253,72,
634 248,41,218,65,137,215,139,90,252,252,252,233,244,1,255,141,76,202,8,139,105, 615 252,247,209,141,12,202,68,139,121,252,248,69,139,191,233,69,139,191,233,252,
635 232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105, 616 233,244,4,248,7,15,139,244,1,131,227,252,248,41,218,65,137,215,139,90,252,
636 8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252, 617 252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,
637 248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15,182,252,236,139, 618 65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,
638 66,252,248,141,12,202,139,128,233,15,182,128,233,68,137,60,36,68,141,188, 619 228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,28,
639 253,194,233,68,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233, 620 137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
640 252,248,65,57,215,15,131,244,248,248,1,65,139,71,252,248,137,1,65,139,71, 621 4,65,252,255,36,252,238,255,15,182,252,236,139,66,252,248,141,12,202,139,
641 252,252,65,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,65,57,215, 622 128,233,15,182,128,233,68,137,60,36,68,141,188,253,194,233,68,43,122,252,
642 15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,68, 623 252,133,252,237,15,132,244,251,141,108,252,233,252,248,65,57,215,15,131,244,
643 139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 624 248,248,1,65,139,71,252,248,137,1,65,139,71,252,252,65,131,199,8,137,65,4,
644 252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41,252,248,15,134,244,3,255, 625 131,193,8,57,252,233,15,131,244,249,65,57,215,15,130,244,1,248,2,199,65,4,
645 137,197,193,252,237,3,131,197,1,137,108,36,4,139,108,36,16,1,200,59,133,233, 626 237,131,193,8,57,252,233,15,130,244,2,248,3,68,139,60,36,139,3,15,182,204,
646 15,135,244,253,248,6,65,139,71,252,248,137,1,65,139,71,252,252,65,131,199, 627 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,199,68,36,4,1,
647 8,137,65,4,131,193,8,65,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233, 628 0,0,0,137,208,68,41,252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,
648 137,141,233,137,92,36,20,65,41,215,139,116,36,4,131,252,238,1,137,252,239, 629 1,137,108,36,4,139,108,36,16,1,200,59,133,233,15,135,244,253,248,6,65,139,
649 232,251,1,0,139,149,233,139,141,233,65,1,215,252,233,244,6,255,193,225,3, 630 71,252,248,137,1,65,139,71,252,252,65,131,199,8,137,65,4,131,193,8,65,57,
650 255,248,1,139,90,252,252,137,68,36,4,252,247,195,237,15,133,244,253,255,248, 631 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,92,36,20,
651 17,65,137,215,131,232,1,15,132,244,249,248,2,65,139,44,15,65,137,111,252, 632 65,41,215,139,116,36,4,131,252,238,1,137,252,239,232,251,1,0,139,149,233,
652 248,65,139,108,15,4,65,137,111,252,252,65,131,199,8,131,232,1,15,133,244, 633 139,141,233,65,1,215,252,233,244,6,255,193,225,3,255,248,1,139,90,252,252,
653 2,248,3,139,68,36,4,15,182,107,252,255,248,5,57,197,15,135,244,252,255,139, 634 137,68,36,4,252,247,195,237,15,133,244,253,255,248,13,65,137,215,131,232,
654 108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,67,252,255, 635 1,15,132,244,249,248,2,65,139,44,15,65,137,111,252,248,65,139,108,15,4,65,
655 15,135,244,252,255,15,182,75,252,253,72,252,247,209,141,20,202,68,139,122, 636 137,111,252,252,65,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,4,15,
656 252,248,69,139,191,233,69,139,191,233,139,3,15,182,204,15,182,232,131,195, 637 182,107,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,
657 4,193,232,16,65,252,255,36,252,238,248,6,255,65,199,71,252,252,237,65,131, 638 252,139,44,10,137,106,252,248,255,248,5,56,67,252,255,15,135,244,252,255,
658 199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15,139, 639 15,182,75,252,253,72,252,247,209,141,20,202,68,139,122,252,248,69,139,191,
659 244,18,131,227,252,248,41,218,255,1,217,255,137,221,209,252,237,129,229,239, 640 233,69,139,191,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
660 102,65,131,172,253,46,233,1,15,132,244,141,255,141,12,202,255,129,121,253, 641 255,36,252,238,248,6,255,65,199,71,252,252,237,65,131,199,8,255,199,68,194,
661 4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139,105,20,255,129, 642 252,244,237,255,131,192,1,252,233,244,5,248,7,15,139,244,14,131,227,252,248,
662 252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16,73,8,255,252, 643 41,218,255,1,217,255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,
663 242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244, 644 233,1,15,132,244,139,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,
664 249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220, 645 121,253,12,239,15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,
665 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244, 646 53,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,
666 247,255,217,201,248,1,255,15,183,67,252,254,255,15,131,244,248,141,156,253, 647 15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,
667 131,233,255,141,156,253,131,233,15,183,67,252,254,15,131,245,255,15,130,244, 648 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,
668 248,141,156,253,131,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12, 649 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,
669 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137, 650 15,183,67,252,254,255,15,131,244,248,141,156,253,131,233,255,141,156,253,
670 105,252,248,252,233,245,255,141,156,253,131,233,139,1,137,105,252,252,137, 651 131,233,15,183,67,252,254,15,131,245,255,15,130,244,248,141,156,253,131,233,
671 65,252,248,255,65,139,142,233,139,4,129,72,139,128,233,139,108,36,16,65,137, 652 255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,
672 150,233,65,137,174,233,252,255,224,255,141,156,253,131,233,139,3,15,182,204, 653 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,
673 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,254,0 654 255,141,156,253,131,233,139,1,137,105,252,252,137,65,252,248,255,65,139,142,
655 233,139,4,129,72,139,128,233,139,108,36,16,65,137,150,233,65,137,174,233,
656 252,255,224,255,141,156,253,131,233,139,3,15,182,204,15,182,232,131,195,4,
657 193,232,16,65,252,255,36,252,238,255,68,139,187,233,139,108,36,16,141,12,
658 202,59,141,233,15,135,244,23,15,182,139,233,57,200,15,134,244,249,248,2,255,
659 15,183,67,252,254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,
660 57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,
661 252,248,137,104,252,252,68,137,120,252,248,139,108,36,16,141,12,200,59,141,
662 233,15,135,244,22,137,209,137,194,15,182,171,233,133,252,237,15,132,244,248,
663 248,1,131,193,8,57,209,15,131,244,249,68,139,121,252,248,68,137,56,68,139,
664 121,252,252,68,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
665 244,1,248,2,255,68,139,187,233,139,3,15,182,204,15,182,232,131,195,4,193,
666 232,16,65,252,255,36,252,238,255,248,3,199,64,4,237,131,192,8,131,252,237,
667 1,15,133,244,3,252,233,244,2,255,139,106,252,248,76,139,189,233,139,108,36,
668 16,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,
669 137,252,239,255,76,137,252,254,137,252,239,255,15,135,244,21,65,199,134,233,
670 237,255,65,252,255,215,255,65,252,255,150,233,255,65,199,134,233,237,139,
671 149,233,141,12,194,252,247,217,3,141,233,139,90,252,252,252,233,244,12,255,
672 254,0
674}; 673};
675 674
676enum { 675enum {
677 GLOB_gate_lf, 676 GLOB_vm_returnp,
678 GLOB_gate_lf_growstack, 677 GLOB_cont_dispatch,
679 GLOB_gate_lv,
680 GLOB_gate_lv_growstack,
681 GLOB_gate_cwrap,
682 GLOB_gate_c_growstack,
683 GLOB_vm_returnc, 678 GLOB_vm_returnc,
684 GLOB_BC_RET_Z, 679 GLOB_BC_RET_Z,
685 GLOB_vm_return, 680 GLOB_vm_return,
686 GLOB_gate_c,
687 GLOB_vm_returnp,
688 GLOB_vm_leave_cp, 681 GLOB_vm_leave_cp,
689 GLOB_vm_leave_unw, 682 GLOB_vm_leave_unw,
690 GLOB_vm_unwind_c, 683 GLOB_vm_unwind_c,
691 GLOB_vm_unwind_c_eh, 684 GLOB_vm_unwind_c_eh,
692 GLOB_vm_unwind_ff, 685 GLOB_vm_unwind_ff,
693 GLOB_vm_unwind_ff_eh, 686 GLOB_vm_unwind_ff_eh,
694 GLOB_cont_dispatch, 687 GLOB_vm_growstack_c,
688 GLOB_vm_growstack_v,
689 GLOB_vm_growstack_f,
695 GLOB_vm_resume, 690 GLOB_vm_resume,
696 GLOB_vm_pcall, 691 GLOB_vm_pcall,
697 GLOB_vm_call, 692 GLOB_vm_call,
693 GLOB_vm_call_dispatch,
698 GLOB_vmeta_call, 694 GLOB_vmeta_call,
695 GLOB_vm_call_dispatch_f,
699 GLOB_vm_cpcall, 696 GLOB_vm_cpcall,
700 GLOB_cont_cat, 697 GLOB_cont_cat,
701 GLOB_cont_ra, 698 GLOB_cont_ra,
@@ -717,6 +714,7 @@ enum {
717 GLOB_vmeta_unm, 714 GLOB_vmeta_unm,
718 GLOB_vmeta_arith_vv, 715 GLOB_vmeta_arith_vv,
719 GLOB_vmeta_len, 716 GLOB_vmeta_len,
717 GLOB_vmeta_call_ra,
720 GLOB_BC_CALLT_Z, 718 GLOB_BC_CALLT_Z,
721 GLOB_vmeta_for, 719 GLOB_vmeta_for,
722 GLOB_ff_assert, 720 GLOB_ff_assert,
@@ -790,12 +788,11 @@ enum {
790 GLOB_ff_table_getn, 788 GLOB_ff_table_getn,
791 GLOB_ff_bit_tobit, 789 GLOB_ff_bit_tobit,
792 GLOB_ff_bit_band, 790 GLOB_ff_bit_band,
793 GLOB_fff_resbit_op, 791 GLOB_fff_resbit,
794 GLOB_fff_fallback_bit_op, 792 GLOB_fff_fallback_bit_op,
795 GLOB_ff_bit_bor, 793 GLOB_ff_bit_bor,
796 GLOB_ff_bit_bxor, 794 GLOB_ff_bit_bxor,
797 GLOB_ff_bit_bswap, 795 GLOB_ff_bit_bswap,
798 GLOB_fff_resbit,
799 GLOB_ff_bit_bnot, 796 GLOB_ff_bit_bnot,
800 GLOB_ff_bit_lshift, 797 GLOB_ff_bit_lshift,
801 GLOB_ff_bit_rshift, 798 GLOB_ff_bit_rshift,
@@ -826,28 +823,26 @@ enum {
826 GLOB__MAX 823 GLOB__MAX
827}; 824};
828static const char *const globnames[] = { 825static const char *const globnames[] = {
829 "gate_lf", 826 "vm_returnp",
830 "gate_lf_growstack", 827 "cont_dispatch",
831 "gate_lv",
832 "gate_lv_growstack",
833 "gate_cwrap",
834 "gate_c_growstack",
835 "vm_returnc", 828 "vm_returnc",
836 "BC_RET_Z", 829 "BC_RET_Z",
837 "vm_return", 830 "vm_return",
838 "gate_c",
839 "vm_returnp",
840 "vm_leave_cp", 831 "vm_leave_cp",
841 "vm_leave_unw", 832 "vm_leave_unw",
842 "vm_unwind_c@8", 833 "vm_unwind_c@8",
843 "vm_unwind_c_eh", 834 "vm_unwind_c_eh",
844 "vm_unwind_ff@4", 835 "vm_unwind_ff@4",
845 "vm_unwind_ff_eh", 836 "vm_unwind_ff_eh",
846 "cont_dispatch", 837 "vm_growstack_c",
838 "vm_growstack_v",
839 "vm_growstack_f",
847 "vm_resume", 840 "vm_resume",
848 "vm_pcall", 841 "vm_pcall",
849 "vm_call", 842 "vm_call",
843 "vm_call_dispatch",
850 "vmeta_call", 844 "vmeta_call",
845 "vm_call_dispatch_f",
851 "vm_cpcall", 846 "vm_cpcall",
852 "cont_cat", 847 "cont_cat",
853 "cont_ra", 848 "cont_ra",
@@ -869,6 +864,7 @@ static const char *const globnames[] = {
869 "vmeta_unm", 864 "vmeta_unm",
870 "vmeta_arith_vv", 865 "vmeta_arith_vv",
871 "vmeta_len", 866 "vmeta_len",
867 "vmeta_call_ra",
872 "BC_CALLT_Z", 868 "BC_CALLT_Z",
873 "vmeta_for", 869 "vmeta_for",
874 "ff_assert", 870 "ff_assert",
@@ -942,12 +938,11 @@ static const char *const globnames[] = {
942 "ff_table_getn", 938 "ff_table_getn",
943 "ff_bit_tobit", 939 "ff_bit_tobit",
944 "ff_bit_band", 940 "ff_bit_band",
945 "fff_resbit_op", 941 "fff_resbit",
946 "fff_fallback_bit_op", 942 "fff_fallback_bit_op",
947 "ff_bit_bor", 943 "ff_bit_bor",
948 "ff_bit_bxor", 944 "ff_bit_bxor",
949 "ff_bit_bswap", 945 "ff_bit_bswap",
950 "fff_resbit",
951 "ff_bit_bnot", 946 "ff_bit_bnot",
952 "ff_bit_lshift", 947 "ff_bit_lshift",
953 "ff_bit_rshift", 948 "ff_bit_rshift",
@@ -1033,392 +1028,367 @@ static const char *const extnames[] = {
1033static void build_subroutines(BuildCtx *ctx, int cmov, int sse) 1028static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1034{ 1029{
1035 dasm_put(Dst, 0); 1030 dasm_put(Dst, 0);
1036 dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); 1031 dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
1037#if LJ_HASJIT 1032 dasm_put(Dst, 111, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1038#endif 1033 dasm_put(Dst, 202, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
1039 dasm_put(Dst, 48, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); 1034 dasm_put(Dst, 298, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
1040 dasm_put(Dst, 161, LJ_TNIL, PC2PROTO(k)); 1035 dasm_put(Dst, 367, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1041#if LJ_HASJIT 1036 dasm_put(Dst, 535, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1042#endif 1037 dasm_put(Dst, 648, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
1043 dasm_put(Dst, 201, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1038 dasm_put(Dst, 813, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1044 dasm_put(Dst, 303, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1045 dasm_put(Dst, 389, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1046 dasm_put(Dst, 495, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1047 dasm_put(Dst, 584, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1048 dasm_put(Dst, 688, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
1049 dasm_put(Dst, 778, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1050 dasm_put(Dst, 917, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1051 dasm_put(Dst, 1042, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base));
1052 dasm_put(Dst, 1226, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1053 if (sse) { 1039 if (sse) {
1054 dasm_put(Dst, 1271); 1040 dasm_put(Dst, 922);
1055 } else { 1041 } else {
1056 } 1042 }
1057 dasm_put(Dst, 1283, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1043 dasm_put(Dst, 934, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1058 dasm_put(Dst, 1441, LJ_TTAB); 1044 dasm_put(Dst, 1085, DISPATCH_GL(tmptv), LJ_TTAB);
1059 if (sse) { 1045 if (sse) {
1060 dasm_put(Dst, 1271); 1046 dasm_put(Dst, 922);
1061 } else { 1047 } else {
1062 } 1048 }
1063 dasm_put(Dst, 1461, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1049 dasm_put(Dst, 1109, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1064 dasm_put(Dst, 1656, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1050 dasm_put(Dst, 1291, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1065 dasm_put(Dst, 1764, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1051 dasm_put(Dst, 1390, Dt1(->base), Dt1(->base), FRAME_CONT);
1066 dasm_put(Dst, 1887, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*8, 1+1); 1052 dasm_put(Dst, 1513, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1067 dasm_put(Dst, 2042, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1053 dasm_put(Dst, 1691, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1068 if (cmov) { 1054 if (cmov) {
1069 dasm_put(Dst, 2136); 1055 dasm_put(Dst, 1793);
1070 } else { 1056 } else {
1071 dasm_put(Dst, 2140); 1057 dasm_put(Dst, 1797);
1072 } 1058 }
1073 dasm_put(Dst, 2149, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1059 dasm_put(Dst, 1806, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1074 dasm_put(Dst, 2237, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1060 dasm_put(Dst, 1895, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1075 dasm_put(Dst, 2292, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1061 dasm_put(Dst, 1950, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1076 dasm_put(Dst, 2364, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1062 dasm_put(Dst, 2019, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1077 dasm_put(Dst, 2431, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1063 dasm_put(Dst, 2090, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1078 if (sse) { 1064 if (sse) {
1079 dasm_put(Dst, 2509); 1065 dasm_put(Dst, 2166);
1080 } else { 1066 } else {
1081 dasm_put(Dst, 2519); 1067 dasm_put(Dst, 2176);
1082 } 1068 }
1083 dasm_put(Dst, 2526, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1069 dasm_put(Dst, 2183, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1084 dasm_put(Dst, 2591, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1070 dasm_put(Dst, 2252, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1085 dasm_put(Dst, 2675, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1071 dasm_put(Dst, 2321, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1086 dasm_put(Dst, 2775, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1072 dasm_put(Dst, 2424, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1087 if (sse) { 1073 if (sse) {
1088 dasm_put(Dst, 2830, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1074 dasm_put(Dst, 2487, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1089 } else { 1075 } else {
1090 } 1076 }
1091 dasm_put(Dst, 2863, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1077 dasm_put(Dst, 2520, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1092 dasm_put(Dst, 2950, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1078 dasm_put(Dst, 2601, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1093 if (sse) { 1079 if (sse) {
1094 dasm_put(Dst, 2980); 1080 dasm_put(Dst, 2639);
1095 } else { 1081 } else {
1096 dasm_put(Dst, 2990); 1082 dasm_put(Dst, 2649);
1097 } 1083 }
1098 dasm_put(Dst, 2997, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1084 dasm_put(Dst, 2656, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1099 dasm_put(Dst, 3071, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1085 dasm_put(Dst, 2721, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1100 dasm_put(Dst, 3169, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1086 dasm_put(Dst, 2810, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1101 dasm_put(Dst, 3235, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1087 dasm_put(Dst, 2903, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1102 dasm_put(Dst, 3339, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1088 dasm_put(Dst, 3023, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1103 dasm_put(Dst, 3462, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1089 dasm_put(Dst, 3119, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1104 dasm_put(Dst, 3543, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1090 dasm_put(Dst, 3185, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1105 dasm_put(Dst, 3649, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1091 dasm_put(Dst, 3280, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1106 dasm_put(Dst, 3749, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1092 dasm_put(Dst, 3392, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1107 if (sse) { 1093 if (sse) {
1108 dasm_put(Dst, 3836, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1094 dasm_put(Dst, 3419, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1109 } else { 1095 } else {
1110 dasm_put(Dst, 3892, 1+1, LJ_TISNUM); 1096 dasm_put(Dst, 3483, 1+1, LJ_TISNUM);
1111 } 1097 }
1112 dasm_put(Dst, 3924, 1+1, FRAME_TYPE, LJ_TNIL); 1098 dasm_put(Dst, 3519, 1+1, FRAME_TYPE, LJ_TNIL);
1113 if (sse) { 1099 if (sse) {
1114 dasm_put(Dst, 4009, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1100 dasm_put(Dst, 3614, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1115 dasm_put(Dst, 4071, 1+1, LJ_TISNUM); 1101 dasm_put(Dst, 3676, 1+1, LJ_TISNUM);
1116 } else { 1102 } else {
1117 dasm_put(Dst, 4101, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1103 dasm_put(Dst, 3706, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1118 dasm_put(Dst, 4160, 1+1, LJ_TISNUM); 1104 dasm_put(Dst, 3765, 1+1, LJ_TISNUM);
1119 } 1105 }
1120 dasm_put(Dst, 4187, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1106 dasm_put(Dst, 3792, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1121 dasm_put(Dst, 4256, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1107 dasm_put(Dst, 3861, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1122 dasm_put(Dst, 4313, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1108 dasm_put(Dst, 3918, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1123 dasm_put(Dst, 4376, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1109 dasm_put(Dst, 3981, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1124 dasm_put(Dst, 4466); 1110 dasm_put(Dst, 4071);
1125 if (sse) { 1111 if (sse) {
1126 dasm_put(Dst, 4478, 1+1, LJ_TISNUM); 1112 dasm_put(Dst, 4083, 1+1, LJ_TISNUM);
1127 } else { 1113 } else {
1128 } 1114 }
1129 dasm_put(Dst, 4503); 1115 dasm_put(Dst, 4108);
1130 if (sse) { 1116 if (sse) {
1131 dasm_put(Dst, 4523, 1+1, LJ_TISNUM); 1117 dasm_put(Dst, 4122, 1+1, LJ_TISNUM);
1132 } else { 1118 } else {
1133 } 1119 }
1134 dasm_put(Dst, 4548); 1120 dasm_put(Dst, 4147);
1135 if (sse) { 1121 if (sse) {
1136 dasm_put(Dst, 4568, 1+1, LJ_TISNUM); 1122 dasm_put(Dst, 4161, 1+1, LJ_TISNUM);
1137 } else { 1123 } else {
1138 } 1124 }
1139 dasm_put(Dst, 4593); 1125 dasm_put(Dst, 4186);
1140 if (sse) { 1126 if (sse) {
1141 dasm_put(Dst, 4615, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1127 dasm_put(Dst, 4202, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1142 } else { 1128 } else {
1143 dasm_put(Dst, 4650, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1129 dasm_put(Dst, 4241, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1144 } 1130 }
1145 dasm_put(Dst, 4679, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1131 dasm_put(Dst, 4274, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1146 dasm_put(Dst, 4744, 1+1, LJ_TISNUM); 1132 dasm_put(Dst, 4339, 1+1, LJ_TISNUM);
1147 if (sse) { 1133 if (sse) {
1148 dasm_put(Dst, 4839); 1134 dasm_put(Dst, 4438);
1149 } else { 1135 } else {
1150 dasm_put(Dst, 4845); 1136 dasm_put(Dst, 4444);
1151 } 1137 }
1152 dasm_put(Dst, 4852); 1138 dasm_put(Dst, 4451);
1153 if (sse) { 1139 if (sse) {
1154 dasm_put(Dst, 4877); 1140 dasm_put(Dst, 4476);
1155 } else { 1141 } else {
1156 dasm_put(Dst, 4883); 1142 dasm_put(Dst, 4482);
1157 } 1143 }
1158 dasm_put(Dst, 4886, 1+2); 1144 dasm_put(Dst, 4485, 1+2);
1159 if (sse) { 1145 if (sse) {
1160 dasm_put(Dst, 4895); 1146 dasm_put(Dst, 4494);
1161 } else { 1147 } else {
1162 dasm_put(Dst, 4903); 1148 dasm_put(Dst, 4502);
1163 } 1149 }
1164 dasm_put(Dst, 492); 1150 dasm_put(Dst, 4510);
1165 if (sse) { 1151 if (sse) {
1166 dasm_put(Dst, 4911, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1152 dasm_put(Dst, 4513, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1167 } else { 1153 } else {
1168 dasm_put(Dst, 4938); 1154 dasm_put(Dst, 4540);
1169 } 1155 }
1170 dasm_put(Dst, 4955); 1156 dasm_put(Dst, 4557);
1171 if (sse) { 1157 if (sse) {
1172 dasm_put(Dst, 4971, 1+1, LJ_TISNUM); 1158 dasm_put(Dst, 4573, 1+1, LJ_TISNUM);
1173 } else { 1159 } else {
1174 dasm_put(Dst, 4996, 1+1, LJ_TISNUM); 1160 dasm_put(Dst, 4598, 1+1, LJ_TISNUM);
1175 } 1161 }
1176 dasm_put(Dst, 5018); 1162 dasm_put(Dst, 4620);
1177 if (sse) { 1163 if (sse) {
1178 dasm_put(Dst, 5036); 1164 dasm_put(Dst, 4642);
1179 } else { 1165 } else {
1180 dasm_put(Dst, 5062); 1166 dasm_put(Dst, 4668);
1181 } 1167 }
1182 dasm_put(Dst, 5079, 1+2); 1168 dasm_put(Dst, 4685, 1+2);
1183 if (sse) { 1169 if (sse) {
1184 dasm_put(Dst, 5119); 1170 dasm_put(Dst, 4725);
1185 } else { 1171 } else {
1186 dasm_put(Dst, 5127); 1172 dasm_put(Dst, 4733);
1187 } 1173 }
1188 dasm_put(Dst, 5137, 2+1, LJ_TISNUM, LJ_TISNUM); 1174 dasm_put(Dst, 4743, 2+1, LJ_TISNUM, LJ_TISNUM);
1189 if (sse) { 1175 if (sse) {
1190 dasm_put(Dst, 5189, 1+1, LJ_TISNUM, LJ_TISNUM); 1176 dasm_put(Dst, 4795, 1+1, LJ_TISNUM, LJ_TISNUM);
1191 } else { 1177 } else {
1192 dasm_put(Dst, 5236, 2+1, LJ_TISNUM, LJ_TISNUM); 1178 dasm_put(Dst, 4842, 2+1, LJ_TISNUM, LJ_TISNUM);
1193 } 1179 }
1194 if (sse) { 1180 if (sse) {
1195 dasm_put(Dst, 5277, 1+1, LJ_TISNUM, LJ_TISNUM); 1181 dasm_put(Dst, 4883, 1+1, LJ_TISNUM, LJ_TISNUM);
1196 } else { 1182 } else {
1197 } 1183 }
1198 if (sse) { 1184 if (sse) {
1199 dasm_put(Dst, 5348, 1+1, LJ_TISNUM, LJ_TISNUM); 1185 dasm_put(Dst, 4954, 1+1, LJ_TISNUM, LJ_TISNUM);
1200 } else { 1186 } else {
1201 } 1187 }
1202 if (!sse) { 1188 if (!sse) {
1203 dasm_put(Dst, 5419); 1189 dasm_put(Dst, 5025);
1204 } 1190 }
1205 dasm_put(Dst, 5428, 1+1, LJ_TSTR); 1191 dasm_put(Dst, 5034, 1+1, LJ_TSTR);
1206 if (sse) { 1192 if (sse) {
1207 dasm_put(Dst, 5450, Dt5(->len)); 1193 dasm_put(Dst, 5056, Dt5(->len));
1208 } else { 1194 } else {
1209 dasm_put(Dst, 5461, Dt5(->len)); 1195 dasm_put(Dst, 5067, Dt5(->len));
1210 } 1196 }
1211 dasm_put(Dst, 5469, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1197 dasm_put(Dst, 5075, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1212 if (sse) { 1198 if (sse) {
1213 dasm_put(Dst, 5503); 1199 dasm_put(Dst, 5113);
1214 } else { 1200 } else {
1215 dasm_put(Dst, 5513); 1201 dasm_put(Dst, 5123);
1216 } 1202 }
1217 dasm_put(Dst, 5524, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1203 dasm_put(Dst, 5134, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1218 if (sse) { 1204 if (sse) {
1219 dasm_put(Dst, 5561); 1205 dasm_put(Dst, 5171);
1220 } else { 1206 } else {
1221 dasm_put(Dst, 5581); 1207 dasm_put(Dst, 5191);
1222 } 1208 }
1223 dasm_put(Dst, 5601, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1209 dasm_put(Dst, 5211, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1224 dasm_put(Dst, 2504); 1210 dasm_put(Dst, 2161);
1225 if (sse) { 1211 if (sse) {
1226 dasm_put(Dst, 5715); 1212 dasm_put(Dst, 5320);
1227 } else { 1213 } else {
1228 dasm_put(Dst, 5726); 1214 dasm_put(Dst, 5331);
1229 } 1215 }
1230 dasm_put(Dst, 5734, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1216 dasm_put(Dst, 5339, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1231 if (sse) { 1217 if (sse) {
1232 dasm_put(Dst, 5764); 1218 dasm_put(Dst, 5369);
1233 } else { 1219 } else {
1234 } 1220 }
1235 dasm_put(Dst, 5771, sizeof(GCstr)-1); 1221 dasm_put(Dst, 5376, sizeof(GCstr)-1);
1236 dasm_put(Dst, 5846, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1222 dasm_put(Dst, 5451, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1237 dasm_put(Dst, 5907, LJ_TSTR, LJ_TISNUM); 1223 dasm_put(Dst, 5512, LJ_TSTR, LJ_TISNUM);
1238 if (sse) { 1224 if (sse) {
1239 dasm_put(Dst, 5931); 1225 dasm_put(Dst, 5533);
1240 } else { 1226 } else {
1241 dasm_put(Dst, 5938); 1227 dasm_put(Dst, 5540);
1242 } 1228 }
1243 dasm_put(Dst, 5950, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1229 dasm_put(Dst, 5552, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1244 dasm_put(Dst, 6018, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1230 dasm_put(Dst, 5620, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1245 dasm_put(Dst, 6088, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1231 dasm_put(Dst, 5687, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1246 dasm_put(Dst, 6164, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1232 dasm_put(Dst, 5760, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1247 dasm_put(Dst, 6249, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1233 dasm_put(Dst, 5845, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1248 dasm_put(Dst, 6326, 1+1, LJ_TTAB); 1234 dasm_put(Dst, 5919, 1+1, LJ_TTAB);
1249 if (sse) { 1235 if (sse) {
1250 dasm_put(Dst, 6399); 1236 dasm_put(Dst, 5986);
1251 } else { 1237 } else {
1252 } 1238 }
1253 if (sse) { 1239 if (sse) {
1254 dasm_put(Dst, 6409, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1240 dasm_put(Dst, 5996, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1255 } else { 1241 } else {
1256 } 1242 }
1257 if (sse) { 1243 if (sse) {
1258 dasm_put(Dst, 6461, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1244 dasm_put(Dst, 6048, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1259 } else { 1245 } else {
1260 } 1246 }
1261 dasm_put(Dst, 6504); 1247 dasm_put(Dst, 6091, LJ_TISNUM);
1262 if (sse) {
1263 dasm_put(Dst, 6514);
1264 }
1265 dasm_put(Dst, 6518, LJ_TISNUM);
1266 if (sse) { 1248 if (sse) {
1267 dasm_put(Dst, 6536); 1249 dasm_put(Dst, 6118);
1268 } else { 1250 } else {
1269 } 1251 }
1270 dasm_put(Dst, 6553); 1252 dasm_put(Dst, 6135);
1271 if (sse) { 1253 if (sse) {
1272 dasm_put(Dst, 6561, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1254 dasm_put(Dst, 6143, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1273 } else { 1255 } else {
1274 } 1256 }
1275 dasm_put(Dst, 6504); 1257 dasm_put(Dst, 6091, LJ_TISNUM);
1276 if (sse) { 1258 if (sse) {
1277 dasm_put(Dst, 6514); 1259 dasm_put(Dst, 6186);
1278 }
1279 dasm_put(Dst, 6518, LJ_TISNUM);
1280 if (sse) {
1281 dasm_put(Dst, 6604);
1282 } else { 1260 } else {
1283 } 1261 }
1284 dasm_put(Dst, 6553); 1262 dasm_put(Dst, 6135);
1285 if (sse) { 1263 if (sse) {
1286 dasm_put(Dst, 6621, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1264 dasm_put(Dst, 6203, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1287 } else { 1265 } else {
1288 } 1266 }
1289 dasm_put(Dst, 6504); 1267 dasm_put(Dst, 6091, LJ_TISNUM);
1290 if (sse) { 1268 if (sse) {
1291 dasm_put(Dst, 6514); 1269 dasm_put(Dst, 6246);
1292 }
1293 dasm_put(Dst, 6518, LJ_TISNUM);
1294 if (sse) {
1295 dasm_put(Dst, 6664);
1296 } else { 1270 } else {
1297 } 1271 }
1298 dasm_put(Dst, 6553); 1272 dasm_put(Dst, 6135);
1299 if (sse) { 1273 if (sse) {
1300 dasm_put(Dst, 6681, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1274 dasm_put(Dst, 6263, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1301 } else { 1275 } else {
1302 } 1276 }
1303 dasm_put(Dst, 6724); 1277 dasm_put(Dst, 6306);
1304 if (sse) { 1278 if (sse) {
1305 dasm_put(Dst, 6731, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1279 dasm_put(Dst, 6313, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1306 } else { 1280 } else {
1307 } 1281 }
1308 dasm_put(Dst, 6774); 1282 dasm_put(Dst, 6356);
1309 if (sse) { 1283 if (sse) {
1310 dasm_put(Dst, 6778); 1284 dasm_put(Dst, 6360);
1311 } else { 1285 } else {
1312 } 1286 }
1313 dasm_put(Dst, 6804); 1287 dasm_put(Dst, 6372);
1314 if (sse) {
1315 dasm_put(Dst, 6395);
1316 }
1317 dasm_put(Dst, 6807);
1318 if (sse) { 1288 if (sse) {
1319 dasm_put(Dst, 6816, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1289 dasm_put(Dst, 6383, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1320 } else { 1290 } else {
1321 } 1291 }
1322 dasm_put(Dst, 6885); 1292 dasm_put(Dst, 6452);
1323 if (sse) { 1293 if (sse) {
1324 dasm_put(Dst, 6894, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1294 dasm_put(Dst, 6461, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1325 } else { 1295 } else {
1326 } 1296 }
1327 dasm_put(Dst, 6963); 1297 dasm_put(Dst, 6530);
1328 if (sse) { 1298 if (sse) {
1329 dasm_put(Dst, 6973, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1299 dasm_put(Dst, 6540, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1330 } else { 1300 } else {
1331 } 1301 }
1332 dasm_put(Dst, 7042); 1302 dasm_put(Dst, 6609);
1333 if (sse) { 1303 if (sse) {
1334 dasm_put(Dst, 7052, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1304 dasm_put(Dst, 6619, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1335 } else { 1305 } else {
1336 } 1306 }
1337 dasm_put(Dst, 7121); 1307 dasm_put(Dst, 6688);
1338 if (sse) { 1308 if (sse) {
1339 dasm_put(Dst, 7130, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1309 dasm_put(Dst, 6697, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1340 } else { 1310 } else {
1341 } 1311 }
1342 dasm_put(Dst, 7199, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1312 dasm_put(Dst, 6766, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1343 dasm_put(Dst, 7282, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1313 dasm_put(Dst, 6844, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1344 dasm_put(Dst, 7400, Dt1(->base), Dt1(->top)); 1314 dasm_put(Dst, 6970, Dt1(->top), Dt1(->base), Dt1(->top));
1345#if LJ_HASJIT 1315#if LJ_HASJIT
1346 dasm_put(Dst, 7442, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1316 dasm_put(Dst, 7009, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1347#endif 1317#endif
1348 dasm_put(Dst, 7475, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); 1318 dasm_put(Dst, 7042, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1349 dasm_put(Dst, 7542, BC__MAX*8); 1319 dasm_put(Dst, 7109, GG_DISP2STATIC);
1350#if LJ_HASJIT 1320#if LJ_HASJIT
1351 dasm_put(Dst, 7579); 1321 dasm_put(Dst, 7146);
1352#endif 1322#endif
1353 dasm_put(Dst, 7581); 1323 dasm_put(Dst, 7148);
1354#if LJ_HASJIT 1324#if LJ_HASJIT
1355 dasm_put(Dst, 7579); 1325 dasm_put(Dst, 7146);
1356#endif 1326#endif
1357 dasm_put(Dst, 7584); 1327 dasm_put(Dst, 7151);
1358#if LJ_HASJIT 1328#if LJ_HASJIT
1359 dasm_put(Dst, 7579); 1329 dasm_put(Dst, 7146);
1360#endif 1330#endif
1361 dasm_put(Dst, 7587); 1331 dasm_put(Dst, 7154);
1362#if LJ_HASJIT 1332#if LJ_HASJIT
1363 dasm_put(Dst, 7590, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1333 dasm_put(Dst, 7157, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1364#endif 1334#endif
1365 dasm_put(Dst, 7637); 1335 dasm_put(Dst, 7204);
1366 if (!sse) { 1336 if (!sse) {
1367 dasm_put(Dst, 7640); 1337 dasm_put(Dst, 7207);
1368 } 1338 }
1369 dasm_put(Dst, 7685, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1339 dasm_put(Dst, 7252, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1370 if (!sse) { 1340 if (!sse) {
1371 dasm_put(Dst, 7771); 1341 dasm_put(Dst, 7338);
1372 } 1342 }
1373 dasm_put(Dst, 7816, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); 1343 dasm_put(Dst, 7383, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
1374 if (!sse) { 1344 if (!sse) {
1375 dasm_put(Dst, 7902); 1345 dasm_put(Dst, 7469);
1376 } 1346 }
1377 dasm_put(Dst, 7941, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1347 dasm_put(Dst, 7508, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1378 if (sse) { 1348 if (sse) {
1379 dasm_put(Dst, 8030, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1349 dasm_put(Dst, 7597, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1380 } else { 1350 } else {
1381 dasm_put(Dst, 8144); 1351 dasm_put(Dst, 7711);
1382 } 1352 }
1383 dasm_put(Dst, 8191); 1353 dasm_put(Dst, 7758);
1384 if (!sse) { 1354 if (!sse) {
1385 } else { 1355 } else {
1386 dasm_put(Dst, 8268); 1356 dasm_put(Dst, 7835);
1387 } 1357 }
1388 dasm_put(Dst, 8271); 1358 dasm_put(Dst, 7838);
1389 dasm_put(Dst, 8356, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1359 dasm_put(Dst, 7923, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1390 dasm_put(Dst, 8457, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1360 dasm_put(Dst, 8024, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1391 dasm_put(Dst, 8631); 1361 dasm_put(Dst, 8198);
1392 if (sse) { 1362 if (sse) {
1393 dasm_put(Dst, 8672); 1363 dasm_put(Dst, 8239);
1394 dasm_put(Dst, 8742); 1364 dasm_put(Dst, 8309);
1395 dasm_put(Dst, 8814); 1365 dasm_put(Dst, 8381);
1396 } else { 1366 } else {
1397 dasm_put(Dst, 8866); 1367 dasm_put(Dst, 8433);
1398 dasm_put(Dst, 8958); 1368 dasm_put(Dst, 8525);
1399 } 1369 }
1400 dasm_put(Dst, 9004); 1370 dasm_put(Dst, 8571);
1401 if (sse) { 1371 if (sse) {
1402 dasm_put(Dst, 9010, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1372 dasm_put(Dst, 8577, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1403 dasm_put(Dst, 9095, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1373 dasm_put(Dst, 8662, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1404 } else { 1374 } else {
1405 dasm_put(Dst, 9223); 1375 dasm_put(Dst, 8790);
1406 dasm_put(Dst, 9306); 1376 dasm_put(Dst, 8873);
1407 if (cmov) { 1377 if (cmov) {
1408 dasm_put(Dst, 9361); 1378 dasm_put(Dst, 8928);
1409 } else { 1379 } else {
1410 dasm_put(Dst, 9380); 1380 dasm_put(Dst, 8947);
1411 } 1381 }
1412 dasm_put(Dst, 9219); 1382 dasm_put(Dst, 8786);
1413 } 1383 }
1414 dasm_put(Dst, 9421); 1384 dasm_put(Dst, 8988);
1415} 1385}
1416 1386
1417/* Generate the code for a single instruction. */ 1387/* Generate the code for a single instruction. */
1418static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1388static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1419{ 1389{
1420 int vk = 0; 1390 int vk = 0;
1421 dasm_put(Dst, 159, defop); 1391 dasm_put(Dst, 9010, defop);
1422 1392
1423 switch (op) { 1393 switch (op) {
1424 1394
@@ -1427,602 +1397,602 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1427 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1397 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1428 1398
1429 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1399 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1430 dasm_put(Dst, 9443, LJ_TISNUM, LJ_TISNUM); 1400 dasm_put(Dst, 9012, LJ_TISNUM, LJ_TISNUM);
1431 if (sse) { 1401 if (sse) {
1432 dasm_put(Dst, 9464); 1402 dasm_put(Dst, 9033);
1433 } else { 1403 } else {
1434 dasm_put(Dst, 9479); 1404 dasm_put(Dst, 9048);
1435 if (cmov) { 1405 if (cmov) {
1436 dasm_put(Dst, 9489); 1406 dasm_put(Dst, 9058);
1437 } else { 1407 } else {
1438 dasm_put(Dst, 9495); 1408 dasm_put(Dst, 9064);
1439 } 1409 }
1440 } 1410 }
1441 switch (op) { 1411 switch (op) {
1442 case BC_ISLT: 1412 case BC_ISLT:
1443 dasm_put(Dst, 9502); 1413 dasm_put(Dst, 9071);
1444 break; 1414 break;
1445 case BC_ISGE: 1415 case BC_ISGE:
1446 dasm_put(Dst, 9301); 1416 dasm_put(Dst, 8868);
1447 break; 1417 break;
1448 case BC_ISLE: 1418 case BC_ISLE:
1449 dasm_put(Dst, 6321); 1419 dasm_put(Dst, 5914);
1450 break; 1420 break;
1451 case BC_ISGT: 1421 case BC_ISGT:
1452 dasm_put(Dst, 9507); 1422 dasm_put(Dst, 9076);
1453 break; 1423 break;
1454 default: break; /* Shut up GCC. */ 1424 default: break; /* Shut up GCC. */
1455 } 1425 }
1456 dasm_put(Dst, 9512, -BCBIAS_J*4); 1426 dasm_put(Dst, 9081, -BCBIAS_J*4);
1457 break; 1427 break;
1458 1428
1459 case BC_ISEQV: case BC_ISNEV: 1429 case BC_ISEQV: case BC_ISNEV:
1460 vk = op == BC_ISEQV; 1430 vk = op == BC_ISEQV;
1461 dasm_put(Dst, 9547, LJ_TISNUM, LJ_TISNUM); 1431 dasm_put(Dst, 9116, LJ_TISNUM, LJ_TISNUM);
1462 if (sse) { 1432 if (sse) {
1463 dasm_put(Dst, 9573); 1433 dasm_put(Dst, 9142);
1464 } else { 1434 } else {
1465 dasm_put(Dst, 9585); 1435 dasm_put(Dst, 9154);
1466 if (cmov) { 1436 if (cmov) {
1467 dasm_put(Dst, 9489); 1437 dasm_put(Dst, 9058);
1468 } else { 1438 } else {
1469 dasm_put(Dst, 9495); 1439 dasm_put(Dst, 9064);
1470 } 1440 }
1471 } 1441 }
1472 iseqne_fp: 1442 iseqne_fp:
1473 if (vk) { 1443 if (vk) {
1474 dasm_put(Dst, 9592); 1444 dasm_put(Dst, 9161);
1475 } else { 1445 } else {
1476 dasm_put(Dst, 9601); 1446 dasm_put(Dst, 9170);
1477 } 1447 }
1478 iseqne_end: 1448 iseqne_end:
1479 if (vk) { 1449 if (vk) {
1480 dasm_put(Dst, 9610, -BCBIAS_J*4); 1450 dasm_put(Dst, 9179, -BCBIAS_J*4);
1481 } else { 1451 } else {
1482 dasm_put(Dst, 9625, -BCBIAS_J*4); 1452 dasm_put(Dst, 9194, -BCBIAS_J*4);
1483 } 1453 }
1484 dasm_put(Dst, 7616); 1454 dasm_put(Dst, 7183);
1485 if (op == BC_ISEQV || op == BC_ISNEV) { 1455 if (op == BC_ISEQV || op == BC_ISNEV) {
1486 dasm_put(Dst, 9640, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1456 dasm_put(Dst, 9209, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1487 if (vk) { 1457 if (vk) {
1488 dasm_put(Dst, 9698); 1458 dasm_put(Dst, 9267);
1489 } else { 1459 } else {
1490 dasm_put(Dst, 9702); 1460 dasm_put(Dst, 9271);
1491 } 1461 }
1492 dasm_put(Dst, 9708); 1462 dasm_put(Dst, 9277);
1493 } 1463 }
1494 break; 1464 break;
1495 case BC_ISEQS: case BC_ISNES: 1465 case BC_ISEQS: case BC_ISNES:
1496 vk = op == BC_ISEQS; 1466 vk = op == BC_ISEQS;
1497 dasm_put(Dst, 9713, LJ_TSTR); 1467 dasm_put(Dst, 9282, LJ_TSTR);
1498 iseqne_test: 1468 iseqne_test:
1499 if (vk) { 1469 if (vk) {
1500 dasm_put(Dst, 9596); 1470 dasm_put(Dst, 9165);
1501 } else { 1471 } else {
1502 dasm_put(Dst, 8953); 1472 dasm_put(Dst, 2805);
1503 } 1473 }
1504 goto iseqne_end; 1474 goto iseqne_end;
1505 case BC_ISEQN: case BC_ISNEN: 1475 case BC_ISEQN: case BC_ISNEN:
1506 vk = op == BC_ISEQN; 1476 vk = op == BC_ISEQN;
1507 dasm_put(Dst, 9738, LJ_TISNUM); 1477 dasm_put(Dst, 9307, LJ_TISNUM);
1508 if (sse) { 1478 if (sse) {
1509 dasm_put(Dst, 9752); 1479 dasm_put(Dst, 9321);
1510 } else { 1480 } else {
1511 dasm_put(Dst, 9765); 1481 dasm_put(Dst, 9334);
1512 if (cmov) { 1482 if (cmov) {
1513 dasm_put(Dst, 9489); 1483 dasm_put(Dst, 9058);
1514 } else { 1484 } else {
1515 dasm_put(Dst, 9495); 1485 dasm_put(Dst, 9064);
1516 } 1486 }
1517 } 1487 }
1518 goto iseqne_fp; 1488 goto iseqne_fp;
1519 case BC_ISEQP: case BC_ISNEP: 1489 case BC_ISEQP: case BC_ISNEP:
1520 vk = op == BC_ISEQP; 1490 vk = op == BC_ISEQP;
1521 dasm_put(Dst, 9773); 1491 dasm_put(Dst, 9342);
1522 goto iseqne_test; 1492 goto iseqne_test;
1523 1493
1524 /* -- Unary test and copy ops ------------------------------------------- */ 1494 /* -- Unary test and copy ops ------------------------------------------- */
1525 1495
1526 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1496 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1527 dasm_put(Dst, 9785, LJ_TISTRUECOND); 1497 dasm_put(Dst, 9354, LJ_TISTRUECOND);
1528 if (op == BC_IST || op == BC_ISTC) { 1498 if (op == BC_IST || op == BC_ISTC) {
1529 dasm_put(Dst, 9797); 1499 dasm_put(Dst, 9366);
1530 } else { 1500 } else {
1531 dasm_put(Dst, 9802); 1501 dasm_put(Dst, 9371);
1532 } 1502 }
1533 if (op == BC_ISTC || op == BC_ISFC) { 1503 if (op == BC_ISTC || op == BC_ISFC) {
1534 dasm_put(Dst, 9807); 1504 dasm_put(Dst, 9376);
1535 } 1505 }
1536 dasm_put(Dst, 9818, -BCBIAS_J*4); 1506 dasm_put(Dst, 9387, -BCBIAS_J*4);
1537 break; 1507 break;
1538 1508
1539 /* -- Unary ops --------------------------------------------------------- */ 1509 /* -- Unary ops --------------------------------------------------------- */
1540 1510
1541 case BC_MOV: 1511 case BC_MOV:
1542 dasm_put(Dst, 9851); 1512 dasm_put(Dst, 9420);
1543 break; 1513 break;
1544 case BC_NOT: 1514 case BC_NOT:
1545 dasm_put(Dst, 9886, LJ_TISTRUECOND, LJ_TTRUE); 1515 dasm_put(Dst, 9455, LJ_TISTRUECOND, LJ_TTRUE);
1546 break; 1516 break;
1547 case BC_UNM: 1517 case BC_UNM:
1548 dasm_put(Dst, 9923, LJ_TISNUM); 1518 dasm_put(Dst, 9492, LJ_TISNUM);
1549 if (sse) { 1519 if (sse) {
1550 dasm_put(Dst, 9934, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1520 dasm_put(Dst, 9503, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1551 } else { 1521 } else {
1552 dasm_put(Dst, 9959); 1522 dasm_put(Dst, 9528);
1553 } 1523 }
1554 dasm_put(Dst, 7616); 1524 dasm_put(Dst, 7183);
1555 break; 1525 break;
1556 case BC_LEN: 1526 case BC_LEN:
1557 dasm_put(Dst, 9968, LJ_TSTR); 1527 dasm_put(Dst, 9537, LJ_TSTR);
1558 if (sse) { 1528 if (sse) {
1559 dasm_put(Dst, 9982, Dt5(->len)); 1529 dasm_put(Dst, 9551, Dt5(->len));
1560 } else { 1530 } else {
1561 dasm_put(Dst, 10000, Dt5(->len)); 1531 dasm_put(Dst, 9569, Dt5(->len));
1562 } 1532 }
1563 dasm_put(Dst, 10009, LJ_TTAB); 1533 dasm_put(Dst, 9578, LJ_TTAB);
1564 if (sse) { 1534 if (sse) {
1565 dasm_put(Dst, 10051); 1535 dasm_put(Dst, 9620);
1566 } else { 1536 } else {
1567 } 1537 }
1568 dasm_put(Dst, 10060); 1538 dasm_put(Dst, 9629);
1569 break; 1539 break;
1570 1540
1571 /* -- Binary ops -------------------------------------------------------- */ 1541 /* -- Binary ops -------------------------------------------------------- */
1572 1542
1573 1543
1574 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1544 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1575 dasm_put(Dst, 10070); 1545 dasm_put(Dst, 9639);
1576 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1546 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1577 switch (vk) { 1547 switch (vk) {
1578 case 0: 1548 case 0:
1579 dasm_put(Dst, 10078, LJ_TISNUM); 1549 dasm_put(Dst, 9647, LJ_TISNUM);
1580 if (sse) { 1550 if (sse) {
1581 dasm_put(Dst, 10090); 1551 dasm_put(Dst, 9659);
1582 } else { 1552 } else {
1583 dasm_put(Dst, 10105); 1553 dasm_put(Dst, 9674);
1584 } 1554 }
1585 break; 1555 break;
1586 case 1: 1556 case 1:
1587 dasm_put(Dst, 10114, LJ_TISNUM); 1557 dasm_put(Dst, 9683, LJ_TISNUM);
1588 if (sse) { 1558 if (sse) {
1589 dasm_put(Dst, 10126); 1559 dasm_put(Dst, 9695);
1590 } else { 1560 } else {
1591 dasm_put(Dst, 10141); 1561 dasm_put(Dst, 9710);
1592 } 1562 }
1593 break; 1563 break;
1594 default: 1564 default:
1595 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1565 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1596 if (sse) { 1566 if (sse) {
1597 dasm_put(Dst, 10172); 1567 dasm_put(Dst, 9741);
1598 } else { 1568 } else {
1599 dasm_put(Dst, 10186); 1569 dasm_put(Dst, 9755);
1600 } 1570 }
1601 break; 1571 break;
1602 } 1572 }
1603 if (sse) { 1573 if (sse) {
1604 dasm_put(Dst, 9952); 1574 dasm_put(Dst, 9521);
1605 } else { 1575 } else {
1606 dasm_put(Dst, 9964); 1576 dasm_put(Dst, 9533);
1607 } 1577 }
1608 dasm_put(Dst, 7616); 1578 dasm_put(Dst, 7183);
1609 break; 1579 break;
1610 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1580 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1611 dasm_put(Dst, 10070); 1581 dasm_put(Dst, 9639);
1612 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1582 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1613 switch (vk) { 1583 switch (vk) {
1614 case 0: 1584 case 0:
1615 dasm_put(Dst, 10078, LJ_TISNUM); 1585 dasm_put(Dst, 9647, LJ_TISNUM);
1616 if (sse) { 1586 if (sse) {
1617 dasm_put(Dst, 10194); 1587 dasm_put(Dst, 9763);
1618 } else { 1588 } else {
1619 dasm_put(Dst, 10209); 1589 dasm_put(Dst, 9778);
1620 } 1590 }
1621 break; 1591 break;
1622 case 1: 1592 case 1:
1623 dasm_put(Dst, 10114, LJ_TISNUM); 1593 dasm_put(Dst, 9683, LJ_TISNUM);
1624 if (sse) { 1594 if (sse) {
1625 dasm_put(Dst, 10218); 1595 dasm_put(Dst, 9787);
1626 } else { 1596 } else {
1627 dasm_put(Dst, 10233); 1597 dasm_put(Dst, 9802);
1628 } 1598 }
1629 break; 1599 break;
1630 default: 1600 default:
1631 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1601 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1632 if (sse) { 1602 if (sse) {
1633 dasm_put(Dst, 10242); 1603 dasm_put(Dst, 9811);
1634 } else { 1604 } else {
1635 dasm_put(Dst, 10256); 1605 dasm_put(Dst, 9825);
1636 } 1606 }
1637 break; 1607 break;
1638 } 1608 }
1639 if (sse) { 1609 if (sse) {
1640 dasm_put(Dst, 9952); 1610 dasm_put(Dst, 9521);
1641 } else { 1611 } else {
1642 dasm_put(Dst, 9964); 1612 dasm_put(Dst, 9533);
1643 } 1613 }
1644 dasm_put(Dst, 7616); 1614 dasm_put(Dst, 7183);
1645 break; 1615 break;
1646 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1616 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1647 dasm_put(Dst, 10070); 1617 dasm_put(Dst, 9639);
1648 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1618 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1649 switch (vk) { 1619 switch (vk) {
1650 case 0: 1620 case 0:
1651 dasm_put(Dst, 10078, LJ_TISNUM); 1621 dasm_put(Dst, 9647, LJ_TISNUM);
1652 if (sse) { 1622 if (sse) {
1653 dasm_put(Dst, 10264); 1623 dasm_put(Dst, 9833);
1654 } else { 1624 } else {
1655 dasm_put(Dst, 10279); 1625 dasm_put(Dst, 9848);
1656 } 1626 }
1657 break; 1627 break;
1658 case 1: 1628 case 1:
1659 dasm_put(Dst, 10114, LJ_TISNUM); 1629 dasm_put(Dst, 9683, LJ_TISNUM);
1660 if (sse) { 1630 if (sse) {
1661 dasm_put(Dst, 10288); 1631 dasm_put(Dst, 9857);
1662 } else { 1632 } else {
1663 dasm_put(Dst, 10303); 1633 dasm_put(Dst, 9872);
1664 } 1634 }
1665 break; 1635 break;
1666 default: 1636 default:
1667 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1637 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1668 if (sse) { 1638 if (sse) {
1669 dasm_put(Dst, 10312); 1639 dasm_put(Dst, 9881);
1670 } else { 1640 } else {
1671 dasm_put(Dst, 10326); 1641 dasm_put(Dst, 9895);
1672 } 1642 }
1673 break; 1643 break;
1674 } 1644 }
1675 if (sse) { 1645 if (sse) {
1676 dasm_put(Dst, 9952); 1646 dasm_put(Dst, 9521);
1677 } else { 1647 } else {
1678 dasm_put(Dst, 9964); 1648 dasm_put(Dst, 9533);
1679 } 1649 }
1680 dasm_put(Dst, 7616); 1650 dasm_put(Dst, 7183);
1681 break; 1651 break;
1682 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1652 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1683 dasm_put(Dst, 10070); 1653 dasm_put(Dst, 9639);
1684 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1654 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1685 switch (vk) { 1655 switch (vk) {
1686 case 0: 1656 case 0:
1687 dasm_put(Dst, 10078, LJ_TISNUM); 1657 dasm_put(Dst, 9647, LJ_TISNUM);
1688 if (sse) { 1658 if (sse) {
1689 dasm_put(Dst, 10334); 1659 dasm_put(Dst, 9903);
1690 } else { 1660 } else {
1691 dasm_put(Dst, 10349); 1661 dasm_put(Dst, 9918);
1692 } 1662 }
1693 break; 1663 break;
1694 case 1: 1664 case 1:
1695 dasm_put(Dst, 10114, LJ_TISNUM); 1665 dasm_put(Dst, 9683, LJ_TISNUM);
1696 if (sse) { 1666 if (sse) {
1697 dasm_put(Dst, 10358); 1667 dasm_put(Dst, 9927);
1698 } else { 1668 } else {
1699 dasm_put(Dst, 10373); 1669 dasm_put(Dst, 9942);
1700 } 1670 }
1701 break; 1671 break;
1702 default: 1672 default:
1703 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1673 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1704 if (sse) { 1674 if (sse) {
1705 dasm_put(Dst, 10382); 1675 dasm_put(Dst, 9951);
1706 } else { 1676 } else {
1707 dasm_put(Dst, 10396); 1677 dasm_put(Dst, 9965);
1708 } 1678 }
1709 break; 1679 break;
1710 } 1680 }
1711 if (sse) { 1681 if (sse) {
1712 dasm_put(Dst, 9952); 1682 dasm_put(Dst, 9521);
1713 } else { 1683 } else {
1714 dasm_put(Dst, 9964); 1684 dasm_put(Dst, 9533);
1715 } 1685 }
1716 dasm_put(Dst, 7616); 1686 dasm_put(Dst, 7183);
1717 break; 1687 break;
1718 case BC_MODVN: 1688 case BC_MODVN:
1719 dasm_put(Dst, 10070); 1689 dasm_put(Dst, 9639);
1720 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1690 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1721 switch (vk) { 1691 switch (vk) {
1722 case 0: 1692 case 0:
1723 dasm_put(Dst, 10078, LJ_TISNUM); 1693 dasm_put(Dst, 9647, LJ_TISNUM);
1724 if (sse) { 1694 if (sse) {
1725 dasm_put(Dst, 10404); 1695 dasm_put(Dst, 9973);
1726 } else { 1696 } else {
1727 dasm_put(Dst, 10419); 1697 dasm_put(Dst, 9988);
1728 } 1698 }
1729 break; 1699 break;
1730 case 1: 1700 case 1:
1731 dasm_put(Dst, 10114, LJ_TISNUM); 1701 dasm_put(Dst, 9683, LJ_TISNUM);
1732 if (sse) { 1702 if (sse) {
1733 dasm_put(Dst, 10428); 1703 dasm_put(Dst, 9997);
1734 } else { 1704 } else {
1735 dasm_put(Dst, 10443); 1705 dasm_put(Dst, 10012);
1736 } 1706 }
1737 break; 1707 break;
1738 default: 1708 default:
1739 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1709 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1740 if (sse) { 1710 if (sse) {
1741 dasm_put(Dst, 10452); 1711 dasm_put(Dst, 10021);
1742 } else { 1712 } else {
1743 dasm_put(Dst, 10466); 1713 dasm_put(Dst, 10035);
1744 } 1714 }
1745 break; 1715 break;
1746 } 1716 }
1747 dasm_put(Dst, 10474); 1717 dasm_put(Dst, 10043);
1748 if (sse) { 1718 if (sse) {
1749 dasm_put(Dst, 9952); 1719 dasm_put(Dst, 9521);
1750 } else { 1720 } else {
1751 dasm_put(Dst, 9964); 1721 dasm_put(Dst, 9533);
1752 } 1722 }
1753 dasm_put(Dst, 7616); 1723 dasm_put(Dst, 7183);
1754 break; 1724 break;
1755 case BC_MODNV: case BC_MODVV: 1725 case BC_MODNV: case BC_MODVV:
1756 dasm_put(Dst, 10070); 1726 dasm_put(Dst, 9639);
1757 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1727 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1758 switch (vk) { 1728 switch (vk) {
1759 case 0: 1729 case 0:
1760 dasm_put(Dst, 10078, LJ_TISNUM); 1730 dasm_put(Dst, 9647, LJ_TISNUM);
1761 if (sse) { 1731 if (sse) {
1762 dasm_put(Dst, 10404); 1732 dasm_put(Dst, 9973);
1763 } else { 1733 } else {
1764 dasm_put(Dst, 10419); 1734 dasm_put(Dst, 9988);
1765 } 1735 }
1766 break; 1736 break;
1767 case 1: 1737 case 1:
1768 dasm_put(Dst, 10114, LJ_TISNUM); 1738 dasm_put(Dst, 9683, LJ_TISNUM);
1769 if (sse) { 1739 if (sse) {
1770 dasm_put(Dst, 10428); 1740 dasm_put(Dst, 9997);
1771 } else { 1741 } else {
1772 dasm_put(Dst, 10443); 1742 dasm_put(Dst, 10012);
1773 } 1743 }
1774 break; 1744 break;
1775 default: 1745 default:
1776 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1746 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1777 if (sse) { 1747 if (sse) {
1778 dasm_put(Dst, 10452); 1748 dasm_put(Dst, 10021);
1779 } else { 1749 } else {
1780 dasm_put(Dst, 10466); 1750 dasm_put(Dst, 10035);
1781 } 1751 }
1782 break; 1752 break;
1783 } 1753 }
1784 dasm_put(Dst, 10480); 1754 dasm_put(Dst, 10049);
1785 break; 1755 break;
1786 case BC_POW: 1756 case BC_POW:
1787 dasm_put(Dst, 10070); 1757 dasm_put(Dst, 9639);
1788 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1758 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1789 switch (vk) { 1759 switch (vk) {
1790 case 0: 1760 case 0:
1791 dasm_put(Dst, 10078, LJ_TISNUM); 1761 dasm_put(Dst, 9647, LJ_TISNUM);
1792 if (sse) { 1762 if (sse) {
1793 dasm_put(Dst, 10404); 1763 dasm_put(Dst, 9973);
1794 } else { 1764 } else {
1795 dasm_put(Dst, 10419); 1765 dasm_put(Dst, 9988);
1796 } 1766 }
1797 break; 1767 break;
1798 case 1: 1768 case 1:
1799 dasm_put(Dst, 10114, LJ_TISNUM); 1769 dasm_put(Dst, 9683, LJ_TISNUM);
1800 if (sse) { 1770 if (sse) {
1801 dasm_put(Dst, 10428); 1771 dasm_put(Dst, 9997);
1802 } else { 1772 } else {
1803 dasm_put(Dst, 10443); 1773 dasm_put(Dst, 10012);
1804 } 1774 }
1805 break; 1775 break;
1806 default: 1776 default:
1807 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1777 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1808 if (sse) { 1778 if (sse) {
1809 dasm_put(Dst, 10452); 1779 dasm_put(Dst, 10021);
1810 } else { 1780 } else {
1811 dasm_put(Dst, 10466); 1781 dasm_put(Dst, 10035);
1812 } 1782 }
1813 break; 1783 break;
1814 } 1784 }
1815 dasm_put(Dst, 10485); 1785 dasm_put(Dst, 10054);
1816 if (sse) { 1786 if (sse) {
1817 dasm_put(Dst, 9952); 1787 dasm_put(Dst, 9521);
1818 } else { 1788 } else {
1819 dasm_put(Dst, 9964); 1789 dasm_put(Dst, 9533);
1820 } 1790 }
1821 dasm_put(Dst, 7616); 1791 dasm_put(Dst, 7183);
1822 break; 1792 break;
1823 1793
1824 case BC_CAT: 1794 case BC_CAT:
1825 dasm_put(Dst, 10489, Dt1(->base), Dt1(->base)); 1795 dasm_put(Dst, 10058, Dt1(->base), Dt1(->base));
1826 break; 1796 break;
1827 1797
1828 /* -- Constant ops ------------------------------------------------------ */ 1798 /* -- Constant ops ------------------------------------------------------ */
1829 1799
1830 case BC_KSTR: 1800 case BC_KSTR:
1831 dasm_put(Dst, 10580, LJ_TSTR); 1801 dasm_put(Dst, 10149, LJ_TSTR);
1832 break; 1802 break;
1833 case BC_KSHORT: 1803 case BC_KSHORT:
1834 if (sse) { 1804 if (sse) {
1835 dasm_put(Dst, 10617); 1805 dasm_put(Dst, 10186);
1836 } else { 1806 } else {
1837 dasm_put(Dst, 10632); 1807 dasm_put(Dst, 10201);
1838 } 1808 }
1839 dasm_put(Dst, 7616); 1809 dasm_put(Dst, 7183);
1840 break; 1810 break;
1841 case BC_KNUM: 1811 case BC_KNUM:
1842 if (sse) { 1812 if (sse) {
1843 dasm_put(Dst, 10640); 1813 dasm_put(Dst, 10209);
1844 } else { 1814 } else {
1845 dasm_put(Dst, 10654); 1815 dasm_put(Dst, 10223);
1846 } 1816 }
1847 dasm_put(Dst, 7616); 1817 dasm_put(Dst, 7183);
1848 break; 1818 break;
1849 case BC_KPRI: 1819 case BC_KPRI:
1850 dasm_put(Dst, 10662); 1820 dasm_put(Dst, 10231);
1851 break; 1821 break;
1852 case BC_KNIL: 1822 case BC_KNIL:
1853 dasm_put(Dst, 10691, LJ_TNIL); 1823 dasm_put(Dst, 10260, LJ_TNIL);
1854 break; 1824 break;
1855 1825
1856 /* -- Upvalue and function ops ------------------------------------------ */ 1826 /* -- Upvalue and function ops ------------------------------------------ */
1857 1827
1858 case BC_UGET: 1828 case BC_UGET:
1859 dasm_put(Dst, 10739, offsetof(GCfuncL, uvptr), DtA(->v)); 1829 dasm_put(Dst, 10308, offsetof(GCfuncL, uvptr), DtA(->v));
1860 break; 1830 break;
1861 case BC_USETV: 1831 case BC_USETV:
1862#define TV2MARKOFS \ 1832#define TV2MARKOFS \
1863 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1833 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1864 dasm_put(Dst, 10785, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1834 dasm_put(Dst, 10354, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1865 dasm_put(Dst, 10881); 1835 dasm_put(Dst, 10450);
1866 break; 1836 break;
1867#undef TV2MARKOFS 1837#undef TV2MARKOFS
1868 case BC_USETS: 1838 case BC_USETS:
1869 dasm_put(Dst, 10893, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1839 dasm_put(Dst, 10462, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1870 break; 1840 break;
1871 case BC_USETN: 1841 case BC_USETN:
1872 dasm_put(Dst, 10989); 1842 dasm_put(Dst, 10558);
1873 if (sse) { 1843 if (sse) {
1874 dasm_put(Dst, 10994); 1844 dasm_put(Dst, 10563);
1875 } else { 1845 } else {
1876 dasm_put(Dst, 9768); 1846 dasm_put(Dst, 9337);
1877 } 1847 }
1878 dasm_put(Dst, 11002, offsetof(GCfuncL, uvptr), DtA(->v)); 1848 dasm_put(Dst, 10571, offsetof(GCfuncL, uvptr), DtA(->v));
1879 if (sse) { 1849 if (sse) {
1880 dasm_put(Dst, 4877); 1850 dasm_put(Dst, 10580);
1881 } else { 1851 } else {
1882 dasm_put(Dst, 4883); 1852 dasm_put(Dst, 10586);
1883 } 1853 }
1884 dasm_put(Dst, 7616); 1854 dasm_put(Dst, 7183);
1885 break; 1855 break;
1886 case BC_USETP: 1856 case BC_USETP:
1887 dasm_put(Dst, 11011, offsetof(GCfuncL, uvptr), DtA(->v)); 1857 dasm_put(Dst, 10589, offsetof(GCfuncL, uvptr), DtA(->v));
1888 break; 1858 break;
1889 case BC_UCLO: 1859 case BC_UCLO:
1890 dasm_put(Dst, 11051, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1860 dasm_put(Dst, 10629, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1891 break; 1861 break;
1892 1862
1893 case BC_FNEW: 1863 case BC_FNEW:
1894 dasm_put(Dst, 11107, Dt1(->base), Dt1(->base), LJ_TFUNC); 1864 dasm_put(Dst, 10685, Dt1(->base), Dt1(->base), LJ_TFUNC);
1895 break; 1865 break;
1896 1866
1897 /* -- Table ops --------------------------------------------------------- */ 1867 /* -- Table ops --------------------------------------------------------- */
1898 1868
1899 case BC_TNEW: 1869 case BC_TNEW:
1900 dasm_put(Dst, 11174, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1870 dasm_put(Dst, 10752, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1901 break; 1871 break;
1902 case BC_TDUP: 1872 case BC_TDUP:
1903 dasm_put(Dst, 11298, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1873 dasm_put(Dst, 10876, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1904 break; 1874 break;
1905 1875
1906 case BC_GGET: 1876 case BC_GGET:
1907 dasm_put(Dst, 11397, Dt7(->env)); 1877 dasm_put(Dst, 10975, Dt7(->env));
1908 break; 1878 break;
1909 case BC_GSET: 1879 case BC_GSET:
1910 dasm_put(Dst, 11417, Dt7(->env)); 1880 dasm_put(Dst, 10995, Dt7(->env));
1911 break; 1881 break;
1912 1882
1913 case BC_TGETV: 1883 case BC_TGETV:
1914 dasm_put(Dst, 11437, LJ_TTAB, LJ_TISNUM); 1884 dasm_put(Dst, 11015, LJ_TTAB, LJ_TISNUM);
1915 if (sse) { 1885 if (sse) {
1916 dasm_put(Dst, 11470); 1886 dasm_put(Dst, 11048);
1917 } else { 1887 } else {
1918 } 1888 }
1919 dasm_put(Dst, 11491, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1889 dasm_put(Dst, 11069, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1920 dasm_put(Dst, 11585, LJ_TSTR); 1890 dasm_put(Dst, 11163, LJ_TSTR);
1921 break; 1891 break;
1922 case BC_TGETS: 1892 case BC_TGETS:
1923 dasm_put(Dst, 11603, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1893 dasm_put(Dst, 11181, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1924 dasm_put(Dst, 11689, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1894 dasm_put(Dst, 11267, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1925 break; 1895 break;
1926 case BC_TGETB: 1896 case BC_TGETB:
1927 dasm_put(Dst, 11762, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1897 dasm_put(Dst, 11340, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1928 dasm_put(Dst, 10060); 1898 dasm_put(Dst, 9629);
1929 break; 1899 break;
1930 1900
1931 case BC_TSETV: 1901 case BC_TSETV:
1932 dasm_put(Dst, 11863, LJ_TTAB, LJ_TISNUM); 1902 dasm_put(Dst, 11441, LJ_TTAB, LJ_TISNUM);
1933 if (sse) { 1903 if (sse) {
1934 dasm_put(Dst, 11470); 1904 dasm_put(Dst, 11048);
1935 } else { 1905 } else {
1936 } 1906 }
1937 dasm_put(Dst, 11896, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1907 dasm_put(Dst, 11474, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1938 dasm_put(Dst, 11981, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1908 dasm_put(Dst, 11559, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1939 break; 1909 break;
1940 case BC_TSETS: 1910 case BC_TSETS:
1941 dasm_put(Dst, 12045, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1911 dasm_put(Dst, 11623, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1942 dasm_put(Dst, 12122, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1912 dasm_put(Dst, 11700, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1943 dasm_put(Dst, 12214, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1913 dasm_put(Dst, 11792, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1944 break; 1914 break;
1945 case BC_TSETB: 1915 case BC_TSETB:
1946 dasm_put(Dst, 12306, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1916 dasm_put(Dst, 11884, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1947 dasm_put(Dst, 12406, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1917 dasm_put(Dst, 11984, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1948 break; 1918 break;
1949 1919
1950 case BC_TSETM: 1920 case BC_TSETM:
1951 dasm_put(Dst, 12454); 1921 dasm_put(Dst, 12032);
1952 if (sse) { 1922 if (sse) {
1953 dasm_put(Dst, 10994); 1923 dasm_put(Dst, 10563);
1954 } else { 1924 } else {
1955 } 1925 }
1956 dasm_put(Dst, 12459, Dt6(->marked), LJ_GC_BLACK); 1926 dasm_put(Dst, 12037, Dt6(->marked), LJ_GC_BLACK);
1957 if (sse) { 1927 if (sse) {
1958 dasm_put(Dst, 12484); 1928 dasm_put(Dst, 12062);
1959 } else { 1929 } else {
1960 } 1930 }
1961 dasm_put(Dst, 12492, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 1931 dasm_put(Dst, 12070, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
1962 dasm_put(Dst, 12628, Dt6(->gclist)); 1932 dasm_put(Dst, 12206, Dt6(->gclist));
1963 break; 1933 break;
1964 1934
1965 /* -- Calls and vararg handling ----------------------------------------- */ 1935 /* -- Calls and vararg handling ----------------------------------------- */
1966 1936
1967 case BC_CALL: case BC_CALLM: 1937 case BC_CALL: case BC_CALLM:
1968 dasm_put(Dst, 10074); 1938 dasm_put(Dst, 9643);
1969 if (op == BC_CALLM) { 1939 if (op == BC_CALLM) {
1970 dasm_put(Dst, 12636); 1940 dasm_put(Dst, 12214);
1971 } 1941 }
1972 dasm_put(Dst, 12641, LJ_TFUNC, Dt7(->gate)); 1942 dasm_put(Dst, 12219, LJ_TFUNC, Dt7(->pc));
1973 break; 1943 break;
1974 1944
1975 case BC_CALLMT: 1945 case BC_CALLMT:
1976 dasm_put(Dst, 12636); 1946 dasm_put(Dst, 12214);
1977 break; 1947 break;
1978 case BC_CALLT: 1948 case BC_CALLT:
1979 dasm_put(Dst, 12664, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 1949 dasm_put(Dst, 12262, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
1980 dasm_put(Dst, 12773, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 1950 dasm_put(Dst, 12386, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
1981 break; 1951 break;
1982 1952
1983 case BC_ITERC: 1953 case BC_ITERC:
1984 dasm_put(Dst, 12834, LJ_TFUNC, Dt7(->gate)); 1954 dasm_put(Dst, 12447, LJ_TFUNC, 2+1, Dt7(->pc));
1985 break; 1955 break;
1986 1956
1987 case BC_VARG: 1957 case BC_VARG:
1988 dasm_put(Dst, 12896, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 1958 dasm_put(Dst, 12529, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
1989 dasm_put(Dst, 13050, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 1959 dasm_put(Dst, 12683, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1990 break; 1960 break;
1991 1961
1992 /* -- Returns ----------------------------------------------------------- */ 1962 /* -- Returns ----------------------------------------------------------- */
1993 1963
1994 case BC_RETM: 1964 case BC_RETM:
1995 dasm_put(Dst, 12636); 1965 dasm_put(Dst, 12214);
1996 break; 1966 break;
1997 1967
1998 case BC_RET: case BC_RET0: case BC_RET1: 1968 case BC_RET: case BC_RET0: case BC_RET1:
1999 if (op != BC_RET0) { 1969 if (op != BC_RET0) {
2000 dasm_put(Dst, 13155); 1970 dasm_put(Dst, 12788);
2001 } 1971 }
2002 dasm_put(Dst, 13159, FRAME_TYPE); 1972 dasm_put(Dst, 12792, FRAME_TYPE);
2003 switch (op) { 1973 switch (op) {
2004 case BC_RET: 1974 case BC_RET:
2005 dasm_put(Dst, 13178); 1975 dasm_put(Dst, 12811);
2006 break; 1976 break;
2007 case BC_RET1: 1977 case BC_RET1:
2008 dasm_put(Dst, 13242); 1978 dasm_put(Dst, 12875);
2009 /* fallthrough */ 1979 /* fallthrough */
2010 case BC_RET0: 1980 case BC_RET0:
2011 dasm_put(Dst, 13258); 1981 dasm_put(Dst, 12891);
2012 default: 1982 default:
2013 break; 1983 break;
2014 } 1984 }
2015 dasm_put(Dst, 13269, Dt7(->pc), PC2PROTO(k)); 1985 dasm_put(Dst, 12902, Dt7(->pc), PC2PROTO(k));
2016 if (op == BC_RET) { 1986 if (op == BC_RET) {
2017 dasm_put(Dst, 13317, LJ_TNIL); 1987 dasm_put(Dst, 12950, LJ_TNIL);
2018 } else { 1988 } else {
2019 dasm_put(Dst, 13328, LJ_TNIL); 1989 dasm_put(Dst, 12961, LJ_TNIL);
2020 } 1990 }
2021 dasm_put(Dst, 13335); 1991 dasm_put(Dst, 12968);
2022 if (op != BC_RET0) { 1992 if (op != BC_RET0) {
2023 dasm_put(Dst, 13355); 1993 dasm_put(Dst, 12988);
2024 } 1994 }
2025 dasm_put(Dst, 4966); 1995 dasm_put(Dst, 4568);
2026 break; 1996 break;
2027 1997
2028 /* -- Loops and branches ------------------------------------------------ */ 1998 /* -- Loops and branches ------------------------------------------------ */
@@ -2030,7 +2000,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2030 2000
2031 case BC_FORL: 2001 case BC_FORL:
2032#if LJ_HASJIT 2002#if LJ_HASJIT
2033 dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); 2003 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
2034#endif 2004#endif
2035 break; 2005 break;
2036 2006
@@ -2042,57 +2012,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2042 case BC_FORI: 2012 case BC_FORI:
2043 case BC_IFORL: 2013 case BC_IFORL:
2044 vk = (op == BC_IFORL || op == BC_JFORL); 2014 vk = (op == BC_IFORL || op == BC_JFORL);
2045 dasm_put(Dst, 13379); 2015 dasm_put(Dst, 13012);
2046 if (!vk) { 2016 if (!vk) {
2047 dasm_put(Dst, 13383, LJ_TISNUM, LJ_TISNUM); 2017 dasm_put(Dst, 13016, LJ_TISNUM, LJ_TISNUM);
2048 } 2018 }
2049 dasm_put(Dst, 13402); 2019 dasm_put(Dst, 13035);
2050 if (!vk) { 2020 if (!vk) {
2051 dasm_put(Dst, 13406, LJ_TISNUM); 2021 dasm_put(Dst, 13039, LJ_TISNUM);
2052 } 2022 }
2053 if (sse) { 2023 if (sse) {
2054 dasm_put(Dst, 13415); 2024 dasm_put(Dst, 13048);
2055 if (vk) { 2025 if (vk) {
2056 dasm_put(Dst, 13427); 2026 dasm_put(Dst, 13060);
2057 } else { 2027 } else {
2058 dasm_put(Dst, 13446); 2028 dasm_put(Dst, 13079);
2059 } 2029 }
2060 dasm_put(Dst, 13451); 2030 dasm_put(Dst, 13084);
2061 } else { 2031 } else {
2062 dasm_put(Dst, 13464); 2032 dasm_put(Dst, 13097);
2063 if (vk) { 2033 if (vk) {
2064 dasm_put(Dst, 13470); 2034 dasm_put(Dst, 13103);
2065 } else { 2035 } else {
2066 dasm_put(Dst, 13486); 2036 dasm_put(Dst, 13119);
2067 } 2037 }
2068 dasm_put(Dst, 13494); 2038 dasm_put(Dst, 13127);
2069 if (cmov) { 2039 if (cmov) {
2070 dasm_put(Dst, 9489); 2040 dasm_put(Dst, 9058);
2071 } else { 2041 } else {
2072 dasm_put(Dst, 9495); 2042 dasm_put(Dst, 9064);
2073 } 2043 }
2074 if (!cmov) { 2044 if (!cmov) {
2075 dasm_put(Dst, 13499); 2045 dasm_put(Dst, 13132);
2076 } 2046 }
2077 } 2047 }
2078 if (op == BC_FORI) { 2048 if (op == BC_FORI) {
2079 dasm_put(Dst, 13505, -BCBIAS_J*4); 2049 dasm_put(Dst, 13138, -BCBIAS_J*4);
2080 } else if (op == BC_JFORI) { 2050 } else if (op == BC_JFORI) {
2081 dasm_put(Dst, 13515, -BCBIAS_J*4, BC_JLOOP); 2051 dasm_put(Dst, 13148, -BCBIAS_J*4, BC_JLOOP);
2082 } else if (op == BC_IFORL) { 2052 } else if (op == BC_IFORL) {
2083 dasm_put(Dst, 13529, -BCBIAS_J*4); 2053 dasm_put(Dst, 13162, -BCBIAS_J*4);
2084 } else { 2054 } else {
2085 dasm_put(Dst, 13525, BC_JLOOP); 2055 dasm_put(Dst, 13158, BC_JLOOP);
2086 } 2056 }
2087 dasm_put(Dst, 9524); 2057 dasm_put(Dst, 9093);
2088 if (sse) { 2058 if (sse) {
2089 dasm_put(Dst, 13539); 2059 dasm_put(Dst, 13172);
2090 } 2060 }
2091 break; 2061 break;
2092 2062
2093 case BC_ITERL: 2063 case BC_ITERL:
2094#if LJ_HASJIT 2064#if LJ_HASJIT
2095 dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); 2065 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
2096#endif 2066#endif
2097 break; 2067 break;
2098 2068
@@ -2101,33 +2071,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2101 break; 2071 break;
2102#endif 2072#endif
2103 case BC_IITERL: 2073 case BC_IITERL:
2104 dasm_put(Dst, 13550, LJ_TNIL); 2074 dasm_put(Dst, 13183, LJ_TNIL);
2105 if (op == BC_JITERL) { 2075 if (op == BC_JITERL) {
2106 dasm_put(Dst, 13565, BC_JLOOP); 2076 dasm_put(Dst, 13198, BC_JLOOP);
2107 } else { 2077 } else {
2108 dasm_put(Dst, 13579, -BCBIAS_J*4); 2078 dasm_put(Dst, 13212, -BCBIAS_J*4);
2109 } 2079 }
2110 dasm_put(Dst, 9828); 2080 dasm_put(Dst, 9397);
2111 break; 2081 break;
2112 2082
2113 case BC_LOOP: 2083 case BC_LOOP:
2114#if LJ_HASJIT 2084#if LJ_HASJIT
2115 dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); 2085 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
2116#endif 2086#endif
2117 break; 2087 break;
2118 2088
2119 case BC_ILOOP: 2089 case BC_ILOOP:
2120 dasm_put(Dst, 7616); 2090 dasm_put(Dst, 7183);
2121 break; 2091 break;
2122 2092
2123 case BC_JLOOP: 2093 case BC_JLOOP:
2124#if LJ_HASJIT 2094#if LJ_HASJIT
2125 dasm_put(Dst, 13595, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2095 dasm_put(Dst, 13228, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2126#endif 2096#endif
2127 break; 2097 break;
2128 2098
2129 case BC_JMP: 2099 case BC_JMP:
2130 dasm_put(Dst, 13622, -BCBIAS_J*4); 2100 dasm_put(Dst, 13255, -BCBIAS_J*4);
2101 break;
2102
2103 /* -- Function headers -------------------------------------------------- */
2104
2105 /*
2106 ** Reminder: A function may be called with func/args above L->maxstack,
2107 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
2108 ** too. This means all FUNC* ops (including fast functions) must check
2109 ** for stack overflow _before_ adding more slots!
2110 */
2111
2112 case BC_FUNCF:
2113#if LJ_HASJIT
2114#endif
2115 case BC_FUNCV: /* NYI: compiled vararg functions. */
2116 break;
2117
2118 case BC_JFUNCF:
2119#if !LJ_HASJIT
2120 break;
2121#endif
2122 case BC_IFUNCF:
2123 dasm_put(Dst, 13281, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2124 if (op == BC_JFUNCF) {
2125 dasm_put(Dst, 13312, BC_JLOOP);
2126 } else {
2127 dasm_put(Dst, 7183);
2128 }
2129 dasm_put(Dst, 13321, LJ_TNIL);
2130 break;
2131
2132 case BC_JFUNCV:
2133#if !LJ_HASJIT
2134 break;
2135#endif
2136 dasm_put(Dst, 7146);
2137 break; /* NYI: compiled vararg functions. */
2138
2139 case BC_IFUNCV:
2140 dasm_put(Dst, 13343, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2141 if (op == BC_JFUNCV) {
2142 dasm_put(Dst, 13312, BC_JLOOP);
2143 } else {
2144 dasm_put(Dst, 13440, -4+PC2PROTO(k));
2145 }
2146 dasm_put(Dst, 13465, LJ_TNIL);
2147 break;
2148
2149 case BC_FUNCC:
2150 case BC_FUNCCW:
2151 dasm_put(Dst, 13487, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2152 if (op == BC_FUNCC) {
2153 dasm_put(Dst, 13517);
2154 } else {
2155 dasm_put(Dst, 13521);
2156 }
2157 dasm_put(Dst, 13529, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2158 if (op == BC_FUNCC) {
2159 dasm_put(Dst, 13539);
2160 } else {
2161 dasm_put(Dst, 13544, DISPATCH_GL(wrapf));
2162 }
2163 dasm_put(Dst, 13550, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2131 break; 2164 break;
2132 2165
2133 /* ---------------------------------------------------------------------- */ 2166 /* ---------------------------------------------------------------------- */
@@ -2155,7 +2188,7 @@ static int build_backend(BuildCtx *ctx)
2155 2188
2156 build_subroutines(ctx, cmov, sse); 2189 build_subroutines(ctx, cmov, sse);
2157 2190
2158 dasm_put(Dst, 13648); 2191 dasm_put(Dst, 13576);
2159 for (op = 0; op < BC__MAX; op++) 2192 for (op = 0; op < BC__MAX; op++)
2160 build_ins(ctx, (BCOp)op, op, cmov, sse); 2193 build_ins(ctx, (BCOp)op, op, cmov, sse);
2161 2194
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index 94d0641f..8784aecf 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,687 +12,680 @@
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[13496] = { 15static const unsigned char build_actionlist[13390] = {
16 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
17 139,108,36,96,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15, 17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
18 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 18 36,84,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,
19 255,36,252,235,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3, 19 199,131,233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,
20 252,233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137, 20 248,1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,
21 106,252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139, 21 232,1,15,133,244,1,248,2,255,139,108,36,96,137,181,233,248,3,139,68,36,84,
22 108,36,96,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15, 22 139,76,36,88,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,
23 132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137, 23 248,15,72,139,76,36,104,72,137,141,233,49,192,248,16,72,131,196,40,91,94,
24 56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15, 24 95,93,195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,
25 133,244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193, 25 131,194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,
26 232,16,252,255,36,252,235,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133, 26 20,202,252,233,244,5,248,8,137,149,233,137,68,36,84,137,202,137,252,233,232,
27 244,3,252,233,244,2,248,14,137,113,252,252,72,139,189,233,139,108,36,96,141, 27 251,1,0,139,149,233,252,233,244,3,248,17,137,208,72,137,204,248,18,139,108,
28 68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,233,72,137,252, 28 36,96,139,173,233,199,133,233,237,252,233,244,16,248,19,72,129,225,239,72,
29 250,137,252,233,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233, 29 137,204,248,20,139,108,36,96,72,199,193,252,248,252,255,252,255,252,255,184,
30 237,139,149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137, 30 237,255,139,149,233,139,157,233,129,195,239,139,114,252,252,199,66,252,252,
31 68,36,84,252,247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252, 31 237,199,131,233,237,252,233,244,12,248,21,186,237,252,233,244,248,248,22,
32 252,72,139,189,233,139,108,36,96,141,68,193,252,248,137,141,233,141,136,233, 32 131,232,8,252,233,244,247,248,23,141,68,194,252,248,248,1,15,182,142,233,
33 137,133,233,59,141,233,137,252,233,15,135,244,15,199,131,233,237,252,255, 33 131,198,4,137,149,233,137,133,233,255,137,116,36,100,137,202,248,2,137,252,
34 215,199,131,233,237,139,149,233,255,141,12,194,252,247,217,3,141,233,248, 34 233,232,251,1,0,139,149,233,139,133,233,139,106,252,248,139,114,252,252,41,
35 16,131,192,1,137,68,36,84,252,247,198,237,15,132,244,17,248,18,252,247,198, 35 208,193,232,3,131,192,1,139,181,233,139,14,15,182,252,233,15,182,205,131,
36 237,15,132,244,20,199,131,233,237,131,230,252,248,41,214,252,247,222,131, 36 198,4,252,255,36,252,235,248,24,85,87,86,83,72,131,252,236,40,137,205,137,
37 232,1,15,132,244,248,248,1,139,44,10,137,106,252,248,139,108,10,4,137,106, 37 76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233,129,195,
38 252,252,131,194,8,131,232,1,15,133,244,1,248,2,139,108,36,96,137,181,233, 38 239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68,36,
39 248,3,139,68,36,84,139,76,36,88,248,4,255,57,193,15,133,244,252,248,5,131, 39 92,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
40 252,234,8,137,149,233,248,21,72,139,76,36,104,72,137,141,233,49,192,248,22,
41 72,131,196,40,91,94,95,93,195,248,6,15,130,244,253,59,149,233,15,135,244,
42 254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7,133,201,15,
43 132,244,5,41,193,141,20,202,252,233,244,5,248,8,255,137,149,233,137,68,36,
44 84,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248,23,137,208,
45 72,137,204,248,24,139,108,36,96,139,173,233,199,133,233,237,252,233,244,22,
46 248,25,72,129,225,239,72,137,204,248,26,139,108,36,96,72,199,193,252,248,
47 252,255,252,255,252,255,184,237,139,149,233,139,157,233,129,195,239,139,114,
48 252,252,199,66,252,252,237,199,131,233,237,255,252,233,244,16,248,20,252,
49 247,198,237,15,132,244,27,131,230,252,248,41,252,242,72,141,76,49,252,248,
50 139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233,244,
51 247,248,13,137,202,248,11,141,68,194,252,248,15,182,142,233,131,198,4,137,
52 149,233,137,133,233,137,116,36,100,137,202,248,1,137,252,233,232,251,1,0,
53 139,141,233,255,139,133,233,139,105,252,248,139,113,252,252,41,200,193,232,
54 3,131,192,1,252,255,165,233,248,28,85,87,86,83,72,131,252,236,40,137,205,
55 137,76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233,129,
56 195,239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68,
57 36,92,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
58 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,84,252, 40 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,84,252,
59 247,198,237,15,132,244,17,252,233,244,18,248,29,255,85,87,86,83,72,131,252, 41 247,198,237,15,132,244,13,255,252,233,244,14,248,25,85,87,86,83,72,131,252,
60 236,40,190,237,68,137,76,36,92,252,233,244,247,248,30,85,87,86,83,72,131, 42 236,40,190,237,68,137,76,36,92,252,233,244,247,248,26,85,87,86,83,72,131,
61 252,236,40,190,237,248,1,68,137,68,36,88,137,205,137,76,36,96,137,209,248, 43 252,236,40,190,237,248,1,68,137,68,36,88,137,205,137,76,36,96,137,209,248,
62 2,72,139,189,233,72,137,124,36,104,137,108,36,100,72,137,165,233,139,157, 44 2,72,139,189,233,72,137,124,36,104,137,108,36,100,72,137,165,233,139,157,
63 233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233, 45 233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,
64 41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,239,15,133, 46 41,200,193,232,3,131,192,1,248,27,255,139,105,252,248,129,121,253,252,252,
65 244,31,252,255,165,233,248,32,255,85,87,86,83,72,131,252,236,40,137,205,137, 47 239,15,133,244,28,248,29,137,202,137,114,252,252,139,181,233,139,14,15,182,
66 76,36,96,137,108,36,100,139,189,233,43,189,233,199,68,36,92,0,0,0,0,137,124, 48 252,233,15,182,205,131,198,4,252,255,36,252,235,248,30,85,87,86,83,72,131,
67 36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209,133, 49 252,236,40,137,205,137,76,36,96,137,108,36,100,139,189,233,43,189,233,199,
68 192,15,132,244,21,137,193,190,237,252,233,244,2,248,27,1,209,131,230,252, 50 68,36,92,0,0,0,0,137,124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,
69 248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,72, 51 233,65,252,255,209,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,
70 99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,139,191,233,139, 52 11,1,209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,
71 191,233,252,255,225,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41, 53 139,117,252,244,72,99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,
72 252,233,15,132,244,34,252,247,217,193,252,233,3,65,137,200,139,76,36,96,137, 54 139,191,233,255,139,191,233,252,255,225,248,31,15,182,78,252,255,131,252,
73 145,233,139,80,4,139,0,137,85,4,137,69,0,137,252,234,252,233,244,35,248,36, 55 237,16,141,12,202,41,252,233,15,132,244,32,252,247,217,193,252,233,3,65,137,
74 255,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15, 56 200,139,76,36,96,137,145,233,139,80,4,139,0,137,85,4,137,69,0,137,252,234,
75 133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,37, 57 252,233,244,33,248,34,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,
76 15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141, 58 252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,
77 68,36,80,252,233,244,247,248,38,15,182,70,252,254,141,4,194,248,1,15,182, 59 244,248,248,35,15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,
78 110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73, 60 80,255,72,141,68,36,80,252,233,244,247,248,36,15,182,70,252,254,141,4,194,
79 137,192,137,205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244, 61 248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,
80 249,248,34,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139, 62 252,234,73,137,192,137,205,137,116,36,100,232,251,1,1,139,149,233,133,192,
81 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,139, 63 15,132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,
82 141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,3,0,0,0,252, 64 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
83 255,165,233,248,39,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126, 65 248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,
84 252,252,235,15,133,244,247,141,139,233,255,137,41,199,65,4,237,137,205,252, 66 237,252,233,244,29,248,37,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,
85 233,244,248,248,40,15,182,70,252,254,255,72,141,68,36,80,252,233,244,247, 67 126,252,252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,
86 248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234, 68 252,233,244,248,248,38,15,182,70,252,254,255,72,141,68,36,80,252,233,244,
87 248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,36, 69 247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,
88 100,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139, 70 234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,
89 108,202,4,139,12,202,137,104,4,137,8,248,42,139,6,15,182,204,15,182,232,131, 71 36,100,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,
72 108,202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,
90 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,15, 73 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,15,
91 182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41, 74 182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,
92 214,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,139,108,36,96,137, 75 214,139,105,252,248,184,237,252,233,244,29,248,41,139,108,36,96,137,149,233,
93 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116, 76 68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116,36,100,232,
94 36,100,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255, 77 251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,42,248,4,141,118,4,
95 141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248, 78 15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,
96 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 79 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,43,131,198,
97 45,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120, 80 4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,
98 253,4,239,252,233,244,4,248,47,131,252,238,4,65,137,192,65,137,252,233,139, 81 233,244,4,248,45,131,252,238,4,65,137,192,65,137,252,233,139,108,36,96,137,
99 108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,4,252, 82 149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,252,233,244,3,
100 233,244,3,248,48,255,141,4,199,252,233,244,247,248,49,141,4,199,141,44,252, 83 248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,234,149,252,
101 234,149,252,233,244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141, 84 233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,4,194,248,
102 4,194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182, 85 1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,70,252,252,
103 70,252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137, 86 137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,
104 116,36,100,232,251,1,5,139,149,233,133,192,15,132,244,42,248,44,137,193,41, 87 232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,
105 208,137,113,252,244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,252, 88 252,244,141,176,233,255,184,237,252,233,244,27,248,50,139,108,36,96,137,149,
106 252,239,15,133,244,31,255,252,255,165,233,248,52,139,108,36,96,137,149,233, 89 233,141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149,233,252,233,
107 141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149,233,252,233,244, 90 244,42,248,51,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,252,233,8,
108 44,248,31,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,96,137,149,233, 91 139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137,116,36,100,
109 137,202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,7,139,149,233,139, 92 232,251,1,7,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,131,192,
110 76,36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,15,132,244,53,252, 93 1,57,215,15,132,244,52,137,202,137,114,252,252,139,181,233,139,14,15,182,
111 255,165,233,248,54,139,108,36,96,137,149,233,137,202,137,252,233,137,116, 94 252,233,15,182,205,131,198,4,252,255,36,252,235,248,53,139,108,36,96,137,
112 36,100,232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232, 95 149,233,137,202,137,252,233,137,116,36,100,232,251,1,8,139,149,233,139,70,
113 16,252,255,164,253,252,235,233,248,55,129,252,248,239,15,130,244,56,255,139, 96 252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,248,
114 105,4,129,252,253,239,15,131,244,56,137,68,36,84,137,105,252,252,139,41,137, 97 54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,239,15,131,244,
115 105,252,248,131,232,2,15,132,244,248,137,76,36,80,248,1,131,193,8,139,105, 98 55,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,
116 4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,139,76,36, 99 232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,105,252,252,139,
117 80,248,2,139,68,36,84,252,233,244,57,248,58,129,252,248,239,15,130,244,56, 100 41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,84,252,233,244,
118 139,105,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137, 101 56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237,252,247,213,57,
119 232,248,1,255,139,105,252,248,139,132,253,197,233,199,65,252,252,237,137, 102 232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,106,252,248,139,
120 65,252,248,252,233,244,59,248,60,129,252,248,239,15,130,244,56,139,105,4, 103 132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,233,
121 129,252,253,239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,252,237, 104 244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,139,114,252,252,129,
122 199,65,252,252,237,15,132,244,59,139,65,252,248,139,131,233,199,65,252,252, 105 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,
123 237,137,105,252,248,137,76,36,80,139,141,233,255,35,136,233,105,201,239,3, 106 66,252,252,237,15,132,244,58,139,131,233,199,66,252,252,237,137,106,252,248,
124 141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248, 107 139,141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,
125 4,139,137,233,133,201,15,133,244,3,252,233,244,59,248,5,139,105,4,129,252, 108 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,
126 253,239,15,132,244,59,255,139,1,139,76,36,80,137,105,252,252,137,65,252,248, 109 3,252,233,244,58,248,5,139,105,4,129,252,253,239,15,132,244,58,255,139,1,
127 252,233,244,59,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135, 110 137,106,252,252,137,66,252,248,252,233,244,58,248,6,129,252,253,239,15,132,
128 244,253,189,237,248,7,252,247,213,139,172,253,171,233,252,233,244,2,248,61, 111 244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,
129 129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,255,139,41, 112 171,233,252,233,244,2,248,60,129,252,248,239,15,130,244,55,129,122,253,4,
130 131,189,233,0,15,133,244,56,129,121,253,12,239,15,133,244,56,139,65,8,137, 113 239,15,133,244,55,255,139,42,131,189,233,0,15,133,244,55,129,122,253,12,239,
131 133,233,199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,132,244, 114 15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,
132 247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,244, 115 106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,
133 59,248,62,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 116 137,171,233,137,133,233,248,1,252,233,244,58,248,61,255,129,252,248,239,15,
134 56,137,84,36,80,137,205,139,17,68,141,65,8,139,76,36,96,232,251,1,9,137,252, 117 130,244,55,129,122,253,4,239,15,133,244,55,137,213,68,141,66,8,139,18,139,
135 233,139,84,36,80,139,40,139,64,4,137,105,252,248,137,65,252,252,252,233,244, 118 76,36,96,232,251,1,9,137,252,234,139,40,139,64,4,139,114,252,252,137,106,
136 59,248,63,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,56,255, 119 252,248,137,66,252,252,252,233,244,58,248,62,129,252,248,239,15,133,244,55,
137 252,242,15,16,1,252,233,244,64,255,221,1,252,233,244,65,255,248,66,129,252, 120 129,122,253,4,239,15,135,244,55,255,252,242,15,16,2,252,233,244,63,255,221,
138 248,239,15,130,244,56,129,121,253,4,239,15,133,244,249,139,1,248,2,199,65, 121 2,252,233,244,64,255,248,65,129,252,248,239,15,130,244,55,139,114,252,252,
139 252,252,237,137,65,252,248,252,233,244,59,248,3,129,121,253,4,239,15,135, 122 129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,
140 244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,15,130,244, 123 248,252,233,244,58,248,3,129,122,253,4,239,15,135,244,55,131,187,233,0,15,
141 247,232,244,67,248,1,139,108,36,96,137,141,233,137,113,252,252,137,116,36, 124 133,244,55,139,171,233,59,171,233,255,15,130,244,247,232,244,66,248,1,139,
142 100,137,84,36,80,137,202,137,252,233,232,251,1,10,139,141,233,139,84,36,80, 125 108,36,96,137,149,233,137,116,36,100,137,252,233,232,251,1,10,139,149,233,
143 252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129, 126 252,233,244,2,248,67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,
144 121,253,4,239,15,133,244,56,137,84,36,80,139,17,139,108,36,96,137,141,233, 127 122,253,4,239,15,133,244,55,139,108,36,96,137,149,233,255,139,114,252,252,
145 255,137,113,252,252,68,141,65,8,137,252,233,137,116,36,100,232,251,1,11,139, 128 68,141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,11,139,149,233,133,
146 141,233,139,84,36,80,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252, 129 192,15,132,244,249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,
147 248,137,65,252,252,139,105,16,139,65,20,137,41,137,65,4,248,69,184,237,252, 130 106,16,139,66,20,137,42,137,66,4,248,68,184,237,252,233,244,69,248,2,199,
148 233,244,70,248,2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252, 131 66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,58,248,70,129,
149 233,244,59,248,71,129,252,248,239,15,130,244,56,129,121,253,4,239,255,15, 132 252,248,239,15,130,244,55,139,106,252,248,129,122,253,4,239,255,15,133,244,
150 133,244,56,139,133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184, 133 55,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,
151 237,252,233,244,70,248,72,129,252,248,239,15,130,244,56,129,121,253,4,239, 134 237,184,237,252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,
152 15,133,244,56,129,121,253,12,239,15,135,244,56,255,252,242,15,16,65,8,72, 135 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,
153 189,237,237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242, 136 252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,
154 15,17,65,252,248,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233, 137 242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248,
155 248,1,129,120,253,4,239,15,132,244,73,139,40,139,64,4,137,41,137,65,4,252, 138 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,
156 233,244,69,248,2,131,189,233,0,15,132,244,73,137,84,36,80,135,205,137,194, 139 137,42,137,66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,
157 232,251,1,12,137,252,233,139,84,36,80,133,192,15,133,244,1,248,73,184,237, 140 233,137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,
158 252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,129,121,253,4,239, 141 184,237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,106,252,
159 15,133,244,56,139,133,233,199,65,252,252,237,137,65,252,248,255,15,87,192, 142 248,129,122,253,4,239,15,133,244,55,139,133,233,139,114,252,252,199,66,252,
160 252,242,15,17,65,8,255,217,252,238,221,89,8,255,184,237,252,233,244,70,248, 143 252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,
161 75,129,252,248,239,15,130,244,56,137,113,252,252,190,237,137,202,131,193, 144 90,8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,
162 8,131,232,1,139,105,252,248,248,1,252,246,131,233,235,15,133,244,249,248, 145 74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,
163 2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,131,198,1,252, 146 238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239,
164 233,244,2,248,76,255,129,252,248,239,15,130,244,56,129,121,253,12,239,15, 147 15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,
165 133,244,56,137,113,252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113, 148 106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252,248,
166 8,137,105,8,137,49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248, 149 239,15,130,244,55,139,42,139,114,252,252,137,116,36,100,137,108,36,80,129,
167 9,139,116,36,100,252,233,244,56,248,77,129,252,248,239,15,130,244,56,139, 150 122,253,4,239,15,133,244,55,72,131,189,233,0,15,133,244,55,128,189,233,235,
168 41,137,113,252,252,137,116,36,100,137,108,36,80,129,121,253,4,239,15,133, 151 15,135,244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,
169 244,9,255,72,131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139, 152 1,141,116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,96,
170 181,233,137,116,36,84,15,132,244,247,59,181,233,15,132,244,9,248,1,141,116, 153 137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,15,
171 198,252,240,59,181,233,15,135,244,9,137,181,233,139,108,36,96,137,141,233, 154 132,244,249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,
172 131,193,8,137,141,233,255,139,108,36,84,141,76,193,232,72,41,252,241,57,252, 155 252,238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,
173 238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248, 156 233,237,255,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,
174 131,252,238,8,57,252,238,15,133,244,2,248,3,139,76,36,80,139,84,36,84,232, 157 244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,
175 244,28,199,131,233,237,139,108,36,96,139,116,36,80,139,149,233,129,252,248, 158 244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,
176 239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254, 159 248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,
177 41,206,15,132,244,252,255,141,4,50,193,252,238,3,59,133,233,15,135,244,255, 160 5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,100,137,68,36,84,72,
178 137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57, 161 199,193,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244,13,
179 252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,100, 162 252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,142,
180 137,68,36,84,72,199,193,252,248,252,255,252,255,252,255,252,247,198,237,15, 163 233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,76,36,80,
181 132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233,131,252,233, 164 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,
182 8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,255, 165 248,77,139,106,252,248,139,173,233,139,114,252,252,137,116,36,100,137,108,
183 139,76,36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233, 166 36,80,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,135,244,55,139,
184 252,233,244,4,248,9,139,116,36,100,252,233,244,56,248,78,139,173,233,137, 167 141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,116,193,252,248,
185 113,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133,244,9,128, 168 59,181,233,15,135,244,55,137,181,233,139,108,36,96,137,149,233,137,149,233,
186 189,233,235,15,135,244,9,139,181,233,137,116,36,84,15,132,244,247,59,181, 169 141,108,194,252,240,72,41,252,245,57,206,15,132,244,249,248,2,255,139,68,
187 233,255,15,132,244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137, 170 46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,
188 181,233,139,108,36,96,137,141,233,137,141,233,139,108,36,84,141,76,193,252, 171 2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,139,108,36,96,139,
189 240,72,41,252,241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252, 172 116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,
190 252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,139, 173 190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,
191 76,36,80,139,84,36,84,232,244,28,199,131,233,237,139,108,36,96,139,116,36, 174 3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,139,1,137,4,41,139,
192 80,139,149,233,255,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190, 175 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,
193 233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3, 176 116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233,244,
194 59,133,233,15,135,244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4, 177 14,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,76,36,80,137,185,
195 137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116, 178 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,78,
196 36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,17,255,252,233,244, 179 139,108,36,96,72,252,247,133,233,237,15,132,244,55,255,137,149,233,141,68,
197 18,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,76,36,80,137,185, 180 194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,
198 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,79, 181 244,16,255,248,64,139,114,252,252,221,90,252,248,252,233,244,58,248,79,129,
199 139,108,36,96,137,113,252,252,72,252,247,133,233,237,15,132,244,56,137,141, 182 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
200 233,141,68,193,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133, 183 72,184,237,237,102,72,15,110,200,15,84,193,248,63,139,114,252,252,252,242,
201 233,252,233,244,22,255,248,65,221,89,252,248,252,233,244,59,248,80,129,252, 184 15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,253,4,239,
202 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72, 185 15,135,244,55,221,2,217,225,248,63,248,64,139,114,252,252,221,90,252,248,
203 184,237,237,102,72,15,110,200,15,84,193,248,64,252,242,15,17,65,252,248,255, 186 255,248,58,184,237,248,69,137,68,36,84,248,56,252,247,198,237,15,133,244,
204 248,80,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, 187 253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,72,252,247,209,141,
205 1,217,225,248,64,248,65,221,89,252,248,255,248,59,184,237,248,70,137,68,36, 188 20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
206 84,248,57,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252, 189 248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,
207 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,6, 190 248,252,255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,239,15,
208 199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202,72,199,193,252, 191 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,244,63,
209 248,252,255,252,255,252,255,252,233,244,18,255,248,81,129,252,248,239,15, 192 248,81,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
210 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,81,1,252,233,244,64, 193 242,15,16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,130,244,
211 248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252, 194 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,233,244,
212 242,15,16,1,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244, 195 63,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
213 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,85,252,233,244, 196 55,221,2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,244,55,
214 64,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 197 129,122,253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,83,255,
215 56,221,1,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56, 198 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,
216 129,121,253,4,239,15,135,244,56,221,1,232,244,83,252,233,244,65,248,84,255, 199 84,252,233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,122,253,4,
217 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,232,244, 200 239,15,135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,248,86,129,
218 85,252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,121,253,4, 201 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,236,221,
219 239,15,135,244,56,217,252,237,221,1,217,252,241,252,233,244,65,248,87,129, 202 2,217,252,241,252,233,244,64,248,87,129,252,248,239,255,15,130,244,55,129,
220 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252,236,221, 203 122,253,4,239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,89,129,252,
221 1,217,252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129, 204 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,254,252,
222 121,253,4,239,15,135,244,56,221,1,232,244,89,252,233,244,65,248,90,129,252, 205 233,244,64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,4,239,15,
223 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,254,252, 206 135,244,55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,15,130,
224 233,244,65,248,91,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15, 207 244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,233,
225 135,244,56,221,1,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130, 208 244,64,248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,135,
226 244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,242,221,216,252,233, 209 244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
227 244,65,248,93,129,252,248,239,15,130,244,56,255,129,121,253,4,239,15,135, 210 233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
228 244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252, 211 244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
229 233,244,65,248,94,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 212 243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,239,
230 244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252, 213 15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,129,
231 243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,121,253,4,239, 214 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
232 15,135,244,56,255,221,1,217,232,217,252,243,252,233,244,65,255,248,96,129, 215 255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248,96,129,252,248,
233 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1, 216 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,
234 255,137,76,36,80,137,213,232,251,1,14,139,76,36,80,137,252,234,252,233,244, 217 213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129,252,248,239,15,
235 64,255,248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 218 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,213,232,
236 56,252,242,15,16,1,255,137,76,36,80,137,213,232,251,1,15,139,76,36,80,137, 219 251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129,252,248,239,15,
237 252,234,252,233,244,64,255,248,98,129,252,248,239,15,130,244,56,129,121,253, 220 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,139,106,252,248,
238 4,239,15,135,244,56,252,242,15,16,1,255,137,76,36,80,137,213,232,251,1,16, 221 252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248,239,15,130,244,
239 139,76,36,80,137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239, 222 55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220,141,233,252,
240 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15, 223 233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
241 89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,121, 224 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217,252,243,252,
242 253,4,239,15,135,244,56,221,1,220,141,233,252,233,244,65,255,248,101,129, 225 233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
243 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12, 226 244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217,252,253,221,
244 239,15,135,244,56,221,1,221,65,8,217,252,243,252,233,244,65,248,102,129,252, 227 217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139,106,4,129,252,
245 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239, 228 253,239,15,135,244,55,139,114,252,252,139,2,137,106,252,252,137,66,252,248,
246 255,15,135,244,56,221,65,8,221,1,217,252,253,221,217,252,233,244,65,248,103, 229 209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,
247 129,252,248,239,15,130,244,56,139,105,4,129,252,253,239,15,135,244,56,139, 230 252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,
248 1,137,105,252,252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131, 231 197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252,
249 244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130, 232 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,
250 244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36, 233 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,69,248,3,255,15,
251 80,219,68,36,80,255,139,105,252,252,129,229,252,255,252,255,15,128,129,205, 234 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,
252 0,0,224,63,137,105,252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237, 235 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,
253 252,233,244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233, 236 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248,
254 244,2,255,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,89, 237 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,
255 193,252,242,15,17,65,252,248,255,221,1,199,68,36,80,0,0,128,90,216,76,36, 238 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,
256 80,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244,1, 239 248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
257 255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 240 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,
258 252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239, 241 244,250,255,15,40,224,232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,
259 15,135,244,56,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255,15, 242 252,248,252,242,15,17,34,255,217,192,232,244,104,220,252,233,248,1,221,90,
260 132,244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242,15, 243 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,
261 17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,220,252,233,248,1, 244 237,252,233,244,69,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,
262 221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, 245 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,
263 248,2,184,237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,105,4,252,233, 246 105,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
264 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 247 253,12,239,15,135,244,55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
265 1,255,248,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 248 138,244,1,221,217,252,233,244,64,255,248,106,129,252,248,239,15,130,244,55,
266 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223, 249 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
267 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15, 250 15,16,2,252,242,15,16,74,8,232,244,107,252,233,244,63,255,248,106,129,252,
268 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 251 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
269 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248, 252 15,135,244,55,221,2,221,66,8,232,244,107,252,233,244,64,255,248,108,129,252,
270 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, 253 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,
271 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248, 254 2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,
272 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 255 244,55,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,
273 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252, 256 244,1,255,248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
274 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, 257 244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,
275 197,1,252,233,244,1,255,248,110,129,252,248,239,15,130,244,56,129,121,253, 258 252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,
276 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64, 259 15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,55,255,248,
277 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252, 260 110,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42,
278 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244, 261 255,252,242,15,42,133,233,252,233,244,63,255,219,133,233,252,233,244,64,255,
279 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 262 248,111,129,252,248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139,
280 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233, 263 42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,
281 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133, 264 15,42,197,252,233,244,63,255,137,108,36,80,219,68,36,80,252,233,244,64,255,
282 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42, 265 248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,252,248,
283 197,252,233,244,64,255,137,108,36,80,219,68,36,80,252,233,244,65,255,248, 266 239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61,
284 113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,239, 267 252,255,0,0,0,15,135,244,55,137,68,36,84,255,221,2,219,92,36,84,129,124,36,
285 15,133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252, 268 84,252,255,0,0,0,15,135,244,55,255,199,68,36,32,1,0,0,0,72,141,68,36,84,248,
286 255,0,0,0,15,135,244,56,137,68,36,84,255,221,1,219,92,36,84,129,124,36,84, 269 113,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233,137,
287 252,255,0,0,0,15,135,244,56,255,199,68,36,32,1,0,0,0,72,141,68,36,84,137, 270 116,36,100,232,251,1,17,139,149,233,139,114,252,252,199,66,252,252,237,137,
288 76,36,80,248,114,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137, 271 66,252,248,252,233,244,58,248,114,139,171,233,59,171,233,15,130,244,247,232,
289 252,233,137,116,36,100,232,251,1,17,139,76,36,80,139,149,233,199,65,252,252, 272 244,66,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,239,
290 237,137,65,252,248,252,233,244,59,248,115,139,171,233,59,171,233,15,130,244, 273 15,130,244,55,15,134,244,247,129,122,253,20,239,255,252,242,15,45,106,16,
291 247,232,244,67,248,1,137,76,36,80,199,68,36,84,252,255,252,255,252,255,252, 274 137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133,
292 255,129,252,248,239,15,130,244,56,15,134,244,247,129,121,253,20,239,255,252, 275 244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,32,139,173,233,
293 242,15,45,105,16,137,108,36,84,255,221,65,16,219,92,36,84,255,248,1,129,121, 276 255,252,242,15,45,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133,201,
294 253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36, 277 15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,115,141,172,253,13,233,
295 32,139,173,233,255,252,242,15,45,73,8,255,139,68,36,84,57,197,15,130,244, 278 131,192,1,248,4,137,68,36,32,137,232,252,233,244,113,248,5,15,140,244,252,
296 251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,116, 279 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,
297 141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,114,248, 280 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,
298 5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248, 281 115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244,55,139,171,233,
299 7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252, 282 59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,
300 233,244,3,248,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244, 283 55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,
301 56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,255,137,76,36,80, 284 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,115,131,189,233,1,15,
302 129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255, 285 130,244,115,15,133,244,117,57,131,233,15,130,244,117,15,182,141,233,139,171,
303 252,242,15,45,65,8,255,221,65,8,219,92,36,84,139,68,36,84,255,133,192,15, 286 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,
304 142,244,116,131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130, 287 233,252,233,244,113,248,118,129,252,248,239,255,15,130,244,55,139,171,233,
305 244,118,15,182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1, 288 59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,
306 131,232,1,15,133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239, 289 139,42,139,133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,129,197,
307 255,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1, 290 239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,15,182,77,0,131,197,
308 137,76,36,80,129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15, 291 1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,84,252,233,244,113,
309 132,244,116,57,131,233,15,130,244,120,129,197,239,137,116,36,84,137,68,36, 292 248,120,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,
310 32,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133, 293 232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,
311 244,1,137,252,240,139,116,36,84,252,233,244,114,248,121,129,252,248,239,15, 294 233,255,15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,
312 130,244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76, 295 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,
313 36,80,129,121,253,4,239,15,133,244,56,139,41,139,133,233,57,131,233,255,15, 296 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,
314 130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244, 297 244,1,137,252,240,139,116,36,84,252,233,244,113,248,121,129,252,248,239,15,
315 249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135, 298 130,244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,
316 244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252, 299 122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119,
317 240,139,116,36,84,252,233,244,114,248,122,129,252,248,239,15,130,244,56,255, 300 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,
318 139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,36,80,129,121, 301 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,
319 253,4,239,15,133,244,56,139,41,139,133,233,57,131,233,15,130,244,120,129, 302 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,
320 197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,15,182, 303 139,116,36,84,252,233,244,113,248,122,129,252,248,239,15,130,244,55,129,122,
321 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131, 304 253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242,
322 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116, 305 15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,244,55,129,122,
323 36,84,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4, 306 253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
324 239,15,133,244,56,137,84,36,80,137,205,139,9,232,251,1,18,137,252,233,139, 307 252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,255,248,
325 84,36,80,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239, 308 124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
326 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237, 309 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,
327 237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197, 310 255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244,125,129,120,253,
328 252,233,244,64,255,248,125,129,252,248,239,15,130,244,56,129,121,253,4,239, 311 4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
329 15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15, 312 33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,130,244,
330 88,193,102,15,126,197,255,137,68,36,84,141,68,193,252,240,255,137,84,36,80, 313 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,
331 255,248,1,57,200,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252, 314 15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,
332 242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,131,232,8,252,233, 315 88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,130,244,55,129,
333 244,1,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 316 122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,
334 244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193, 317 205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,
335 102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,9,213, 318 102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,55,129,122,253,
336 255,248,129,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 319 4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
337 252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15, 320 242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,248,130,129,252,
338 126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,49,213,255,248, 321 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,
339 130,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 322 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,247,
340 15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197, 323 213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,126,139,68,36,84,
341 255,15,205,252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129, 324 252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,239,
342 121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110, 325 15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,
343 205,252,242,15,88,193,102,15,126,197,255,252,247,213,255,248,131,252,242, 326 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
344 15,42,197,252,233,244,64,248,126,252,242,15,42,197,139,84,36,80,252,233,244, 327 202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252,233,244,
345 64,255,248,127,255,139,68,36,84,252,233,244,56,255,248,133,129,252,248,239, 328 125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
346 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 329 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,
347 56,252,242,15,16,1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,
348 242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,
349 211,229,137,193,252,233,244,131,255,248,134,129,252,248,239,15,130,244,56,
350 129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,
351 15,16,1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
352 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,
353 137,193,252,233,244,131,255,248,135,129,252,248,239,15,130,244,56,129,121,
354 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,
355 252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
356 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,
357 252,233,244,131,255,248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,
358 15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,
359 16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
360 202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,
361 131,255,248,137,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
362 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,
363 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, 330 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
364 102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,244,131,248,118, 331 102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244,125,255,
365 184,237,252,233,244,56,248,120,184,237,248,56,139,108,36,96,41,202,137,113, 332 248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,
366 252,252,137,116,36,100,137,84,36,80,137,141,233,141,68,193,252,248,141,144, 333 122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,
367 233,137,133,233,139,65,252,248,59,149,233,15,135,244,251,137,252,233,252, 334 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
368 255,144,233,133,192,15,133,244,249,248,1,139,141,233,255,139,133,233,41,200, 335 126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,125,255,248,134,
369 193,232,3,131,192,1,139,105,252,248,139,84,36,80,1,202,57,113,252,252,15, 336 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,
370 133,244,248,252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,31,252, 337 12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,
371 255,165,233,248,3,139,141,233,139,84,36,80,1,202,252,233,244,70,248,5,186, 338 72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,
372 237,137,252,233,232,251,1,0,252,233,244,1,248,67,93,72,137,108,36,32,139, 339 102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248,
373 108,36,96,41,202,137,84,36,84,137,113,252,252,137,116,36,100,137,141,233, 340 239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,
374 141,68,193,252,248,137,252,233,137,133,233,255,232,251,1,19,139,141,233,139, 341 244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
375 133,233,41,200,193,232,3,131,192,1,139,113,252,252,139,84,36,84,1,202,72, 342 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,
376 139,108,36,32,85,139,105,252,248,195,248,138,255,15,182,131,233,168,235,15, 343 255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,119,
377 133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,139,233, 344 184,237,248,55,139,108,36,96,139,114,252,252,137,116,36,100,137,149,233,141,
378 252,233,244,247,255,248,139,15,182,131,233,168,235,15,133,244,251,168,235, 345 68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,
379 15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244,251,248, 346 251,137,252,233,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,255,
380 1,139,108,36,96,137,149,233,137,252,242,137,252,233,232,251,1,20,248,3,139, 347 139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,15,
381 149,233,248,4,15,182,78,252,253,248,5,255,15,182,110,252,252,15,183,70,252, 348 133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,
382 254,252,255,164,253,252,235,233,248,140,131,198,4,139,77,232,137,76,36,84, 349 36,252,235,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,
383 252,233,244,4,248,141,255,204,255,248,142,255,248,143,255,248,144,255,139, 350 72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,
384 122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139, 351 248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,
385 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,83, 352 233,252,233,244,1,248,66,93,72,137,108,36,32,139,108,36,96,137,116,36,100,
386 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252, 353 137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,
387 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 354 149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,32,85,195,248,
388 255,248,145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 355 136,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,
389 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252, 356 235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,
390 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110, 357 233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,
391 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1, 358 244,247,168,235,15,132,244,251,248,1,139,108,36,96,137,149,233,137,252,242,
392 195,248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37, 359 137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,
393 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, 360 255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,233,248,
394 68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,184,237,237,102, 361 138,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,139,255,204,255,248,
395 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 362 140,255,248,141,255,248,142,255,139,122,252,248,139,191,233,139,191,233,199,
396 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102, 363 131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,
397 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40, 364 232,16,252,255,36,252,235,255,248,82,255,217,124,36,4,137,68,36,8,102,184,
398 193,248,1,195,248,105,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68, 365 0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
399 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 366 252,252,217,108,36,4,139,68,36,8,195,255,248,143,72,184,237,237,102,72,15,
400 255,248,147,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 367 110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,
401 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15, 368 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
402 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216, 369 15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,
403 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40, 370 194,252,242,15,92,200,15,40,193,248,1,195,248,84,255,217,124,36,4,137,68,
404 193,248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184,237,237,102, 371 36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,
405 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102, 372 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,144,72,184,237,
406 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227, 373 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,
407 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15, 374 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
408 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195, 375 15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,
409 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252, 376 6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124,
410 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137, 377 36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,
411 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255, 378 217,252,252,217,108,36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72,
412 248,89,217,252,234,222,201,248,149,217,84,36,8,129,124,36,8,0,0,128,127,15, 379 15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,
413 132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,248,150,217,192,217, 380 46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,
414 252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217, 381 92,203,72,184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,84,195,
415 248,1,195,248,2,221,216,217,252,238,195,255,248,108,255,248,151,252,242,15, 382 252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,146,255,15,40,232,
416 45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248, 383 252,242,15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,
417 152,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242, 384 15,110,216,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,
418 15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248, 385 208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,102,
419 3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89, 386 72,15,110,208,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,
420 200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15, 387 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,
421 130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,15,94,200,88,15,40, 388 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,
422 193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,72,184,237, 389 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
423 237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12, 390 252,252,217,108,36,4,222,201,222,252,233,195,255,248,88,217,252,234,222,201,
424 72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,72,209,224,15,132, 391 248,147,217,84,36,8,129,124,36,8,0,0,128,127,15,132,244,247,129,124,36,8,
425 244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76, 392 0,0,128,252,255,15,132,244,248,248,148,217,192,217,252,252,220,252,233,217,
426 36,16,252,242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192, 393 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
427 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 394 217,252,238,195,255,248,107,255,248,149,252,242,15,45,193,252,242,15,42,208,
428 217,221,92,36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15, 395 102,15,46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,1,15,142,
429 110,208,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237, 396 244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,
430 237,102,72,15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102, 397 244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,
431 15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224, 398 232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,
432 15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15, 399 252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,72,184,237,
433 80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15, 400 237,102,72,15,110,200,252,242,15,94,200,88,15,40,193,252,247,216,131,252,
434 132,244,3,15,87,192,195,248,153,255,131,252,250,1,15,130,244,83,15,132,244, 401 248,1,15,132,244,5,252,233,244,1,248,7,72,184,237,237,102,72,15,110,192,195,
435 85,131,252,250,3,15,130,244,105,15,135,244,248,252,242,15,81,192,195,248, 402 248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15,
436 2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132, 403 132,244,248,255,102,72,15,126,192,72,209,224,15,132,244,250,72,193,192,12,
437 244,247,232,244,89,80,252,233,244,253,248,1,232,244,149,255,80,252,233,244, 404 72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,15,17,
438 253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201, 405 68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,252,
439 217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,252,233,244, 406 233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,8,252,
440 253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252,236,217,201, 407 242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,
441 217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,253,248,2,131, 408 15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,
442 252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233,244,253,248, 409 102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,
443 1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139, 410 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,
444 84,36,12,221,68,36,4,131,252,250,1,15,130,244,83,15,132,244,85,131,252,250, 411 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,
445 3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130, 412 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,
446 244,89,15,132,244,149,131,252,250,7,15,132,244,247,15,135,244,248,217,252, 413 151,255,131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,
447 237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131, 414 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,8,221,
448 252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241, 415 68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,88,80,252,
449 195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244, 416 233,244,253,248,1,232,244,147,255,80,252,233,244,253,248,2,131,252,250,7,
450 255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,154,255, 417 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,
451 65,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248, 418 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9,
452 1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244, 419 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,
453 248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248, 420 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244,
454 5,15,130,244,148,15,132,244,108,65,131,252,248,7,15,132,244,247,15,135,244, 421 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,
455 248,72,184,237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237, 422 248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4,
456 102,72,15,110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252, 423 131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,104,15,
457 242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132, 424 135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,88,15,132,244,
458 244,247,217,252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217, 425 147,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
459 201,217,252,253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244, 426 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,
460 247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248, 427 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
461 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, 428 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,
462 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, 429 195,248,1,217,252,242,221,216,195,255,248,9,204,248,152,255,65,131,252,248,
463 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 430 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
464 252,248,5,15,130,244,148,15,132,244,108,131,252,248,7,15,132,244,247,15,135, 431 193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,
465 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 432 193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,146,
466 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 433 15,132,244,107,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237,
467 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 434 237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,
468 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 435 200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68,
469 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 436 36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,252,
470 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 437 243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,253,
471 155,137,200,86,72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91, 438 221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,255,
472 94,195,255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135, 439 252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,
473 244,43,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221, 440 20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,
474 4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, 441 193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,
475 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, 442 248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,
476 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 443 15,132,244,107,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,
477 235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253, 444 224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,
478 202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221, 445 244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,
479 4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132, 446 248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,
480 244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15, 447 248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,
481 183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244, 448 132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,
482 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 449 15,133,244,248,217,201,248,2,221,216,195,255,248,153,137,200,86,72,137,214,
483 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 450 83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,255,249,255,129,124,
484 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, 451 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,
485 72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202, 452 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,
486 59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242, 453 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,
487 15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131, 454 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,
488 198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131, 455 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,
489 244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15, 456 4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,
490 183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131, 457 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,
491 198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,139,4,194,137,108,202, 458 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
492 4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 459 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
493 235,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6, 460 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,
494 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124, 461 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,
495 253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237,237,102,72, 462 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,
496 15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, 463 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,72,252,247,208,
497 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, 464 131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,
498 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, 465 198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,
499 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 466 46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131,198,4,57,68,202,4,
500 2,129,124,253,194,4,239,15,133,244,52,139,12,194,137,213,232,251,1,18,255, 467 255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,
501 252,242,15,42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15, 468 244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,
502 182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48,255,252, 469 180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
503 242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129, 470 255,36,252,235,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,
504 124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242,15,88, 471 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,
505 4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135, 472 237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,
506 244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252,234,252, 473 232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,
507 242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252, 474 135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,15,87,
508 242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252, 475 193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,
509 242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252, 476 194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,
510 234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4, 477 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,
511 252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16, 478 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,
512 4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15, 479 4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,
513 16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242, 480 137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,
514 15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252, 481 192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,
515 242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255, 482 252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,
516 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194, 483 239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,
517 255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4, 484 4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,
518 199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4, 485 194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,
519 252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234, 486 221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,
520 221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244,108,255, 487 221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,
521 15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192, 488 255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,
522 65,41,232,248,35,137,205,137,116,36,100,232,251,1,21,139,149,233,133,192, 489 194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,
523 15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44, 490 4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,
524 252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193, 491 4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,
525 232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,68,202,4,237,137, 492 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,
526 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 493 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,
527 255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221, 494 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,
528 28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202, 495 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,
529 255,72,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193, 496 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,
530 232,16,252,255,36,252,235,255,141,76,202,12,141,68,194,4,189,237,137,105, 497 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,
531 252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182, 498 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,154,
532 232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,139,172,253, 499 232,244,146,255,252,233,244,154,255,232,244,107,255,15,182,252,236,15,182,
533 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182, 500 192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,
534 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248, 501 137,116,36,100,232,251,1,21,139,149,233,133,192,15,133,244,42,15,182,110,
535 139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137, 502 252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,
536 77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139, 503 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
537 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129, 504 255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,
538 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135, 505 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,
539 213,141,139,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247, 506 15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,
540 208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199, 507 16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,
541 64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,
542 232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,
543 132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,
544 1,22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,
545 255,139,172,253,141,233,139,141,233,255,72,252,247,208,139,106,252,248,139,
546 172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,
547 4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,
548 189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,23,
549 139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
550 36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,
551 139,20,135,137,252,233,137,116,36,100,232,251,1,24,139,149,233,15,182,78,
552 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,
553 193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248,1,65,137,192,
554 37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,248,2,137,
555 194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,232,251,
556 1,25,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
557 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,
558 252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252,233,244,
559 1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,
560 137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,27,139,
561 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,
562 182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,
563 1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,
564 106,252,248,139,173,233,139,4,135,252,233,244,157,255,72,252,247,208,139,
565 106,252,248,139,173,233,139,4,135,252,233,244,158,255,15,182,252,236,15,182,
566 192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194,
567 4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,
568 42,200,102,15,46,193,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,
569 3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,
570 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 508 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
571 252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235, 509 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,
572 15,132,244,38,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,194,4, 510 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,
573 239,15,133,244,38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192, 511 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,
574 72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252, 512 233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,
575 234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233, 513 131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,
576 239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244, 514 233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,
577 251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139, 515 132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
578 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,15, 516 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,
579 182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244, 517 248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,
580 1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3, 518 255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,
581 252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15, 519 248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,
582 133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129, 520 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
583 120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202, 521 232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,
584 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 522 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,22,137,252,234,252,
585 2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37, 523 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,
586 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139, 524 233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,
587 44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133, 525 252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,
588 233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, 526 232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,
589 1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, 527 36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,
590 4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 528 251,1,23,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
591 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132, 529 16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,
592 244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133, 530 66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,1,24,139,149,233,
593 244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,139,139,233,137,171, 531 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,
594 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182, 532 131,198,4,193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248,
595 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139, 533 1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,
596 44,252,234,248,158,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141, 534 248,2,137,194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,
597 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121, 535 232,251,1,25,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,
598 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248, 536 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,
599 3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182, 537 1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252,
600 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233, 538 233,244,1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,
601 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,39, 539 139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,
602 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, 540 27,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
603 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137, 541 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,
604 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68, 542 232,251,1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,
605 36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233,139,108, 543 208,139,106,252,248,139,173,233,139,4,135,252,233,244,155,255,72,252,247,
606 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, 544 208,139,106,252,248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,
607 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, 545 236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,
608 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133, 546 124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,
609 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 547 252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233,15,131,244,36,
610 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 548 193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,
611 232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244, 549 4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
612 1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,78,252,253,252, 550 252,255,36,252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
613 233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182, 551 233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,
614 78,252,253,252,233,244,2,255,137,124,36,80,255,248,1,141,12,202,139,105,252, 552 194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182,252,236,15,182,
615 248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252,242,15, 553 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,
616 45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,244,251, 554 44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,
617 41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137, 555 185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,
618 111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,204, 556 132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,
619 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,137, 557 194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
620 145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,29,139,149, 558 248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,
621 233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,131,233,137, 559 133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,
622 171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,141,76,202,8,139, 560 244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
623 105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,233,255,141, 561 239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,
624 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,31,248, 562 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,
625 53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137, 563 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
626 68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,4, 564 235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,
627 131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209, 565 244,35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
628 128,189,233,1,15,135,244,251,248,4,139,68,36,84,252,255,165,233,248,5,255, 566 39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,
629 252,247,198,237,15,133,244,4,15,182,70,252,253,72,252,247,208,141,20,194, 567 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
630 139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,244,1, 568 249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,
631 131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,141, 569 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
632 76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65, 570 36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,
633 252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65, 571 235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,
634 252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15, 572 239,15,133,244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,
635 182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, 573 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,
636 36,80,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, 574 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
637 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, 575 244,37,139,44,252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,
638 252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130, 576 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
639 244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124, 577 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
640 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 578 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,
641 248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,255,137,197,193, 579 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,
642 252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244, 580 189,233,0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,
643 253,248,6,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193, 581 244,37,139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,
644 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116, 582 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,
645 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149, 583 248,6,137,68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,
646 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252, 584 76,141,68,36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233,
647 137,68,36,84,252,247,198,237,15,133,244,253,255,248,17,137,215,131,232,1, 585 139,108,36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,
648 15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252, 586 171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,
649 131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248, 587 252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,
650 5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106, 588 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,
651 252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252, 589 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,
652 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204, 590 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,
653 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252, 591 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,
654 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 592 253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,
655 7,15,139,244,18,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245, 593 15,182,78,252,253,252,233,244,2,255,137,124,36,80,255,248,1,141,12,202,139,
656 209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,255,141,12, 594 105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252,
657 202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54, 595 242,15,45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,
658 255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252, 596 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,
659 242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136, 597 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,
660 244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255, 598 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,
661 221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247, 599 76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,
662 255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255, 600 1,29,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
663 15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252, 601 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,129,
664 254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46, 602 124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,
665 193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247, 603 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,
666 255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134, 604 141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,
667 233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139, 605 248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,
668 128,233,139,108,36,96,137,147,233,137,171,233,252,255,224,255,141,180,253, 606 137,68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,
669 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 607 4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,
670 255,254,0 608 36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,
609 15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,
610 244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139,191,
611 233,139,191,233,252,233,244,4,248,7,15,139,244,1,131,230,252,248,41,252,242,
612 137,215,139,114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,
613 252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,
614 139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,
615 237,15,133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,
616 15,182,205,131,198,4,252,255,36,252,235,255,15,182,252,236,139,66,252,248,
617 141,12,202,139,128,233,15,182,128,233,137,124,36,80,141,188,253,194,233,43,
618 122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,
619 131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,
620 131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,
621 131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,
622 182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,
623 0,137,208,41,252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,1,137,
624 108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,139,71,252,
625 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
626 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,
627 36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,
628 252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,
629 198,237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,
630 139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,
631 1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,
632 244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,
633 5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
634 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
635 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,
636 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15,139,244,
637 14,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252,237,129,
638 229,239,102,131,172,253,43,233,1,15,132,244,139,255,141,12,202,255,129,121,
639 253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,105,20,255,
640 129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,15,16,73,8,255,
641 252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,
642 244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,
643 220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,
644 244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248,141,180,
645 253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,
646 244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,
647 12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,
648 137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,
649 137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,
650 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,
651 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,190,233,139,108,
652 36,96,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,244,
653 249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,252,
654 237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,
655 194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,96,141,12,
656 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,
657 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
658 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
659 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
660 16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,
661 244,3,252,233,244,2,255,139,106,252,248,72,139,189,233,139,108,36,96,141,
662 68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,252,
663 233,255,72,137,252,250,137,252,233,255,15,135,244,21,199,131,233,237,255,
664 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,
665 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
671}; 666};
672 667
673enum { 668enum {
674 GLOB_gate_lf, 669 GLOB_vm_returnp,
675 GLOB_gate_lf_growstack, 670 GLOB_cont_dispatch,
676 GLOB_gate_lv,
677 GLOB_gate_lv_growstack,
678 GLOB_gate_cwrap,
679 GLOB_gate_c_growstack,
680 GLOB_vm_returnc, 671 GLOB_vm_returnc,
681 GLOB_BC_RET_Z, 672 GLOB_BC_RET_Z,
682 GLOB_vm_return, 673 GLOB_vm_return,
683 GLOB_gate_c,
684 GLOB_vm_returnp,
685 GLOB_vm_leave_cp, 674 GLOB_vm_leave_cp,
686 GLOB_vm_leave_unw, 675 GLOB_vm_leave_unw,
687 GLOB_vm_unwind_c, 676 GLOB_vm_unwind_c,
688 GLOB_vm_unwind_c_eh, 677 GLOB_vm_unwind_c_eh,
689 GLOB_vm_unwind_ff, 678 GLOB_vm_unwind_ff,
690 GLOB_vm_unwind_ff_eh, 679 GLOB_vm_unwind_ff_eh,
691 GLOB_cont_dispatch, 680 GLOB_vm_growstack_c,
681 GLOB_vm_growstack_v,
682 GLOB_vm_growstack_f,
692 GLOB_vm_resume, 683 GLOB_vm_resume,
693 GLOB_vm_pcall, 684 GLOB_vm_pcall,
694 GLOB_vm_call, 685 GLOB_vm_call,
686 GLOB_vm_call_dispatch,
695 GLOB_vmeta_call, 687 GLOB_vmeta_call,
688 GLOB_vm_call_dispatch_f,
696 GLOB_vm_cpcall, 689 GLOB_vm_cpcall,
697 GLOB_cont_cat, 690 GLOB_cont_cat,
698 GLOB_cont_ra, 691 GLOB_cont_ra,
@@ -714,6 +707,7 @@ enum {
714 GLOB_vmeta_unm, 707 GLOB_vmeta_unm,
715 GLOB_vmeta_arith_vv, 708 GLOB_vmeta_arith_vv,
716 GLOB_vmeta_len, 709 GLOB_vmeta_len,
710 GLOB_vmeta_call_ra,
717 GLOB_BC_CALLT_Z, 711 GLOB_BC_CALLT_Z,
718 GLOB_vmeta_for, 712 GLOB_vmeta_for,
719 GLOB_ff_assert, 713 GLOB_ff_assert,
@@ -787,12 +781,11 @@ enum {
787 GLOB_ff_table_getn, 781 GLOB_ff_table_getn,
788 GLOB_ff_bit_tobit, 782 GLOB_ff_bit_tobit,
789 GLOB_ff_bit_band, 783 GLOB_ff_bit_band,
790 GLOB_fff_resbit_op, 784 GLOB_fff_resbit,
791 GLOB_fff_fallback_bit_op, 785 GLOB_fff_fallback_bit_op,
792 GLOB_ff_bit_bor, 786 GLOB_ff_bit_bor,
793 GLOB_ff_bit_bxor, 787 GLOB_ff_bit_bxor,
794 GLOB_ff_bit_bswap, 788 GLOB_ff_bit_bswap,
795 GLOB_fff_resbit,
796 GLOB_ff_bit_bnot, 789 GLOB_ff_bit_bnot,
797 GLOB_ff_bit_lshift, 790 GLOB_ff_bit_lshift,
798 GLOB_ff_bit_rshift, 791 GLOB_ff_bit_rshift,
@@ -823,28 +816,26 @@ enum {
823 GLOB__MAX 816 GLOB__MAX
824}; 817};
825static const char *const globnames[] = { 818static const char *const globnames[] = {
826 "gate_lf", 819 "vm_returnp",
827 "gate_lf_growstack", 820 "cont_dispatch",
828 "gate_lv",
829 "gate_lv_growstack",
830 "gate_cwrap",
831 "gate_c_growstack",
832 "vm_returnc", 821 "vm_returnc",
833 "BC_RET_Z", 822 "BC_RET_Z",
834 "vm_return", 823 "vm_return",
835 "gate_c",
836 "vm_returnp",
837 "vm_leave_cp", 824 "vm_leave_cp",
838 "vm_leave_unw", 825 "vm_leave_unw",
839 "vm_unwind_c@8", 826 "vm_unwind_c@8",
840 "vm_unwind_c_eh", 827 "vm_unwind_c_eh",
841 "vm_unwind_ff@4", 828 "vm_unwind_ff@4",
842 "vm_unwind_ff_eh", 829 "vm_unwind_ff_eh",
843 "cont_dispatch", 830 "vm_growstack_c",
831 "vm_growstack_v",
832 "vm_growstack_f",
844 "vm_resume", 833 "vm_resume",
845 "vm_pcall", 834 "vm_pcall",
846 "vm_call", 835 "vm_call",
836 "vm_call_dispatch",
847 "vmeta_call", 837 "vmeta_call",
838 "vm_call_dispatch_f",
848 "vm_cpcall", 839 "vm_cpcall",
849 "cont_cat", 840 "cont_cat",
850 "cont_ra", 841 "cont_ra",
@@ -866,6 +857,7 @@ static const char *const globnames[] = {
866 "vmeta_unm", 857 "vmeta_unm",
867 "vmeta_arith_vv", 858 "vmeta_arith_vv",
868 "vmeta_len", 859 "vmeta_len",
860 "vmeta_call_ra",
869 "BC_CALLT_Z", 861 "BC_CALLT_Z",
870 "vmeta_for", 862 "vmeta_for",
871 "ff_assert", 863 "ff_assert",
@@ -939,12 +931,11 @@ static const char *const globnames[] = {
939 "ff_table_getn", 931 "ff_table_getn",
940 "ff_bit_tobit", 932 "ff_bit_tobit",
941 "ff_bit_band", 933 "ff_bit_band",
942 "fff_resbit_op", 934 "fff_resbit",
943 "fff_fallback_bit_op", 935 "fff_fallback_bit_op",
944 "ff_bit_bor", 936 "ff_bit_bor",
945 "ff_bit_bxor", 937 "ff_bit_bxor",
946 "ff_bit_bswap", 938 "ff_bit_bswap",
947 "fff_resbit",
948 "ff_bit_bnot", 939 "ff_bit_bnot",
949 "ff_bit_lshift", 940 "ff_bit_lshift",
950 "ff_bit_rshift", 941 "ff_bit_rshift",
@@ -1030,392 +1021,367 @@ static const char *const extnames[] = {
1030static void build_subroutines(BuildCtx *ctx, int cmov, int sse) 1021static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1031{ 1022{
1032 dasm_put(Dst, 0); 1023 dasm_put(Dst, 0);
1033 dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); 1024 dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
1034#if LJ_HASJIT 1025 dasm_put(Dst, 111, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1035#endif 1026 dasm_put(Dst, 200, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
1036 dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); 1027 dasm_put(Dst, 293, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
1037 dasm_put(Dst, 157, LJ_TNIL, PC2PROTO(k)); 1028 dasm_put(Dst, 359, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1038#if LJ_HASJIT 1029 dasm_put(Dst, 519, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1039#endif 1030 dasm_put(Dst, 625, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
1040 dasm_put(Dst, 192, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1031 dasm_put(Dst, 783, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1041 dasm_put(Dst, 290, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1042 dasm_put(Dst, 373, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1043 dasm_put(Dst, 478, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1044 dasm_put(Dst, 565, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1045 dasm_put(Dst, 663, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
1046 dasm_put(Dst, 754, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1047 dasm_put(Dst, 886, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1048 dasm_put(Dst, 1004, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base));
1049 dasm_put(Dst, 1182, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1050 if (sse) { 1032 if (sse) {
1051 dasm_put(Dst, 1228); 1033 dasm_put(Dst, 893);
1052 } else { 1034 } else {
1053 } 1035 }
1054 dasm_put(Dst, 1241, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1036 dasm_put(Dst, 906, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1055 dasm_put(Dst, 1399, LJ_TTAB); 1037 dasm_put(Dst, 1058, DISPATCH_GL(tmptv), LJ_TTAB);
1056 if (sse) { 1038 if (sse) {
1057 dasm_put(Dst, 1228); 1039 dasm_put(Dst, 893);
1058 } else { 1040 } else {
1059 } 1041 }
1060 dasm_put(Dst, 1419, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1042 dasm_put(Dst, 1081, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1061 dasm_put(Dst, 1615, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1043 dasm_put(Dst, 1264, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1062 dasm_put(Dst, 1724, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1044 dasm_put(Dst, 1364, Dt1(->base), Dt1(->base), FRAME_CONT);
1063 dasm_put(Dst, 1849, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*8, 1+1); 1045 dasm_put(Dst, 1489, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1064 dasm_put(Dst, 2005, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1046 dasm_put(Dst, 1667, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1065 if (cmov) { 1047 if (cmov) {
1066 dasm_put(Dst, 2101); 1048 dasm_put(Dst, 1769);
1067 } else { 1049 } else {
1068 dasm_put(Dst, 2105); 1050 dasm_put(Dst, 1773);
1069 } 1051 }
1070 dasm_put(Dst, 2114, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1052 dasm_put(Dst, 1782, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1071 dasm_put(Dst, 2202, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1053 dasm_put(Dst, 1870, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1072 dasm_put(Dst, 2257, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1054 dasm_put(Dst, 1925, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1073 dasm_put(Dst, 2329, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1055 dasm_put(Dst, 1993, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1074 dasm_put(Dst, 2394, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1056 dasm_put(Dst, 2062, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1075 if (sse) { 1057 if (sse) {
1076 dasm_put(Dst, 2475); 1058 dasm_put(Dst, 2139);
1077 } else { 1059 } else {
1078 dasm_put(Dst, 2485); 1060 dasm_put(Dst, 2149);
1079 } 1061 }
1080 dasm_put(Dst, 2492, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1062 dasm_put(Dst, 2156, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1081 dasm_put(Dst, 2554, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1063 dasm_put(Dst, 2222, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1082 dasm_put(Dst, 2641, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1064 dasm_put(Dst, 2289, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1083 dasm_put(Dst, 2743, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1065 dasm_put(Dst, 2393, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1084 if (sse) { 1066 if (sse) {
1085 dasm_put(Dst, 2798, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1067 dasm_put(Dst, 2456, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1086 } else { 1068 } else {
1087 } 1069 }
1088 dasm_put(Dst, 2831, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1070 dasm_put(Dst, 2489, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1089 dasm_put(Dst, 2917, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1071 dasm_put(Dst, 2570, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1090 if (sse) { 1072 if (sse) {
1091 dasm_put(Dst, 2947); 1073 dasm_put(Dst, 2608);
1092 } else { 1074 } else {
1093 dasm_put(Dst, 2957); 1075 dasm_put(Dst, 2618);
1094 } 1076 }
1095 dasm_put(Dst, 2964, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1077 dasm_put(Dst, 2625, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1096 dasm_put(Dst, 3037, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1078 dasm_put(Dst, 2689, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1097 dasm_put(Dst, 3136, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1079 dasm_put(Dst, 2779, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1098 dasm_put(Dst, 3202, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1080 dasm_put(Dst, 2873, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1099 dasm_put(Dst, 3306, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1081 dasm_put(Dst, 2991, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1100 dasm_put(Dst, 3428, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1082 dasm_put(Dst, 3089, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1101 dasm_put(Dst, 3511, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1083 dasm_put(Dst, 3156, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1102 dasm_put(Dst, 3619, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1084 dasm_put(Dst, 3250, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1103 dasm_put(Dst, 3716, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1085 dasm_put(Dst, 3363, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1104 if (sse) { 1086 if (sse) {
1105 dasm_put(Dst, 3805, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1087 dasm_put(Dst, 3390, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1106 } else { 1088 } else {
1107 dasm_put(Dst, 3861, 1+1, LJ_TISNUM); 1089 dasm_put(Dst, 3454, 1+1, LJ_TISNUM);
1108 } 1090 }
1109 dasm_put(Dst, 3893, 1+1, FRAME_TYPE, LJ_TNIL); 1091 dasm_put(Dst, 3490, 1+1, FRAME_TYPE, LJ_TNIL);
1110 if (sse) { 1092 if (sse) {
1111 dasm_put(Dst, 3977, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1093 dasm_put(Dst, 3584, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1112 dasm_put(Dst, 4039, 1+1, LJ_TISNUM); 1094 dasm_put(Dst, 3646, 1+1, LJ_TISNUM);
1113 } else { 1095 } else {
1114 dasm_put(Dst, 4069, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1096 dasm_put(Dst, 3676, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1115 dasm_put(Dst, 4128, 1+1, LJ_TISNUM); 1097 dasm_put(Dst, 3735, 1+1, LJ_TISNUM);
1116 } 1098 }
1117 dasm_put(Dst, 4155, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1099 dasm_put(Dst, 3762, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1118 dasm_put(Dst, 4224, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1100 dasm_put(Dst, 3831, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1119 dasm_put(Dst, 4281, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1101 dasm_put(Dst, 3888, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1120 dasm_put(Dst, 4344, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1102 dasm_put(Dst, 3951, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1121 dasm_put(Dst, 4434); 1103 dasm_put(Dst, 4041);
1122 if (sse) { 1104 if (sse) {
1123 dasm_put(Dst, 4446, 1+1, LJ_TISNUM); 1105 dasm_put(Dst, 4053, 1+1, LJ_TISNUM);
1124 } else { 1106 } else {
1125 } 1107 }
1126 dasm_put(Dst, 4471); 1108 dasm_put(Dst, 4078);
1127 if (sse) { 1109 if (sse) {
1128 dasm_put(Dst, 4493, 1+1, LJ_TISNUM); 1110 dasm_put(Dst, 4092, 1+1, LJ_TISNUM);
1129 } else { 1111 } else {
1130 } 1112 }
1131 dasm_put(Dst, 4518); 1113 dasm_put(Dst, 4117);
1132 if (sse) { 1114 if (sse) {
1133 dasm_put(Dst, 4540, 1+1, LJ_TISNUM); 1115 dasm_put(Dst, 4131, 1+1, LJ_TISNUM);
1134 } else { 1116 } else {
1135 } 1117 }
1136 dasm_put(Dst, 4565); 1118 dasm_put(Dst, 4156);
1137 if (sse) { 1119 if (sse) {
1138 dasm_put(Dst, 4589, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1120 dasm_put(Dst, 4172, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1139 } else { 1121 } else {
1140 dasm_put(Dst, 4624, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1122 dasm_put(Dst, 4211, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1141 } 1123 }
1142 dasm_put(Dst, 4653, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1124 dasm_put(Dst, 4244, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1143 dasm_put(Dst, 4718, 1+1, LJ_TISNUM); 1125 dasm_put(Dst, 4309, 1+1, LJ_TISNUM);
1144 if (sse) { 1126 if (sse) {
1145 dasm_put(Dst, 4813); 1127 dasm_put(Dst, 4408);
1146 } else { 1128 } else {
1147 dasm_put(Dst, 4819); 1129 dasm_put(Dst, 4414);
1148 } 1130 }
1149 dasm_put(Dst, 4828); 1131 dasm_put(Dst, 4423);
1150 if (sse) { 1132 if (sse) {
1151 dasm_put(Dst, 4853); 1133 dasm_put(Dst, 4448);
1152 } else { 1134 } else {
1153 dasm_put(Dst, 4859); 1135 dasm_put(Dst, 4454);
1154 } 1136 }
1155 dasm_put(Dst, 4862, 1+2); 1137 dasm_put(Dst, 4457, 1+2);
1156 if (sse) { 1138 if (sse) {
1157 dasm_put(Dst, 4871); 1139 dasm_put(Dst, 4466);
1158 } else { 1140 } else {
1159 dasm_put(Dst, 4879); 1141 dasm_put(Dst, 4474);
1160 } 1142 }
1161 dasm_put(Dst, 475); 1143 dasm_put(Dst, 4482);
1162 if (sse) { 1144 if (sse) {
1163 dasm_put(Dst, 4887, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1145 dasm_put(Dst, 4485, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1164 } else { 1146 } else {
1165 dasm_put(Dst, 4914); 1147 dasm_put(Dst, 4512);
1166 } 1148 }
1167 dasm_put(Dst, 4933); 1149 dasm_put(Dst, 4531);
1168 if (sse) { 1150 if (sse) {
1169 dasm_put(Dst, 4949, 1+1, LJ_TISNUM); 1151 dasm_put(Dst, 4547, 1+1, LJ_TISNUM);
1170 } else { 1152 } else {
1171 dasm_put(Dst, 4974, 1+1, LJ_TISNUM); 1153 dasm_put(Dst, 4572, 1+1, LJ_TISNUM);
1172 } 1154 }
1173 dasm_put(Dst, 4996); 1155 dasm_put(Dst, 4594);
1174 if (sse) { 1156 if (sse) {
1175 dasm_put(Dst, 5014); 1157 dasm_put(Dst, 4616);
1176 } else { 1158 } else {
1177 dasm_put(Dst, 5040); 1159 dasm_put(Dst, 4642);
1178 } 1160 }
1179 dasm_put(Dst, 5057, 1+2); 1161 dasm_put(Dst, 4659, 1+2);
1180 if (sse) { 1162 if (sse) {
1181 dasm_put(Dst, 5097); 1163 dasm_put(Dst, 4699);
1182 } else { 1164 } else {
1183 dasm_put(Dst, 5105); 1165 dasm_put(Dst, 4707);
1184 } 1166 }
1185 dasm_put(Dst, 5115, 2+1, LJ_TISNUM, LJ_TISNUM); 1167 dasm_put(Dst, 4717, 2+1, LJ_TISNUM, LJ_TISNUM);
1186 if (sse) { 1168 if (sse) {
1187 dasm_put(Dst, 5167, 1+1, LJ_TISNUM, LJ_TISNUM); 1169 dasm_put(Dst, 4769, 1+1, LJ_TISNUM, LJ_TISNUM);
1188 } else { 1170 } else {
1189 dasm_put(Dst, 5214, 2+1, LJ_TISNUM, LJ_TISNUM); 1171 dasm_put(Dst, 4816, 2+1, LJ_TISNUM, LJ_TISNUM);
1190 } 1172 }
1191 if (sse) { 1173 if (sse) {
1192 dasm_put(Dst, 5255, 1+1, LJ_TISNUM, LJ_TISNUM); 1174 dasm_put(Dst, 4857, 1+1, LJ_TISNUM, LJ_TISNUM);
1193 } else { 1175 } else {
1194 } 1176 }
1195 if (sse) { 1177 if (sse) {
1196 dasm_put(Dst, 5326, 1+1, LJ_TISNUM, LJ_TISNUM); 1178 dasm_put(Dst, 4928, 1+1, LJ_TISNUM, LJ_TISNUM);
1197 } else { 1179 } else {
1198 } 1180 }
1199 if (!sse) { 1181 if (!sse) {
1200 dasm_put(Dst, 5397); 1182 dasm_put(Dst, 4999);
1201 } 1183 }
1202 dasm_put(Dst, 5406, 1+1, LJ_TSTR); 1184 dasm_put(Dst, 5008, 1+1, LJ_TSTR);
1203 if (sse) { 1185 if (sse) {
1204 dasm_put(Dst, 5428, Dt5(->len)); 1186 dasm_put(Dst, 5030, Dt5(->len));
1205 } else { 1187 } else {
1206 dasm_put(Dst, 5439, Dt5(->len)); 1188 dasm_put(Dst, 5041, Dt5(->len));
1207 } 1189 }
1208 dasm_put(Dst, 5447, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1190 dasm_put(Dst, 5049, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1209 if (sse) { 1191 if (sse) {
1210 dasm_put(Dst, 5481); 1192 dasm_put(Dst, 5087);
1211 } else { 1193 } else {
1212 dasm_put(Dst, 5491); 1194 dasm_put(Dst, 5097);
1213 } 1195 }
1214 dasm_put(Dst, 5504, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1196 dasm_put(Dst, 5110, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1215 if (sse) { 1197 if (sse) {
1216 dasm_put(Dst, 5539); 1198 dasm_put(Dst, 5145);
1217 } else { 1199 } else {
1218 dasm_put(Dst, 5559); 1200 dasm_put(Dst, 5165);
1219 } 1201 }
1220 dasm_put(Dst, 5579, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1202 dasm_put(Dst, 5185, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1221 dasm_put(Dst, 2470); 1203 dasm_put(Dst, 2134);
1222 if (sse) { 1204 if (sse) {
1223 dasm_put(Dst, 5695); 1205 dasm_put(Dst, 5293);
1224 } else { 1206 } else {
1225 dasm_put(Dst, 5706); 1207 dasm_put(Dst, 5304);
1226 } 1208 }
1227 dasm_put(Dst, 5714, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1209 dasm_put(Dst, 5312, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1228 if (sse) { 1210 if (sse) {
1229 dasm_put(Dst, 5744); 1211 dasm_put(Dst, 5342);
1230 } else { 1212 } else {
1231 } 1213 }
1232 dasm_put(Dst, 5751, sizeof(GCstr)-1); 1214 dasm_put(Dst, 5349, sizeof(GCstr)-1);
1233 dasm_put(Dst, 5826, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1215 dasm_put(Dst, 5424, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1234 dasm_put(Dst, 5885, LJ_TSTR, LJ_TISNUM); 1216 dasm_put(Dst, 5483, LJ_TSTR, LJ_TISNUM);
1235 if (sse) { 1217 if (sse) {
1236 dasm_put(Dst, 5910); 1218 dasm_put(Dst, 5504);
1237 } else { 1219 } else {
1238 dasm_put(Dst, 5917); 1220 dasm_put(Dst, 5511);
1239 } 1221 }
1240 dasm_put(Dst, 5929, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1222 dasm_put(Dst, 5523, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1241 dasm_put(Dst, 5994, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1223 dasm_put(Dst, 5588, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1242 dasm_put(Dst, 6061, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1224 dasm_put(Dst, 5651, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1243 dasm_put(Dst, 6136, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1225 dasm_put(Dst, 5722, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1244 dasm_put(Dst, 6221, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1226 dasm_put(Dst, 5807, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1245 dasm_put(Dst, 6295, 1+1, LJ_TTAB); 1227 dasm_put(Dst, 5877, 1+1, LJ_TTAB);
1246 if (sse) { 1228 if (sse) {
1247 dasm_put(Dst, 6371); 1229 dasm_put(Dst, 5945);
1248 } else { 1230 } else {
1249 } 1231 }
1250 if (sse) { 1232 if (sse) {
1251 dasm_put(Dst, 6381, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1233 dasm_put(Dst, 5955, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1252 } else { 1234 } else {
1253 } 1235 }
1254 if (sse) { 1236 if (sse) {
1255 dasm_put(Dst, 6433, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1237 dasm_put(Dst, 6007, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1256 } else { 1238 } else {
1257 } 1239 }
1258 dasm_put(Dst, 6476); 1240 dasm_put(Dst, 6050, LJ_TISNUM);
1259 if (sse) {
1260 dasm_put(Dst, 6486);
1261 }
1262 dasm_put(Dst, 6491, LJ_TISNUM);
1263 if (sse) { 1241 if (sse) {
1264 dasm_put(Dst, 6509); 1242 dasm_put(Dst, 6077);
1265 } else { 1243 } else {
1266 } 1244 }
1267 dasm_put(Dst, 6526); 1245 dasm_put(Dst, 6094);
1268 if (sse) { 1246 if (sse) {
1269 dasm_put(Dst, 6534, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1247 dasm_put(Dst, 6102, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1270 } else { 1248 } else {
1271 } 1249 }
1272 dasm_put(Dst, 6476); 1250 dasm_put(Dst, 6050, LJ_TISNUM);
1273 if (sse) {
1274 dasm_put(Dst, 6486);
1275 }
1276 dasm_put(Dst, 6491, LJ_TISNUM);
1277 if (sse) { 1251 if (sse) {
1278 dasm_put(Dst, 6577); 1252 dasm_put(Dst, 6145);
1279 } else { 1253 } else {
1280 } 1254 }
1281 dasm_put(Dst, 6526); 1255 dasm_put(Dst, 6094);
1282 if (sse) { 1256 if (sse) {
1283 dasm_put(Dst, 6594, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1257 dasm_put(Dst, 6162, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1284 } else { 1258 } else {
1285 } 1259 }
1286 dasm_put(Dst, 6476); 1260 dasm_put(Dst, 6050, LJ_TISNUM);
1287 if (sse) {
1288 dasm_put(Dst, 6486);
1289 }
1290 dasm_put(Dst, 6491, LJ_TISNUM);
1291 if (sse) { 1261 if (sse) {
1292 dasm_put(Dst, 6637); 1262 dasm_put(Dst, 6205);
1293 } else { 1263 } else {
1294 } 1264 }
1295 dasm_put(Dst, 6526); 1265 dasm_put(Dst, 6094);
1296 if (sse) { 1266 if (sse) {
1297 dasm_put(Dst, 6654, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1267 dasm_put(Dst, 6222, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1298 } else { 1268 } else {
1299 } 1269 }
1300 dasm_put(Dst, 6697); 1270 dasm_put(Dst, 6265);
1301 if (sse) { 1271 if (sse) {
1302 dasm_put(Dst, 6704, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1272 dasm_put(Dst, 6272, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1303 } else { 1273 } else {
1304 } 1274 }
1305 dasm_put(Dst, 6747); 1275 dasm_put(Dst, 6315);
1306 if (sse) { 1276 if (sse) {
1307 dasm_put(Dst, 6751); 1277 dasm_put(Dst, 6319);
1308 } else { 1278 } else {
1309 } 1279 }
1310 dasm_put(Dst, 6778); 1280 dasm_put(Dst, 6331);
1311 if (sse) {
1312 dasm_put(Dst, 6366);
1313 }
1314 dasm_put(Dst, 6781);
1315 if (sse) { 1281 if (sse) {
1316 dasm_put(Dst, 6790, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1282 dasm_put(Dst, 6342, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1317 } else { 1283 } else {
1318 } 1284 }
1319 dasm_put(Dst, 6859); 1285 dasm_put(Dst, 6411);
1320 if (sse) { 1286 if (sse) {
1321 dasm_put(Dst, 6868, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1287 dasm_put(Dst, 6420, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1322 } else { 1288 } else {
1323 } 1289 }
1324 dasm_put(Dst, 6937); 1290 dasm_put(Dst, 6489);
1325 if (sse) { 1291 if (sse) {
1326 dasm_put(Dst, 6947, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1292 dasm_put(Dst, 6499, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1327 } else { 1293 } else {
1328 } 1294 }
1329 dasm_put(Dst, 7016); 1295 dasm_put(Dst, 6568);
1330 if (sse) { 1296 if (sse) {
1331 dasm_put(Dst, 7026, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1297 dasm_put(Dst, 6578, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1332 } else { 1298 } else {
1333 } 1299 }
1334 dasm_put(Dst, 7095); 1300 dasm_put(Dst, 6647);
1335 if (sse) { 1301 if (sse) {
1336 dasm_put(Dst, 7104, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1302 dasm_put(Dst, 6656, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1337 } else { 1303 } else {
1338 } 1304 }
1339 dasm_put(Dst, 7173, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1305 dasm_put(Dst, 6725, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1340 dasm_put(Dst, 7257, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1306 dasm_put(Dst, 6803, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1341 dasm_put(Dst, 7377, Dt1(->base), Dt1(->top)); 1307 dasm_put(Dst, 6929, Dt1(->top), Dt1(->base), Dt1(->top));
1342#if LJ_HASJIT 1308#if LJ_HASJIT
1343 dasm_put(Dst, 7419, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1309 dasm_put(Dst, 6968, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1344#endif 1310#endif
1345 dasm_put(Dst, 7450, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); 1311 dasm_put(Dst, 6999, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1346 dasm_put(Dst, 7516, BC__MAX*8); 1312 dasm_put(Dst, 7065, GG_DISP2STATIC);
1347#if LJ_HASJIT 1313#if LJ_HASJIT
1348 dasm_put(Dst, 7552); 1314 dasm_put(Dst, 7101);
1349#endif 1315#endif
1350 dasm_put(Dst, 7554); 1316 dasm_put(Dst, 7103);
1351#if LJ_HASJIT 1317#if LJ_HASJIT
1352 dasm_put(Dst, 7552); 1318 dasm_put(Dst, 7101);
1353#endif 1319#endif
1354 dasm_put(Dst, 7557); 1320 dasm_put(Dst, 7106);
1355#if LJ_HASJIT 1321#if LJ_HASJIT
1356 dasm_put(Dst, 7552); 1322 dasm_put(Dst, 7101);
1357#endif 1323#endif
1358 dasm_put(Dst, 7560); 1324 dasm_put(Dst, 7109);
1359#if LJ_HASJIT 1325#if LJ_HASJIT
1360 dasm_put(Dst, 7563, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1326 dasm_put(Dst, 7112, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1361#endif 1327#endif
1362 dasm_put(Dst, 7604); 1328 dasm_put(Dst, 7153);
1363 if (!sse) { 1329 if (!sse) {
1364 dasm_put(Dst, 7607); 1330 dasm_put(Dst, 7156);
1365 } 1331 }
1366 dasm_put(Dst, 7652, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1332 dasm_put(Dst, 7201, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1367 if (!sse) { 1333 if (!sse) {
1368 dasm_put(Dst, 7738); 1334 dasm_put(Dst, 7287);
1369 } 1335 }
1370 dasm_put(Dst, 7783, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); 1336 dasm_put(Dst, 7332, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
1371 if (!sse) { 1337 if (!sse) {
1372 dasm_put(Dst, 7869); 1338 dasm_put(Dst, 7418);
1373 } 1339 }
1374 dasm_put(Dst, 7908, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1340 dasm_put(Dst, 7457, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1375 if (sse) { 1341 if (sse) {
1376 dasm_put(Dst, 7997, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1342 dasm_put(Dst, 7546, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1377 } else { 1343 } else {
1378 dasm_put(Dst, 8111); 1344 dasm_put(Dst, 7660);
1379 } 1345 }
1380 dasm_put(Dst, 8158); 1346 dasm_put(Dst, 7707);
1381 if (!sse) { 1347 if (!sse) {
1382 } else { 1348 } else {
1383 dasm_put(Dst, 8232); 1349 dasm_put(Dst, 7781);
1384 } 1350 }
1385 dasm_put(Dst, 8235); 1351 dasm_put(Dst, 7784);
1386 dasm_put(Dst, 8320, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1352 dasm_put(Dst, 7869, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1387 dasm_put(Dst, 8421, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1353 dasm_put(Dst, 7970, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1388 dasm_put(Dst, 8589); 1354 dasm_put(Dst, 8138);
1389 if (sse) { 1355 if (sse) {
1390 dasm_put(Dst, 8630); 1356 dasm_put(Dst, 8179);
1391 dasm_put(Dst, 8700); 1357 dasm_put(Dst, 8249);
1392 dasm_put(Dst, 8773); 1358 dasm_put(Dst, 8322);
1393 } else { 1359 } else {
1394 dasm_put(Dst, 8823); 1360 dasm_put(Dst, 8372);
1395 dasm_put(Dst, 8915); 1361 dasm_put(Dst, 8464);
1396 } 1362 }
1397 dasm_put(Dst, 8961); 1363 dasm_put(Dst, 8510);
1398 if (sse) { 1364 if (sse) {
1399 dasm_put(Dst, 8967, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1365 dasm_put(Dst, 8516, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1400 dasm_put(Dst, 9056, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1366 dasm_put(Dst, 8605, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1401 } else { 1367 } else {
1402 dasm_put(Dst, 9180); 1368 dasm_put(Dst, 8729);
1403 dasm_put(Dst, 9263); 1369 dasm_put(Dst, 8812);
1404 if (cmov) { 1370 if (cmov) {
1405 dasm_put(Dst, 9318); 1371 dasm_put(Dst, 8867);
1406 } else { 1372 } else {
1407 dasm_put(Dst, 9337); 1373 dasm_put(Dst, 8886);
1408 } 1374 }
1409 dasm_put(Dst, 9176); 1375 dasm_put(Dst, 8725);
1410 } 1376 }
1411 dasm_put(Dst, 9378); 1377 dasm_put(Dst, 8927);
1412} 1378}
1413 1379
1414/* Generate the code for a single instruction. */ 1380/* Generate the code for a single instruction. */
1415static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1381static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1416{ 1382{
1417 int vk = 0; 1383 int vk = 0;
1418 dasm_put(Dst, 155, defop); 1384 dasm_put(Dst, 8953, defop);
1419 1385
1420 switch (op) { 1386 switch (op) {
1421 1387
@@ -1424,602 +1390,602 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1424 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1390 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1425 1391
1426 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1392 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1427 dasm_put(Dst, 9404, LJ_TISNUM, LJ_TISNUM); 1393 dasm_put(Dst, 8955, LJ_TISNUM, LJ_TISNUM);
1428 if (sse) { 1394 if (sse) {
1429 dasm_put(Dst, 9425); 1395 dasm_put(Dst, 8976);
1430 } else { 1396 } else {
1431 dasm_put(Dst, 9440); 1397 dasm_put(Dst, 8991);
1432 if (cmov) { 1398 if (cmov) {
1433 dasm_put(Dst, 9450); 1399 dasm_put(Dst, 9001);
1434 } else { 1400 } else {
1435 dasm_put(Dst, 9456); 1401 dasm_put(Dst, 9007);
1436 } 1402 }
1437 } 1403 }
1438 switch (op) { 1404 switch (op) {
1439 case BC_ISLT: 1405 case BC_ISLT:
1440 dasm_put(Dst, 9463); 1406 dasm_put(Dst, 9014);
1441 break; 1407 break;
1442 case BC_ISGE: 1408 case BC_ISGE:
1443 dasm_put(Dst, 9258); 1409 dasm_put(Dst, 8807);
1444 break; 1410 break;
1445 case BC_ISLE: 1411 case BC_ISLE:
1446 dasm_put(Dst, 6290); 1412 dasm_put(Dst, 5872);
1447 break; 1413 break;
1448 case BC_ISGT: 1414 case BC_ISGT:
1449 dasm_put(Dst, 9468); 1415 dasm_put(Dst, 9019);
1450 break; 1416 break;
1451 default: break; /* Shut up GCC. */ 1417 default: break; /* Shut up GCC. */
1452 } 1418 }
1453 dasm_put(Dst, 9473, -BCBIAS_J*4); 1419 dasm_put(Dst, 9024, -BCBIAS_J*4);
1454 break; 1420 break;
1455 1421
1456 case BC_ISEQV: case BC_ISNEV: 1422 case BC_ISEQV: case BC_ISNEV:
1457 vk = op == BC_ISEQV; 1423 vk = op == BC_ISEQV;
1458 dasm_put(Dst, 9507, LJ_TISNUM, LJ_TISNUM); 1424 dasm_put(Dst, 9058, LJ_TISNUM, LJ_TISNUM);
1459 if (sse) { 1425 if (sse) {
1460 dasm_put(Dst, 9533); 1426 dasm_put(Dst, 9084);
1461 } else { 1427 } else {
1462 dasm_put(Dst, 9545); 1428 dasm_put(Dst, 9096);
1463 if (cmov) { 1429 if (cmov) {
1464 dasm_put(Dst, 9450); 1430 dasm_put(Dst, 9001);
1465 } else { 1431 } else {
1466 dasm_put(Dst, 9456); 1432 dasm_put(Dst, 9007);
1467 } 1433 }
1468 } 1434 }
1469 iseqne_fp: 1435 iseqne_fp:
1470 if (vk) { 1436 if (vk) {
1471 dasm_put(Dst, 9552); 1437 dasm_put(Dst, 9103);
1472 } else { 1438 } else {
1473 dasm_put(Dst, 9561); 1439 dasm_put(Dst, 9112);
1474 } 1440 }
1475 iseqne_end: 1441 iseqne_end:
1476 if (vk) { 1442 if (vk) {
1477 dasm_put(Dst, 9570, -BCBIAS_J*4); 1443 dasm_put(Dst, 9121, -BCBIAS_J*4);
1478 } else { 1444 } else {
1479 dasm_put(Dst, 9585, -BCBIAS_J*4); 1445 dasm_put(Dst, 9136, -BCBIAS_J*4);
1480 } 1446 }
1481 dasm_put(Dst, 7584); 1447 dasm_put(Dst, 7133);
1482 if (op == BC_ISEQV || op == BC_ISNEV) { 1448 if (op == BC_ISEQV || op == BC_ISNEV) {
1483 dasm_put(Dst, 9600, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1449 dasm_put(Dst, 9151, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1484 if (vk) { 1450 if (vk) {
1485 dasm_put(Dst, 9658); 1451 dasm_put(Dst, 9209);
1486 } else { 1452 } else {
1487 dasm_put(Dst, 9662); 1453 dasm_put(Dst, 9213);
1488 } 1454 }
1489 dasm_put(Dst, 9668); 1455 dasm_put(Dst, 9219);
1490 } 1456 }
1491 break; 1457 break;
1492 case BC_ISEQS: case BC_ISNES: 1458 case BC_ISEQS: case BC_ISNES:
1493 vk = op == BC_ISEQS; 1459 vk = op == BC_ISEQS;
1494 dasm_put(Dst, 9673, LJ_TSTR); 1460 dasm_put(Dst, 9224, LJ_TSTR);
1495 iseqne_test: 1461 iseqne_test:
1496 if (vk) { 1462 if (vk) {
1497 dasm_put(Dst, 9556); 1463 dasm_put(Dst, 9107);
1498 } else { 1464 } else {
1499 dasm_put(Dst, 8910); 1465 dasm_put(Dst, 2774);
1500 } 1466 }
1501 goto iseqne_end; 1467 goto iseqne_end;
1502 case BC_ISEQN: case BC_ISNEN: 1468 case BC_ISEQN: case BC_ISNEN:
1503 vk = op == BC_ISEQN; 1469 vk = op == BC_ISEQN;
1504 dasm_put(Dst, 9697, LJ_TISNUM); 1470 dasm_put(Dst, 9248, LJ_TISNUM);
1505 if (sse) { 1471 if (sse) {
1506 dasm_put(Dst, 9711); 1472 dasm_put(Dst, 9262);
1507 } else { 1473 } else {
1508 dasm_put(Dst, 9723); 1474 dasm_put(Dst, 9274);
1509 if (cmov) { 1475 if (cmov) {
1510 dasm_put(Dst, 9450); 1476 dasm_put(Dst, 9001);
1511 } else { 1477 } else {
1512 dasm_put(Dst, 9456); 1478 dasm_put(Dst, 9007);
1513 } 1479 }
1514 } 1480 }
1515 goto iseqne_fp; 1481 goto iseqne_fp;
1516 case BC_ISEQP: case BC_ISNEP: 1482 case BC_ISEQP: case BC_ISNEP:
1517 vk = op == BC_ISEQP; 1483 vk = op == BC_ISEQP;
1518 dasm_put(Dst, 9730); 1484 dasm_put(Dst, 9281);
1519 goto iseqne_test; 1485 goto iseqne_test;
1520 1486
1521 /* -- Unary test and copy ops ------------------------------------------- */ 1487 /* -- Unary test and copy ops ------------------------------------------- */
1522 1488
1523 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1489 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1524 dasm_put(Dst, 9742, LJ_TISTRUECOND); 1490 dasm_put(Dst, 9293, LJ_TISTRUECOND);
1525 if (op == BC_IST || op == BC_ISTC) { 1491 if (op == BC_IST || op == BC_ISTC) {
1526 dasm_put(Dst, 9754); 1492 dasm_put(Dst, 9305);
1527 } else { 1493 } else {
1528 dasm_put(Dst, 9759); 1494 dasm_put(Dst, 9310);
1529 } 1495 }
1530 if (op == BC_ISTC || op == BC_ISFC) { 1496 if (op == BC_ISTC || op == BC_ISFC) {
1531 dasm_put(Dst, 9764); 1497 dasm_put(Dst, 9315);
1532 } 1498 }
1533 dasm_put(Dst, 9775, -BCBIAS_J*4); 1499 dasm_put(Dst, 9326, -BCBIAS_J*4);
1534 break; 1500 break;
1535 1501
1536 /* -- Unary ops --------------------------------------------------------- */ 1502 /* -- Unary ops --------------------------------------------------------- */
1537 1503
1538 case BC_MOV: 1504 case BC_MOV:
1539 dasm_put(Dst, 9807); 1505 dasm_put(Dst, 9358);
1540 break; 1506 break;
1541 case BC_NOT: 1507 case BC_NOT:
1542 dasm_put(Dst, 9841, LJ_TISTRUECOND, LJ_TTRUE); 1508 dasm_put(Dst, 9392, LJ_TISTRUECOND, LJ_TTRUE);
1543 break; 1509 break;
1544 case BC_UNM: 1510 case BC_UNM:
1545 dasm_put(Dst, 9877, LJ_TISNUM); 1511 dasm_put(Dst, 9428, LJ_TISNUM);
1546 if (sse) { 1512 if (sse) {
1547 dasm_put(Dst, 9888, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1513 dasm_put(Dst, 9439, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1548 } else { 1514 } else {
1549 dasm_put(Dst, 9913); 1515 dasm_put(Dst, 9464);
1550 } 1516 }
1551 dasm_put(Dst, 7584); 1517 dasm_put(Dst, 7133);
1552 break; 1518 break;
1553 case BC_LEN: 1519 case BC_LEN:
1554 dasm_put(Dst, 9922, LJ_TSTR); 1520 dasm_put(Dst, 9473, LJ_TSTR);
1555 if (sse) { 1521 if (sse) {
1556 dasm_put(Dst, 9936, Dt5(->len)); 1522 dasm_put(Dst, 9487, Dt5(->len));
1557 } else { 1523 } else {
1558 dasm_put(Dst, 9954, Dt5(->len)); 1524 dasm_put(Dst, 9505, Dt5(->len));
1559 } 1525 }
1560 dasm_put(Dst, 9963, LJ_TTAB); 1526 dasm_put(Dst, 9514, LJ_TTAB);
1561 if (sse) { 1527 if (sse) {
1562 dasm_put(Dst, 10004); 1528 dasm_put(Dst, 9555);
1563 } else { 1529 } else {
1564 } 1530 }
1565 dasm_put(Dst, 10013); 1531 dasm_put(Dst, 9564);
1566 break; 1532 break;
1567 1533
1568 /* -- Binary ops -------------------------------------------------------- */ 1534 /* -- Binary ops -------------------------------------------------------- */
1569 1535
1570 1536
1571 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1537 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1572 dasm_put(Dst, 10023); 1538 dasm_put(Dst, 9574);
1573 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1539 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1574 switch (vk) { 1540 switch (vk) {
1575 case 0: 1541 case 0:
1576 dasm_put(Dst, 10031, LJ_TISNUM); 1542 dasm_put(Dst, 9582, LJ_TISNUM);
1577 if (sse) { 1543 if (sse) {
1578 dasm_put(Dst, 10043); 1544 dasm_put(Dst, 9594);
1579 } else { 1545 } else {
1580 dasm_put(Dst, 10057); 1546 dasm_put(Dst, 9608);
1581 } 1547 }
1582 break; 1548 break;
1583 case 1: 1549 case 1:
1584 dasm_put(Dst, 10065, LJ_TISNUM); 1550 dasm_put(Dst, 9616, LJ_TISNUM);
1585 if (sse) { 1551 if (sse) {
1586 dasm_put(Dst, 10077); 1552 dasm_put(Dst, 9628);
1587 } else { 1553 } else {
1588 dasm_put(Dst, 10091); 1554 dasm_put(Dst, 9642);
1589 } 1555 }
1590 break; 1556 break;
1591 default: 1557 default:
1592 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1558 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1593 if (sse) { 1559 if (sse) {
1594 dasm_put(Dst, 10121); 1560 dasm_put(Dst, 9672);
1595 } else { 1561 } else {
1596 dasm_put(Dst, 10135); 1562 dasm_put(Dst, 9686);
1597 } 1563 }
1598 break; 1564 break;
1599 } 1565 }
1600 if (sse) { 1566 if (sse) {
1601 dasm_put(Dst, 9906); 1567 dasm_put(Dst, 9457);
1602 } else { 1568 } else {
1603 dasm_put(Dst, 9918); 1569 dasm_put(Dst, 9469);
1604 } 1570 }
1605 dasm_put(Dst, 7584); 1571 dasm_put(Dst, 7133);
1606 break; 1572 break;
1607 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1573 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1608 dasm_put(Dst, 10023); 1574 dasm_put(Dst, 9574);
1609 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1575 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1610 switch (vk) { 1576 switch (vk) {
1611 case 0: 1577 case 0:
1612 dasm_put(Dst, 10031, LJ_TISNUM); 1578 dasm_put(Dst, 9582, LJ_TISNUM);
1613 if (sse) { 1579 if (sse) {
1614 dasm_put(Dst, 10143); 1580 dasm_put(Dst, 9694);
1615 } else { 1581 } else {
1616 dasm_put(Dst, 10157); 1582 dasm_put(Dst, 9708);
1617 } 1583 }
1618 break; 1584 break;
1619 case 1: 1585 case 1:
1620 dasm_put(Dst, 10065, LJ_TISNUM); 1586 dasm_put(Dst, 9616, LJ_TISNUM);
1621 if (sse) { 1587 if (sse) {
1622 dasm_put(Dst, 10165); 1588 dasm_put(Dst, 9716);
1623 } else { 1589 } else {
1624 dasm_put(Dst, 10179); 1590 dasm_put(Dst, 9730);
1625 } 1591 }
1626 break; 1592 break;
1627 default: 1593 default:
1628 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1594 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1629 if (sse) { 1595 if (sse) {
1630 dasm_put(Dst, 10187); 1596 dasm_put(Dst, 9738);
1631 } else { 1597 } else {
1632 dasm_put(Dst, 10201); 1598 dasm_put(Dst, 9752);
1633 } 1599 }
1634 break; 1600 break;
1635 } 1601 }
1636 if (sse) { 1602 if (sse) {
1637 dasm_put(Dst, 9906); 1603 dasm_put(Dst, 9457);
1638 } else { 1604 } else {
1639 dasm_put(Dst, 9918); 1605 dasm_put(Dst, 9469);
1640 } 1606 }
1641 dasm_put(Dst, 7584); 1607 dasm_put(Dst, 7133);
1642 break; 1608 break;
1643 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1609 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1644 dasm_put(Dst, 10023); 1610 dasm_put(Dst, 9574);
1645 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1611 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1646 switch (vk) { 1612 switch (vk) {
1647 case 0: 1613 case 0:
1648 dasm_put(Dst, 10031, LJ_TISNUM); 1614 dasm_put(Dst, 9582, LJ_TISNUM);
1649 if (sse) { 1615 if (sse) {
1650 dasm_put(Dst, 10209); 1616 dasm_put(Dst, 9760);
1651 } else { 1617 } else {
1652 dasm_put(Dst, 10223); 1618 dasm_put(Dst, 9774);
1653 } 1619 }
1654 break; 1620 break;
1655 case 1: 1621 case 1:
1656 dasm_put(Dst, 10065, LJ_TISNUM); 1622 dasm_put(Dst, 9616, LJ_TISNUM);
1657 if (sse) { 1623 if (sse) {
1658 dasm_put(Dst, 10231); 1624 dasm_put(Dst, 9782);
1659 } else { 1625 } else {
1660 dasm_put(Dst, 10245); 1626 dasm_put(Dst, 9796);
1661 } 1627 }
1662 break; 1628 break;
1663 default: 1629 default:
1664 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1630 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1665 if (sse) { 1631 if (sse) {
1666 dasm_put(Dst, 10253); 1632 dasm_put(Dst, 9804);
1667 } else { 1633 } else {
1668 dasm_put(Dst, 10267); 1634 dasm_put(Dst, 9818);
1669 } 1635 }
1670 break; 1636 break;
1671 } 1637 }
1672 if (sse) { 1638 if (sse) {
1673 dasm_put(Dst, 9906); 1639 dasm_put(Dst, 9457);
1674 } else { 1640 } else {
1675 dasm_put(Dst, 9918); 1641 dasm_put(Dst, 9469);
1676 } 1642 }
1677 dasm_put(Dst, 7584); 1643 dasm_put(Dst, 7133);
1678 break; 1644 break;
1679 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1645 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1680 dasm_put(Dst, 10023); 1646 dasm_put(Dst, 9574);
1681 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1647 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1682 switch (vk) { 1648 switch (vk) {
1683 case 0: 1649 case 0:
1684 dasm_put(Dst, 10031, LJ_TISNUM); 1650 dasm_put(Dst, 9582, LJ_TISNUM);
1685 if (sse) { 1651 if (sse) {
1686 dasm_put(Dst, 10275); 1652 dasm_put(Dst, 9826);
1687 } else { 1653 } else {
1688 dasm_put(Dst, 10289); 1654 dasm_put(Dst, 9840);
1689 } 1655 }
1690 break; 1656 break;
1691 case 1: 1657 case 1:
1692 dasm_put(Dst, 10065, LJ_TISNUM); 1658 dasm_put(Dst, 9616, LJ_TISNUM);
1693 if (sse) { 1659 if (sse) {
1694 dasm_put(Dst, 10297); 1660 dasm_put(Dst, 9848);
1695 } else { 1661 } else {
1696 dasm_put(Dst, 10311); 1662 dasm_put(Dst, 9862);
1697 } 1663 }
1698 break; 1664 break;
1699 default: 1665 default:
1700 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1666 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1701 if (sse) { 1667 if (sse) {
1702 dasm_put(Dst, 10319); 1668 dasm_put(Dst, 9870);
1703 } else { 1669 } else {
1704 dasm_put(Dst, 10333); 1670 dasm_put(Dst, 9884);
1705 } 1671 }
1706 break; 1672 break;
1707 } 1673 }
1708 if (sse) { 1674 if (sse) {
1709 dasm_put(Dst, 9906); 1675 dasm_put(Dst, 9457);
1710 } else { 1676 } else {
1711 dasm_put(Dst, 9918); 1677 dasm_put(Dst, 9469);
1712 } 1678 }
1713 dasm_put(Dst, 7584); 1679 dasm_put(Dst, 7133);
1714 break; 1680 break;
1715 case BC_MODVN: 1681 case BC_MODVN:
1716 dasm_put(Dst, 10023); 1682 dasm_put(Dst, 9574);
1717 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1683 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1718 switch (vk) { 1684 switch (vk) {
1719 case 0: 1685 case 0:
1720 dasm_put(Dst, 10031, LJ_TISNUM); 1686 dasm_put(Dst, 9582, LJ_TISNUM);
1721 if (sse) { 1687 if (sse) {
1722 dasm_put(Dst, 10341); 1688 dasm_put(Dst, 9892);
1723 } else { 1689 } else {
1724 dasm_put(Dst, 10355); 1690 dasm_put(Dst, 9906);
1725 } 1691 }
1726 break; 1692 break;
1727 case 1: 1693 case 1:
1728 dasm_put(Dst, 10065, LJ_TISNUM); 1694 dasm_put(Dst, 9616, LJ_TISNUM);
1729 if (sse) { 1695 if (sse) {
1730 dasm_put(Dst, 10363); 1696 dasm_put(Dst, 9914);
1731 } else { 1697 } else {
1732 dasm_put(Dst, 10377); 1698 dasm_put(Dst, 9928);
1733 } 1699 }
1734 break; 1700 break;
1735 default: 1701 default:
1736 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1702 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1737 if (sse) { 1703 if (sse) {
1738 dasm_put(Dst, 10385); 1704 dasm_put(Dst, 9936);
1739 } else { 1705 } else {
1740 dasm_put(Dst, 10399); 1706 dasm_put(Dst, 9950);
1741 } 1707 }
1742 break; 1708 break;
1743 } 1709 }
1744 dasm_put(Dst, 10407); 1710 dasm_put(Dst, 9958);
1745 if (sse) { 1711 if (sse) {
1746 dasm_put(Dst, 9906); 1712 dasm_put(Dst, 9457);
1747 } else { 1713 } else {
1748 dasm_put(Dst, 9918); 1714 dasm_put(Dst, 9469);
1749 } 1715 }
1750 dasm_put(Dst, 7584); 1716 dasm_put(Dst, 7133);
1751 break; 1717 break;
1752 case BC_MODNV: case BC_MODVV: 1718 case BC_MODNV: case BC_MODVV:
1753 dasm_put(Dst, 10023); 1719 dasm_put(Dst, 9574);
1754 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1720 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1755 switch (vk) { 1721 switch (vk) {
1756 case 0: 1722 case 0:
1757 dasm_put(Dst, 10031, LJ_TISNUM); 1723 dasm_put(Dst, 9582, LJ_TISNUM);
1758 if (sse) { 1724 if (sse) {
1759 dasm_put(Dst, 10341); 1725 dasm_put(Dst, 9892);
1760 } else { 1726 } else {
1761 dasm_put(Dst, 10355); 1727 dasm_put(Dst, 9906);
1762 } 1728 }
1763 break; 1729 break;
1764 case 1: 1730 case 1:
1765 dasm_put(Dst, 10065, LJ_TISNUM); 1731 dasm_put(Dst, 9616, LJ_TISNUM);
1766 if (sse) { 1732 if (sse) {
1767 dasm_put(Dst, 10363); 1733 dasm_put(Dst, 9914);
1768 } else { 1734 } else {
1769 dasm_put(Dst, 10377); 1735 dasm_put(Dst, 9928);
1770 } 1736 }
1771 break; 1737 break;
1772 default: 1738 default:
1773 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1739 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1774 if (sse) { 1740 if (sse) {
1775 dasm_put(Dst, 10385); 1741 dasm_put(Dst, 9936);
1776 } else { 1742 } else {
1777 dasm_put(Dst, 10399); 1743 dasm_put(Dst, 9950);
1778 } 1744 }
1779 break; 1745 break;
1780 } 1746 }
1781 dasm_put(Dst, 10413); 1747 dasm_put(Dst, 9964);
1782 break; 1748 break;
1783 case BC_POW: 1749 case BC_POW:
1784 dasm_put(Dst, 10023); 1750 dasm_put(Dst, 9574);
1785 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1751 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1786 switch (vk) { 1752 switch (vk) {
1787 case 0: 1753 case 0:
1788 dasm_put(Dst, 10031, LJ_TISNUM); 1754 dasm_put(Dst, 9582, LJ_TISNUM);
1789 if (sse) { 1755 if (sse) {
1790 dasm_put(Dst, 10341); 1756 dasm_put(Dst, 9892);
1791 } else { 1757 } else {
1792 dasm_put(Dst, 10355); 1758 dasm_put(Dst, 9906);
1793 } 1759 }
1794 break; 1760 break;
1795 case 1: 1761 case 1:
1796 dasm_put(Dst, 10065, LJ_TISNUM); 1762 dasm_put(Dst, 9616, LJ_TISNUM);
1797 if (sse) { 1763 if (sse) {
1798 dasm_put(Dst, 10363); 1764 dasm_put(Dst, 9914);
1799 } else { 1765 } else {
1800 dasm_put(Dst, 10377); 1766 dasm_put(Dst, 9928);
1801 } 1767 }
1802 break; 1768 break;
1803 default: 1769 default:
1804 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1770 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1805 if (sse) { 1771 if (sse) {
1806 dasm_put(Dst, 10385); 1772 dasm_put(Dst, 9936);
1807 } else { 1773 } else {
1808 dasm_put(Dst, 10399); 1774 dasm_put(Dst, 9950);
1809 } 1775 }
1810 break; 1776 break;
1811 } 1777 }
1812 dasm_put(Dst, 10418); 1778 dasm_put(Dst, 9969);
1813 if (sse) { 1779 if (sse) {
1814 dasm_put(Dst, 9906); 1780 dasm_put(Dst, 9457);
1815 } else { 1781 } else {
1816 dasm_put(Dst, 9918); 1782 dasm_put(Dst, 9469);
1817 } 1783 }
1818 dasm_put(Dst, 7584); 1784 dasm_put(Dst, 7133);
1819 break; 1785 break;
1820 1786
1821 case BC_CAT: 1787 case BC_CAT:
1822 dasm_put(Dst, 10422, Dt1(->base), Dt1(->base)); 1788 dasm_put(Dst, 9973, Dt1(->base), Dt1(->base));
1823 break; 1789 break;
1824 1790
1825 /* -- Constant ops ------------------------------------------------------ */ 1791 /* -- Constant ops ------------------------------------------------------ */
1826 1792
1827 case BC_KSTR: 1793 case BC_KSTR:
1828 dasm_put(Dst, 10512, LJ_TSTR); 1794 dasm_put(Dst, 10063, LJ_TSTR);
1829 break; 1795 break;
1830 case BC_KSHORT: 1796 case BC_KSHORT:
1831 if (sse) { 1797 if (sse) {
1832 dasm_put(Dst, 10547); 1798 dasm_put(Dst, 10098);
1833 } else { 1799 } else {
1834 dasm_put(Dst, 10562); 1800 dasm_put(Dst, 10113);
1835 } 1801 }
1836 dasm_put(Dst, 7584); 1802 dasm_put(Dst, 7133);
1837 break; 1803 break;
1838 case BC_KNUM: 1804 case BC_KNUM:
1839 if (sse) { 1805 if (sse) {
1840 dasm_put(Dst, 10570); 1806 dasm_put(Dst, 10121);
1841 } else { 1807 } else {
1842 dasm_put(Dst, 10583); 1808 dasm_put(Dst, 10134);
1843 } 1809 }
1844 dasm_put(Dst, 7584); 1810 dasm_put(Dst, 7133);
1845 break; 1811 break;
1846 case BC_KPRI: 1812 case BC_KPRI:
1847 dasm_put(Dst, 10590); 1813 dasm_put(Dst, 10141);
1848 break; 1814 break;
1849 case BC_KNIL: 1815 case BC_KNIL:
1850 dasm_put(Dst, 10618, LJ_TNIL); 1816 dasm_put(Dst, 10169, LJ_TNIL);
1851 break; 1817 break;
1852 1818
1853 /* -- Upvalue and function ops ------------------------------------------ */ 1819 /* -- Upvalue and function ops ------------------------------------------ */
1854 1820
1855 case BC_UGET: 1821 case BC_UGET:
1856 dasm_put(Dst, 10665, offsetof(GCfuncL, uvptr), DtA(->v)); 1822 dasm_put(Dst, 10216, offsetof(GCfuncL, uvptr), DtA(->v));
1857 break; 1823 break;
1858 case BC_USETV: 1824 case BC_USETV:
1859#define TV2MARKOFS \ 1825#define TV2MARKOFS \
1860 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1826 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1861 dasm_put(Dst, 10710, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1827 dasm_put(Dst, 10261, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1862 dasm_put(Dst, 10801); 1828 dasm_put(Dst, 10352);
1863 break; 1829 break;
1864#undef TV2MARKOFS 1830#undef TV2MARKOFS
1865 case BC_USETS: 1831 case BC_USETS:
1866 dasm_put(Dst, 10813, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1832 dasm_put(Dst, 10364, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1867 break; 1833 break;
1868 case BC_USETN: 1834 case BC_USETN:
1869 dasm_put(Dst, 10906); 1835 dasm_put(Dst, 10457);
1870 if (sse) { 1836 if (sse) {
1871 dasm_put(Dst, 10911); 1837 dasm_put(Dst, 10462);
1872 } else { 1838 } else {
1873 dasm_put(Dst, 9726); 1839 dasm_put(Dst, 9277);
1874 } 1840 }
1875 dasm_put(Dst, 10918, offsetof(GCfuncL, uvptr), DtA(->v)); 1841 dasm_put(Dst, 10469, offsetof(GCfuncL, uvptr), DtA(->v));
1876 if (sse) { 1842 if (sse) {
1877 dasm_put(Dst, 4853); 1843 dasm_put(Dst, 10478);
1878 } else { 1844 } else {
1879 dasm_put(Dst, 4859); 1845 dasm_put(Dst, 10484);
1880 } 1846 }
1881 dasm_put(Dst, 7584); 1847 dasm_put(Dst, 7133);
1882 break; 1848 break;
1883 case BC_USETP: 1849 case BC_USETP:
1884 dasm_put(Dst, 10927, offsetof(GCfuncL, uvptr), DtA(->v)); 1850 dasm_put(Dst, 10487, offsetof(GCfuncL, uvptr), DtA(->v));
1885 break; 1851 break;
1886 case BC_UCLO: 1852 case BC_UCLO:
1887 dasm_put(Dst, 10966, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1853 dasm_put(Dst, 10526, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1888 break; 1854 break;
1889 1855
1890 case BC_FNEW: 1856 case BC_FNEW:
1891 dasm_put(Dst, 11021, Dt1(->base), Dt1(->base), LJ_TFUNC); 1857 dasm_put(Dst, 10581, Dt1(->base), Dt1(->base), LJ_TFUNC);
1892 break; 1858 break;
1893 1859
1894 /* -- Table ops --------------------------------------------------------- */ 1860 /* -- Table ops --------------------------------------------------------- */
1895 1861
1896 case BC_TNEW: 1862 case BC_TNEW:
1897 dasm_put(Dst, 11087, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1863 dasm_put(Dst, 10647, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1898 break; 1864 break;
1899 case BC_TDUP: 1865 case BC_TDUP:
1900 dasm_put(Dst, 11208, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1866 dasm_put(Dst, 10768, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1901 break; 1867 break;
1902 1868
1903 case BC_GGET: 1869 case BC_GGET:
1904 dasm_put(Dst, 11303, Dt7(->env)); 1870 dasm_put(Dst, 10863, Dt7(->env));
1905 break; 1871 break;
1906 case BC_GSET: 1872 case BC_GSET:
1907 dasm_put(Dst, 11322, Dt7(->env)); 1873 dasm_put(Dst, 10882, Dt7(->env));
1908 break; 1874 break;
1909 1875
1910 case BC_TGETV: 1876 case BC_TGETV:
1911 dasm_put(Dst, 11341, LJ_TTAB, LJ_TISNUM); 1877 dasm_put(Dst, 10901, LJ_TTAB, LJ_TISNUM);
1912 if (sse) { 1878 if (sse) {
1913 dasm_put(Dst, 11374); 1879 dasm_put(Dst, 10934);
1914 } else { 1880 } else {
1915 } 1881 }
1916 dasm_put(Dst, 11395, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1882 dasm_put(Dst, 10955, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1917 dasm_put(Dst, 11488, LJ_TSTR); 1883 dasm_put(Dst, 11048, LJ_TSTR);
1918 break; 1884 break;
1919 case BC_TGETS: 1885 case BC_TGETS:
1920 dasm_put(Dst, 11506, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1886 dasm_put(Dst, 11066, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1921 dasm_put(Dst, 11591, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1887 dasm_put(Dst, 11151, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1922 break; 1888 break;
1923 case BC_TGETB: 1889 case BC_TGETB:
1924 dasm_put(Dst, 11663, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1890 dasm_put(Dst, 11223, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1925 dasm_put(Dst, 10013); 1891 dasm_put(Dst, 9564);
1926 break; 1892 break;
1927 1893
1928 case BC_TSETV: 1894 case BC_TSETV:
1929 dasm_put(Dst, 11763, LJ_TTAB, LJ_TISNUM); 1895 dasm_put(Dst, 11323, LJ_TTAB, LJ_TISNUM);
1930 if (sse) { 1896 if (sse) {
1931 dasm_put(Dst, 11374); 1897 dasm_put(Dst, 10934);
1932 } else { 1898 } else {
1933 } 1899 }
1934 dasm_put(Dst, 11796, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1900 dasm_put(Dst, 11356, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1935 dasm_put(Dst, 11880, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1901 dasm_put(Dst, 11440, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1936 break; 1902 break;
1937 case BC_TSETS: 1903 case BC_TSETS:
1938 dasm_put(Dst, 11942, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1904 dasm_put(Dst, 11502, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1939 dasm_put(Dst, 12018, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1905 dasm_put(Dst, 11578, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1940 dasm_put(Dst, 12111, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1906 dasm_put(Dst, 11671, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1941 break; 1907 break;
1942 case BC_TSETB: 1908 case BC_TSETB:
1943 dasm_put(Dst, 12202, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1909 dasm_put(Dst, 11762, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1944 dasm_put(Dst, 12301, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1910 dasm_put(Dst, 11861, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1945 break; 1911 break;
1946 1912
1947 case BC_TSETM: 1913 case BC_TSETM:
1948 dasm_put(Dst, 12347); 1914 dasm_put(Dst, 11907);
1949 if (sse) { 1915 if (sse) {
1950 dasm_put(Dst, 10911); 1916 dasm_put(Dst, 10462);
1951 } else { 1917 } else {
1952 } 1918 }
1953 dasm_put(Dst, 12352, Dt6(->marked), LJ_GC_BLACK); 1919 dasm_put(Dst, 11912, Dt6(->marked), LJ_GC_BLACK);
1954 if (sse) { 1920 if (sse) {
1955 dasm_put(Dst, 12377); 1921 dasm_put(Dst, 11937);
1956 } else { 1922 } else {
1957 } 1923 }
1958 dasm_put(Dst, 12384, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 1924 dasm_put(Dst, 11944, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
1959 dasm_put(Dst, 12510, Dt6(->gclist)); 1925 dasm_put(Dst, 12070, Dt6(->gclist));
1960 break; 1926 break;
1961 1927
1962 /* -- Calls and vararg handling ----------------------------------------- */ 1928 /* -- Calls and vararg handling ----------------------------------------- */
1963 1929
1964 case BC_CALL: case BC_CALLM: 1930 case BC_CALL: case BC_CALLM:
1965 dasm_put(Dst, 10027); 1931 dasm_put(Dst, 9578);
1966 if (op == BC_CALLM) { 1932 if (op == BC_CALLM) {
1967 dasm_put(Dst, 12518); 1933 dasm_put(Dst, 12078);
1968 } 1934 }
1969 dasm_put(Dst, 12523, LJ_TFUNC, Dt7(->gate)); 1935 dasm_put(Dst, 12083, LJ_TFUNC, Dt7(->pc));
1970 break; 1936 break;
1971 1937
1972 case BC_CALLMT: 1938 case BC_CALLMT:
1973 dasm_put(Dst, 12518); 1939 dasm_put(Dst, 12078);
1974 break; 1940 break;
1975 case BC_CALLT: 1941 case BC_CALLT:
1976 dasm_put(Dst, 12546, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 1942 dasm_put(Dst, 12125, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
1977 dasm_put(Dst, 12651, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 1943 dasm_put(Dst, 12244, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
1978 break; 1944 break;
1979 1945
1980 case BC_ITERC: 1946 case BC_ITERC:
1981 dasm_put(Dst, 12709, LJ_TFUNC, Dt7(->gate)); 1947 dasm_put(Dst, 12302, LJ_TFUNC, 2+1, Dt7(->pc));
1982 break; 1948 break;
1983 1949
1984 case BC_VARG: 1950 case BC_VARG:
1985 dasm_put(Dst, 12771, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 1951 dasm_put(Dst, 12383, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
1986 dasm_put(Dst, 12916, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 1952 dasm_put(Dst, 12528, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1987 break; 1953 break;
1988 1954
1989 /* -- Returns ----------------------------------------------------------- */ 1955 /* -- Returns ----------------------------------------------------------- */
1990 1956
1991 case BC_RETM: 1957 case BC_RETM:
1992 dasm_put(Dst, 12518); 1958 dasm_put(Dst, 12078);
1993 break; 1959 break;
1994 1960
1995 case BC_RET: case BC_RET0: case BC_RET1: 1961 case BC_RET: case BC_RET0: case BC_RET1:
1996 if (op != BC_RET0) { 1962 if (op != BC_RET0) {
1997 dasm_put(Dst, 13015); 1963 dasm_put(Dst, 12627);
1998 } 1964 }
1999 dasm_put(Dst, 13019, FRAME_TYPE); 1965 dasm_put(Dst, 12631, FRAME_TYPE);
2000 switch (op) { 1966 switch (op) {
2001 case BC_RET: 1967 case BC_RET:
2002 dasm_put(Dst, 13038); 1968 dasm_put(Dst, 12650);
2003 break; 1969 break;
2004 case BC_RET1: 1970 case BC_RET1:
2005 dasm_put(Dst, 13096); 1971 dasm_put(Dst, 12708);
2006 /* fallthrough */ 1972 /* fallthrough */
2007 case BC_RET0: 1973 case BC_RET0:
2008 dasm_put(Dst, 13112); 1974 dasm_put(Dst, 12724);
2009 default: 1975 default:
2010 break; 1976 break;
2011 } 1977 }
2012 dasm_put(Dst, 13123, Dt7(->pc), PC2PROTO(k)); 1978 dasm_put(Dst, 12735, Dt7(->pc), PC2PROTO(k));
2013 if (op == BC_RET) { 1979 if (op == BC_RET) {
2014 dasm_put(Dst, 13167, LJ_TNIL); 1980 dasm_put(Dst, 12779, LJ_TNIL);
2015 } else { 1981 } else {
2016 dasm_put(Dst, 13176, LJ_TNIL); 1982 dasm_put(Dst, 12788, LJ_TNIL);
2017 } 1983 }
2018 dasm_put(Dst, 13183); 1984 dasm_put(Dst, 12795);
2019 if (op != BC_RET0) { 1985 if (op != BC_RET0) {
2020 dasm_put(Dst, 13204); 1986 dasm_put(Dst, 12816);
2021 } 1987 }
2022 dasm_put(Dst, 4944); 1988 dasm_put(Dst, 4542);
2023 break; 1989 break;
2024 1990
2025 /* -- Loops and branches ------------------------------------------------ */ 1991 /* -- Loops and branches ------------------------------------------------ */
@@ -2027,7 +1993,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2027 1993
2028 case BC_FORL: 1994 case BC_FORL:
2029#if LJ_HASJIT 1995#if LJ_HASJIT
2030 dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); 1996 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
2031#endif 1997#endif
2032 break; 1998 break;
2033 1999
@@ -2039,57 +2005,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2039 case BC_FORI: 2005 case BC_FORI:
2040 case BC_IFORL: 2006 case BC_IFORL:
2041 vk = (op == BC_IFORL || op == BC_JFORL); 2007 vk = (op == BC_IFORL || op == BC_JFORL);
2042 dasm_put(Dst, 13229); 2008 dasm_put(Dst, 12841);
2043 if (!vk) { 2009 if (!vk) {
2044 dasm_put(Dst, 13233, LJ_TISNUM, LJ_TISNUM); 2010 dasm_put(Dst, 12845, LJ_TISNUM, LJ_TISNUM);
2045 } 2011 }
2046 dasm_put(Dst, 13252); 2012 dasm_put(Dst, 12864);
2047 if (!vk) { 2013 if (!vk) {
2048 dasm_put(Dst, 13256, LJ_TISNUM); 2014 dasm_put(Dst, 12868, LJ_TISNUM);
2049 } 2015 }
2050 if (sse) { 2016 if (sse) {
2051 dasm_put(Dst, 13265); 2017 dasm_put(Dst, 12877);
2052 if (vk) { 2018 if (vk) {
2053 dasm_put(Dst, 13277); 2019 dasm_put(Dst, 12889);
2054 } else { 2020 } else {
2055 dasm_put(Dst, 13296); 2021 dasm_put(Dst, 12908);
2056 } 2022 }
2057 dasm_put(Dst, 13301); 2023 dasm_put(Dst, 12913);
2058 } else { 2024 } else {
2059 dasm_put(Dst, 13314); 2025 dasm_put(Dst, 12926);
2060 if (vk) { 2026 if (vk) {
2061 dasm_put(Dst, 13320); 2027 dasm_put(Dst, 12932);
2062 } else { 2028 } else {
2063 dasm_put(Dst, 13336); 2029 dasm_put(Dst, 12948);
2064 } 2030 }
2065 dasm_put(Dst, 13344); 2031 dasm_put(Dst, 12956);
2066 if (cmov) { 2032 if (cmov) {
2067 dasm_put(Dst, 9450); 2033 dasm_put(Dst, 9001);
2068 } else { 2034 } else {
2069 dasm_put(Dst, 9456); 2035 dasm_put(Dst, 9007);
2070 } 2036 }
2071 if (!cmov) { 2037 if (!cmov) {
2072 dasm_put(Dst, 13349); 2038 dasm_put(Dst, 12961);
2073 } 2039 }
2074 } 2040 }
2075 if (op == BC_FORI) { 2041 if (op == BC_FORI) {
2076 dasm_put(Dst, 13355, -BCBIAS_J*4); 2042 dasm_put(Dst, 12967, -BCBIAS_J*4);
2077 } else if (op == BC_JFORI) { 2043 } else if (op == BC_JFORI) {
2078 dasm_put(Dst, 13365, -BCBIAS_J*4, BC_JLOOP); 2044 dasm_put(Dst, 12977, -BCBIAS_J*4, BC_JLOOP);
2079 } else if (op == BC_IFORL) { 2045 } else if (op == BC_IFORL) {
2080 dasm_put(Dst, 13379, -BCBIAS_J*4); 2046 dasm_put(Dst, 12991, -BCBIAS_J*4);
2081 } else { 2047 } else {
2082 dasm_put(Dst, 13375, BC_JLOOP); 2048 dasm_put(Dst, 12987, BC_JLOOP);
2083 } 2049 }
2084 dasm_put(Dst, 9485); 2050 dasm_put(Dst, 9036);
2085 if (sse) { 2051 if (sse) {
2086 dasm_put(Dst, 13389); 2052 dasm_put(Dst, 13001);
2087 } 2053 }
2088 break; 2054 break;
2089 2055
2090 case BC_ITERL: 2056 case BC_ITERL:
2091#if LJ_HASJIT 2057#if LJ_HASJIT
2092 dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); 2058 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
2093#endif 2059#endif
2094 break; 2060 break;
2095 2061
@@ -2098,33 +2064,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2098 break; 2064 break;
2099#endif 2065#endif
2100 case BC_IITERL: 2066 case BC_IITERL:
2101 dasm_put(Dst, 13400, LJ_TNIL); 2067 dasm_put(Dst, 13012, LJ_TNIL);
2102 if (op == BC_JITERL) { 2068 if (op == BC_JITERL) {
2103 dasm_put(Dst, 13415, BC_JLOOP); 2069 dasm_put(Dst, 13027, BC_JLOOP);
2104 } else { 2070 } else {
2105 dasm_put(Dst, 13429, -BCBIAS_J*4); 2071 dasm_put(Dst, 13041, -BCBIAS_J*4);
2106 } 2072 }
2107 dasm_put(Dst, 9785); 2073 dasm_put(Dst, 9336);
2108 break; 2074 break;
2109 2075
2110 case BC_LOOP: 2076 case BC_LOOP:
2111#if LJ_HASJIT 2077#if LJ_HASJIT
2112 dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); 2078 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
2113#endif 2079#endif
2114 break; 2080 break;
2115 2081
2116 case BC_ILOOP: 2082 case BC_ILOOP:
2117 dasm_put(Dst, 7584); 2083 dasm_put(Dst, 7133);
2118 break; 2084 break;
2119 2085
2120 case BC_JLOOP: 2086 case BC_JLOOP:
2121#if LJ_HASJIT 2087#if LJ_HASJIT
2122 dasm_put(Dst, 13445, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2088 dasm_put(Dst, 13057, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2123#endif 2089#endif
2124 break; 2090 break;
2125 2091
2126 case BC_JMP: 2092 case BC_JMP:
2127 dasm_put(Dst, 13469, -BCBIAS_J*4); 2093 dasm_put(Dst, 13081, -BCBIAS_J*4);
2094 break;
2095
2096 /* -- Function headers -------------------------------------------------- */
2097
2098 /*
2099 ** Reminder: A function may be called with func/args above L->maxstack,
2100 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
2101 ** too. This means all FUNC* ops (including fast functions) must check
2102 ** for stack overflow _before_ adding more slots!
2103 */
2104
2105 case BC_FUNCF:
2106#if LJ_HASJIT
2107#endif
2108 case BC_FUNCV: /* NYI: compiled vararg functions. */
2109 break;
2110
2111 case BC_JFUNCF:
2112#if !LJ_HASJIT
2113 break;
2114#endif
2115 case BC_IFUNCF:
2116 dasm_put(Dst, 13106, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2117 if (op == BC_JFUNCF) {
2118 dasm_put(Dst, 13136, BC_JLOOP);
2119 } else {
2120 dasm_put(Dst, 7133);
2121 }
2122 dasm_put(Dst, 13145, LJ_TNIL);
2123 break;
2124
2125 case BC_JFUNCV:
2126#if !LJ_HASJIT
2127 break;
2128#endif
2129 dasm_put(Dst, 7101);
2130 break; /* NYI: compiled vararg functions. */
2131
2132 case BC_IFUNCV:
2133 dasm_put(Dst, 13167, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2134 if (op == BC_JFUNCV) {
2135 dasm_put(Dst, 13136, BC_JLOOP);
2136 } else {
2137 dasm_put(Dst, 13258, -4+PC2PROTO(k));
2138 }
2139 dasm_put(Dst, 13281, LJ_TNIL);
2140 break;
2141
2142 case BC_FUNCC:
2143 case BC_FUNCCW:
2144 dasm_put(Dst, 13303, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2145 if (op == BC_FUNCC) {
2146 dasm_put(Dst, 13333);
2147 } else {
2148 dasm_put(Dst, 13337);
2149 }
2150 dasm_put(Dst, 13345, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2151 if (op == BC_FUNCC) {
2152 dasm_put(Dst, 13354);
2153 } else {
2154 dasm_put(Dst, 13358, DISPATCH_GL(wrapf));
2155 }
2156 dasm_put(Dst, 13363, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2128 break; 2157 break;
2129 2158
2130 /* ---------------------------------------------------------------------- */ 2159 /* ---------------------------------------------------------------------- */
@@ -2152,7 +2181,7 @@ static int build_backend(BuildCtx *ctx)
2152 2181
2153 build_subroutines(ctx, cmov, sse); 2182 build_subroutines(ctx, cmov, sse);
2154 2183
2155 dasm_put(Dst, 13494); 2184 dasm_put(Dst, 13388);
2156 for (op = 0; op < BC__MAX; op++) 2185 for (op = 0; op < BC__MAX; op++)
2157 build_ins(ctx, (BCOp)op, op, cmov, sse); 2186 build_ins(ctx, (BCOp)op, op, cmov, sse);
2158 2187
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index fdbefb83..b970278e 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -40,6 +40,7 @@
40|.endif 40|.endif
41| 41|
42|.define RA, ecx 42|.define RA, ecx
43|.define RAH, ch
43|.define RAL, cl 44|.define RAL, cl
44|.define RB, ebp // Must be ebp (C callee-save). 45|.define RB, ebp // Must be ebp (C callee-save).
45|.define RC, eax // Must be eax (fcomparepp and others). 46|.define RC, eax // Must be eax (fcomparepp and others).
@@ -282,6 +283,27 @@
282| .endmacro 283| .endmacro
283|.endif 284|.endif
284| 285|
286|// Call decode and dispatch.
287|.macro ins_callt
288| // BASE = new base, RB = LFUNC, RD = nargs+1, [BASE-4] = PC
289| mov PC, LFUNC:RB->pc
290| mov RA, [PC]
291| movzx OP, RAL
292| movzx RA, RAH
293| add PC, 4
294|.if X64
295| jmp aword [DISPATCH+OP*8]
296|.else
297| jmp aword [DISPATCH+OP*4]
298|.endif
299|.endmacro
300|
301|.macro ins_call
302| // BASE = new base, RB = LFUNC, RD = nargs+1
303| mov [BASE-4], PC
304| ins_callt
305|.endmacro
306|
285|//----------------------------------------------------------------------- 307|//-----------------------------------------------------------------------
286| 308|
287|// Macros to test operand types. 309|// Macros to test operand types.
@@ -394,156 +416,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
394 |.code_sub 416 |.code_sub
395 | 417 |
396 |//----------------------------------------------------------------------- 418 |//-----------------------------------------------------------------------
397 |//-- Call and return handling ------------------------------------------- 419 |//-- Return handling ----------------------------------------------------
398 |//----------------------------------------------------------------------- 420 |//-----------------------------------------------------------------------
399 | 421 |
400 |// Reminder: A call gate may be called with func/args above L->maxstack, 422 |->vm_returnp:
401 |// i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot, 423 | test PC, FRAME_P
402 |// too. This means all call gates (L*, C and fast functions) must check 424 | jz ->cont_dispatch
403 |// for stack overflow _before_ adding more slots!
404 |
405 |//-- Call gates ---------------------------------------------------------
406 |
407 |->gate_lf: // Call gate for fixarg Lua functions.
408 | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = old base), PC = return
409 | // DISPATCH initialized
410 | mov BASE, RA
411 | mov [BASE-4], PC // Store caller PC.
412 | mov PC, LFUNC:RB->pc
413 | movzx RA, byte [PC+PC2PROTO(framesize)]
414 | mov KBASE, [PC+PC2PROTO(k)]
415 | mov L:RB, SAVE_L
416 | lea RA, [BASE+RA*8] // Top of frame.
417 | cmp RA, L:RB->maxstack
418 | ja ->gate_lf_growstack
419 | movzx RA, byte [PC+PC2PROTO(numparams)]
420 | cmp NARGS:RC, RA // Check for missing parameters.
421 | jbe >3
422 |2:
423#if LJ_HASJIT
424 | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
425 | // hotcall RB
426#endif
427 | ins_next
428 |
429 |3: // Clear missing parameters.
430 | mov dword [BASE+NARGS:RC*8-4], LJ_TNIL
431 | add NARGS:RC, 1
432 | cmp NARGS:RC, RA // Check for missing parameters.
433 | jbe <3
434 | jmp <2
435 |
436 |->gate_lv: // Call gate for vararg Lua functions.
437 | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = old base), PC = return
438 | // DISPATCH initialized
439 | mov [RA-4], PC // Store caller PC.
440 | lea PC, [NARGS:RC*8+FRAME_VARG]
441 | lea BASE, [RA+PC-FRAME_VARG]
442 | mov [BASE-8], LFUNC:RB // Store copy of LFUNC.
443 | mov [BASE-4], PC // Store delta + FRAME_VARG.
444 | mov PC, LFUNC:RB->pc
445 | movzx RB, byte [PC+PC2PROTO(framesize)]
446 | lea KBASE, [BASE+RB*8]
447 | mov L:RB, SAVE_L
448 | cmp KBASE, L:RB->maxstack
449 | ja ->gate_lv_growstack // Need to grow stack.
450 | mov RC, BASE
451 | movzx RB, byte [PC+PC2PROTO(numparams)]
452 | test RB, RB
453 | jz >2
454 |1: // Copy fixarg slots up to new frame.
455 | add RA, 8
456 | cmp RA, BASE
457 | jnb >3 // Less args than parameters?
458 | mov KBASE, [RA-8]
459 | mov [RC], KBASE
460 | mov KBASE, [RA-4]
461 | mov [RC+4], KBASE
462 | add RC, 8
463 | mov dword [RA-4], LJ_TNIL // Clear old fixarg slot (help the GC).
464 | sub RB, 1
465 | jnz <1
466 |2:
467 | mov KBASE, [PC+PC2PROTO(k)]
468#if LJ_HASJIT
469 | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
470 | // hotcall RB
471#endif
472 | ins_next
473 |
474 |3: // Clear missing parameters.
475 | mov dword [RC+4], LJ_TNIL
476 | add RC, 8
477 | sub RB, 1
478 | jnz <3
479 | jmp <2
480 | 425 |
481 |->gate_cwrap: // Call gate for wrapped C functions. 426 | // Return from pcall or xpcall fast func.
482 | // RA = new base, RB = CFUNC, RC = nargs+1, (BASE = old base), PC = return 427 | and PC, -8
483 | mov [RA-4], PC 428 | sub BASE, PC // Restore caller base.
484 | mov KBASEa, CFUNC:RB->f 429 | lea RAa, [RA+PC-8] // Rebase RA and prepend one result.
485 | mov L:RB, SAVE_L 430 | mov PC, [BASE-4] // Fetch PC of previous frame.
486 | lea RC, [RA+NARGS:RC*8-8] 431 | // Prepending may overwrite the pcall frame, so do it at the end.
487 | mov L:RB->base, RA 432 | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results.
488 | lea RA, [RC+8*LUA_MINSTACK]
489 | mov L:RB->top, RC
490 | cmp RA, L:RB->maxstack
491 |.if X64
492 | mov CARG2, KBASEa
493 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
494 |.else
495 | mov ARG2, KBASEa
496 | mov ARG1, L:RB
497 |.endif
498 | ja ->gate_c_growstack // Need to grow stack.
499 | set_vmstate C
500 | // (lua_State *L, lua_CFunction f)
501 | call aword [DISPATCH+DISPATCH_GL(wrapf)]
502 | set_vmstate INTERP
503 | // nresults returned in eax (RD).
504 | mov BASE, L:RB->base
505 | lea RA, [BASE+RD*8]
506 | neg RA
507 | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
508 |->vm_returnc:
509 | add RD, 1 // RD = nresults+1
510 | mov MULTRES, RD
511 | test PC, FRAME_TYPE
512 | jz ->BC_RET_Z // Handle regular return to Lua.
513 | jmp ->vm_return
514 | 433 |
515 |->gate_c: // Call gate for C functions.
516 | // RA = new base, RB = CFUNC, RC = nargs+1, (BASE = old base), PC = return
517 | mov [RA-4], PC
518 | mov KBASEa, CFUNC:RB->f
519 | mov L:RB, SAVE_L
520 | lea RC, [RA+NARGS:RC*8-8]
521 | mov L:RB->base, RA
522 | lea RA, [RC+8*LUA_MINSTACK]
523 | mov L:RB->top, RC
524 | cmp RA, L:RB->maxstack
525 |.if X64
526 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
527 |.else
528 | mov ARG1, L:RB
529 |.endif
530 | ja ->gate_c_growstack // Need to grow stack.
531 | set_vmstate C
532 | call KBASEa // (lua_State *L)
533 | set_vmstate INTERP
534 | // nresults returned in eax (RD).
535 | mov BASE, L:RB->base
536 | lea RA, [BASE+RD*8]
537 | neg RA
538 | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
539 |->vm_returnc: 434 |->vm_returnc:
540 | add RD, 1 // RD = nresults+1 435 | add RD, 1 // RD = nresults+1
541 | mov MULTRES, RD 436 | mov MULTRES, RD
542 | test PC, FRAME_TYPE 437 | test PC, FRAME_TYPE
543 | jz ->BC_RET_Z // Handle regular return to Lua. 438 | jz ->BC_RET_Z // Handle regular return to Lua.
544 | // Fallthrough.
545 |
546 |//-- Return handling (non-inline) ---------------------------------------
547 | 439 |
548 |->vm_return: 440 |->vm_return:
549 | // BASE = base, RA = resultofs, RD = nresults+1 (= MULTRES), PC = return 441 | // BASE = base, RA = resultofs, RD = nresults+1 (= MULTRES), PC = return
@@ -654,51 +546,41 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
654 | set_vmstate INTERP 546 | set_vmstate INTERP
655 | jmp ->vm_returnc // Increments RD/MULTRES and returns. 547 | jmp ->vm_returnc // Increments RD/MULTRES and returns.
656 | 548 |
657 |->vm_returnp: 549 |//-----------------------------------------------------------------------
658 | test PC, FRAME_P 550 |//-- Grow stack for calls -----------------------------------------------
659 | jz ->cont_dispatch 551 |//-----------------------------------------------------------------------
660 |
661 | // Return from pcall or xpcall fast func.
662 | and PC, -8
663 | sub BASE, PC // Restore caller base.
664 | lea RAa, [RA+PC-8] // Rebase RA and prepend one result.
665 | mov PC, [BASE-4] // Fetch PC of previous frame.
666 | // Prepending may overwrite the pcall frame, so do it at the end.
667 | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results.
668 | jmp ->vm_returnc // Increments RD/MULTRES and returns.
669 |
670 |//-- Grow stack on-demand -----------------------------------------------
671 | 552 |
672 |->gate_c_growstack: // Grow stack for C function. 553 |->vm_growstack_c: // Grow stack for C function.
673 | mov FCARG2, LUA_MINSTACK 554 | mov FCARG2, LUA_MINSTACK
674 | jmp >1 555 | jmp >2
675 | 556 |
676 |->gate_lv_growstack: // Grow stack for vararg Lua function. 557 |->vm_growstack_v: // Grow stack for vararg Lua function.
677 | mov BASE, RA // Drop vararg frame again. 558 | sub RD, 8
559 | jmp >1
678 | 560 |
679 |->gate_lf_growstack: // Grow stack for fixarg Lua function. 561 |->vm_growstack_f: // Grow stack for fixarg Lua function.
680 | // BASE = new base, RC = nargs+1, RB = L, PC = first PC 562 | // BASE = new base, RD = nargs+1, RB = L, PC = first PC
681 | lea RC, [BASE+NARGS:RC*8-8] 563 | lea RD, [BASE+NARGS:RD*8-8]
682 | movzx RA, byte [PC+PC2PROTO(framesize)] 564 |1:
565 | movzx RA, byte [PC-4+PC2PROTO(framesize)]
683 | add PC, 4 // Must point after first instruction. 566 | add PC, 4 // Must point after first instruction.
684 | mov L:RB->base, BASE 567 | mov L:RB->base, BASE
685 | mov L:RB->top, RC 568 | mov L:RB->top, RD
686 | mov SAVE_PC, PC 569 | mov SAVE_PC, PC
687 | mov FCARG2, RA 570 | mov FCARG2, RA
688 |1: 571 |2:
572 | // RB = L, L->base = new base, L->top = top
689 | mov FCARG1, L:RB 573 | mov FCARG1, L:RB
690 | // L:RB = L, L->base = new base, L->top = top
691 | // SAVE_PC = initial PC+1 (undefined for C functions)
692 | call extern lj_state_growstack@8 // (lua_State *L, int n) 574 | call extern lj_state_growstack@8 // (lua_State *L, int n)
693 | mov RA, L:RB->base 575 | mov BASE, L:RB->base
694 | mov RC, L:RB->top 576 | mov RD, L:RB->top
695 | mov LFUNC:RB, [RA-8] 577 | mov LFUNC:RB, [BASE-8]
696 | mov PC, [RA-4] 578 | mov PC, [BASE-4]
697 | sub RC, RA 579 | sub RD, BASE
698 | shr RC, 3 580 | shr RD, 3
699 | add NARGS:RC, 1 581 | add NARGS:RD, 1
700 | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = invalid), PC restored. 582 | // BASE = new base, RB = LFUNC, RD = nargs+1, PC restored.
701 | jmp aword LFUNC:RB->gate // Just retry call. 583 | ins_callt // Just retry the call.
702 | 584 |
703 |//----------------------------------------------------------------------- 585 |//-----------------------------------------------------------------------
704 |//-- Entry points into the assembler VM --------------------------------- 586 |//-- Entry points into the assembler VM ---------------------------------
@@ -789,16 +671,20 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
789 | add PC, RA 671 | add PC, RA
790 | sub PC, BASE // PC = frame delta + frame type 672 | sub PC, BASE // PC = frame delta + frame type
791 | 673 |
792 | mov RC, L:RB->top 674 | mov RD, L:RB->top
793 | sub RC, RA 675 | sub RD, RA
794 | shr NARGS:RC, 3 676 | shr NARGS:RD, 3
795 | add NARGS:RC, 1 // RC = nargs+1 677 | add NARGS:RD, 1 // RD = nargs+1
796 | 678 |
679 |->vm_call_dispatch:
797 | mov LFUNC:RB, [RA-8] 680 | mov LFUNC:RB, [RA-8]
798 | cmp dword [RA-4], LJ_TFUNC 681 | cmp dword [RA-4], LJ_TFUNC
799 | jne ->vmeta_call // Ensure KBASE defined and != BASE. 682 | jne ->vmeta_call // Ensure KBASE defined and != BASE.
800 | jmp aword LFUNC:RB->gate 683 |
801 | // RA = new base, RB = LFUNC/CFUNC, RC = nargs+1. 684 |->vm_call_dispatch_f:
685 | mov BASE, RA
686 | ins_call
687 | // BASE = new base, RD = nargs+1
802 | 688 |
803 |->vm_cpcall: // Setup protected C frame, call C. 689 |->vm_cpcall: // Setup protected C frame, call C.
804 | // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp) 690 | // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp)
@@ -979,8 +865,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
979 | lea PC, [RA+FRAME_CONT] 865 | lea PC, [RA+FRAME_CONT]
980 | sub PC, BASE 866 | sub PC, BASE
981 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here. 867 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here.
982 | mov NARGS:RC, 3 // 2+1 args for func(t, k). 868 | mov NARGS:RD, 2+1 // 2 args for func(t, k).
983 | jmp aword LFUNC:RB->gate 869 | jmp ->vm_call_dispatch_f
984 | 870 |
985 |//----------------------------------------------------------------------- 871 |//-----------------------------------------------------------------------
986 | 872 |
@@ -1058,8 +944,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1058 | lea PC, [RA+FRAME_CONT] 944 | lea PC, [RA+FRAME_CONT]
1059 | sub PC, BASE 945 | sub PC, BASE
1060 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here. 946 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here.
1061 | mov NARGS:RC, 4 // 3+1 args for func(t, k, v). 947 | mov NARGS:RD, 3+1 // 3 args for func(t, k, v).
1062 | jmp aword LFUNC:RB->gate 948 | jmp ->vm_call_dispatch_f
1063 | 949 |
1064 |//-- Comparison metamethods --------------------------------------------- 950 |//-- Comparison metamethods ---------------------------------------------
1065 | 951 |
@@ -1206,11 +1092,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1206 | sub RC, BASE 1092 | sub RC, BASE
1207 | mov [RA-12], PC // [cont|PC] 1093 | mov [RA-12], PC // [cont|PC]
1208 | lea PC, [RC+FRAME_CONT] 1094 | lea PC, [RC+FRAME_CONT]
1209 | mov LFUNC:RB, [RA-8] 1095 | mov NARGS:RD, 2+1 // 2 args for func(o1, o2).
1210 | mov NARGS:RC, 3 // 2+1 args for func(o1, o2). 1096 | jmp ->vm_call_dispatch
1211 | cmp dword [RA-4], LJ_TFUNC
1212 | jne ->vmeta_call
1213 | jmp aword LFUNC:RB->gate
1214 | 1097 |
1215 |->vmeta_len: 1098 |->vmeta_len:
1216 | mov L:RB, SAVE_L 1099 | mov L:RB, SAVE_L
@@ -1225,19 +1108,21 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1225 | 1108 |
1226 |//-- Call metamethod ---------------------------------------------------- 1109 |//-- Call metamethod ----------------------------------------------------
1227 | 1110 |
1111 |->vmeta_call_ra:
1112 | lea RA, [BASE+RA*8+8]
1228 |->vmeta_call: // Resolve and call __call metamethod. 1113 |->vmeta_call: // Resolve and call __call metamethod.
1229 | // RA = new base, RC = nargs+1, BASE = old base, PC = return 1114 | // BASE = old base, RA = new base, RC = nargs+1, PC = return
1230 | mov TMP2, RA // Save RA, RC for us. 1115 | mov TMP2, RA // Save RA, RC for us.
1231 | mov TMP1, NARGS:RC 1116 | mov TMP1, NARGS:RD
1232 | sub RA, 8 1117 | sub RA, 8
1233 |.if X64 1118 |.if X64
1234 | mov L:RB, SAVE_L 1119 | mov L:RB, SAVE_L
1235 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE. 1120 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
1236 | mov CARG2d, RA 1121 | mov CARG2d, RA
1237 | lea CARG3d, [RA+NARGS:RC*8] 1122 | lea CARG3d, [RA+NARGS:RD*8]
1238 | mov CARG1d, L:RB // Caveat: CARG1d may be RA. 1123 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
1239 |.else 1124 |.else
1240 | lea RC, [RA+NARGS:RC*8] 1125 | lea RC, [RA+NARGS:RD*8]
1241 | mov L:RB, SAVE_L 1126 | mov L:RB, SAVE_L
1242 | mov ARG2, RA 1127 | mov ARG2, RA
1243 | mov ARG3, RC 1128 | mov ARG3, RC
@@ -1248,13 +1133,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1248 | call extern lj_meta_call // (lua_State *L, TValue *func, TValue *top) 1133 | call extern lj_meta_call // (lua_State *L, TValue *func, TValue *top)
1249 | mov BASE, L:RB->base 1134 | mov BASE, L:RB->base
1250 | mov RA, TMP2 1135 | mov RA, TMP2
1251 | mov NARGS:RC, TMP1 1136 | mov NARGS:RD, TMP1
1252 | mov LFUNC:RB, [RA-8] 1137 | mov LFUNC:RB, [RA-8]
1253 | add NARGS:RC, 1 1138 | add NARGS:RD, 1
1254 | // This is fragile. L->base must not move, KBASE must always be defined. 1139 | // This is fragile. L->base must not move, KBASE must always be defined.
1255 | cmp KBASE, BASE // Continue with CALLT if flag set. 1140 | cmp KBASE, BASE // Continue with CALLT if flag set.
1256 | je ->BC_CALLT_Z 1141 | je ->BC_CALLT_Z
1257 | jmp aword LFUNC:RB->gate // Otherwise call resolved metamethod. 1142 | mov BASE, RA
1143 | ins_call // Otherwise call resolved metamethod.
1258 | 1144 |
1259 |//-- Argument coercion for 'for' statement ------------------------------ 1145 |//-- Argument coercion for 'for' statement ------------------------------
1260 | 1146 |
@@ -1271,9 +1157,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1271 | movzx OP, RCL 1157 | movzx OP, RCL
1272 | shr RC, 16 1158 | shr RC, 16
1273 |.if X64 1159 |.if X64
1274 | jmp aword [DISPATCH+OP*8+BC__MAX*8] // Retry FORI or JFORI. 1160 | jmp aword [DISPATCH+OP*8+GG_DISP2STATIC] // Retry FORI or JFORI.
1275 |.else 1161 |.else
1276 | jmp aword [DISPATCH+OP*4+BC__MAX*4] // Retry FORI or JFORI. 1162 | jmp aword [DISPATCH+OP*4+GG_DISP2STATIC] // Retry FORI or JFORI.
1277 |.endif 1163 |.endif
1278 | 1164 |
1279 |//----------------------------------------------------------------------- 1165 |//-----------------------------------------------------------------------
@@ -1286,31 +1172,31 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1286 | 1172 |
1287 |.macro .ffunc_1, name 1173 |.macro .ffunc_1, name
1288 |->ff_ .. name: 1174 |->ff_ .. name:
1289 | cmp NARGS:RC, 1+1; jb ->fff_fallback 1175 | cmp NARGS:RD, 1+1; jb ->fff_fallback
1290 |.endmacro 1176 |.endmacro
1291 | 1177 |
1292 |.macro .ffunc_2, name 1178 |.macro .ffunc_2, name
1293 |->ff_ .. name: 1179 |->ff_ .. name:
1294 | cmp NARGS:RC, 2+1; jb ->fff_fallback 1180 | cmp NARGS:RD, 2+1; jb ->fff_fallback
1295 |.endmacro 1181 |.endmacro
1296 | 1182 |
1297 |.macro .ffunc_n, name 1183 |.macro .ffunc_n, name
1298 | .ffunc_1 name 1184 | .ffunc_1 name
1299 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1185 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1300 | fld qword [RA] 1186 | fld qword [BASE]
1301 |.endmacro 1187 |.endmacro
1302 | 1188 |
1303 |.macro .ffunc_n, name, op 1189 |.macro .ffunc_n, name, op
1304 | .ffunc_1 name 1190 | .ffunc_1 name
1305 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1191 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1306 | op 1192 | op
1307 | fld qword [RA] 1193 | fld qword [BASE]
1308 |.endmacro 1194 |.endmacro
1309 | 1195 |
1310 |.macro .ffunc_nsse, name, op 1196 |.macro .ffunc_nsse, name, op
1311 | .ffunc_1 name 1197 | .ffunc_1 name
1312 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1198 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1313 | op xmm0, qword [RA] 1199 | op xmm0, qword [BASE]
1314 |.endmacro 1200 |.endmacro
1315 | 1201 |
1316 |.macro .ffunc_nsse, name 1202 |.macro .ffunc_nsse, name
@@ -1319,26 +1205,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1319 | 1205 |
1320 |.macro .ffunc_nn, name 1206 |.macro .ffunc_nn, name
1321 | .ffunc_2 name 1207 | .ffunc_2 name
1322 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1208 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1323 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1209 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1324 | fld qword [RA] 1210 | fld qword [BASE]
1325 | fld qword [RA+8] 1211 | fld qword [BASE+8]
1326 |.endmacro 1212 |.endmacro
1327 | 1213 |
1328 |.macro .ffunc_nnsse, name 1214 |.macro .ffunc_nnsse, name
1329 | .ffunc_1 name 1215 | .ffunc_1 name
1330 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1216 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1331 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1217 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1332 | movsd xmm0, qword [RA] 1218 | movsd xmm0, qword [BASE]
1333 | movsd xmm1, qword [RA+8] 1219 | movsd xmm1, qword [BASE+8]
1334 |.endmacro 1220 |.endmacro
1335 | 1221 |
1336 |.macro .ffunc_nnr, name 1222 |.macro .ffunc_nnr, name
1337 | .ffunc_2 name 1223 | .ffunc_2 name
1338 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1224 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1339 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1225 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1340 | fld qword [RA+8] 1226 | fld qword [BASE+8]
1341 | fld qword [RA] 1227 | fld qword [BASE]
1342 |.endmacro 1228 |.endmacro
1343 | 1229 |
1344 |// Inlined GC threshold check. Caveat: uses label 1. 1230 |// Inlined GC threshold check. Caveat: uses label 1.
@@ -1353,15 +1239,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1353 |//-- Base library: checks ----------------------------------------------- 1239 |//-- Base library: checks -----------------------------------------------
1354 | 1240 |
1355 |.ffunc_1 assert 1241 |.ffunc_1 assert
1356 | mov RB, [RA+4] 1242 | mov RB, [BASE+4]
1357 | cmp RB, LJ_TISTRUECOND; jae ->fff_fallback 1243 | cmp RB, LJ_TISTRUECOND; jae ->fff_fallback
1244 | mov PC, [BASE-4]
1358 | mov MULTRES, RD 1245 | mov MULTRES, RD
1359 | mov [RA-4], RB 1246 | mov [BASE-4], RB
1360 | mov RB, [RA] 1247 | mov RB, [BASE]
1361 | mov [RA-8], RB 1248 | mov [BASE-8], RB
1362 | sub RD, 2 1249 | sub RD, 2
1363 | jz >2 1250 | jz >2
1364 | mov TMP1, RA 1251 | mov RA, BASE
1365 |1: 1252 |1:
1366 | add RA, 8 1253 | add RA, 8
1367 | mov RB, [RA+4] 1254 | mov RB, [RA+4]
@@ -1370,13 +1257,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1370 | mov [RA-8], RB 1257 | mov [RA-8], RB
1371 | sub RD, 1 1258 | sub RD, 1
1372 | jnz <1 1259 | jnz <1
1373 | mov RA, TMP1
1374 |2: 1260 |2:
1375 | mov RD, MULTRES 1261 | mov RD, MULTRES
1376 | jmp ->fff_res_ 1262 | jmp ->fff_res_
1377 | 1263 |
1378 |.ffunc_1 type 1264 |.ffunc_1 type
1379 | mov RB, [RA+4] 1265 | mov RB, [BASE+4]
1380 | mov RC, ~LJ_TNUMX 1266 | mov RC, ~LJ_TNUMX
1381 | not RB 1267 | not RB
1382 | cmp RC, RB 1268 | cmp RC, RB
@@ -1385,29 +1271,29 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1385 ||} else { 1271 ||} else {
1386 | jbe >1; mov RC, RB; 1: 1272 | jbe >1; mov RC, RB; 1:
1387 ||} 1273 ||}
1388 | mov CFUNC:RB, [RA-8] 1274 | mov CFUNC:RB, [BASE-8]
1389 | mov STR:RC, [CFUNC:RB+RC*8+((char *)(&((GCfuncC *)0)->upvalue))] 1275 | mov STR:RC, [CFUNC:RB+RC*8+((char *)(&((GCfuncC *)0)->upvalue))]
1390 | mov dword [RA-4], LJ_TSTR 1276 | mov PC, [BASE-4]
1391 | mov [RA-8], STR:RC 1277 | mov dword [BASE-4], LJ_TSTR
1278 | mov [BASE-8], STR:RC
1392 | jmp ->fff_res1 1279 | jmp ->fff_res1
1393 | 1280 |
1394 |//-- Base library: getters and setters --------------------------------- 1281 |//-- Base library: getters and setters ---------------------------------
1395 | 1282 |
1396 |.ffunc_1 getmetatable 1283 |.ffunc_1 getmetatable
1397 | mov RB, [RA+4] 1284 | mov RB, [BASE+4]
1285 | mov PC, [BASE-4]
1398 | cmp RB, LJ_TTAB; jne >6 1286 | cmp RB, LJ_TTAB; jne >6
1399 |1: // Field metatable must be at same offset for GCtab and GCudata! 1287 |1: // Field metatable must be at same offset for GCtab and GCudata!
1400 | mov TAB:RB, [RA] 1288 | mov TAB:RB, [BASE]
1401 | mov TAB:RB, TAB:RB->metatable 1289 | mov TAB:RB, TAB:RB->metatable
1402 |2: 1290 |2:
1403 | test TAB:RB, TAB:RB 1291 | test TAB:RB, TAB:RB
1404 | mov dword [RA-4], LJ_TNIL 1292 | mov dword [BASE-4], LJ_TNIL
1405 | jz ->fff_res1 1293 | jz ->fff_res1
1406 | mov CFUNC:RC, [RA-8]
1407 | mov STR:RC, [DISPATCH+DISPATCH_GL(mmname)+4*MM_metatable] 1294 | mov STR:RC, [DISPATCH+DISPATCH_GL(mmname)+4*MM_metatable]
1408 | mov dword [RA-4], LJ_TTAB // Store metatable as default result. 1295 | mov dword [BASE-4], LJ_TTAB // Store metatable as default result.
1409 | mov [RA-8], TAB:RB 1296 | mov [BASE-8], TAB:RB
1410 | mov TMP1, RA // Save result pointer.
1411 | mov RA, TAB:RB->hmask 1297 | mov RA, TAB:RB->hmask
1412 | and RA, STR:RC->hash 1298 | and RA, STR:RC->hash
1413 | imul RA, #NODE 1299 | imul RA, #NODE
@@ -1424,11 +1310,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1424 | jmp ->fff_res1 // Not found, keep default result. 1310 | jmp ->fff_res1 // Not found, keep default result.
1425 |5: 1311 |5:
1426 | mov RB, [RA+4] 1312 | mov RB, [RA+4]
1427 | cmp RB, LJ_TNIL; je ->fff_res1 // Dito for nil value. 1313 | cmp RB, LJ_TNIL; je ->fff_res1 // Ditto for nil value.
1428 | mov RC, [RA] 1314 | mov RC, [RA]
1429 | mov RA, TMP1 // Restore result pointer. 1315 | mov [BASE-4], RB // Return value of mt.__metatable.
1430 | mov [RA-4], RB // Return value of mt.__metatable. 1316 | mov [BASE-8], RC
1431 | mov [RA-8], RC
1432 | jmp ->fff_res1 1317 | jmp ->fff_res1
1433 | 1318 |
1434 |6: 1319 |6:
@@ -1441,15 +1326,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1441 | jmp <2 1326 | jmp <2
1442 | 1327 |
1443 |.ffunc_2 setmetatable 1328 |.ffunc_2 setmetatable
1444 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1329 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1445 | // Fast path: no mt for table yet and not clearing the mt. 1330 | // Fast path: no mt for table yet and not clearing the mt.
1446 | mov TAB:RB, [RA] 1331 | mov TAB:RB, [BASE]
1447 | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback 1332 | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback
1448 | cmp dword [RA+12], LJ_TTAB; jne ->fff_fallback 1333 | cmp dword [BASE+12], LJ_TTAB; jne ->fff_fallback
1449 | mov TAB:RC, [RA+8] 1334 | mov TAB:RC, [BASE+8]
1450 | mov TAB:RB->metatable, TAB:RC 1335 | mov TAB:RB->metatable, TAB:RC
1451 | mov dword [RA-4], LJ_TTAB // Return original table. 1336 | mov PC, [BASE-4]
1452 | mov [RA-8], TAB:RB 1337 | mov dword [BASE-4], LJ_TTAB // Return original table.
1338 | mov [BASE-8], TAB:RB
1453 | test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table) 1339 | test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table)
1454 | jz >1 1340 | jz >1
1455 | // Possible write barrier. Table is black, but skip iswhite(mt) check. 1341 | // Possible write barrier. Table is black, but skip iswhite(mt) check.
@@ -1458,70 +1344,73 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1458 | jmp ->fff_res1 1344 | jmp ->fff_res1
1459 | 1345 |
1460 |.ffunc_2 rawget 1346 |.ffunc_2 rawget
1461 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1347 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1462 |.if X64 1348 |.if X64WIN
1463 | mov TMP1, BASE // Save BASE and RA. 1349 | mov RB, BASE // Save BASE.
1464 | mov RB, RA 1350 | lea CARG3d, [BASE+8]
1465 | mov CARG2d, [RA] 1351 | mov CARG2d, [BASE] // Caveat: CARG2d == BASE.
1466 | lea CARG3d, [RA+8] 1352 | mov CARG1d, SAVE_L
1467 | mov CARG1d, SAVE_L // Caveat: CARG1d may be RA. 1353 |.elif X64
1354 | mov RB, BASE // Save BASE.
1355 | mov CARG2d, [BASE]
1356 | lea CARG3d, [BASE+8] // Caveat: CARG3d == BASE.
1357 | mov CARG1d, SAVE_L
1468 |.else 1358 |.else
1469 | mov TAB:RC, [RA] 1359 | mov TAB:RD, [BASE]
1470 | mov L:RB, SAVE_L 1360 | mov L:RB, SAVE_L
1471 | mov ARG2, TAB:RC 1361 | mov ARG2, TAB:RD
1472 | mov ARG1, L:RB 1362 | mov ARG1, L:RB
1473 | mov RB, RA 1363 | mov RB, BASE // Save BASE.
1474 | mov TMP1, BASE // Save BASE and RA. 1364 | add BASE, 8
1475 | add RA, 8 1365 | mov ARG3, BASE
1476 | mov ARG3, RA
1477 |.endif 1366 |.endif
1478 | call extern lj_tab_get // (lua_State *L, GCtab *t, cTValue *key) 1367 | call extern lj_tab_get // (lua_State *L, GCtab *t, cTValue *key)
1479 | // cTValue * returned in eax (RC). 1368 | // cTValue * returned in eax (RD).
1480 | mov RA, RB 1369 | mov BASE, RB // Restore BASE.
1481 | mov BASE, TMP1 1370 | mov RB, [RD] // Copy table slot.
1482 | mov RB, [RC] // Copy table slot. 1371 | mov RD, [RD+4]
1483 | mov RC, [RC+4] 1372 | mov PC, [BASE-4]
1484 | mov [RA-8], RB 1373 | mov [BASE-8], RB
1485 | mov [RA-4], RC 1374 | mov [BASE-4], RD
1486 | jmp ->fff_res1 1375 | jmp ->fff_res1
1487 | 1376 |
1488 |//-- Base library: conversions ------------------------------------------ 1377 |//-- Base library: conversions ------------------------------------------
1489 | 1378 |
1490 |.ffunc tonumber 1379 |.ffunc tonumber
1491 | // Only handles the number case inline (without a base argument). 1380 | // Only handles the number case inline (without a base argument).
1492 | cmp NARGS:RC, 1+1; jne ->fff_fallback // Exactly one argument. 1381 | cmp NARGS:RD, 1+1; jne ->fff_fallback // Exactly one argument.
1493 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1382 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1494 if (sse) { 1383 if (sse) {
1495 | movsd xmm0, qword [RA]; jmp ->fff_resxmm0 1384 | movsd xmm0, qword [BASE]; jmp ->fff_resxmm0
1496 } else { 1385 } else {
1497 | fld qword [RA]; jmp ->fff_resn 1386 | fld qword [BASE]; jmp ->fff_resn
1498 } 1387 }
1499 | 1388 |
1500 |.ffunc_1 tostring 1389 |.ffunc_1 tostring
1501 | // Only handles the string or number case inline. 1390 | // Only handles the string or number case inline.
1502 | cmp dword [RA+4], LJ_TSTR; jne >3 1391 | mov PC, [BASE-4]
1392 | cmp dword [BASE+4], LJ_TSTR; jne >3
1503 | // A __tostring method in the string base metatable is ignored. 1393 | // A __tostring method in the string base metatable is ignored.
1504 | mov STR:RC, [RA] 1394 | mov STR:RD, [BASE]
1505 |2: 1395 |2:
1506 | mov dword [RA-4], LJ_TSTR 1396 | mov dword [BASE-4], LJ_TSTR
1507 | mov [RA-8], STR:RC 1397 | mov [BASE-8], STR:RD
1508 | jmp ->fff_res1 1398 | jmp ->fff_res1
1509 |3: // Handle numbers inline, unless a number base metatable is present. 1399 |3: // Handle numbers inline, unless a number base metatable is present.
1510 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1400 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1511 | cmp dword [DISPATCH+DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM])], 0 1401 | cmp dword [DISPATCH+DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM])], 0
1512 | jne ->fff_fallback 1402 | jne ->fff_fallback
1513 | ffgccheck // Caveat: uses label 1. 1403 | ffgccheck // Caveat: uses label 1.
1514 | mov L:RB, SAVE_L 1404 | mov L:RB, SAVE_L
1515 | mov L:RB->base, RA // Add frame since C call can throw. 1405 | mov L:RB->base, BASE // Add frame since C call can throw.
1516 | mov [RA-4], PC
1517 | mov SAVE_PC, PC // Redundant (but a defined value). 1406 | mov SAVE_PC, PC // Redundant (but a defined value).
1518 | mov TMP1, BASE // Save BASE. 1407 |.if X64 and not X64WIN
1519 | mov FCARG2, RA // Caveat: FCARG2 == BASE 1408 | mov FCARG2, BASE // Otherwise: FCARG2 == BASE
1520 | mov L:FCARG1, L:RB // Caveat: FCARG1 == RA 1409 |.endif
1410 | mov L:FCARG1, L:RB
1521 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np) 1411 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np)
1522 | // GCstr returned in eax (RC). 1412 | // GCstr returned in eax (RD).
1523 | mov RA, L:RB->base 1413 | mov BASE, L:RB->base
1524 | mov BASE, TMP1
1525 | jmp <2 1414 | jmp <2
1526 | 1415 |
1527 |//-- Base library: iterators ------------------------------------------- 1416 |//-- Base library: iterators -------------------------------------------
@@ -1529,120 +1418,117 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1529 |.ffunc_1 next 1418 |.ffunc_1 next
1530 | je >2 // Missing 2nd arg? 1419 | je >2 // Missing 2nd arg?
1531 |1: 1420 |1:
1532 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1421 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1533 |.if X64
1534 | mov TMP1, BASE // Save BASE.
1535 | mov CARG2d, [RA]
1536 | mov L:RB, SAVE_L 1422 | mov L:RB, SAVE_L
1537 | mov L:RB->base, RA // Add frame since C call can throw. 1423 | mov L:RB->base, BASE // Add frame since C call can throw.
1538 | mov [RA-4], PC 1424 | mov PC, [BASE-4]
1539 | lea CARG3d, [RA+8] 1425 |.if X64WIN
1540 | mov CARG1d, L:RB // Caveat: CARG1d may be RA. 1426 | lea CARG3d, [BASE+8]
1427 | mov CARG2d, [BASE] // Caveat: CARG2d == BASE.
1428 | mov CARG1d, L:RB
1429 |.elif X64
1430 | mov CARG2d, [BASE]
1431 | lea CARG3d, [BASE+8] // Caveat: CARG3d == BASE.
1432 | mov CARG1d, L:RB
1541 |.else 1433 |.else
1542 | mov TAB:RB, [RA] 1434 | mov TAB:RD, [BASE]
1543 | mov ARG2, TAB:RB 1435 | mov ARG2, TAB:RD
1544 | mov L:RB, SAVE_L
1545 | mov ARG1, L:RB 1436 | mov ARG1, L:RB
1546 | mov L:RB->base, RA // Add frame since C call can throw. 1437 | add BASE, 8
1547 | mov [RA-4], PC 1438 | mov ARG3, BASE
1548 | mov TMP1, BASE // Save BASE.
1549 | add RA, 8
1550 | mov ARG3, RA
1551 |.endif 1439 |.endif
1552 | mov SAVE_PC, PC // Redundant (but a defined value). 1440 | mov SAVE_PC, PC // Redundant (but a defined value).
1553 | call extern lj_tab_next // (lua_State *L, GCtab *t, TValue *key) 1441 | call extern lj_tab_next // (lua_State *L, GCtab *t, TValue *key)
1554 | // Flag returned in eax (RC). 1442 | // Flag returned in eax (RD).
1555 | mov RA, L:RB->base 1443 | mov BASE, L:RB->base
1556 | mov BASE, TMP1 1444 | test RD, RD; jz >3 // End of traversal?
1557 | test RC, RC; jz >3 // End of traversal? 1445 | mov RB, [BASE+8] // Copy key and value to results.
1558 | mov RB, [RA+8] // Copy key and value to results. 1446 | mov RD, [BASE+12]
1559 | mov RC, [RA+12] 1447 | mov [BASE-8], RB
1560 | mov [RA-8], RB 1448 | mov [BASE-4], RD
1561 | mov [RA-4], RC 1449 | mov RB, [BASE+16]
1562 | mov RB, [RA+16] 1450 | mov RD, [BASE+20]
1563 | mov RC, [RA+20] 1451 | mov [BASE], RB
1564 | mov [RA], RB 1452 | mov [BASE+4], RD
1565 | mov [RA+4], RC
1566 |->fff_res2: 1453 |->fff_res2:
1567 | mov RD, 1+2 1454 | mov RD, 1+2
1568 | jmp ->fff_res 1455 | jmp ->fff_res
1569 |2: // Set missing 2nd arg to nil. 1456 |2: // Set missing 2nd arg to nil.
1570 | mov dword [RA+12], LJ_TNIL 1457 | mov dword [BASE+12], LJ_TNIL
1571 | jmp <1 1458 | jmp <1
1572 |3: // End of traversal: return nil. 1459 |3: // End of traversal: return nil.
1573 | mov dword [RA-4], LJ_TNIL 1460 | mov dword [BASE-4], LJ_TNIL
1574 | jmp ->fff_res1 1461 | jmp ->fff_res1
1575 | 1462 |
1576 |.ffunc_1 pairs 1463 |.ffunc_1 pairs
1577 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1464 | mov CFUNC:RB, [BASE-8]
1578 | mov CFUNC:RC, CFUNC:RB->upvalue[0] 1465 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1579 | mov dword [RA-4], LJ_TFUNC 1466 | mov CFUNC:RD, CFUNC:RB->upvalue[0]
1580 | mov [RA-8], CFUNC:RC 1467 | mov PC, [BASE-4]
1581 | mov dword [RA+12], LJ_TNIL 1468 | mov dword [BASE-4], LJ_TFUNC
1469 | mov [BASE-8], CFUNC:RD
1470 | mov dword [BASE+12], LJ_TNIL
1582 | mov RD, 1+3 1471 | mov RD, 1+3
1583 | jmp ->fff_res 1472 | jmp ->fff_res
1584 | 1473 |
1585 |.ffunc_1 ipairs_aux 1474 |.ffunc_1 ipairs_aux
1586 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1475 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1587 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1476 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1477 | mov PC, [BASE-4]
1588 if (sse) { 1478 if (sse) {
1589 | movsd xmm0, qword [RA+8] 1479 | movsd xmm0, qword [BASE+8]
1590 | sseconst_1 xmm1, RBa 1480 | sseconst_1 xmm1, RBa
1591 | addsd xmm0, xmm1 1481 | addsd xmm0, xmm1
1592 | cvtsd2si RC, xmm0 1482 | cvtsd2si RD, xmm0
1593 | movsd qword [RA-8], xmm0 1483 | movsd qword [BASE-8], xmm0
1594 } else { 1484 } else {
1595 |.if not X64 1485 |.if not X64
1596 | fld qword [RA+8] 1486 | fld qword [BASE+8]
1597 | fld1 1487 | fld1
1598 | faddp st1 1488 | faddp st1
1599 | fist ARG1 1489 | fist ARG1
1600 | fstp qword [RA-8] 1490 | fstp qword [BASE-8]
1601 | mov RC, ARG1 1491 | mov RD, ARG1
1602 |.endif 1492 |.endif
1603 } 1493 }
1604 | mov TAB:RB, [RA] 1494 | mov TAB:RB, [BASE]
1605 | cmp RC, TAB:RB->asize; jae >2 // Not in array part? 1495 | cmp RD, TAB:RB->asize; jae >2 // Not in array part?
1606 | shl RC, 3 1496 | shl RD, 3
1607 | add RC, TAB:RB->array 1497 | add RD, TAB:RB->array
1608 |1: 1498 |1:
1609 | cmp dword [RC+4], LJ_TNIL; je ->fff_res0 1499 | cmp dword [RD+4], LJ_TNIL; je ->fff_res0
1610 | mov RB, [RC] // Copy array slot. 1500 | mov RB, [RD] // Copy array slot.
1611 | mov RC, [RC+4] 1501 | mov RD, [RD+4]
1612 | mov [RA], RB 1502 | mov [BASE], RB
1613 | mov [RA+4], RC 1503 | mov [BASE+4], RD
1614 | jmp ->fff_res2 1504 | jmp ->fff_res2
1615 |2: // Check for empty hash part first. Otherwise call C function. 1505 |2: // Check for empty hash part first. Otherwise call C function.
1616 | cmp dword TAB:RB->hmask, 0; je ->fff_res0 1506 | cmp dword TAB:RB->hmask, 0; je ->fff_res0
1617 | mov TMP1, BASE // Save BASE and RA.
1618 |.if X64 and not X64WIN
1619 | mov FCARG1, TAB:RB 1507 | mov FCARG1, TAB:RB
1620 | mov RB, RA 1508 | mov RB, BASE // Save BASE.
1621 |.else 1509 | mov FCARG2, RD // Caveat: FCARG2 == BASE
1622 | xchg FCARG1, TAB:RB // Caveat: FCARG1 == RA
1623 |.endif
1624 | mov FCARG2, RC
1625 | call extern lj_tab_getinth@8 // (GCtab *t, int32_t key) 1510 | call extern lj_tab_getinth@8 // (GCtab *t, int32_t key)
1626 | // cTValue * or NULL returned in eax (RC). 1511 | // cTValue * or NULL returned in eax (RD).
1627 | mov RA, RB 1512 | mov BASE, RB
1628 | mov BASE, TMP1 1513 | test RD, RD
1629 | test RC, RC
1630 | jnz <1 1514 | jnz <1
1631 |->fff_res0: 1515 |->fff_res0:
1632 | mov RD, 1+0 1516 | mov RD, 1+0
1633 | jmp ->fff_res 1517 | jmp ->fff_res
1634 | 1518 |
1635 |.ffunc_1 ipairs 1519 |.ffunc_1 ipairs
1636 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1520 | mov CFUNC:RB, [BASE-8]
1637 | mov CFUNC:RC, CFUNC:RB->upvalue[0] 1521 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1638 | mov dword [RA-4], LJ_TFUNC 1522 | mov CFUNC:RD, CFUNC:RB->upvalue[0]
1639 | mov [RA-8], CFUNC:RC 1523 | mov PC, [BASE-4]
1524 | mov dword [BASE-4], LJ_TFUNC
1525 | mov [BASE-8], CFUNC:RD
1640 if (sse) { 1526 if (sse) {
1641 | xorps xmm0, xmm0 1527 | xorps xmm0, xmm0
1642 | movsd qword [RA+8], xmm0 1528 | movsd qword [BASE+8], xmm0
1643 } else { 1529 } else {
1644 | fldz 1530 | fldz
1645 | fstp qword [RA+8] 1531 | fstp qword [BASE+8]
1646 } 1532 }
1647 | mov RD, 1+3 1533 | mov RD, 1+3
1648 | jmp ->fff_res 1534 | jmp ->fff_res
@@ -1650,54 +1536,42 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1650 |//-- Base library: catch errors ---------------------------------------- 1536 |//-- Base library: catch errors ----------------------------------------
1651 | 1537 |
1652 |.ffunc_1 pcall 1538 |.ffunc_1 pcall
1653 | mov [RA-4], PC 1539 | lea RA, [BASE+8]
1540 | sub NARGS:RD, 1
1654 | mov PC, 8+FRAME_PCALL 1541 | mov PC, 8+FRAME_PCALL
1655 | mov BASE, RA
1656 | add RA, 8
1657 | sub NARGS:RC, 1
1658 | mov LFUNC:RB, [RA-8]
1659 |1: 1542 |1:
1660 | test byte [DISPATCH+DISPATCH_GL(hookmask)], HOOK_ACTIVE 1543 | movzx RB, byte [DISPATCH+DISPATCH_GL(hookmask)]
1661 | jnz >3 // Hook active before pcall? 1544 | shr RB, HOOK_ACTIVE_SHIFT
1662 |2: 1545 | and RB, 1
1663 | cmp dword [RA-4], LJ_TFUNC 1546 | add PC, RB // Remember active hook before pcall.
1664 | jne ->vmeta_call // Ensure KBASE defined and != BASE. 1547 | jmp ->vm_call_dispatch
1665 | jmp aword LFUNC:RB->gate
1666 |3:
1667 | add PC, 1 // Use FRAME_PCALLH if hook was active.
1668 | jmp <2
1669 | 1548 |
1670 |.ffunc_2 xpcall 1549 |.ffunc_2 xpcall
1671 | cmp dword [RA+12], LJ_TFUNC; jne ->fff_fallback 1550 | cmp dword [BASE+12], LJ_TFUNC; jne ->fff_fallback
1672 | mov [RA-4], PC 1551 | mov RB, [BASE+4] // Swap function and traceback.
1673 | mov RB, [RA+4] // Swap function and traceback. 1552 | mov [BASE+12], RB
1674 | mov [RA+12], RB 1553 | mov dword [BASE+4], LJ_TFUNC
1675 | mov dword [RA+4], LJ_TFUNC 1554 | mov LFUNC:RB, [BASE]
1676 | mov LFUNC:RB, [RA] 1555 | mov PC, [BASE+8]
1677 | mov PC, [RA+8] 1556 | mov [BASE+8], LFUNC:RB
1678 | mov [RA+8], LFUNC:RB 1557 | mov [BASE], PC
1679 | mov [RA], PC 1558 | lea RA, [BASE+16]
1680 | mov PC, 2*8+FRAME_PCALL 1559 | sub NARGS:RD, 2
1681 | mov BASE, RA 1560 | mov PC, 16+FRAME_PCALL
1682 | add RA, 2*8
1683 | sub NARGS:RC, 2
1684 | jmp <1 1561 | jmp <1
1685 | 1562 |
1686 |//-- Coroutine library -------------------------------------------------- 1563 |//-- Coroutine library --------------------------------------------------
1687 | 1564 |
1688 |.macro coroutine_resume_wrap, resume 1565 |.macro coroutine_resume_wrap, resume
1689 |9: // Need to restore PC for fallback handler.
1690 | mov PC, SAVE_PC
1691 | jmp ->fff_fallback
1692 |
1693 |.if resume 1566 |.if resume
1694 |.ffunc_1 coroutine_resume 1567 |.ffunc_1 coroutine_resume
1695 | mov L:RB, [RA] 1568 | mov L:RB, [BASE]
1696 |.else 1569 |.else
1697 |.ffunc coroutine_wrap_aux 1570 |.ffunc coroutine_wrap_aux
1571 | mov CFUNC:RB, [BASE-8]
1698 | mov L:RB, CFUNC:RB->upvalue[0].gcr 1572 | mov L:RB, CFUNC:RB->upvalue[0].gcr
1699 |.endif 1573 |.endif
1700 | mov [RA-4], PC 1574 | mov PC, [BASE-4]
1701 | mov SAVE_PC, PC 1575 | mov SAVE_PC, PC
1702 |.if X64 1576 |.if X64
1703 | mov TMP1, L:RB 1577 | mov TMP1, L:RB
@@ -1705,60 +1579,52 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1705 | mov ARG1, L:RB 1579 | mov ARG1, L:RB
1706 |.endif 1580 |.endif
1707 |.if resume 1581 |.if resume
1708 | cmp dword [RA+4], LJ_TTHREAD; jne <9 1582 | cmp dword [BASE+4], LJ_TTHREAD; jne ->fff_fallback
1709 |.endif
1710 | cmp aword L:RB->cframe, 0; jne <9
1711 | cmp byte L:RB->status, LUA_YIELD; ja <9
1712 | mov PC, L:RB->top
1713 |.if X64
1714 | mov TMP2, PC
1715 |.else
1716 | mov ARG2, PC
1717 |.endif 1583 |.endif
1584 | cmp aword L:RB->cframe, 0; jne ->fff_fallback
1585 | cmp byte L:RB->status, LUA_YIELD; ja ->fff_fallback
1586 | mov RA, L:RB->top
1718 | je >1 // Status != LUA_YIELD (i.e. 0)? 1587 | je >1 // Status != LUA_YIELD (i.e. 0)?
1719 | cmp PC, L:RB->base; je <9 // Check for presence of initial func. 1588 | cmp RA, L:RB->base // Check for presence of initial func.
1589 | je ->fff_fallback
1720 |1: 1590 |1:
1721 |.if resume 1591 |.if resume
1722 | lea PC, [PC+NARGS:RC*8-16] // Check stack space (-1-thread). 1592 | lea PC, [RA+NARGS:RD*8-16] // Check stack space (-1-thread).
1723 |.else 1593 |.else
1724 | lea PC, [PC+NARGS:RC*8-8] // Check stack space (-1). 1594 | lea PC, [RA+NARGS:RD*8-8] // Check stack space (-1).
1725 |.endif 1595 |.endif
1726 | cmp PC, L:RB->maxstack; ja <9 1596 | cmp PC, L:RB->maxstack; ja ->fff_fallback
1727 | mov L:RB->top, PC 1597 | mov L:RB->top, PC
1728 | 1598 |
1729 | mov L:RB, SAVE_L 1599 | mov L:RB, SAVE_L
1730 | mov L:RB->base, RA 1600 | mov L:RB->base, BASE
1731 |.if resume 1601 |.if resume
1732 | add RA, 8 // Keep resumed thread in stack for GC. 1602 | add BASE, 8 // Keep resumed thread in stack for GC.
1733 |.endif
1734 | mov L:RB->top, RA
1735 |.if X64
1736 | mov RB, TMP2
1737 |.else
1738 | mov RB, ARG2
1739 |.endif 1603 |.endif
1604 | mov L:RB->top, BASE
1740 |.if resume 1605 |.if resume
1741 | lea RA, [RA+NARGS:RC*8-24] // RA = end of source for stack move. 1606 | lea RB, [BASE+NARGS:RD*8-24] // RB = end of source for stack move.
1742 |.else 1607 |.else
1743 | lea RA, [RA+NARGS:RC*8-16] // RA = end of source for stack move. 1608 | lea RB, [BASE+NARGS:RD*8-16] // RB = end of source for stack move.
1744 |.endif 1609 |.endif
1745 | sub RAa, PCa // Relative to PC. 1610 | sub RBa, PCa // Relative to PC.
1746 | 1611 |
1747 | cmp PC, RB 1612 | cmp PC, RA
1748 | je >3 1613 | je >3
1749 |2: // Move args to coroutine. 1614 |2: // Move args to coroutine.
1750 | mov RC, [PC+RA+4] 1615 | mov RC, [PC+RB+4]
1751 | mov [PC-4], RC 1616 | mov [PC-4], RC
1752 | mov RC, [PC+RA] 1617 | mov RC, [PC+RB]
1753 | mov [PC-8], RC 1618 | mov [PC-8], RC
1754 | sub PC, 8 1619 | sub PC, 8
1755 | cmp PC, RB 1620 | cmp PC, RA
1756 | jne <2 1621 | jne <2
1757 |3: 1622 |3:
1758 |.if X64 1623 |.if X64
1624 | mov CARG2d, RA
1759 | mov CARG1d, TMP1 1625 | mov CARG1d, TMP1
1760 | mov CARG2d, TMP2
1761 |.else 1626 |.else
1627 | mov ARG2, RA
1762 | xor RA, RA 1628 | xor RA, RA
1763 | mov ARG4, RA 1629 | mov ARG4, RA
1764 | mov ARG3, RA 1630 | mov ARG3, RA
@@ -1854,12 +1720,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1854 | 1720 |
1855 |.ffunc coroutine_yield 1721 |.ffunc coroutine_yield
1856 | mov L:RB, SAVE_L 1722 | mov L:RB, SAVE_L
1857 | mov [RA-4], PC
1858 | test aword L:RB->cframe, CFRAME_RESUME 1723 | test aword L:RB->cframe, CFRAME_RESUME
1859 | jz ->fff_fallback 1724 | jz ->fff_fallback
1860 | mov L:RB->base, RA 1725 | mov L:RB->base, BASE
1861 | lea RC, [RA+NARGS:RC*8-8] 1726 | lea RD, [BASE+NARGS:RD*8-8]
1862 | mov L:RB->top, RC 1727 | mov L:RB->top, RD
1863 | xor RD, RD 1728 | xor RD, RD
1864 | mov aword L:RB->cframe, RDa 1729 | mov aword L:RB->cframe, RDa
1865 | mov al, LUA_YIELD 1730 | mov al, LUA_YIELD
@@ -1870,14 +1735,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1870 | 1735 |
1871 if (sse) { 1736 if (sse) {
1872 |->fff_resn: 1737 |->fff_resn:
1873 | fstp qword [RA-8] 1738 | mov PC, [BASE-4]
1739 | fstp qword [BASE-8]
1874 | jmp ->fff_res1 1740 | jmp ->fff_res1
1875 | 1741 |
1876 |.ffunc_nsse math_abs 1742 |.ffunc_nsse math_abs
1877 | sseconst_abs xmm1, RDa 1743 | sseconst_abs xmm1, RDa
1878 | andps xmm0, xmm1 1744 | andps xmm0, xmm1
1879 |->fff_resxmm0: 1745 |->fff_resxmm0:
1880 | movsd qword [RA-8], xmm0 1746 | mov PC, [BASE-4]
1747 | movsd qword [BASE-8], xmm0
1881 | // fallthrough 1748 | // fallthrough
1882 } else { 1749 } else {
1883 |.ffunc_n math_abs 1750 |.ffunc_n math_abs
@@ -1885,7 +1752,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1885 | // fallthrough 1752 | // fallthrough
1886 |->fff_resxmm0: // Dummy. 1753 |->fff_resxmm0: // Dummy.
1887 |->fff_resn: 1754 |->fff_resn:
1888 | fstp qword [RA-8] 1755 | mov PC, [BASE-4]
1756 | fstp qword [BASE-8]
1889 } 1757 }
1890 |->fff_res1: 1758 |->fff_res1:
1891 | mov RD, 1+1 1759 | mov RD, 1+1
@@ -1897,16 +1765,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1897 |5: 1765 |5:
1898 | cmp PC_RB, RDL // More results expected? 1766 | cmp PC_RB, RDL // More results expected?
1899 | ja >6 1767 | ja >6
1900 | // BASE and KBASE are assumed to be set for the calling frame. 1768 | // Adjust BASE. KBASE is assumed to be set for the calling frame.
1769 | movzx RA, PC_RA
1770 | not RAa // Note: ~RA = -(RA+1)
1771 | lea BASE, [BASE+RA*8] // base = base - (RA+1)*8
1901 | ins_next 1772 | ins_next
1902 | 1773 |
1903 |6: // Fill up results with nil. 1774 |6: // Fill up results with nil.
1904 | mov dword [RA+RD*8-12], LJ_TNIL 1775 | mov dword [BASE+RD*8-12], LJ_TNIL
1905 | add RD, 1 1776 | add RD, 1
1906 | jmp <5 1777 | jmp <5
1907 | 1778 |
1908 |7: // Non-standard return case. 1779 |7: // Non-standard return case.
1909 | mov BASE, RA
1910 | mov RAa, -8 // Results start at BASE+RA = BASE-8. 1780 | mov RAa, -8 // Results start at BASE+RA = BASE-8.
1911 | jmp ->vm_return 1781 | jmp ->vm_return
1912 | 1782 |
@@ -1948,10 +1818,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1948 | fstp FPARG1 1818 | fstp FPARG1
1949 | .endif 1819 | .endif
1950 ||} 1820 ||}
1951 | mov TMP1, RA
1952 | mov RB, BASE 1821 | mov RB, BASE
1953 | call extern lj_wrapper_ .. func 1822 | call extern lj_wrapper_ .. func
1954 | mov RA, TMP1
1955 | mov BASE, RB 1823 | mov BASE, RB
1956 | .if X64 1824 | .if X64
1957 | jmp ->fff_resxmm0 1825 | jmp ->fff_resxmm0
@@ -1967,10 +1835,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1967 |->ff_math_deg: 1835 |->ff_math_deg:
1968 if (sse) { 1836 if (sse) {
1969 |.ffunc_nsse math_rad 1837 |.ffunc_nsse math_rad
1838 | mov CFUNC:RB, [BASE-8]
1970 | mulsd xmm0, qword CFUNC:RB->upvalue[0] 1839 | mulsd xmm0, qword CFUNC:RB->upvalue[0]
1971 | jmp ->fff_resxmm0 1840 | jmp ->fff_resxmm0
1972 } else { 1841 } else {
1973 |.ffunc_n math_rad 1842 |.ffunc_n math_rad
1843 | mov CFUNC:RB, [BASE-8]
1974 | fmul qword CFUNC:RB->upvalue[0] 1844 | fmul qword CFUNC:RB->upvalue[0]
1975 | jmp ->fff_resn 1845 | jmp ->fff_resn
1976 } 1846 }
@@ -1979,10 +1849,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1979 |.ffunc_nnr math_ldexp; fscale; fpop1; jmp ->fff_resn 1849 |.ffunc_nnr math_ldexp; fscale; fpop1; jmp ->fff_resn
1980 | 1850 |
1981 |.ffunc_1 math_frexp 1851 |.ffunc_1 math_frexp
1982 | mov RB, [RA+4] 1852 | mov RB, [BASE+4]
1983 | cmp RB, LJ_TISNUM; ja ->fff_fallback 1853 | cmp RB, LJ_TISNUM; ja ->fff_fallback
1984 | mov RC, [RA] 1854 | mov PC, [BASE-4]
1985 | mov [RA-4], RB; mov [RA-8], RC 1855 | mov RC, [BASE]
1856 | mov [BASE-4], RB; mov [BASE-8], RC
1986 | shl RB, 1; cmp RB, 0xffe00000; jae >3 1857 | shl RB, 1; cmp RB, 0xffe00000; jae >3
1987 | or RC, RB; jz >3 1858 | or RC, RB; jz >3
1988 | mov RC, 1022 1859 | mov RC, 1022
@@ -1994,15 +1865,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1994 } else { 1865 } else {
1995 | mov TMP1, RB; fild TMP1 1866 | mov TMP1, RB; fild TMP1
1996 } 1867 }
1997 | mov RB, [RA-4] 1868 | mov RB, [BASE-4]
1998 | and RB, 0x800fffff // Mask off exponent. 1869 | and RB, 0x800fffff // Mask off exponent.
1999 | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0. 1870 | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0.
2000 | mov [RA-4], RB 1871 | mov [BASE-4], RB
2001 |2: 1872 |2:
2002 if (sse) { 1873 if (sse) {
2003 | movsd qword [RA], xmm0 1874 | movsd qword [BASE], xmm0
2004 } else { 1875 } else {
2005 | fstp qword [RA] 1876 | fstp qword [BASE]
2006 } 1877 }
2007 | mov RD, 1+2 1878 | mov RD, 1+2
2008 | jmp ->fff_res 1879 | jmp ->fff_res
@@ -2014,46 +1885,48 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2014 } 1885 }
2015 |4: // Handle denormals by multiplying with 2^54 and adjusting the bias. 1886 |4: // Handle denormals by multiplying with 2^54 and adjusting the bias.
2016 if (sse) { 1887 if (sse) {
2017 | movsd xmm0, qword [RA] 1888 | movsd xmm0, qword [BASE]
2018 | sseconst_hi xmm1, RBa, 43500000 // 2^54. 1889 | sseconst_hi xmm1, RBa, 43500000 // 2^54.
2019 | mulsd xmm0, xmm1 1890 | mulsd xmm0, xmm1
2020 | movsd qword [RA-8], xmm0 1891 | movsd qword [BASE-8], xmm0
2021 } else { 1892 } else {
2022 | fld qword [RA] 1893 | fld qword [BASE]
2023 | mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54 1894 | mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54
2024 | fstp qword [RA-8] 1895 | fstp qword [BASE-8]
2025 } 1896 }
2026 | mov RB, [RA-4]; mov RC, 1076; shl RB, 1; jmp <1 1897 | mov RB, [BASE-4]; mov RC, 1076; shl RB, 1; jmp <1
2027 | 1898 |
2028 if (sse) { 1899 if (sse) {
2029 |.ffunc_nsse math_modf 1900 |.ffunc_nsse math_modf
2030 } else { 1901 } else {
2031 |.ffunc_n math_modf 1902 |.ffunc_n math_modf
2032 } 1903 }
2033 | mov RB, [RA+4] 1904 | mov RB, [BASE+4]
1905 | mov PC, [BASE-4]
2034 | shl RB, 1; cmp RB, 0xffe00000; je >4 // +-Inf? 1906 | shl RB, 1; cmp RB, 0xffe00000; je >4 // +-Inf?
2035 if (sse) { 1907 if (sse) {
2036 | movaps xmm4, xmm0 1908 | movaps xmm4, xmm0
2037 | call ->vm_trunc 1909 | call ->vm_trunc
2038 | subsd xmm4, xmm0 1910 | subsd xmm4, xmm0
2039 |1: 1911 |1:
2040 | movsd qword [RA-8], xmm0 1912 | movsd qword [BASE-8], xmm0
2041 | movsd qword [RA], xmm4 1913 | movsd qword [BASE], xmm4
2042 } else { 1914 } else {
2043 | fdup 1915 | fdup
2044 | call ->vm_trunc 1916 | call ->vm_trunc
2045 | fsub st1, st0 1917 | fsub st1, st0
2046 |1: 1918 |1:
2047 | fstp qword [RA-8] 1919 | fstp qword [BASE-8]
2048 | fstp qword [RA] 1920 | fstp qword [BASE]
2049 } 1921 }
2050 | mov RC, [RA-4]; mov RB, [RA+4] 1922 | mov RC, [BASE-4]; mov RB, [BASE+4]
2051 | xor RC, RB; js >3 // Need to adjust sign? 1923 | xor RC, RB; js >3 // Need to adjust sign?
2052 |2: 1924 |2:
2053 | mov RD, 1+2 1925 | mov RD, 1+2
2054 | jmp ->fff_res 1926 | jmp ->fff_res
2055 |3: 1927 |3:
2056 | xor RB, 0x80000000; mov [RA+4], RB; jmp <2 // Flip sign of fraction. 1928 | xor RB, 0x80000000; mov [BASE+4], RB // Flip sign of fraction.
1929 | jmp <2
2057 |4: 1930 |4:
2058 if (sse) { 1931 if (sse) {
2059 | xorps xmm4, xmm4; jmp <1 // Return +-Inf and +-0. 1932 | xorps xmm4, xmm4; jmp <1 // Return +-Inf and +-0.
@@ -2079,8 +1952,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2079 |1: 1952 |1:
2080 | cmp RB, RD 1953 | cmp RB, RD
2081 | jae ->fff_resxmm0 1954 | jae ->fff_resxmm0
2082 | cmp dword [RA+RB*8-4], LJ_TISNUM; ja ->fff_fallback 1955 | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja ->fff_fallback
2083 | movsd xmm1, qword [RA+RB*8-8] 1956 | movsd xmm1, qword [BASE+RB*8-8]
2084 | sseop xmm0, xmm1 1957 | sseop xmm0, xmm1
2085 | add RB, 1 1958 | add RB, 1
2086 | jmp <1 1959 | jmp <1
@@ -2091,8 +1964,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2091 |1: 1964 |1:
2092 | cmp RB, RD 1965 | cmp RB, RD
2093 | jae ->fff_resn 1966 | jae ->fff_resn
2094 | cmp dword [RA+RB*8-4], LJ_TISNUM; ja >5 1967 | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja >5
2095 | fld qword [RA+RB*8-8] 1968 | fld qword [BASE+RB*8-8]
2096 ||if (cmov) { 1969 ||if (cmov) {
2097 | fucomi st1; cmovop st1; fpop1 1970 | fucomi st1; cmovop st1; fpop1
2098 ||} else { 1971 ||} else {
@@ -2116,8 +1989,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2116 |//-- String library ----------------------------------------------------- 1989 |//-- String library -----------------------------------------------------
2117 | 1990 |
2118 |.ffunc_1 string_len 1991 |.ffunc_1 string_len
2119 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 1992 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2120 | mov STR:RB, [RA] 1993 | mov STR:RB, [BASE]
2121 if (sse) { 1994 if (sse) {
2122 | cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0 1995 | cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0
2123 } else { 1996 } else {
@@ -2125,9 +1998,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2125 } 1998 }
2126 | 1999 |
2127 |.ffunc string_byte // Only handle the 1-arg case here. 2000 |.ffunc string_byte // Only handle the 1-arg case here.
2128 | cmp NARGS:RC, 1+1; jne ->fff_fallback 2001 | cmp NARGS:RD, 1+1; jne ->fff_fallback
2129 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2002 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2130 | mov STR:RB, [RA] 2003 | mov STR:RB, [BASE]
2004 | mov PC, [BASE-4]
2131 | cmp dword STR:RB->len, 1 2005 | cmp dword STR:RB->len, 1
2132 | jb ->fff_res0 // Return no results for empty string. 2006 | jb ->fff_res0 // Return no results for empty string.
2133 | movzx RB, byte STR:RB[1] 2007 | movzx RB, byte STR:RB[1]
@@ -2139,14 +2013,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2139 | 2013 |
2140 |.ffunc string_char // Only handle the 1-arg case here. 2014 |.ffunc string_char // Only handle the 1-arg case here.
2141 | ffgccheck 2015 | ffgccheck
2142 | cmp NARGS:RC, 1+1; jne ->fff_fallback // *Exactly* 1 arg. 2016 | cmp NARGS:RD, 1+1; jne ->fff_fallback // *Exactly* 1 arg.
2143 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 2017 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
2144 if (sse) { 2018 if (sse) {
2145 | cvtsd2si RC, qword [RA] 2019 | cvtsd2si RC, qword [BASE]
2146 | cmp RC, 255; ja ->fff_fallback 2020 | cmp RC, 255; ja ->fff_fallback
2147 | mov TMP2, RC 2021 | mov TMP2, RC
2148 } else { 2022 } else {
2149 | fld qword [RA] 2023 | fld qword [BASE]
2150 | fistp TMP2 2024 | fistp TMP2
2151 | cmp TMP2, 255; ja ->fff_fallback 2025 | cmp TMP2, 255; ja ->fff_fallback
2152 } 2026 }
@@ -2156,7 +2030,6 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2156 | mov ARG3, 1 2030 | mov ARG3, 1
2157 |.endif 2031 |.endif
2158 | lea RDa, TMP2 // Points to stack. Little-endian. 2032 | lea RDa, TMP2 // Points to stack. Little-endian.
2159 | mov TMP1, RA // Save RA.
2160 |->fff_newstr: 2033 |->fff_newstr:
2161 | mov L:RB, SAVE_L 2034 | mov L:RB, SAVE_L
2162 | mov L:RB->base, BASE 2035 | mov L:RB->base, BASE
@@ -2170,38 +2043,37 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2170 |.endif 2043 |.endif
2171 | mov SAVE_PC, PC 2044 | mov SAVE_PC, PC
2172 | call extern lj_str_new // (lua_State *L, char *str, size_t l) 2045 | call extern lj_str_new // (lua_State *L, char *str, size_t l)
2173 | // GCstr * returned in eax (RC). 2046 | // GCstr * returned in eax (RD).
2174 | mov RA, TMP1
2175 | mov BASE, L:RB->base 2047 | mov BASE, L:RB->base
2176 | mov dword [RA-4], LJ_TSTR 2048 | mov PC, [BASE-4]
2177 | mov [RA-8], STR:RC 2049 | mov dword [BASE-4], LJ_TSTR
2050 | mov [BASE-8], STR:RD
2178 | jmp ->fff_res1 2051 | jmp ->fff_res1
2179 | 2052 |
2180 |.ffunc string_sub 2053 |.ffunc string_sub
2181 | ffgccheck 2054 | ffgccheck
2182 | mov TMP1, RA // Save RA.
2183 | mov TMP2, -1 2055 | mov TMP2, -1
2184 | cmp NARGS:RC, 1+2; jb ->fff_fallback 2056 | cmp NARGS:RD, 1+2; jb ->fff_fallback
2185 | jna >1 2057 | jna >1
2186 | cmp dword [RA+20], LJ_TISNUM; ja ->fff_fallback 2058 | cmp dword [BASE+20], LJ_TISNUM; ja ->fff_fallback
2187 if (sse) { 2059 if (sse) {
2188 | cvtsd2si RB, qword [RA+16] 2060 | cvtsd2si RB, qword [BASE+16]
2189 | mov TMP2, RB 2061 | mov TMP2, RB
2190 } else { 2062 } else {
2191 | fld qword [RA+16] 2063 | fld qword [BASE+16]
2192 | fistp TMP2 2064 | fistp TMP2
2193 } 2065 }
2194 |1: 2066 |1:
2195 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2067 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2196 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 2068 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
2197 | mov STR:RB, [RA] 2069 | mov STR:RB, [BASE]
2198 | mov TMP3, STR:RB 2070 | mov TMP3, STR:RB
2199 | mov RB, STR:RB->len 2071 | mov RB, STR:RB->len
2200 if (sse) { 2072 if (sse) {
2201 | cvtsd2si RA, qword [RA+8] 2073 | cvtsd2si RA, qword [BASE+8]
2202 } else { 2074 } else {
2203 |.if not X64 2075 |.if not X64
2204 | fld qword [RA+8] 2076 | fld qword [BASE+8]
2205 | fistp ARG3 2077 | fistp ARG3
2206 | mov RA, ARG3 2078 | mov RA, ARG3
2207 |.endif 2079 |.endif
@@ -2250,14 +2122,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2250 | 2122 |
2251 |.ffunc_2 string_rep // Only handle the 1-char case inline. 2123 |.ffunc_2 string_rep // Only handle the 1-char case inline.
2252 | ffgccheck 2124 | ffgccheck
2253 | mov TMP1, RA // Save RA. 2125 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2254 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2126 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
2255 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 2127 | mov STR:RB, [BASE]
2256 | mov STR:RB, [RA]
2257 if (sse) { 2128 if (sse) {
2258 | cvtsd2si RC, qword [RA+8] 2129 | cvtsd2si RC, qword [BASE+8]
2259 } else { 2130 } else {
2260 | fld qword [RA+8] 2131 | fld qword [BASE+8]
2261 | fistp TMP2 2132 | fistp TMP2
2262 | mov RC, TMP2 2133 | mov RC, TMP2
2263 } 2134 }
@@ -2284,9 +2155,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2284 | 2155 |
2285 |.ffunc_1 string_reverse 2156 |.ffunc_1 string_reverse
2286 | ffgccheck 2157 | ffgccheck
2287 | mov TMP1, RA // Save RA. 2158 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2288 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2159 | mov STR:RB, [BASE]
2289 | mov STR:RB, [RA]
2290 | mov RC, STR:RB->len 2160 | mov RC, STR:RB->len
2291 | test RC, RC 2161 | test RC, RC
2292 | jz ->fff_emptystr // Zero length string? 2162 | jz ->fff_emptystr // Zero length string?
@@ -2312,9 +2182,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2312 |.macro ffstring_case, name, lo, hi 2182 |.macro ffstring_case, name, lo, hi
2313 | .ffunc_1 name 2183 | .ffunc_1 name
2314 | ffgccheck 2184 | ffgccheck
2315 | mov TMP1, RA // Save RA. 2185 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2316 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2186 | mov STR:RB, [BASE]
2317 | mov STR:RB, [RA]
2318 | mov RC, STR:RB->len 2187 | mov RC, STR:RB->len
2319 | cmp [DISPATCH+DISPATCH_GL(tmpbuf.sz)], RC; jb ->fff_fallback_1 2188 | cmp [DISPATCH+DISPATCH_GL(tmpbuf.sz)], RC; jb ->fff_fallback_1
2320 | add RB, #STR 2189 | add RB, #STR
@@ -2349,19 +2218,17 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2349 |//-- Table library ------------------------------------------------------ 2218 |//-- Table library ------------------------------------------------------
2350 | 2219 |
2351 |.ffunc_1 table_getn 2220 |.ffunc_1 table_getn
2352 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 2221 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
2353 | mov TMP1, BASE // Save RA and BASE. 2222 | mov RB, BASE // Save BASE.
2354 | mov RB, RA 2223 | mov TAB:FCARG1, [BASE]
2355 | mov TAB:FCARG1, [RA] // Caveat: FCARG1 == RA
2356 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t) 2224 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t)
2357 | // Length of table returned in eax (RC). 2225 | // Length of table returned in eax (RD).
2358 | mov RA, RB // Restore RA and BASE. 2226 | mov BASE, RB // Restore BASE.
2359 | mov BASE, TMP1
2360 if (sse) { 2227 if (sse) {
2361 | cvtsi2sd xmm0, RC; jmp ->fff_resxmm0 2228 | cvtsi2sd xmm0, RD; jmp ->fff_resxmm0
2362 } else { 2229 } else {
2363 |.if not X64 2230 |.if not X64
2364 | mov ARG1, RC; fild ARG1; jmp ->fff_resn 2231 | mov ARG1, RD; fild ARG1; jmp ->fff_resn
2365 |.endif 2232 |.endif
2366 } 2233 }
2367 | 2234 |
@@ -2406,29 +2273,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2406 | 2273 |
2407 |.macro .ffunc_bit_op, name, ins 2274 |.macro .ffunc_bit_op, name, ins
2408 | .ffunc_bit name 2275 | .ffunc_bit name
2409 | mov TMP2, NARGS:RC // Save for fallback. 2276 | mov TMP2, NARGS:RD // Save for fallback.
2410 | lea RC, [RA+NARGS:RC*8-16] 2277 | lea RD, [BASE+NARGS:RD*8-16]
2411 ||if (sse) {
2412 | mov TMP1, BASE // Need BASE as a scratch register.
2413 ||}
2414 |1: 2278 |1:
2415 | cmp RC, RA 2279 | cmp RD, BASE
2416 | jbe ->fff_resbit_op 2280 | jbe ->fff_resbit
2417 | cmp dword [RC+4], LJ_TISNUM; ja ->fff_fallback_bit_op 2281 | cmp dword [RD+4], LJ_TISNUM; ja ->fff_fallback_bit_op
2418 ||if (sse) { 2282 ||if (sse) {
2419 | movsd xmm0, qword [RC] 2283 | movsd xmm0, qword [RD]
2420 | addsd xmm0, xmm1 2284 | addsd xmm0, xmm1
2421 | movd BASE, xmm0 2285 | movd RA, xmm0
2422 | ins RB, BASE 2286 | ins RB, RA
2423 ||} else { 2287 ||} else {
2424 |.if not X64 2288 |.if not X64
2425 | fld qword [RC] 2289 | fld qword [RD]
2426 | fadd TMP1 2290 | fadd TMP1
2427 | fstp FPARG1 2291 | fstp FPARG1
2428 | ins RB, ARG1 2292 | ins RB, ARG1
2429 |.endif 2293 |.endif
2430 ||} 2294 ||}
2431 | sub RC, 8 2295 | sub RD, 8
2432 | jmp <1 2296 | jmp <1
2433 |.endmacro 2297 |.endmacro
2434 | 2298 |
@@ -2446,14 +2310,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2446 |->fff_resbit: 2310 |->fff_resbit:
2447 | cvtsi2sd xmm0, RB 2311 | cvtsi2sd xmm0, RB
2448 | jmp ->fff_resxmm0 2312 | jmp ->fff_resxmm0
2449 |->fff_resbit_op:
2450 | cvtsi2sd xmm0, RB
2451 | mov BASE, TMP1
2452 | jmp ->fff_resxmm0
2453 } else { 2313 } else {
2454 |.if not X64 2314 |.if not X64
2455 |->fff_resbit: 2315 |->fff_resbit:
2456 |->fff_resbit_op:
2457 | mov ARG1, RB 2316 | mov ARG1, RB
2458 | fild ARG1 2317 | fild ARG1
2459 | jmp ->fff_resn 2318 | jmp ->fff_resn
@@ -2461,10 +2320,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2461 } 2320 }
2462 | 2321 |
2463 |->fff_fallback_bit_op: 2322 |->fff_fallback_bit_op:
2464 if (sse) { 2323 | mov NARGS:RD, TMP2 // Restore for fallback
2465 | mov BASE, TMP1
2466 }
2467 | mov NARGS:RC, TMP2 // Restore for fallback
2468 | jmp ->fff_fallback 2324 | jmp ->fff_fallback
2469 | 2325 |
2470 |.macro .ffunc_bit_sh, name, ins 2326 |.macro .ffunc_bit_sh, name, ins
@@ -2503,86 +2359,80 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2503 |//----------------------------------------------------------------------- 2359 |//-----------------------------------------------------------------------
2504 | 2360 |
2505 |->fff_fallback_2: 2361 |->fff_fallback_2:
2506 | mov NARGS:RC, 1+2 // Other args are ignored, anyway. 2362 | mov NARGS:RD, 1+2 // Other args are ignored, anyway.
2507 | jmp ->fff_fallback 2363 | jmp ->fff_fallback
2508 |->fff_fallback_1: 2364 |->fff_fallback_1:
2509 | mov NARGS:RC, 1+1 // Other args are ignored, anyway. 2365 | mov NARGS:RD, 1+1 // Other args are ignored, anyway.
2510 |->fff_fallback: // Call fast function fallback handler. 2366 |->fff_fallback: // Call fast function fallback handler.
2511 | // RA = new base, RC = nargs+1 2367 | // BASE = new base, RD = nargs+1
2512 | mov L:RB, SAVE_L 2368 | mov L:RB, SAVE_L
2513 | sub BASE, RA 2369 | mov PC, [BASE-4] // Fallback may overwrite PC.
2514 | mov [RA-4], PC
2515 | mov SAVE_PC, PC // Redundant (but a defined value). 2370 | mov SAVE_PC, PC // Redundant (but a defined value).
2516 | mov TMP1, BASE // Save old BASE (relative). 2371 | mov L:RB->base, BASE
2517 | mov L:RB->base, RA 2372 | lea RD, [BASE+NARGS:RD*8-8]
2518 | lea RC, [RA+NARGS:RC*8-8] 2373 | lea RA, [RD+8*LUA_MINSTACK] // Ensure enough space for handler.
2519 | lea BASE, [RC+8*LUA_MINSTACK] // Ensure enough space for handler. 2374 | mov L:RB->top, RD
2520 | mov L:RB->top, RC 2375 | mov CFUNC:RD, [BASE-8]
2521 | mov CFUNC:RC, [RA-8] 2376 | cmp RA, L:RB->maxstack
2522 | cmp BASE, L:RB->maxstack
2523 | ja >5 // Need to grow stack. 2377 | ja >5 // Need to grow stack.
2524 |.if X64 2378 |.if X64
2525 | mov CARG1d, L:RB 2379 | mov CARG1d, L:RB
2526 |.else 2380 |.else
2527 | mov ARG1, L:RB 2381 | mov ARG1, L:RB
2528 |.endif 2382 |.endif
2529 | call aword CFUNC:RC->f // (lua_State *L) 2383 | call aword CFUNC:RD->f // (lua_State *L)
2384 | mov BASE, L:RB->base
2530 | // Either throws an error or recovers and returns 0 or MULTRES (+1). 2385 | // Either throws an error or recovers and returns 0 or MULTRES (+1).
2531 | test RC, RC; jnz >3 2386 | test RD, RD; jnz ->fff_res // Returned MULTRES (already in RD).
2532 |1: // Returned 0: retry fast path. 2387 |1: // Returned 0: retry fast path.
2533 | mov RA, L:RB->base 2388 | mov RD, L:RB->top
2534 | mov RC, L:RB->top 2389 | sub RD, BASE
2535 | sub RC, RA 2390 | shr RD, 3
2536 | shr RC, 3 2391 | add NARGS:RD, 1
2537 | add NARGS:RC, 1 2392 | mov LFUNC:RB, [BASE-8]
2538 | mov LFUNC:RB, [RA-8] 2393 | cmp dword [BASE-4], PC
2539 | mov BASE, TMP1 // Restore old BASE. 2394 | jne >2 // Tailcalled?
2540 | add BASE, RA 2395 | ins_callt // Retry the call.
2541 | cmp [RA-4], PC; jne >2 // Callable modified by handler? 2396 |
2542 | jmp aword LFUNC:RB->gate // Retry the call. 2397 |2: // Reconstruct previous base for vmeta_call.
2543 | 2398 | mov RA, BASE
2544 |2: // Run modified callable. 2399 | test PC, FRAME_TYPE
2545 | cmp dword [RA-4], LJ_TFUNC 2400 | jnz >3
2546 | jne ->vmeta_call 2401 | movzx RB, PC_RA
2547 | jmp aword LFUNC:RB->gate // Retry the call. 2402 | not RBa // Note: ~RB = -(RB+1)
2548 | 2403 | lea BASE, [BASE+RB*8] // base = base - (RB+1)*8
2549 |3: // Returned MULTRES (already in RC/RD). 2404 | jmp ->vm_call_dispatch // Resolve again.
2550 | mov RA, L:RB->base 2405 |3:
2551 | mov BASE, TMP1 // Restore old BASE. 2406 | mov RB, PC
2552 | add BASE, RA 2407 | and RB, -8
2553 | jmp ->fff_res 2408 | sub BASE, RB
2409 | jmp ->vm_call_dispatch // Resolve again.
2554 | 2410 |
2555 |5: // Grow stack for fallback handler. 2411 |5: // Grow stack for fallback handler.
2556 | mov FCARG2, LUA_MINSTACK 2412 | mov FCARG2, LUA_MINSTACK
2557 | mov FCARG1, L:RB 2413 | mov FCARG1, L:RB
2558 | call extern lj_state_growstack@8 // (lua_State *L, int n) 2414 | call extern lj_state_growstack@8 // (lua_State *L, int n)
2415 | mov BASE, L:RB->base
2559 | jmp <1 // Dumb retry (goes through ff first). 2416 | jmp <1 // Dumb retry (goes through ff first).
2560 | 2417 |
2561 |->fff_gcstep: // Call GC step function. 2418 |->fff_gcstep: // Call GC step function.
2562 | // RA = new base, RC = nargs+1 2419 | // BASE = new base, RD = nargs+1
2563 | pop RBa // Must keep stack at same level. 2420 | pop RBa // Must keep stack at same level.
2564 | mov TMPa, RBa // Save return address 2421 | mov TMPa, RBa // Save return address
2565 | mov L:RB, SAVE_L 2422 | mov L:RB, SAVE_L
2566 | sub BASE, RA
2567 | mov TMP2, BASE // Save old BASE (relative).
2568 | mov [RA-4], PC
2569 | mov SAVE_PC, PC // Redundant (but a defined value). 2423 | mov SAVE_PC, PC // Redundant (but a defined value).
2570 | mov L:RB->base, RA 2424 | mov L:RB->base, BASE
2571 | lea RC, [RA+NARGS:RC*8-8] 2425 | lea RD, [BASE+NARGS:RD*8-8]
2572 | mov FCARG1, L:RB 2426 | mov FCARG1, L:RB
2573 | mov L:RB->top, RC 2427 | mov L:RB->top, RD
2574 | call extern lj_gc_step@4 // (lua_State *L) 2428 | call extern lj_gc_step@4 // (lua_State *L)
2575 | mov RA, L:RB->base 2429 | mov BASE, L:RB->base
2576 | mov RC, L:RB->top 2430 | mov RD, L:RB->top
2577 | sub RC, RA 2431 | sub RD, BASE
2578 | shr RC, 3 2432 | shr RD, 3
2579 | add NARGS:RC, 1 2433 | add NARGS:RD, 1
2580 | mov PC, [RA-4]
2581 | mov BASE, TMP2 // Restore old BASE.
2582 | add BASE, RA
2583 | mov RBa, TMPa 2434 | mov RBa, TMPa
2584 | push RBa // Restore return address. 2435 | push RBa // Restore return address.
2585 | mov LFUNC:RB, [RA-8]
2586 | ret 2436 | ret
2587 | 2437 |
2588 |//----------------------------------------------------------------------- 2438 |//-----------------------------------------------------------------------
@@ -2629,9 +2479,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2629 | movzx OP, PC_OP 2479 | movzx OP, PC_OP
2630 | movzx RD, PC_RD 2480 | movzx RD, PC_RD
2631 |.if X64 2481 |.if X64
2632 | jmp aword [DISPATCH+OP*8+BC__MAX*8] // Re-dispatch to static ins. 2482 | jmp aword [DISPATCH+OP*8+GG_DISP2STATIC] // Re-dispatch to static ins.
2633 |.else 2483 |.else
2634 | jmp aword [DISPATCH+OP*4+BC__MAX*4] // Re-dispatch to static ins. 2484 | jmp aword [DISPATCH+OP*4+GG_DISP2STATIC] // Re-dispatch to static ins.
2635 |.endif 2485 |.endif
2636 | 2486 |
2637 |->cont_hook: // Continue from hook yield. 2487 |->cont_hook: // Continue from hook yield.
@@ -2645,8 +2495,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2645 |.if X64 2495 |.if X64
2646 | int3 // NYI 2496 | int3 // NYI
2647 |.else 2497 |.else
2498 | mov LFUNC:RB, [BASE-8] // Same as curr_topL(L).
2499 | mov RB, LFUNC:RB->pc
2500 | movzx RD, byte [RB+PC2PROTO(framesize)]
2501 | lea RD, [BASE+RD*8]
2648 | mov L:RB, SAVE_L 2502 | mov L:RB, SAVE_L
2649 | mov L:RB->base, BASE 2503 | mov L:RB->base, BASE
2504 | mov L:RB->top, RD
2650 | mov FCARG2, PC 2505 | mov FCARG2, PC
2651 | lea FCARG1, [DISPATCH+GG_DISP2J] 2506 | lea FCARG1, [DISPATCH+GG_DISP2J]
2652 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2507 | mov [DISPATCH+DISPATCH_J(L)], L:RB
@@ -2661,16 +2516,22 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2661 |.if X64 2516 |.if X64
2662 | int3 // NYI 2517 | int3 // NYI
2663 |.else 2518 |.else
2519 | lea RD, [BASE+NARGS:RD*8-8]
2664 | mov L:RB, SAVE_L 2520 | mov L:RB, SAVE_L
2665 | mov L:RB->base, BASE 2521 | mov L:RB->base, BASE
2522 | mov L:RB->top, RD
2666 | mov FCARG2, PC 2523 | mov FCARG2, PC
2667 | lea FCARG1, [DISPATCH+GG_DISP2J] 2524 | lea FCARG1, [DISPATCH+GG_DISP2J]
2668 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2525 | mov [DISPATCH+DISPATCH_J(L)], L:RB
2669 | mov SAVE_PC, PC 2526 | mov SAVE_PC, PC
2670 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc) 2527 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc)
2671 | mov BASE, L:RB->base 2528 | mov BASE, L:RB->base
2672 | // Dispatch the first instruction and optionally record it. 2529 | mov RD, L:RB->top
2673 | ins_next 2530 | sub RD, BASE
2531 | shr RD, 3
2532 | add NARGS:RD, 1
2533 | mov LFUNC:RB, [BASE-8]
2534 | ins_callt
2674 |.endif 2535 |.endif
2675#endif 2536#endif
2676 | 2537 |
@@ -4403,13 +4264,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4403 case BC_CALL: case BC_CALLM: 4264 case BC_CALL: case BC_CALLM:
4404 | ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs 4265 | ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs
4405 if (op == BC_CALLM) { 4266 if (op == BC_CALLM) {
4406 | add NARGS:RC, MULTRES 4267 | add NARGS:RD, MULTRES
4407 } 4268 }
4408 | lea RA, [BASE+RA*8+8] 4269 | cmp dword [BASE+RA*8+4], LJ_TFUNC
4409 | mov LFUNC:RB, [RA-8] 4270 | mov LFUNC:RB, [BASE+RA*8]
4410 | cmp dword [RA-4], LJ_TFUNC 4271 | jne ->vmeta_call_ra
4411 | jne ->vmeta_call 4272 | lea BASE, [BASE+RA*8+8]
4412 | jmp aword LFUNC:RB->gate 4273 | ins_call
4413 break; 4274 break;
4414 4275
4415 case BC_CALLMT: 4276 case BC_CALLMT:
@@ -4445,20 +4306,19 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4445 | 4306 |
4446 | mov LFUNC:RB, [BASE-8] 4307 | mov LFUNC:RB, [BASE-8]
4447 |3: 4308 |3:
4448 | mov RA, BASE // BASE is ignored, except when ... 4309 | mov NARGS:RD, MULTRES
4449 | cmp byte LFUNC:RB->ffid, 1 // (> FF_C) Calling a fast function? 4310 | cmp byte LFUNC:RB->ffid, 1 // (> FF_C) Calling a fast function?
4450 | ja >5 4311 | ja >5
4451 |4: 4312 |4:
4452 | mov NARGS:RD, MULTRES 4313 | ins_callt
4453 | jmp aword LFUNC:RB->gate
4454 | 4314 |
4455 |5: // Tailcall to a fast function. 4315 |5: // Tailcall to a fast function.
4456 | test PC, FRAME_TYPE // Lua frame below? 4316 | test PC, FRAME_TYPE // Lua frame below?
4457 | jnz <4 4317 | jnz <4
4458 | movzx RD, PC_RA // Need to prepare BASE/KBASE. 4318 | movzx RA, PC_RA
4459 | not RDa 4319 | not RAa
4460 | lea BASE, [BASE+RD*8] 4320 | lea RA, [BASE+RA*8]
4461 | mov LFUNC:KBASE, [BASE-8] 4321 | mov LFUNC:KBASE, [RA-8] // Need to prepare KBASE.
4462 | mov KBASE, LFUNC:KBASE->pc 4322 | mov KBASE, LFUNC:KBASE->pc
4463 | mov KBASE, [KBASE+PC2PROTO(k)] 4323 | mov KBASE, [KBASE+PC2PROTO(k)]
4464 | jmp <4 4324 | jmp <4
@@ -4488,9 +4348,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4488 | mov [RA-8], LFUNC:RB 4348 | mov [RA-8], LFUNC:RB
4489 | mov [RA-4], RC 4349 | mov [RA-4], RC
4490 | cmp RC, LJ_TFUNC // Handle like a regular 2-arg call. 4350 | cmp RC, LJ_TFUNC // Handle like a regular 2-arg call.
4491 | mov NARGS:RC, 3 4351 | mov NARGS:RD, 2+1
4492 | jne ->vmeta_call 4352 | jne ->vmeta_call
4493 | jmp aword LFUNC:RB->gate 4353 | mov BASE, RA
4354 | ins_call
4494 break; 4355 break;
4495 4356
4496 case BC_VARG: 4357 case BC_VARG:
@@ -4799,6 +4660,150 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4799 | ins_next 4660 | ins_next
4800 break; 4661 break;
4801 4662
4663 /* -- Function headers -------------------------------------------------- */
4664
4665 /*
4666 ** Reminder: A function may be called with func/args above L->maxstack,
4667 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
4668 ** too. This means all FUNC* ops (including fast functions) must check
4669 ** for stack overflow _before_ adding more slots!
4670 */
4671
4672 case BC_FUNCF:
4673#if LJ_HASJIT
4674 | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
4675 | // hotcall RB
4676#endif
4677 case BC_FUNCV: /* NYI: compiled vararg functions. */
4678 | // Fall through. Assumes BC_IFUNCF/BC_IFUNCV follow and ins_AD is a no-op.
4679 break;
4680
4681 case BC_JFUNCF:
4682#if !LJ_HASJIT
4683 break;
4684#endif
4685 case BC_IFUNCF:
4686 | ins_AD // BASE = new base, RA = framesize, RD = nargs+1
4687 | mov KBASE, [PC-4+PC2PROTO(k)]
4688 | mov L:RB, SAVE_L
4689 | lea RA, [BASE+RA*8] // Top of frame.
4690 | cmp RA, L:RB->maxstack
4691 | ja ->vm_growstack_f
4692 | movzx RA, byte [PC-4+PC2PROTO(numparams)]
4693 | cmp NARGS:RD, RA // Check for missing parameters.
4694 | jbe >3
4695 |2:
4696 if (op == BC_JFUNCF) {
4697 | movzx RD, PC_RD
4698 | jmp =>BC_JLOOP
4699 } else {
4700 | ins_next
4701 }
4702 |
4703 |3: // Clear missing parameters.
4704 | mov dword [BASE+NARGS:RD*8-4], LJ_TNIL
4705 | add NARGS:RD, 1
4706 | cmp NARGS:RD, RA
4707 | jbe <3
4708 | jmp <2
4709 break;
4710
4711 case BC_JFUNCV:
4712#if !LJ_HASJIT
4713 break;
4714#endif
4715 | int3 // NYI: compiled vararg functions
4716 break; /* NYI: compiled vararg functions. */
4717
4718 case BC_IFUNCV:
4719 | ins_AD // BASE = new base, RA = framesize, RD = nargs+1
4720 | lea RB, [NARGS:RD*8+FRAME_VARG]
4721 | lea RD, [BASE+NARGS:RD*8]
4722 | mov LFUNC:KBASE, [BASE-8]
4723 | mov [RD-4], RB // Store delta + FRAME_VARG.
4724 | mov [RD-8], LFUNC:KBASE // Store copy of LFUNC.
4725 | mov L:RB, SAVE_L
4726 | lea RA, [RD+RA*8]
4727 | cmp RA, L:RB->maxstack
4728 | ja ->vm_growstack_v // Need to grow stack.
4729 | mov RA, BASE
4730 | mov BASE, RD
4731 | movzx RB, byte [PC-4+PC2PROTO(numparams)]
4732 | test RB, RB
4733 | jz >2
4734 |1: // Copy fixarg slots up to new frame.
4735 | add RA, 8
4736 | cmp RA, BASE
4737 | jnb >3 // Less args than parameters?
4738 | mov KBASE, [RA-8]
4739 | mov [RD], KBASE
4740 | mov KBASE, [RA-4]
4741 | mov [RD+4], KBASE
4742 | add RD, 8
4743 | mov dword [RA-4], LJ_TNIL // Clear old fixarg slot (help the GC).
4744 | sub RB, 1
4745 | jnz <1
4746 |2:
4747 if (op == BC_JFUNCV) {
4748 | movzx RD, PC_RD
4749 | jmp =>BC_JLOOP
4750 } else {
4751 | mov KBASE, [PC-4+PC2PROTO(k)]
4752 | ins_next
4753 }
4754 |
4755 |3: // Clear missing parameters.
4756 | mov dword [RD+4], LJ_TNIL
4757 | add RD, 8
4758 | sub RB, 1
4759 | jnz <3
4760 | jmp <2
4761 break;
4762
4763 case BC_FUNCC:
4764 case BC_FUNCCW:
4765 | ins_AD // BASE = new base, RA = ins RA|RD (unused), RD = nargs+1
4766 | mov CFUNC:RB, [BASE-8]
4767 | mov KBASEa, CFUNC:RB->f
4768 | mov L:RB, SAVE_L
4769 | lea RD, [BASE+NARGS:RD*8-8]
4770 | mov L:RB->base, BASE
4771 | lea RA, [RD+8*LUA_MINSTACK]
4772 | cmp RA, L:RB->maxstack
4773 | mov L:RB->top, RD
4774 if (op == BC_FUNCC) {
4775 |.if X64
4776 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
4777 |.else
4778 | mov ARG1, L:RB
4779 |.endif
4780 } else {
4781 |.if X64
4782 | mov CARG2, KBASEa
4783 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
4784 |.else
4785 | mov ARG2, KBASEa
4786 | mov ARG1, L:RB
4787 |.endif
4788 }
4789 | ja ->vm_growstack_c // Need to grow stack.
4790 | set_vmstate C
4791 if (op == BC_FUNCC) {
4792 | call KBASEa // (lua_State *L)
4793 } else {
4794 | // (lua_State *L, lua_CFunction f)
4795 | call aword [DISPATCH+DISPATCH_GL(wrapf)]
4796 }
4797 | set_vmstate INTERP
4798 | // nresults returned in eax (RD).
4799 | mov BASE, L:RB->base
4800 | lea RA, [BASE+RD*8]
4801 | neg RA
4802 | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
4803 | mov PC, [BASE-4] // Fetch PC of caller.
4804 | jmp ->vm_returnc
4805 break;
4806
4802 /* ---------------------------------------------------------------------- */ 4807 /* ---------------------------------------------------------------------- */
4803 4808
4804 default: 4809 default:
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 6fd8eb00..f50d16b8 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,575 +12,557 @@
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[15199] = { 15static const unsigned char build_actionlist[15137] = {
16 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
17 139,108,36,48,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15, 17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
18 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 18 20,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,199,
19 255,36,171,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252, 19 131,233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,
20 233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137,106, 20 1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
21 252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139,108, 21 1,15,133,244,1,248,2,255,139,108,36,48,137,181,233,248,3,139,68,36,20,139,
22 36,48,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15,132, 22 76,36,56,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,
23 244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137,56, 23 15,139,76,36,52,137,141,233,49,192,248,16,131,196,28,91,94,95,93,195,248,
24 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
25 244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193,232,
26 16,252,255,36,171,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,
27 252,233,244,2,248,14,137,113,252,252,139,189,233,139,108,36,48,141,68,193,
28 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,124,36,4,137,44,
29 36,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233,237,139,149,
30 233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,252,
31 247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252,252,139,189,233,
32 139,108,36,48,141,68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,
33 233,137,44,36,15,135,244,15,199,131,233,237,252,255,215,199,131,233,237,139,
34 149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,
35 252,247,198,237,15,132,244,17,248,18,252,247,198,237,15,132,244,20,199,131,
36 233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,1,
37 139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
38 1,15,133,244,1,248,2,139,108,36,48,137,181,233,248,3,139,68,36,20,139,76,
39 36,56,248,4,255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,
40 21,139,76,36,52,137,141,233,49,192,248,22,131,196,28,91,94,95,93,195,248,
41 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131, 24 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131,
42 192,1,252,233,244,4,248,7,133,201,15,132,244,5,41,193,141,20,202,252,233, 25 192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,20,202,252,
43 244,5,248,8,255,137,149,233,137,68,36,20,137,202,137,252,233,232,251,1,0, 26 233,244,5,248,8,137,149,233,137,68,36,20,137,202,137,252,233,232,251,1,0,
44 139,149,233,252,233,244,3,248,23,137,208,137,204,248,24,139,108,36,48,139, 27 139,149,233,252,233,244,3,248,17,137,208,137,204,248,18,139,108,36,48,139,
45 173,233,199,133,233,237,252,233,244,22,248,25,129,225,239,137,204,248,26, 28 173,233,199,133,233,237,252,233,244,16,248,19,129,225,239,137,204,248,20,
46 139,108,36,48,185,252,248,252,255,252,255,252,255,184,237,139,149,233,139, 29 139,108,36,48,185,252,248,252,255,252,255,252,255,184,237,255,139,149,233,
47 157,233,129,195,239,139,114,252,252,199,66,252,252,237,199,131,233,237,255, 30 139,157,233,129,195,239,139,114,252,252,199,66,252,252,237,199,131,233,237,
48 252,233,244,16,248,20,252,247,198,237,15,132,244,27,131,230,252,248,41,252, 31 252,233,244,12,248,21,186,237,252,233,244,248,248,22,131,232,8,252,233,244,
49 242,141,76,49,252,248,139,114,252,252,199,68,10,4,237,252,233,244,16,248, 32 247,248,23,141,68,194,252,248,248,1,15,182,142,233,131,198,4,137,149,233,
50 15,186,237,252,233,244,247,248,13,137,202,248,11,141,68,194,252,248,15,182, 33 137,133,233,255,137,116,36,24,137,202,248,2,137,252,233,232,251,1,0,139,149,
51 142,233,131,198,4,137,149,233,137,133,233,137,116,36,24,137,202,248,1,137, 34 233,139,133,233,139,106,252,248,139,114,252,252,41,208,193,232,3,131,192,
52 252,233,232,251,1,0,139,141,233,255,139,133,233,139,105,252,248,139,113,252, 35 1,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,
53 252,41,200,193,232,3,131,192,1,252,255,165,233,248,28,85,87,86,83,131,252, 36 24,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192,141,
54 236,28,139,108,36,48,139,76,36,52,190,237,49,192,141,188,253,36,233,139,157, 37 188,253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68,36,
55 233,129,195,239,137,189,233,137,68,36,24,137,68,36,52,56,133,233,15,132,244, 38 52,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
56 249,199,131,233,237,136,133,233,139,149,233,139,133,233,41,200,193,232,3, 39 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252,
57 131,192,1,41,209,139,114,252,252,137,68,36,20,252,247,198,237,15,132,244, 40 247,198,237,15,132,244,13,255,252,233,244,14,248,25,85,87,86,83,131,252,236,
58 17,252,233,244,18,248,29,255,85,87,86,83,131,252,236,28,190,237,252,233,244, 41 28,190,237,252,233,244,247,248,26,85,87,86,83,131,252,236,28,190,237,248,
59 247,248,30,85,87,86,83,131,252,236,28,190,237,248,1,139,108,36,48,139,76, 42 1,139,108,36,48,139,76,36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,
60 36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,137,165,233,139,157,233, 43 137,165,233,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,
61 129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,41, 44 41,214,139,133,233,41,200,193,232,3,131,192,1,248,27,255,139,105,252,248,
62 200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,239,15,133,244, 45 129,121,253,252,252,239,15,133,244,28,248,29,137,202,137,114,252,252,139,
63 31,252,255,165,233,248,32,255,85,87,86,83,131,252,236,28,139,108,36,48,139, 46 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,30,
64 68,36,56,139,76,36,52,139,84,36,60,137,108,36,24,139,189,233,43,189,233,199, 47 85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,
65 68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137,76,36,4,137,44,36,139,189, 48 36,60,137,108,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,
66 233,137,124,36,52,137,165,233,252,255,210,133,192,15,132,244,21,137,193,190, 49 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,
67 237,252,233,244,2,248,27,1,209,131,230,252,248,137,213,41,252,242,199,68, 50 252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,
68 193,252,252,237,137,200,139,117,252,244,139,77,252,240,139,122,252,248,139, 51 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,
69 191,233,139,191,233,252,255,225,248,33,15,182,78,252,255,131,252,237,16,141, 52 117,252,244,139,77,252,240,139,122,252,248,139,191,233,139,191,233,252,255,
70 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,137,76,36,8,139, 53 225,248,31,255,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,
71 72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,233,244,35,248,36,137,68,36, 54 132,244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,
72 16,199,68,36,20,237,255,141,68,36,16,128,126,252,252,235,15,133,244,247,141, 55 137,69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20,237,
73 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,37,15,182,70,252, 56 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,
74 254,255,252,242,15,42,192,252,242,15,17,68,36,16,255,137,68,36,12,219,68, 57 4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,255,252,242,15,42,
75 36,12,221,92,36,16,255,141,68,36,16,252,233,244,247,248,38,15,182,70,252, 58 192,252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,
76 254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4, 59 141,68,36,16,252,233,244,247,248,36,15,182,70,252,254,141,4,194,248,1,15,
77 139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,1, 60 182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,
78 139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,139,104,4,139, 61 8,137,44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15,
79 0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 62 132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,
80 252,255,36,171,248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105, 63 202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,
81 252,248,184,3,0,0,0,252,255,165,233,248,39,137,68,36,16,199,68,36,20,237, 64 139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252,
82 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,255,137,41,199, 65 233,244,29,248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,
83 65,4,237,137,205,252,233,244,248,248,40,15,182,70,252,254,255,141,68,36,16, 66 252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233,
84 252,233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255, 67 244,248,248,38,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,39,
85 141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137, 68 15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,
86 149,233,137,116,36,24,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182, 69 137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,
87 78,252,253,139,108,202,4,139,12,202,137,104,4,137,8,248,42,139,6,15,182,204, 70 232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108,
88 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113, 71 202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198,
89 252,244,15,182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141, 72 4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,
90 177,233,41,214,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,15,182, 73 253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,
91 110,252,252,141,4,194,141,12,202,137,108,36,12,139,108,36,48,137,68,36,8, 74 252,248,184,237,252,233,244,29,248,41,15,182,110,252,252,141,4,194,141,12,
92 137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139,149, 75 202,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,
93 233,131,252,248,1,15,135,244,44,248,4,255,141,118,4,15,130,244,252,248,5, 76 233,137,116,36,24,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,
94 15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131, 77 244,42,248,4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,
95 198,4,193,232,16,252,255,36,171,248,45,131,198,4,129,120,253,4,239,15,130, 78 134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
96 244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131,252, 79 171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,
97 238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149, 80 129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,108,
98 233,137,116,36,24,232,251,1,4,252,233,244,3,248,48,255,141,4,199,252,233, 81 36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,
99 244,247,248,49,141,4,199,141,44,252,234,149,252,233,244,248,248,50,141,4, 82 251,1,4,252,233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,
100 194,137,197,252,233,244,248,248,51,141,4,194,248,1,141,44,252,234,248,2,141, 83 44,252,234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,
101 12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36, 84 49,141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,
102 4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,251,1,5,139,149,233, 85 48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,
103 133,192,15,132,244,42,248,44,137,193,41,208,137,113,252,244,141,176,233,139, 86 149,233,137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,
104 105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,244,31,255,252,255, 87 137,193,41,208,137,113,252,244,141,176,233,255,184,237,252,233,244,27,248,
105 165,233,248,52,139,108,36,48,137,149,233,141,20,194,137,252,233,137,116,36, 88 50,139,108,36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,
106 24,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76,36,20,137,68,36,16, 89 1,6,139,149,233,252,233,244,42,248,51,141,76,202,8,248,28,137,76,36,20,137,
107 131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137, 90 68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,
108 149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139,68,36,16,139, 91 44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139,
109 105,252,248,131,192,1,57,215,15,132,244,53,252,255,165,233,248,54,139,108, 92 68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,52,137,202,137,114,252,
110 36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,1,8,139,149,233, 93 252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
111 139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248, 94 248,53,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,
112 55,129,252,248,239,15,130,244,56,255,139,105,4,129,252,253,239,15,131,244, 95 1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,
113 56,137,68,36,20,137,105,252,252,139,41,137,105,252,248,131,232,2,15,132,244, 96 253,171,233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,
114 248,137,76,36,16,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,105, 97 239,15,131,244,55,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137,
115 252,248,131,232,1,15,133,244,1,139,76,36,16,248,2,139,68,36,20,252,233,244, 98 106,252,248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,
116 57,248,58,129,252,248,239,15,130,244,56,139,105,4,184,237,252,247,213,57, 99 105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
117 232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,105,252,248,139, 100 20,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237,
118 132,253,197,233,199,65,252,252,237,137,65,252,248,252,233,244,59,248,60,129, 101 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,
119 252,248,239,15,130,244,56,139,105,4,129,252,253,239,15,133,244,252,248,1, 102 106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,
120 139,41,139,173,233,248,2,133,252,237,199,65,252,252,237,15,132,244,59,139, 103 252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,139,
121 65,252,248,139,131,233,199,65,252,252,237,137,105,252,248,137,76,36,16,139, 104 114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,
122 141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133, 105 133,252,237,199,66,252,252,237,15,132,244,58,139,131,233,199,66,252,252,237,
123 244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3, 106 137,106,252,248,139,141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,
124 252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,255,139,1,139, 107 185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,
125 76,36,16,137,105,252,252,137,65,252,248,252,233,244,59,248,6,129,252,253, 108 201,15,133,244,3,252,233,244,58,248,5,139,105,4,129,252,253,239,15,132,244,
126 239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213, 109 58,255,139,1,137,106,252,252,137,66,252,248,252,233,244,58,248,6,129,252,
127 139,172,253,171,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,129, 110 253,239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,
128 121,253,4,239,15,133,244,56,255,139,41,131,189,233,0,15,133,244,56,129,121, 111 213,139,172,253,171,233,252,233,244,2,248,60,129,252,248,239,15,130,244,55,
129 253,12,239,15,133,244,56,139,65,8,137,133,233,199,65,252,252,237,137,105, 112 129,122,253,4,239,15,133,244,55,255,139,42,131,189,233,0,15,133,244,55,129,
130 252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,137, 113 122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,
131 171,233,137,133,233,248,1,252,233,244,59,248,62,255,129,252,248,239,15,130, 114 252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,
132 244,56,129,121,253,4,239,15,133,244,56,139,1,139,108,36,48,137,68,36,4,137, 115 235,139,131,233,137,171,233,137,133,233,248,1,252,233,244,58,248,61,255,129,
133 44,36,137,205,137,84,36,16,131,193,8,137,76,36,8,232,251,1,9,137,252,233, 116 252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,2,139,108,36,
134 139,84,36,16,139,40,139,64,4,137,105,252,248,137,65,252,252,252,233,244,59, 117 48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,1,9,137,252,
135 248,63,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,56,255, 118 234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252,252,252,233,
136 252,242,15,16,1,252,233,244,64,255,221,1,252,233,244,65,255,248,66,129,252, 119 244,58,248,62,129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,
137 248,239,15,130,244,56,129,121,253,4,239,15,133,244,249,139,1,248,2,199,65, 120 55,255,252,242,15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,
138 252,252,237,137,65,252,248,252,233,244,59,248,3,129,121,253,4,239,15,135, 121 129,252,248,239,15,130,244,55,139,114,252,252,129,122,253,4,239,15,133,244,
139 244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,15,130,244, 122 249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,
140 247,232,244,67,248,1,139,108,36,48,137,141,233,137,113,252,252,137,116,36, 123 122,253,4,239,15,135,244,55,131,187,233,0,15,133,244,55,139,171,233,59,171,
141 24,137,84,36,16,137,202,137,252,233,232,251,1,10,139,141,233,139,84,36,16, 124 233,255,15,130,244,247,232,244,66,248,1,139,108,36,48,137,149,233,137,116,
142 252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129, 125 36,24,137,252,233,232,251,1,10,139,149,233,252,233,244,2,248,67,129,252,248,
143 121,253,4,239,15,133,244,56,139,41,137,108,36,4,139,108,36,48,137,44,36,137, 126 239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15,133,244,55,139,
144 141,233,255,137,113,252,252,137,84,36,16,131,193,8,137,76,36,8,137,116,36, 127 108,36,48,137,149,233,255,139,114,252,252,139,2,137,68,36,4,137,44,36,131,
145 24,232,251,1,11,139,141,233,139,84,36,16,133,192,15,132,244,249,139,105,8, 128 194,8,137,84,36,8,137,116,36,24,232,251,1,11,139,149,233,133,192,15,132,244,
146 139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,20,137,41,137, 129 249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,
147 65,4,248,69,184,237,252,233,244,70,248,2,199,65,12,237,252,233,244,1,248, 130 20,137,42,137,66,4,248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,
148 3,199,65,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56, 131 233,244,1,248,3,199,66,252,252,237,252,233,244,58,248,70,129,252,248,239,
149 129,121,253,4,239,255,15,133,244,56,139,133,233,199,65,252,252,237,137,65, 132 15,130,244,55,139,106,252,248,129,122,253,4,239,255,15,133,244,55,139,133,
150 252,248,199,65,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130, 133 233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,
151 244,56,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,255, 134 252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
152 252,242,15,16,65,8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252, 135 133,244,55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,252,242,15,
153 242,15,88,193,252,242,15,45,192,252,242,15,17,65,252,248,255,221,65,8,217, 136 16,66,8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,
154 232,222,193,219,20,36,221,89,252,248,139,4,36,255,139,41,59,133,233,15,131, 137 193,252,242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,
155 244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,139,40, 138 219,20,36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,
156 139,64,4,137,41,137,65,4,252,233,244,69,248,2,131,189,233,0,15,132,244,73, 139 224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,137,
157 137,84,36,16,135,205,137,194,232,251,1,12,137,252,233,139,84,36,16,133,192, 140 42,137,66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,233,
158 15,133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15, 141 137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,184,
159 130,244,56,129,121,253,4,239,15,133,244,56,139,133,233,199,65,252,252,237, 142 237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,106,252,248,
160 137,65,252,248,255,15,87,192,252,242,15,17,65,8,255,217,252,238,221,89,8, 143 129,122,253,4,239,15,133,244,55,139,133,233,139,114,252,252,199,66,252,252,
161 255,184,237,252,233,244,70,248,75,129,252,248,239,15,130,244,56,137,113,252, 144 237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,
162 252,190,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,252,246,131, 145 8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,74,
163 233,235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,31,252,255, 146 8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,
164 165,233,248,3,131,198,1,252,233,244,2,248,76,255,129,252,248,239,15,130,244, 147 238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239,
165 56,129,121,253,12,239,15,133,244,56,137,113,252,252,139,105,4,137,105,12, 148 15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,
166 199,65,4,237,139,41,139,113,8,137,105,8,137,49,190,237,137,202,129,193,239, 149 106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252,248,
167 131,232,2,252,233,244,1,248,9,139,116,36,24,252,233,244,56,248,77,129,252, 150 239,15,130,244,55,139,42,139,114,252,252,137,116,36,24,137,44,36,129,122,
168 248,239,15,130,244,56,139,41,137,113,252,252,137,116,36,24,137,44,36,129, 151 253,4,239,15,133,244,55,131,189,233,0,15,133,244,55,128,189,233,235,15,135,
169 121,253,4,239,15,133,244,9,255,131,189,233,0,15,133,244,9,128,189,233,235, 152 244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,1,141,
170 15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132,244, 153 116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,48,137,149,
171 9,248,1,141,116,198,252,240,59,181,233,15,135,244,9,137,181,233,139,108,36, 154 233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206,15,132,244,249,
172 48,137,141,233,131,193,8,137,141,233,255,139,108,36,4,141,76,193,232,41,252, 155 248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,
173 241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137, 156 206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,
174 70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12, 157 24,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129,252,248,239,
175 137,76,36,8,232,244,28,199,131,233,237,139,108,36,48,139,52,36,139,149,233, 158 15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,
176 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233, 159 15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,
177 137,252,254,41,206,15,132,244,252,255,141,4,50,193,252,238,3,59,133,233,15, 160 205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,
178 135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131, 161 244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,
179 193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139, 162 185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244,13,252,
180 116,36,24,137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237, 163 233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,142,233,
181 15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233,131,252, 164 139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,12,36,137,185,
182 233,8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248, 165 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,77,
183 9,255,139,12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233, 166 139,106,252,248,139,173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,
184 252,233,244,4,248,9,139,116,36,24,252,233,244,56,248,78,139,173,233,137,113, 167 233,0,15,133,244,55,255,128,189,233,235,15,135,244,55,139,141,233,15,132,
185 252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,9,128,189,233,235, 168 244,247,59,141,233,15,132,244,55,248,1,141,116,193,252,248,59,181,233,15,
186 15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,255,15,132, 169 135,244,55,137,181,233,139,108,36,48,137,149,233,137,149,233,141,108,194,
187 244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137,181,233,139,108, 170 252,240,41,252,245,57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,
188 36,48,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,41,252,241, 171 252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,
189 57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70, 172 36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237,139,108,36,
190 252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137, 173 48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,
191 76,36,8,232,244,28,199,131,233,237,139,108,36,48,139,52,36,139,149,233,255, 174 139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,
192 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233, 175 238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,
193 137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135, 176 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,
194 244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193, 177 116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,
195 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137,68,36,20, 178 248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,12,36,137,185,233,137,
196 49,201,252,247,198,237,15,132,244,17,255,252,233,244,18,248,8,137,252,242, 179 252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,78,139,108,
197 137,252,233,232,251,1,13,248,9,139,12,36,137,185,233,137,252,242,137,252, 180 36,48,252,247,133,233,237,15,132,244,55,255,137,149,233,141,68,194,252,248,
198 233,232,251,1,0,139,149,233,252,233,244,4,248,79,139,108,36,48,137,113,252, 181 137,133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,255,248,
199 252,252,247,133,233,237,15,132,244,56,137,141,233,141,68,193,252,248,137, 182 64,139,114,252,252,221,90,252,248,252,233,244,58,248,79,129,252,248,239,15,
200 133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,22,255,248,65, 183 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,102,15,252,239,
201 221,89,252,248,252,233,244,59,248,80,129,252,248,239,15,130,244,56,129,121, 184 201,102,15,118,201,102,15,115,209,1,15,84,193,248,63,139,114,252,252,252,
202 253,4,239,15,135,244,56,252,242,15,16,1,102,15,252,239,201,102,15,118,201, 185 242,15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,253,
203 102,15,115,209,1,15,84,193,248,64,252,242,15,17,65,252,248,255,248,80,129, 186 4,239,15,135,244,55,221,2,217,225,248,63,248,64,139,114,252,252,221,90,252,
204 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,225,248, 187 248,255,248,58,184,237,248,69,137,68,36,20,248,56,252,247,198,237,15,133,
205 64,248,65,221,89,252,248,255,248,59,184,237,248,70,137,68,36,20,248,57,252, 188 244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,252,247,209,
206 247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,139,6,15,182, 189 141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
207 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,193,252,244, 190 248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,252,248,252,
208 237,131,192,1,252,233,244,5,248,7,137,202,185,252,248,252,255,252,255,252, 191 255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,239,15,130,244,
209 255,252,233,244,18,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4, 192 55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,244,63,248,81,
210 239,15,135,244,56,252,242,15,81,1,252,233,244,64,248,82,129,252,248,239,15, 193 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
211 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,83,252, 194 16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,130,244,55,129,
212 233,244,64,248,84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 195 122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,233,244,63,255,
213 135,244,56,252,242,15,16,1,232,244,85,252,233,244,64,255,248,81,129,252,248, 196 248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
214 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,250,252,233, 197 2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,244,55,129,122,
215 244,65,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 198 253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,83,255,129,252,
216 56,221,1,232,244,83,252,233,244,65,248,84,255,129,252,248,239,15,130,244, 199 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,84,252,
217 56,129,121,253,4,239,15,135,244,56,221,1,232,244,85,252,233,244,65,255,248, 200 233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
218 86,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252, 201 135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,248,86,129,252,248,
219 237,221,1,217,252,241,252,233,244,65,248,87,129,252,248,239,15,130,244,56, 202 239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,236,221,2,217,252,
220 129,121,253,4,239,15,135,244,56,217,252,236,221,1,217,252,241,252,233,244, 203 241,252,233,244,64,248,87,129,252,248,239,255,15,130,244,55,129,122,253,4,
221 65,248,88,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,135,244, 204 239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,89,129,252,248,239,
222 56,221,1,232,244,89,252,233,244,65,248,90,129,252,248,239,15,130,244,56,129, 205 15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,254,252,233,244,
223 121,253,4,239,15,135,244,56,221,1,217,252,254,252,233,244,65,248,91,129,252, 206 64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,4,239,15,135,244,
224 248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,255, 207 55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,15,130,244,55,
225 252,233,244,65,248,92,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 208 129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,233,244,64,
226 135,244,56,221,1,217,252,242,221,216,252,233,244,65,248,93,129,252,248,239, 209 248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,135,244,55,
227 15,130,244,56,255,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217, 210 221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,
228 232,222,225,217,252,250,217,252,243,252,233,244,65,248,94,129,252,248,239, 211 64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
229 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,232, 212 2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,
230 222,225,217,252,250,217,201,217,252,243,252,233,244,65,248,95,129,252,248, 213 244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
231 239,15,130,244,56,129,121,253,4,239,15,135,244,56,255,221,1,217,232,217,252, 214 55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,129,252,248,239,
232 243,252,233,244,65,255,248,96,129,252,248,239,15,130,244,56,129,121,253,4, 215 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15,
233 239,15,135,244,56,252,242,15,16,1,252,242,15,17,4,36,255,248,96,129,252,248, 216 17,4,36,255,248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
234 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,221,28,36,255,137, 217 244,55,221,2,221,28,36,255,137,213,232,251,1,14,137,252,234,252,233,244,64,
235 76,36,16,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233,244,65,255, 218 255,248,96,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
236 248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252, 219 252,242,15,16,2,252,242,15,17,4,36,255,248,96,129,252,248,239,15,130,244,
237 242,15,16,1,252,242,15,17,4,36,255,248,97,129,252,248,239,15,130,244,56,129, 220 55,129,122,253,4,239,15,135,244,55,221,2,221,28,36,255,137,213,232,251,1,
238 121,253,4,239,15,135,244,56,221,1,221,28,36,255,137,76,36,16,137,213,232, 221 15,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,244,55,129,
239 251,1,15,139,76,36,16,137,252,234,252,233,244,65,255,248,98,129,252,248,239, 222 122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15,17,4,36,255,248,97,
240 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15, 223 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,221,28,
241 17,4,36,255,248,98,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 224 36,255,137,213,232,251,1,16,137,252,234,252,233,244,64,248,98,255,248,99,
242 244,56,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,16,139,76,36,16, 225 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
243 137,252,234,252,233,244,65,248,99,255,248,100,129,252,248,239,15,130,244, 226 16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,
244 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,89,133,233, 227 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,
245 252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,121,253,4,239, 228 248,220,141,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,
246 15,135,244,56,221,1,220,141,233,252,233,244,65,255,248,101,129,252,248,239, 229 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,
247 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 230 66,8,217,252,243,252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,
248 56,221,1,221,65,8,217,252,243,252,233,244,65,248,102,129,252,248,239,15,130, 231 122,253,4,239,15,135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,
249 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,255,15,135,244, 232 221,2,217,252,253,221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,
250 56,221,65,8,221,1,217,252,253,221,217,252,233,244,65,248,103,129,252,248, 233 55,139,106,4,129,252,253,239,15,135,244,55,139,114,252,252,139,2,137,106,
251 239,15,130,244,56,139,105,4,129,252,253,239,15,135,244,56,139,1,137,105,252, 234 252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,
252 252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232, 235 9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,
253 15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248, 236 248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,
254 1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,36, 237 36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,
255 16,255,139,105,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63, 238 63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
256 137,105,252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237,252,233, 239 244,69,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
257 244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255, 240 248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,102,15,112,201,81,
258 252,242,15,16,1,189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15, 241 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,
259 89,193,252,242,15,17,65,252,248,255,221,1,199,68,36,16,0,0,128,90,216,76, 242 90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,
260 36,16,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244, 243 233,244,1,255,248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
261 1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 244 135,244,55,252,242,15,16,2,255,248,103,129,252,248,239,15,130,244,55,129,
262 56,252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253, 245 122,253,4,239,15,135,244,55,221,2,255,139,106,4,139,114,252,252,209,229,129,
263 4,239,15,135,244,56,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255, 246 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,104,252,242,
264 15,132,244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242, 247 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
265 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,220,252,233,248, 248 244,104,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
266 1,221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, 249 4,49,232,15,136,244,249,248,2,184,237,252,233,244,69,248,3,129,252,245,0,
267 248,2,184,237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,105,4,252,233, 250 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,
268 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 251 252,238,217,201,252,233,244,1,255,248,105,129,252,248,239,15,130,244,55,129,
269 1,255,248,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 252 122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,66,8,221,
270 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223, 253 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,64,255,248,
271 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15, 254 106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
272 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 255 253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,232,244,107,252,
273 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248, 256 233,244,63,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
274 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, 257 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,232,244,107,252,
275 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248, 258 233,244,64,255,248,108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
276 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 259 135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,
277 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252, 260 253,252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,
278 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, 261 242,15,93,193,131,197,1,252,233,244,1,255,248,108,129,252,248,239,15,130,
279 197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,56,129,121,253, 262 244,55,129,122,253,4,239,15,135,244,55,221,2,189,2,0,0,0,248,1,57,197,15,
280 4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124, 263 131,244,64,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234,
281 253,252,233,252,252,239,15,135,244,251,221,68,252,233,252,248,255,219,252, 264 252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,246,196,
282 233,219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217, 265 1,15,132,244,248,217,201,248,2,221,216,88,255,248,109,129,252,248,239,15,
283 201,248,2,221,216,88,255,248,110,129,252,248,239,15,130,244,56,129,121,253, 266 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,
284 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64, 267 1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,
285 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252, 268 242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,1,252,233,244,1,255,
286 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,110,129,252,248,239, 269 248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
287 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57, 270 2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,
288 197,15,131,244,65,129,124,253,252,233,252,252,239,15,135,244,251,221,68,252, 271 15,135,244,251,221,68,252,234,252,248,255,219,252,233,218,209,221,217,255,
289 233,252,248,255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246, 272 80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,
290 196,1,15,133,244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244, 273 255,248,5,221,216,252,233,244,55,255,248,110,129,252,248,239,15,130,244,55,
291 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 274 129,122,253,4,239,15,133,244,55,139,42,255,252,242,15,42,133,233,252,233,
292 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233, 275 244,63,255,219,133,233,252,233,244,64,255,248,111,129,252,248,239,15,133,
293 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133, 276 244,55,129,122,253,4,239,15,133,244,55,139,42,139,114,252,252,131,189,233,
294 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42, 277 1,15,130,244,72,15,182,173,233,255,252,242,15,42,197,252,233,244,63,255,137,
295 197,252,233,244,64,255,137,108,36,16,219,68,36,16,252,233,244,65,255,248, 278 108,36,16,219,68,36,16,252,233,244,64,255,248,112,139,171,233,59,171,233,
296 113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,239, 279 15,130,244,247,232,244,66,248,1,129,252,248,239,15,133,244,55,129,122,253,
297 15,133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252, 280 4,239,15,135,244,55,255,252,242,15,45,2,61,252,255,0,0,0,15,135,244,55,137,
298 255,0,0,0,15,135,244,56,137,68,36,20,255,221,1,219,92,36,20,129,124,36,20, 281 68,36,20,255,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,55,
299 252,255,0,0,0,15,135,244,56,255,199,68,36,8,1,0,0,0,141,68,36,20,137,76,36, 282 255,199,68,36,8,1,0,0,0,141,68,36,20,248,113,139,108,36,48,137,149,233,137,
300 16,248,114,139,108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36,24, 283 68,36,4,137,44,36,137,116,36,24,232,251,1,17,139,149,233,139,114,252,252,
301 232,251,1,17,139,76,36,16,139,149,233,199,65,252,252,237,137,65,252,248,252, 284 199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,139,171,233,59,171,
302 233,244,59,248,115,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1, 285 233,15,130,244,247,232,244,66,248,1,199,68,36,20,252,255,252,255,252,255,
303 137,76,36,16,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239, 286 252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,255,
304 15,130,244,56,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105,16, 287 252,242,15,45,106,16,137,108,36,20,255,221,66,16,219,92,36,20,255,248,1,129,
305 137,108,36,20,255,221,65,16,219,92,36,20,255,248,1,129,121,253,4,239,15,133, 288 122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,
306 244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36,12,139,173,233, 289 36,12,139,173,233,255,252,242,15,45,74,8,255,221,66,8,219,92,36,8,139,76,
307 255,252,242,15,45,73,8,255,221,65,8,219,92,36,8,139,76,36,8,255,139,68,36, 290 36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,
308 20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,12, 291 248,3,139,108,36,12,41,200,15,140,244,115,141,172,253,13,233,131,192,1,248,
309 41,200,15,140,244,116,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137, 292 4,137,68,36,8,137,232,252,233,244,113,248,5,15,140,244,252,141,68,40,1,252,
310 232,252,233,244,114,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6, 293 233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,
311 137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143, 294 131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,115,49,192,252,
312 244,3,248,8,185,1,0,0,0,252,233,244,3,248,116,49,192,252,233,244,4,248,117, 295 233,244,4,248,116,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,
313 129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,244, 296 130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,55,129,122,
314 67,248,1,255,137,76,36,16,129,121,253,4,239,15,133,244,56,129,121,253,12, 297 253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,66,8,219,92,
315 239,15,135,244,56,139,41,255,252,242,15,45,65,8,255,221,65,8,219,92,36,20, 298 36,20,139,68,36,20,255,133,192,15,142,244,115,131,189,233,1,15,130,244,115,
316 139,68,36,20,255,133,192,15,142,244,116,131,189,233,1,15,130,244,116,15,133, 299 15,133,244,117,57,131,233,15,130,244,117,15,182,141,233,139,171,233,137,68,
317 244,118,57,131,233,15,130,244,118,15,182,141,233,139,171,233,137,68,36,8, 300 36,8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,
318 248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,114, 301 244,113,248,118,129,252,248,239,255,15,130,244,55,139,171,233,59,171,233,
319 248,119,129,252,248,239,255,15,130,244,56,139,171,233,59,171,233,15,130,244, 302 15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,
320 247,232,244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41, 303 133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,129,197,239,137,
321 139,133,233,133,192,15,132,244,116,57,131,233,15,130,244,120,129,197,239, 304 116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,
322 137,116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131, 305 1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,113,248,120,
323 232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,114,248, 306 129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,232,244,
324 121,129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232, 307 66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,255,
325 244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133, 308 15,130,244,119,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,
326 233,57,131,233,255,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139, 309 244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,
327 179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248, 310 15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,
328 131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232, 311 137,252,240,139,116,36,20,252,233,244,113,248,121,129,252,248,239,15,130,
329 1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,114,248,122,129,252, 312 244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,
330 248,239,15,130,244,56,255,139,171,233,59,171,233,15,130,244,247,232,244,67, 313 253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119,129,
331 248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133,233,57, 314 197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,
332 131,233,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 315 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
333 252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131, 316 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,
334 252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1, 317 36,20,252,233,244,113,248,122,129,252,248,239,15,130,244,55,129,122,253,4,
335 15,137,244,1,137,252,240,139,116,36,20,252,233,244,114,248,123,129,252,248, 318 239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242,15,
336 239,15,130,244,56,129,121,253,4,239,15,133,244,56,137,84,36,16,137,205,139, 319 42,192,252,233,244,63,255,137,4,36,219,4,36,252,233,244,64,255,248,123,129,
337 9,232,251,1,18,137,252,233,139,84,36,16,255,252,242,15,42,192,252,233,244, 320 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
338 64,255,137,4,36,219,4,36,252,233,244,65,255,248,124,129,252,248,239,15,130,
339 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,
340 15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,252,242,15,
341 42,197,252,233,244,64,255,248,124,129,252,248,239,15,130,244,56,129,121,253,
342 4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,
343 219,4,36,252,233,244,65,255,248,125,129,252,248,239,15,130,244,56,129,121,
344 253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,
345 15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,125,129,252,248,239,
346 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,
347 89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,193,252,240,255,
348 137,84,36,16,255,248,1,57,200,15,134,244,126,129,120,253,4,239,15,135,244,
349 127,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,221,0,
350 216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,128,129,
351 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,
352 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,
353 197,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
354 56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,
355 242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,255,221,0,216,68,36,16,
356 221,28,36,11,44,36,255,248,129,129,252,248,239,15,130,244,56,129,121,253,
357 4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,
358 201,81,252,242,15,88,193,102,15,126,197,255,248,129,129,252,248,239,15,130,
359 244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,
360 68,36,16,221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,
361 126,194,49,213,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,130,129,
362 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,
363 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126, 321 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,
364 197,255,248,130,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 322 197,252,242,15,42,197,252,233,244,63,255,248,123,129,252,248,239,15,130,244,
365 56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15, 323 55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,
366 205,252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129,121,253, 324 16,221,28,36,219,4,36,252,233,244,64,255,248,124,129,252,248,239,15,130,244,
367 4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112, 325 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,
368 201,81,252,242,15,88,193,102,15,126,197,255,248,132,129,252,248,239,15,130, 326 205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,124,129,252,
369 244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216, 327 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,
370 68,36,16,221,28,36,139,44,36,255,252,247,213,255,248,131,252,242,15,42,197, 328 0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,194,252,
371 252,233,244,64,248,126,252,242,15,42,197,139,84,36,16,252,233,244,64,255, 329 240,248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255,252,
372 248,131,248,126,137,44,36,219,4,36,252,233,244,65,255,248,127,255,139,68, 330 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,
373 36,20,252,233,244,56,255,248,133,129,252,248,239,15,130,244,56,129,121,253, 331 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,
374 4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252, 332 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,
375 242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15, 333 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
376 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133, 334 248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
377 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253, 335 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
378 12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16, 336 16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,221,28,
337 36,11,44,36,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
338 135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
339 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,55,
340 129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,
341 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
342 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,129,129,252,248,
343 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,
344 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
345 248,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
346 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252,
347 233,244,125,255,248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
348 135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
349 252,242,15,88,193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,55,
350 129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,
351 221,28,36,139,44,36,255,252,247,213,255,248,125,252,242,15,42,197,252,233,
352 244,63,255,248,125,137,44,36,219,4,36,252,233,244,64,255,248,126,139,68,36,
353 20,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,
354 239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,
355 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
356 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,131,129,252,
357 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
358 15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
359 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,
360 193,252,233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,
361 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
362 242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,
363 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,
364 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,
365 12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,
379 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, 366 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
380 229,137,193,252,233,244,131,255,248,134,129,252,248,239,15,130,244,56,129, 367 252,237,137,193,252,233,244,125,255,248,133,129,252,248,239,15,130,244,55,
381 121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16, 368 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
382 1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, 369 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,
383 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,
384 134,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,
385 253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,
386 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
387 252,237,137,193,252,233,244,131,255,248,135,129,252,248,239,15,130,244,56,
388 129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,
389 15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,
390 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201, 370 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,
391 255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 371 255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
392 129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216, 372 129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,
393 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36, 373 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,
394 255,211,252,253,137,193,252,233,244,131,255,248,136,129,252,248,239,15,130, 374 255,211,252,253,137,193,252,233,244,125,255,248,134,129,252,248,239,15,130,
395 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252, 375 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,
396 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 376 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
397 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, 377 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
398 201,255,248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 378 201,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
399 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89, 379 55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,
400 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, 380 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
401 36,255,211,197,137,193,252,233,244,131,255,248,137,129,252,248,239,15,130, 381 36,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248,239,15,130,
402 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252, 382 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,
403 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 383 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
404 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, 384 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
405 201,255,248,137,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 385 201,255,248,135,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
406 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89, 386 55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,
407 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, 387 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
408 36,255,211,205,137,193,252,233,244,131,248,118,184,237,252,233,244,56,248, 388 36,255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,
409 120,184,237,248,56,139,108,36,48,41,202,137,113,252,252,137,116,36,24,137, 389 119,184,237,248,55,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,
410 84,36,16,137,141,233,141,68,193,252,248,141,144,233,137,133,233,139,65,252, 390 141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,
411 248,59,149,233,15,135,244,251,137,44,36,252,255,144,233,133,192,15,133,244, 391 244,251,137,44,36,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,
412 249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139,105, 392 255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,
413 252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248,252,255,165,233, 393 15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,
414 248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,139,141, 394 255,36,171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,
415 233,139,84,36,16,1,202,252,233,244,70,248,5,186,237,137,252,233,232,251,1, 395 252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,
416 0,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,41,202,137,84,36,20, 396 41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,
417 137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248,137,252,233, 397 252,233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,
418 137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131, 398 233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,149,233,
419 192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105,252,248, 399 139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,136,255,15,
420 195,248,138,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244, 400 182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,
421 247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,139,15, 401 244,247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,233,168,235,
422 182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233, 402 15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,
423 15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149,233,137, 403 235,15,132,244,251,248,1,139,108,36,48,137,149,233,137,252,242,137,252,233,
424 252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253, 404 232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,255,15,182,110,
425 248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,233,248, 405 252,252,15,183,70,252,254,252,255,164,253,171,233,248,138,131,198,4,139,77,
426 140,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,141,255,139,108,36, 406 232,137,76,36,20,252,233,244,4,248,139,255,139,106,252,248,139,173,233,15,
427 48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,251, 407 182,133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,
428 1,21,252,233,244,3,255,248,142,255,139,108,36,48,137,149,233,137,252,242, 408 139,233,137,171,233,137,116,36,24,232,251,1,21,252,233,244,3,255,248,140,
429 141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6,15,182, 409 255,141,68,194,252,248,139,108,36,48,137,149,233,137,133,233,137,252,242,
430 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,143,255,85,141, 410 141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,133,233,
431 108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252, 411 41,208,193,232,3,131,192,1,139,106,252,248,139,181,233,139,14,15,182,252,
432 137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139, 412 233,15,182,205,131,198,4,252,255,36,171,255,248,141,255,85,141,108,36,12,
433 233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,17,125, 413 85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,
434 216,252,242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252, 414 252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,
435 242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17, 415 252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,17,125,216,252,
436 69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,36,16, 416 242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,
437 141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48, 417 17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,
438 255,248,144,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0, 418 248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,36,16,141,139,
439 0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 419 233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48,255,248,
440 36,171,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4, 420 142,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,
441 102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36, 421 233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
442 4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102,15,115, 422 248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
443 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84, 423 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
444 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, 424 36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
445 15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,
446 81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,
447 248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,
448 255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
449 36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
450 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15, 425 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,
451 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 426 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
452 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15, 427 15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,
453 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,105,255, 428 194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,84,255,
454 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217, 429 217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,
455 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,147,102,15,252, 430 102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,
456 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102, 431 248,144,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,
457 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 432 102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,
458 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102, 433 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
459 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15, 434 184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15,194,193,6,
460 92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15, 435 102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124,36,
461 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102, 436 4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,
462 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134, 437 252,252,217,108,36,4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,
463 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184, 438 118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,
464 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102, 439 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,
465 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193, 440 252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,
466 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216, 441 15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
467 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 442 86,202,15,40,193,248,1,195,248,146,255,15,40,232,252,242,15,94,193,102,15,
468 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195, 443 252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,
469 255,248,89,217,252,234,222,201,248,149,217,84,36,4,129,124,36,4,0,0,128,127, 444 102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,
470 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,150,217,192, 445 15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,
471 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 446 63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,
472 217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219,84,36,4,219,68, 447 242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,
473 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138, 448 242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,241,217,
474 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0, 449 124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,
475 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 450 6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,248,88,
476 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233, 451 217,252,234,222,201,248,147,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,
477 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232, 452 247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,148,217,192,217,252,252,
478 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221, 453 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,
479 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224, 454 195,248,2,221,216,217,252,238,195,255,248,107,219,84,36,4,219,68,36,4,255,
480 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0, 455 223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138,244,255,
481 0,252,255,15,132,244,250,217,252,241,252,233,244,150,248,9,255,217,232,255, 456 221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,
482 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1, 457 244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,
483 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217, 458 248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,
484 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201, 459 4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,
485 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216, 460 241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,
486 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217, 461 232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0,
487 68,36,4,195,255,248,108,255,248,151,252,242,15,45,193,252,242,15,42,208,102, 462 0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252,
488 15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,1,15,142,244, 463 255,15,132,244,250,217,252,241,252,233,244,148,248,9,255,217,232,255,223,
489 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244, 464 252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1,221,
490 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232, 465 216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217,252,
491 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252, 466 238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201,248,
492 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252, 467 3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216,133,
493 240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252, 468 192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,
494 247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63, 469 4,195,255,248,107,255,248,149,252,242,15,45,193,252,242,15,42,208,102,15,
495 102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242, 470 46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,1,15,142,244,252,
496 15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0, 471 248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,
497 224,252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68, 472 248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,
498 36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68, 473 132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,
499 36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217, 474 15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252,240,
500 252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68, 475 63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252,247,
501 36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15, 476 216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63,102,
502 46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15, 477 15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242,15,
503 118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208, 478 17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0,224,
504 102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136, 479 252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68,36,
505 196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192, 480 8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68,36,
506 102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87, 481 12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,
507 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,153,255, 482 240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68,36,4,
508 139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244, 483 195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194,
509 248,232,244,83,252,233,244,253,248,1,232,244,85,252,233,244,253,248,2,131, 484 15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15,118,210,
510 252,248,3,15,132,244,247,15,135,244,248,232,244,105,255,252,233,244,253,248, 485 102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208,102,15,112,
511 1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221, 486 210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,
512 68,36,4,131,252,248,5,15,130,244,89,15,132,244,149,248,2,131,252,248,7,15, 487 208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192,102,15,112,
513 132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217, 488 192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87,192,195,248,
514 232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244, 489 5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,151,255,139,68,36,
515 248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131, 490 12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244,248,232,
516 252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242, 491 244,82,252,233,244,253,248,1,232,244,84,252,233,244,253,248,2,131,252,248,
517 221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,83,15,132, 492 3,15,132,244,247,15,135,244,248,232,244,104,255,252,233,244,253,248,1,252,
518 244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2, 493 242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221,68,36,
519 131,252,248,5,15,130,244,89,15,132,244,149,131,252,248,7,15,132,244,247,15, 494 4,131,252,248,5,15,130,244,88,15,132,244,147,248,2,131,252,248,7,15,132,244,
520 135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217, 495 247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,
521 252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252, 496 201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,255,
522 236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15, 497 217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,
523 132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195, 498 11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,
524 255,248,9,204,248,154,255,139,68,36,20,252,242,15,16,68,36,4,252,242,15,16, 499 195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,82,15,132,244,84,
525 76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,248, 500 131,252,248,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252,
526 7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,233,244, 501 248,5,15,130,244,88,15,132,244,147,131,252,248,7,15,132,244,247,15,135,244,
527 7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,252, 502 248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,
528 233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,5,15,132, 503 195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252,236,217,
529 244,247,255,15,135,244,248,232,244,148,252,233,244,7,248,1,90,232,244,108, 504 201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15,132,244,
530 82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,184,0, 505 247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,
531 0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,1,102, 506 9,204,248,152,255,139,68,36,20,252,242,15,16,68,36,4,252,242,15,16,76,36,
532 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,7,248, 507 12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,248,7,252,
533 2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247, 508 242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,233,244,7,248,
534 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 509 2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,252,233,244,
535 15,132,244,247,15,135,244,255,252,242,15,93,193,252,233,244,7,248,1,252,242, 510 7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,5,15,132,244,247,
511 255,15,135,244,248,232,244,146,252,233,244,7,248,1,90,232,244,107,82,252,
512 233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,184,0,0,0,128,
513 102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,1,102,15,252,
514 239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,7,248,2,255,
515 131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247,217,
516 252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,
517 132,244,247,15,135,244,255,252,242,15,93,193,252,233,244,7,248,1,252,242,
536 15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36, 518 15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,
537 12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252, 519 12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,
538 233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248, 520 233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,
539 1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132,244,108,131,252, 521 1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,15,132,244,107,131,252,
540 248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216, 522 248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216,
541 217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243, 523 217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,
542 195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244, 524 195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,
543 247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233, 525 247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,
544 218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217, 526 218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,
545 201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248, 527 201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,
546 217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242,0,0,32,0, 528 217,201,248,2,221,216,195,255,248,153,156,90,137,209,129,252,242,0,0,32,0,
547 82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,124, 529 82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,124,
548 36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,129,124,253,202, 530 36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249,255,129,124,
549 4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252,242,15,16, 531 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,
550 4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223, 532 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,
551 252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131, 533 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,
552 244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182, 534 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,
553 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131, 535 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,
554 198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251, 536 131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,
555 255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138, 537 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,
556 244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183, 538 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
557 70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180, 539 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
558 253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15, 540 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,
559 131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135, 541 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,
560 244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244, 542 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,
561 2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,252,247,208,131,198, 543 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131,
562 4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4, 544 198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,
563 129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4, 545 4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,
564 202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139, 546 4,202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,
565 108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247, 547 108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,
566 255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253, 548 255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,
567 134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 549 134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
568 171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204, 550 171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,
569 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253, 551 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,
570 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4, 552 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
571 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,50,255,252, 553 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,48,255,252,
572 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193, 554 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,
573 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194, 555 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,
574 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1, 556 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,
575 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204, 557 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,
576 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239, 558 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,
577 15,133,244,52,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252, 559 15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,
578 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1, 560 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1,
579 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48, 561 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,
580 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199, 562 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,
581 255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242, 563 255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,
582 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239, 564 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,
583 15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252, 565 15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,
584 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252, 566 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,
585 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4, 567 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,
586 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16, 568 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,
@@ -594,10 +576,10 @@ static const unsigned char build_actionlist[15199] = {
594 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234, 576 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,
595 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199, 577 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,
596 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4, 578 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,
597 252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244, 579 252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,154,255,232,244,
598 108,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36, 580 107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,
599 8,248,35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,23,139, 581 8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,23,139,
600 149,233,133,192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68, 582 149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68,
601 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182, 583 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,
602 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68, 584 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,
603 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 585 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
@@ -619,96 +601,99 @@ static const unsigned char build_actionlist[15199] = {
619 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189, 601 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,
620 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252, 602 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252,
621 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141, 603 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,
622 233,139,141,233,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141, 604 233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,
623 233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 605 248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,
624 171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137, 606 131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48,
625 149,233,141,20,202,137,252,233,232,251,1,25,139,149,233,248,1,139,6,15,182, 607 131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,
626 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74, 608 25,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
627 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149, 609 255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76,
628 233,137,116,36,24,232,251,1,26,139,149,233,15,182,78,252,253,137,4,202,199, 610 36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,26,139,149,
629 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
630 171,255,137,197,37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,132,244,
631 249,248,2,137,108,36,8,139,108,36,48,137,68,36,4,137,116,36,24,139,131,233,
632 137,44,36,59,131,233,137,149,233,15,131,244,251,248,1,232,251,1,27,139,149,
633 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, 611 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,
634 232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248, 612 232,131,198,4,193,232,16,252,255,36,171,255,137,197,37,252,255,7,0,0,193,
635 5,137,252,233,232,251,1,28,252,233,244,1,255,252,247,208,139,108,36,48,139, 613 252,237,11,61,252,255,7,0,0,15,132,244,249,248,2,137,108,36,8,139,108,36,
636 139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20, 614 48,137,68,36,4,137,116,36,24,139,131,233,137,44,36,59,131,233,137,149,233,
637 135,137,252,233,232,251,1,29,139,149,233,15,182,78,252,253,137,4,202,199, 615 15,131,244,251,248,1,232,251,1,27,139,149,233,15,182,78,252,253,137,4,202,
638 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 616 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
639 171,248,3,137,252,233,232,251,1,28,15,183,70,252,254,252,247,208,252,233, 617 36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,28,252,
640 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,157, 618 233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,
641 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158,255, 619 233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,29,
642 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44, 620 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
643 252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, 621 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,
644 242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219, 622 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,
645 4,36,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, 623 252,248,139,173,233,139,4,135,252,233,244,155,255,252,247,208,139,106,252,
646 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139, 624 248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,236,15,182,192,129,
647 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189, 625 124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,
648 233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78, 626 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,
649 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,38,139,4, 627 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233,
650 194,252,233,244,157,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129, 628 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,
651 124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157,139,141,233,35, 629 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,
652 136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129, 630 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233,
653 233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,139, 631 252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,
654 41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,6,15,182,204,15,182,232, 632 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182,
655 131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,185,237,252,233, 633 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
656 244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15, 634 244,34,139,44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233,
657 132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,36,255,15,182,252, 635 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,
658 236,15,182,192,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,59, 636 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,
659 133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248, 637 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
660 248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232, 638 171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,
661 131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139, 639 15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,
662 141,233,252,246,129,233,235,15,132,244,37,255,15,182,252,236,15,182,192,129, 640 133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,
663 124,253,252,234,4,239,15,133,244,41,139,44,252,234,129,124,253,194,4,239, 641 4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,
664 15,135,244,251,255,15,133,244,41,59,133,233,15,131,244,41,193,224,3,3,133, 642 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,
643 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
644 248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,
645 35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,
646 139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,
647 133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,
648 248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,
649 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
650 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,
651 244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
652 244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,233,137,171,
653 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,
654 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,
655 252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,
656 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,
657 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,
658 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,
659 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,
660 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,
661 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,
662 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,
663 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,
664 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,30,139,149,233,139,108,
665 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,
666 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,
667 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
665 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 668 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
666 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 669 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,
667 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, 670 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,
668 139,141,233,255,252,246,129,233,235,15,132,244,41,15,182,78,252,253,252,233, 671 255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,
669 244,1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,158, 672 244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,
670 248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253, 673 252,253,252,233,244,2,255,137,124,36,16,255,221,4,199,219,92,36,12,255,248,
671 252,233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124, 674 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
672 253,252,234,4,239,15,133,244,39,139,44,252,234,248,158,139,141,233,35,136, 675 68,36,20,255,252,242,15,45,252,248,255,139,124,36,12,255,131,232,1,15,132,
673 233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244, 676 244,250,1,252,248,59,133,233,15,131,244,251,41,252,248,193,231,3,3,189,233,
674 251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255, 677 248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,
675 252,246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4, 678 133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,
676 139,4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 679 16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,149,233,137,68,36,
677 252,255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233, 680 8,137,44,36,137,116,36,24,232,251,1,31,139,149,233,15,182,78,252,253,252,
678 252,246,129,233,235,15,132,244,39,139,76,36,16,252,233,244,2,248,5,139,137, 681 233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133,233,252,
679 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129, 682 233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,139,44,202,15,133,244,
680 233,235,15,132,244,39,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141, 683 51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
681 68,36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137, 684 205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,139,105,252,248,129,
682 116,36,24,232,251,1,30,139,149,233,139,108,36,12,137,193,252,233,244,2,248, 685 121,253,252,252,239,15,133,244,28,248,52,139,114,252,252,252,247,198,237,
683 7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15, 686 15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,244,249,
684 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252, 687 248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232,1,15,
685 234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132, 688 133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,1,15,135,244,251,
686 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139, 689 248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
687 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 690 248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,252,247,209,141,
688 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233, 691 12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,
689 235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
690 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,
691 36,16,255,221,4,199,219,92,36,12,255,248,1,141,12,202,139,105,252,248,252,
692 246,133,233,235,15,133,244,253,248,2,139,68,36,20,255,252,242,15,45,252,248,
693 255,139,124,36,12,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,
694 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,
695 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,
696 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,
697 36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,
698 1,31,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
699 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,20,255,141,
700 76,202,8,139,105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,
701 233,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,
702 244,31,248,53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,
703 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,
704 4,137,111,4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,
705 3,137,209,128,189,233,1,15,135,244,251,248,4,139,68,36,20,252,255,165,233,
706 248,5,255,252,247,198,237,15,133,244,4,15,182,70,252,253,252,247,208,141,
707 20,194,139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,
708 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255, 692 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,
709 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139, 693 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,
710 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137, 694 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,
711 65,252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255, 695 65,252,252,129,252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,
696 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,
712 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, 697 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124,
713 36,16,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, 698 36,16,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108,
714 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, 699 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,
@@ -721,7 +706,7 @@ static const unsigned char build_actionlist[15199] = {
721 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24, 706 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,
722 41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139, 707 41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,
723 141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68, 708 141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,
724 36,20,252,247,198,237,15,133,244,253,255,248,17,137,215,131,232,1,15,132, 709 36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,
725 244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131, 710 244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,
726 199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5, 711 199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,
727 57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106, 712 57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,
@@ -729,10 +714,10 @@ static const unsigned char build_actionlist[15199] = {
729 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204, 714 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,
730 15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,237, 715 15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,237,
731 131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15, 716 131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15,
732 139,244,18,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252, 717 139,244,14,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252,
733 237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,255,141,12,202,255, 718 237,129,229,239,102,131,172,253,43,233,1,15,132,244,139,255,141,12,202,255,
734 129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139, 719 129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,
735 105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16, 720 105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,15,16,
736 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255, 721 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,
737 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221, 722 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,
738 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24, 723 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,
@@ -743,32 +728,44 @@ static const unsigned char build_actionlist[15199] = {
743 252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137, 728 252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,
744 105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108, 729 105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,
745 36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15, 730 36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,
746 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,254,0 731 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,190,233,139,
732 108,36,48,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,
733 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,
734 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,
735 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,
736 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,
737 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
738 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
739 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
740 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,
741 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,
742 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,
743 137,124,36,4,137,44,36,255,15,135,244,21,199,131,233,237,255,252,255,215,
744 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,
745 3,141,233,139,114,252,252,252,233,244,12,255,254,0
747}; 746};
748 747
749enum { 748enum {
750 GLOB_gate_lf, 749 GLOB_vm_returnp,
751 GLOB_gate_lf_growstack, 750 GLOB_cont_dispatch,
752 GLOB_gate_lv,
753 GLOB_gate_lv_growstack,
754 GLOB_gate_cwrap,
755 GLOB_gate_c_growstack,
756 GLOB_vm_returnc, 751 GLOB_vm_returnc,
757 GLOB_BC_RET_Z, 752 GLOB_BC_RET_Z,
758 GLOB_vm_return, 753 GLOB_vm_return,
759 GLOB_gate_c,
760 GLOB_vm_returnp,
761 GLOB_vm_leave_cp, 754 GLOB_vm_leave_cp,
762 GLOB_vm_leave_unw, 755 GLOB_vm_leave_unw,
763 GLOB_vm_unwind_c, 756 GLOB_vm_unwind_c,
764 GLOB_vm_unwind_c_eh, 757 GLOB_vm_unwind_c_eh,
765 GLOB_vm_unwind_ff, 758 GLOB_vm_unwind_ff,
766 GLOB_vm_unwind_ff_eh, 759 GLOB_vm_unwind_ff_eh,
767 GLOB_cont_dispatch, 760 GLOB_vm_growstack_c,
761 GLOB_vm_growstack_v,
762 GLOB_vm_growstack_f,
768 GLOB_vm_resume, 763 GLOB_vm_resume,
769 GLOB_vm_pcall, 764 GLOB_vm_pcall,
770 GLOB_vm_call, 765 GLOB_vm_call,
766 GLOB_vm_call_dispatch,
771 GLOB_vmeta_call, 767 GLOB_vmeta_call,
768 GLOB_vm_call_dispatch_f,
772 GLOB_vm_cpcall, 769 GLOB_vm_cpcall,
773 GLOB_cont_cat, 770 GLOB_cont_cat,
774 GLOB_cont_ra, 771 GLOB_cont_ra,
@@ -790,6 +787,7 @@ enum {
790 GLOB_vmeta_unm, 787 GLOB_vmeta_unm,
791 GLOB_vmeta_arith_vv, 788 GLOB_vmeta_arith_vv,
792 GLOB_vmeta_len, 789 GLOB_vmeta_len,
790 GLOB_vmeta_call_ra,
793 GLOB_BC_CALLT_Z, 791 GLOB_BC_CALLT_Z,
794 GLOB_vmeta_for, 792 GLOB_vmeta_for,
795 GLOB_ff_assert, 793 GLOB_ff_assert,
@@ -863,12 +861,11 @@ enum {
863 GLOB_ff_table_getn, 861 GLOB_ff_table_getn,
864 GLOB_ff_bit_tobit, 862 GLOB_ff_bit_tobit,
865 GLOB_ff_bit_band, 863 GLOB_ff_bit_band,
866 GLOB_fff_resbit_op, 864 GLOB_fff_resbit,
867 GLOB_fff_fallback_bit_op, 865 GLOB_fff_fallback_bit_op,
868 GLOB_ff_bit_bor, 866 GLOB_ff_bit_bor,
869 GLOB_ff_bit_bxor, 867 GLOB_ff_bit_bxor,
870 GLOB_ff_bit_bswap, 868 GLOB_ff_bit_bswap,
871 GLOB_fff_resbit,
872 GLOB_ff_bit_bnot, 869 GLOB_ff_bit_bnot,
873 GLOB_ff_bit_lshift, 870 GLOB_ff_bit_lshift,
874 GLOB_ff_bit_rshift, 871 GLOB_ff_bit_rshift,
@@ -899,28 +896,26 @@ enum {
899 GLOB__MAX 896 GLOB__MAX
900}; 897};
901static const char *const globnames[] = { 898static const char *const globnames[] = {
902 "gate_lf", 899 "vm_returnp",
903 "gate_lf_growstack", 900 "cont_dispatch",
904 "gate_lv",
905 "gate_lv_growstack",
906 "gate_cwrap",
907 "gate_c_growstack",
908 "vm_returnc", 901 "vm_returnc",
909 "BC_RET_Z", 902 "BC_RET_Z",
910 "vm_return", 903 "vm_return",
911 "gate_c",
912 "vm_returnp",
913 "vm_leave_cp", 904 "vm_leave_cp",
914 "vm_leave_unw", 905 "vm_leave_unw",
915 "vm_unwind_c@8", 906 "vm_unwind_c@8",
916 "vm_unwind_c_eh", 907 "vm_unwind_c_eh",
917 "vm_unwind_ff@4", 908 "vm_unwind_ff@4",
918 "vm_unwind_ff_eh", 909 "vm_unwind_ff_eh",
919 "cont_dispatch", 910 "vm_growstack_c",
911 "vm_growstack_v",
912 "vm_growstack_f",
920 "vm_resume", 913 "vm_resume",
921 "vm_pcall", 914 "vm_pcall",
922 "vm_call", 915 "vm_call",
916 "vm_call_dispatch",
923 "vmeta_call", 917 "vmeta_call",
918 "vm_call_dispatch_f",
924 "vm_cpcall", 919 "vm_cpcall",
925 "cont_cat", 920 "cont_cat",
926 "cont_ra", 921 "cont_ra",
@@ -942,6 +937,7 @@ static const char *const globnames[] = {
942 "vmeta_unm", 937 "vmeta_unm",
943 "vmeta_arith_vv", 938 "vmeta_arith_vv",
944 "vmeta_len", 939 "vmeta_len",
940 "vmeta_call_ra",
945 "BC_CALLT_Z", 941 "BC_CALLT_Z",
946 "vmeta_for", 942 "vmeta_for",
947 "ff_assert", 943 "ff_assert",
@@ -1015,12 +1011,11 @@ static const char *const globnames[] = {
1015 "ff_table_getn", 1011 "ff_table_getn",
1016 "ff_bit_tobit", 1012 "ff_bit_tobit",
1017 "ff_bit_band", 1013 "ff_bit_band",
1018 "fff_resbit_op", 1014 "fff_resbit",
1019 "fff_fallback_bit_op", 1015 "fff_fallback_bit_op",
1020 "ff_bit_bor", 1016 "ff_bit_bor",
1021 "ff_bit_bxor", 1017 "ff_bit_bxor",
1022 "ff_bit_bswap", 1018 "ff_bit_bswap",
1023 "fff_resbit",
1024 "ff_bit_bnot", 1019 "ff_bit_bnot",
1025 "ff_bit_lshift", 1020 "ff_bit_lshift",
1026 "ff_bit_rshift", 1021 "ff_bit_rshift",
@@ -1108,451 +1103,426 @@ static const char *const extnames[] = {
1108static void build_subroutines(BuildCtx *ctx, int cmov, int sse) 1103static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1109{ 1104{
1110 dasm_put(Dst, 0); 1105 dasm_put(Dst, 0);
1111 dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); 1106 dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
1112#if LJ_HASJIT 1107 dasm_put(Dst, 110, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1113#endif 1108 dasm_put(Dst, 196, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
1114 dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); 1109 dasm_put(Dst, 284, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
1115 dasm_put(Dst, 156, LJ_TNIL, PC2PROTO(k)); 1110 dasm_put(Dst, 350, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1116#if LJ_HASJIT 1111 dasm_put(Dst, 497, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1117#endif 1112 dasm_put(Dst, 588, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k));
1118 dasm_put(Dst, 191, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1113 dasm_put(Dst, 760, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1119 dasm_put(Dst, 287, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1120 dasm_put(Dst, 369, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1121 dasm_put(Dst, 474, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1122 dasm_put(Dst, 558, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1123 dasm_put(Dst, 651, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
1124 dasm_put(Dst, 741, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1125 dasm_put(Dst, 861, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1126 dasm_put(Dst, 964, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k), LJ_TSTR);
1127 dasm_put(Dst, 1153, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1128 if (sse) { 1114 if (sse) {
1129 dasm_put(Dst, 1189); 1115 dasm_put(Dst, 856);
1130 } else { 1116 } else {
1131 dasm_put(Dst, 1202); 1117 dasm_put(Dst, 869);
1132 } 1118 }
1133 dasm_put(Dst, 1215, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1119 dasm_put(Dst, 882, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1134 dasm_put(Dst, 1373, LJ_TTAB); 1120 dasm_put(Dst, 1034, DISPATCH_GL(tmptv), LJ_TTAB);
1135 if (sse) { 1121 if (sse) {
1136 dasm_put(Dst, 1189); 1122 dasm_put(Dst, 856);
1137 } else { 1123 } else {
1138 dasm_put(Dst, 1202); 1124 dasm_put(Dst, 869);
1139 } 1125 }
1140 dasm_put(Dst, 1393, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1126 dasm_put(Dst, 1057, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1141 dasm_put(Dst, 1600, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1127 dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1142 dasm_put(Dst, 1711, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1128 dasm_put(Dst, 1358, Dt1(->base), Dt1(->base), FRAME_CONT);
1143 dasm_put(Dst, 1840, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*4, 1+1); 1129 dasm_put(Dst, 1482, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1144 dasm_put(Dst, 2000, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1130 dasm_put(Dst, 1663, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1145 if (cmov) { 1131 if (cmov) {
1146 dasm_put(Dst, 2096); 1132 dasm_put(Dst, 1765);
1147 } else { 1133 } else {
1148 dasm_put(Dst, 2100); 1134 dasm_put(Dst, 1769);
1149 } 1135 }
1150 dasm_put(Dst, 2109, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1136 dasm_put(Dst, 1778, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1151 dasm_put(Dst, 2197, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1137 dasm_put(Dst, 1866, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1152 dasm_put(Dst, 2252, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1138 dasm_put(Dst, 1921, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1153 dasm_put(Dst, 2324, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1139 dasm_put(Dst, 1989, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1154 dasm_put(Dst, 2389, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1140 dasm_put(Dst, 2058, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1155 if (sse) { 1141 if (sse) {
1156 dasm_put(Dst, 2480); 1142 dasm_put(Dst, 2145);
1157 } else { 1143 } else {
1158 dasm_put(Dst, 2490); 1144 dasm_put(Dst, 2155);
1159 } 1145 }
1160 dasm_put(Dst, 2497, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1146 dasm_put(Dst, 2162, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1161 dasm_put(Dst, 2559, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1147 dasm_put(Dst, 2228, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1162 dasm_put(Dst, 2649, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1148 dasm_put(Dst, 2295, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1163 dasm_put(Dst, 2755, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1149 dasm_put(Dst, 2406, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1164 if (sse) { 1150 if (sse) {
1165 dasm_put(Dst, 2810); 1151 dasm_put(Dst, 2469);
1166 } else { 1152 } else {
1167 dasm_put(Dst, 2849); 1153 dasm_put(Dst, 2508);
1168 } 1154 }
1169 dasm_put(Dst, 2867, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1155 dasm_put(Dst, 2526, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1170 dasm_put(Dst, 2953, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1156 dasm_put(Dst, 2607, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1171 if (sse) { 1157 if (sse) {
1172 dasm_put(Dst, 2983); 1158 dasm_put(Dst, 2645);
1173 } else { 1159 } else {
1174 dasm_put(Dst, 2993); 1160 dasm_put(Dst, 2655);
1175 } 1161 }
1176 dasm_put(Dst, 3000, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1162 dasm_put(Dst, 2662, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1177 dasm_put(Dst, 3073, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1163 dasm_put(Dst, 2726, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1178 dasm_put(Dst, 3171, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1164 dasm_put(Dst, 2814, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1179 dasm_put(Dst, 3236, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1165 dasm_put(Dst, 2915, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1180 dasm_put(Dst, 3340, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1166 dasm_put(Dst, 3029, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1181 dasm_put(Dst, 3459, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1167 dasm_put(Dst, 3124, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1182 dasm_put(Dst, 3539, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1168 dasm_put(Dst, 3190, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1183 dasm_put(Dst, 3647, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1169 dasm_put(Dst, 3291, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1184 dasm_put(Dst, 3743, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1170 dasm_put(Dst, 3401, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1185 if (sse) { 1171 if (sse) {
1186 dasm_put(Dst, 3829, 1+1, LJ_TISNUM); 1172 dasm_put(Dst, 3427, 1+1, LJ_TISNUM);
1187 } else { 1173 } else {
1188 dasm_put(Dst, 3890, 1+1, LJ_TISNUM); 1174 dasm_put(Dst, 3496, 1+1, LJ_TISNUM);
1189 } 1175 }
1190 dasm_put(Dst, 3922, 1+1, FRAME_TYPE, LJ_TNIL); 1176 dasm_put(Dst, 3532, 1+1, FRAME_TYPE, LJ_TNIL);
1191 if (sse) { 1177 if (sse) {
1192 dasm_put(Dst, 4003, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1178 dasm_put(Dst, 3622, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1193 dasm_put(Dst, 4065, 1+1, LJ_TISNUM); 1179 dasm_put(Dst, 3684, 1+1, LJ_TISNUM);
1194 } else { 1180 } else {
1195 dasm_put(Dst, 4095, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1181 dasm_put(Dst, 3714, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1196 dasm_put(Dst, 4154, 1+1, LJ_TISNUM); 1182 dasm_put(Dst, 3773, 1+1, LJ_TISNUM);
1197 } 1183 }
1198 dasm_put(Dst, 4181, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1184 dasm_put(Dst, 3800, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1199 dasm_put(Dst, 4250, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1185 dasm_put(Dst, 3869, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1200 dasm_put(Dst, 4307, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1186 dasm_put(Dst, 3926, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1201 dasm_put(Dst, 4370, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1187 dasm_put(Dst, 3989, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1202 dasm_put(Dst, 4460); 1188 dasm_put(Dst, 4079);
1203 if (sse) { 1189 if (sse) {
1204 dasm_put(Dst, 4472, 1+1, LJ_TISNUM); 1190 dasm_put(Dst, 4091, 1+1, LJ_TISNUM);
1205 } else { 1191 } else {
1206 dasm_put(Dst, 4503, 1+1, LJ_TISNUM); 1192 dasm_put(Dst, 4122, 1+1, LJ_TISNUM);
1207 } 1193 }
1208 dasm_put(Dst, 4528); 1194 dasm_put(Dst, 4147);
1209 if (sse) { 1195 if (sse) {
1210 dasm_put(Dst, 4550, 1+1, LJ_TISNUM); 1196 dasm_put(Dst, 4161, 1+1, LJ_TISNUM);
1211 } else { 1197 } else {
1212 dasm_put(Dst, 4581, 1+1, LJ_TISNUM); 1198 dasm_put(Dst, 4192, 1+1, LJ_TISNUM);
1213 } 1199 }
1214 dasm_put(Dst, 4606); 1200 dasm_put(Dst, 4217);
1215 if (sse) { 1201 if (sse) {
1216 dasm_put(Dst, 4628, 1+1, LJ_TISNUM); 1202 dasm_put(Dst, 4231, 1+1, LJ_TISNUM);
1217 } else { 1203 } else {
1218 dasm_put(Dst, 4659, 1+1, LJ_TISNUM); 1204 dasm_put(Dst, 4262, 1+1, LJ_TISNUM);
1219 } 1205 }
1220 dasm_put(Dst, 4684); 1206 dasm_put(Dst, 4287);
1221 if (sse) { 1207 if (sse) {
1222 dasm_put(Dst, 4708, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1208 dasm_put(Dst, 4303, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1223 } else { 1209 } else {
1224 dasm_put(Dst, 4743, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1210 dasm_put(Dst, 4342, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1225 } 1211 }
1226 dasm_put(Dst, 4772, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1212 dasm_put(Dst, 4375, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1227 dasm_put(Dst, 4837, 1+1, LJ_TISNUM); 1213 dasm_put(Dst, 4440, 1+1, LJ_TISNUM);
1228 if (sse) { 1214 if (sse) {
1229 dasm_put(Dst, 4932); 1215 dasm_put(Dst, 4539);
1230 } else { 1216 } else {
1231 dasm_put(Dst, 4938); 1217 dasm_put(Dst, 4545);
1232 } 1218 }
1233 dasm_put(Dst, 4947); 1219 dasm_put(Dst, 4554);
1234 if (sse) { 1220 if (sse) {
1235 dasm_put(Dst, 4972); 1221 dasm_put(Dst, 4579);
1236 } else { 1222 } else {
1237 dasm_put(Dst, 4978); 1223 dasm_put(Dst, 4585);
1238 } 1224 }
1239 dasm_put(Dst, 4981, 1+2); 1225 dasm_put(Dst, 4588, 1+2);
1240 if (sse) { 1226 if (sse) {
1241 dasm_put(Dst, 4990); 1227 dasm_put(Dst, 4597);
1242 } else { 1228 } else {
1243 dasm_put(Dst, 4998); 1229 dasm_put(Dst, 4605);
1244 } 1230 }
1245 dasm_put(Dst, 471); 1231 dasm_put(Dst, 4613);
1246 if (sse) { 1232 if (sse) {
1247 dasm_put(Dst, 5006); 1233 dasm_put(Dst, 4616);
1248 } else { 1234 } else {
1249 dasm_put(Dst, 5038); 1235 dasm_put(Dst, 4648);
1250 } 1236 }
1251 dasm_put(Dst, 5057); 1237 dasm_put(Dst, 4667);
1252 if (sse) { 1238 if (sse) {
1253 dasm_put(Dst, 5073, 1+1, LJ_TISNUM); 1239 dasm_put(Dst, 4683, 1+1, LJ_TISNUM);
1254 } else { 1240 } else {
1255 dasm_put(Dst, 5098, 1+1, LJ_TISNUM); 1241 dasm_put(Dst, 4708, 1+1, LJ_TISNUM);
1256 } 1242 }
1257 dasm_put(Dst, 5120); 1243 dasm_put(Dst, 4730);
1258 if (sse) { 1244 if (sse) {
1259 dasm_put(Dst, 5138); 1245 dasm_put(Dst, 4752);
1260 } else { 1246 } else {
1261 dasm_put(Dst, 5164); 1247 dasm_put(Dst, 4778);
1262 } 1248 }
1263 dasm_put(Dst, 5181, 1+2); 1249 dasm_put(Dst, 4795, 1+2);
1264 if (sse) { 1250 if (sse) {
1265 dasm_put(Dst, 5221); 1251 dasm_put(Dst, 4835);
1266 } else { 1252 } else {
1267 dasm_put(Dst, 5229); 1253 dasm_put(Dst, 4843);
1268 } 1254 }
1269 dasm_put(Dst, 5239, 2+1, LJ_TISNUM, LJ_TISNUM); 1255 dasm_put(Dst, 4853, 2+1, LJ_TISNUM, LJ_TISNUM);
1270 if (sse) { 1256 if (sse) {
1271 dasm_put(Dst, 5291, 1+1, LJ_TISNUM, LJ_TISNUM); 1257 dasm_put(Dst, 4905, 1+1, LJ_TISNUM, LJ_TISNUM);
1272 } else { 1258 } else {
1273 dasm_put(Dst, 5338, 2+1, LJ_TISNUM, LJ_TISNUM); 1259 dasm_put(Dst, 4952, 2+1, LJ_TISNUM, LJ_TISNUM);
1274 } 1260 }
1275 if (sse) { 1261 if (sse) {
1276 dasm_put(Dst, 5379, 1+1, LJ_TISNUM, LJ_TISNUM); 1262 dasm_put(Dst, 4993, 1+1, LJ_TISNUM, LJ_TISNUM);
1277 } else { 1263 } else {
1278 dasm_put(Dst, 5450, 1+1, LJ_TISNUM, LJ_TISNUM); 1264 dasm_put(Dst, 5064, 1+1, LJ_TISNUM, LJ_TISNUM);
1279 if (cmov) { 1265 if (cmov) {
1280 dasm_put(Dst, 5503); 1266 dasm_put(Dst, 5117);
1281 } else { 1267 } else {
1282 dasm_put(Dst, 5511); 1268 dasm_put(Dst, 5125);
1283 } 1269 }
1284 dasm_put(Dst, 5442); 1270 dasm_put(Dst, 5056);
1285 } 1271 }
1286 if (sse) { 1272 if (sse) {
1287 dasm_put(Dst, 5532, 1+1, LJ_TISNUM, LJ_TISNUM); 1273 dasm_put(Dst, 5146, 1+1, LJ_TISNUM, LJ_TISNUM);
1288 } else { 1274 } else {
1289 dasm_put(Dst, 5603, 1+1, LJ_TISNUM, LJ_TISNUM); 1275 dasm_put(Dst, 5217, 1+1, LJ_TISNUM, LJ_TISNUM);
1290 if (cmov) { 1276 if (cmov) {
1291 dasm_put(Dst, 5656); 1277 dasm_put(Dst, 5270);
1292 } else { 1278 } else {
1293 dasm_put(Dst, 5664); 1279 dasm_put(Dst, 5278);
1294 } 1280 }
1295 dasm_put(Dst, 5442); 1281 dasm_put(Dst, 5056);
1296 } 1282 }
1297 if (!sse) { 1283 if (!sse) {
1298 dasm_put(Dst, 5685); 1284 dasm_put(Dst, 5299);
1299 } 1285 }
1300 dasm_put(Dst, 5694, 1+1, LJ_TSTR); 1286 dasm_put(Dst, 5308, 1+1, LJ_TSTR);
1301 if (sse) { 1287 if (sse) {
1302 dasm_put(Dst, 5716, Dt5(->len)); 1288 dasm_put(Dst, 5330, Dt5(->len));
1303 } else { 1289 } else {
1304 dasm_put(Dst, 5727, Dt5(->len)); 1290 dasm_put(Dst, 5341, Dt5(->len));
1305 } 1291 }
1306 dasm_put(Dst, 5735, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1292 dasm_put(Dst, 5349, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1307 if (sse) { 1293 if (sse) {
1308 dasm_put(Dst, 5769); 1294 dasm_put(Dst, 5387);
1309 } else { 1295 } else {
1310 dasm_put(Dst, 5779); 1296 dasm_put(Dst, 5397);
1311 } 1297 }
1312 dasm_put(Dst, 5792, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1298 dasm_put(Dst, 5410, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1313 if (sse) { 1299 if (sse) {
1314 dasm_put(Dst, 5827); 1300 dasm_put(Dst, 5445);
1315 } else { 1301 } else {
1316 dasm_put(Dst, 5847); 1302 dasm_put(Dst, 5465);
1317 } 1303 }
1318 dasm_put(Dst, 5867, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1304 dasm_put(Dst, 5485, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1319 dasm_put(Dst, 2475); 1305 dasm_put(Dst, 2140);
1320 if (sse) { 1306 if (sse) {
1321 dasm_put(Dst, 5978); 1307 dasm_put(Dst, 5588);
1322 } else { 1308 } else {
1323 dasm_put(Dst, 5989); 1309 dasm_put(Dst, 5599);
1324 } 1310 }
1325 dasm_put(Dst, 5997, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1311 dasm_put(Dst, 5607, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1326 if (sse) { 1312 if (sse) {
1327 dasm_put(Dst, 6027); 1313 dasm_put(Dst, 5637);
1328 } else { 1314 } else {
1329 dasm_put(Dst, 6034); 1315 dasm_put(Dst, 5644);
1330 } 1316 }
1331 dasm_put(Dst, 6046, sizeof(GCstr)-1); 1317 dasm_put(Dst, 5656, sizeof(GCstr)-1);
1332 dasm_put(Dst, 6121, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1318 dasm_put(Dst, 5731, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1333 dasm_put(Dst, 6180, LJ_TSTR, LJ_TISNUM); 1319 dasm_put(Dst, 5790, LJ_TSTR, LJ_TISNUM);
1334 if (sse) { 1320 if (sse) {
1335 dasm_put(Dst, 6205); 1321 dasm_put(Dst, 5811);
1336 } else { 1322 } else {
1337 dasm_put(Dst, 6212); 1323 dasm_put(Dst, 5818);
1338 } 1324 }
1339 dasm_put(Dst, 6224, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1325 dasm_put(Dst, 5830, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1340 dasm_put(Dst, 6289, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1326 dasm_put(Dst, 5895, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1341 dasm_put(Dst, 6356, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1327 dasm_put(Dst, 5958, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1342 dasm_put(Dst, 6431, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1328 dasm_put(Dst, 6029, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1343 dasm_put(Dst, 6516, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1329 dasm_put(Dst, 6114, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1344 dasm_put(Dst, 6590, 1+1, LJ_TTAB); 1330 dasm_put(Dst, 6184, 1+1, LJ_TTAB);
1345 if (sse) { 1331 if (sse) {
1346 dasm_put(Dst, 6666); 1332 dasm_put(Dst, 6252);
1347 } else { 1333 } else {
1348 dasm_put(Dst, 6676); 1334 dasm_put(Dst, 6262);
1349 } 1335 }
1350 if (sse) { 1336 if (sse) {
1351 dasm_put(Dst, 6687, 1+1, LJ_TISNUM); 1337 dasm_put(Dst, 6273, 1+1, LJ_TISNUM);
1352 } else { 1338 } else {
1353 dasm_put(Dst, 6744, 1+1, LJ_TISNUM); 1339 dasm_put(Dst, 6330, 1+1, LJ_TISNUM);
1354 } 1340 }
1355 if (sse) { 1341 if (sse) {
1356 dasm_put(Dst, 6788, 1+1, LJ_TISNUM); 1342 dasm_put(Dst, 6374, 1+1, LJ_TISNUM);
1357 } else { 1343 } else {
1358 dasm_put(Dst, 6836, 1+1, LJ_TISNUM); 1344 dasm_put(Dst, 6422, 1+1, LJ_TISNUM);
1359 }
1360 dasm_put(Dst, 6876);
1361 if (sse) {
1362 dasm_put(Dst, 6886);
1363 } 1345 }
1364 dasm_put(Dst, 6891, LJ_TISNUM); 1346 dasm_put(Dst, 6462, LJ_TISNUM);
1365 if (sse) { 1347 if (sse) {
1366 dasm_put(Dst, 6909); 1348 dasm_put(Dst, 6489);
1367 } else { 1349 } else {
1368 dasm_put(Dst, 6926); 1350 dasm_put(Dst, 6506);
1369 } 1351 }
1370 dasm_put(Dst, 6939); 1352 dasm_put(Dst, 6519);
1371 if (sse) { 1353 if (sse) {
1372 dasm_put(Dst, 6947, 1+1, LJ_TISNUM); 1354 dasm_put(Dst, 6527, 1+1, LJ_TISNUM);
1373 } else { 1355 } else {
1374 dasm_put(Dst, 6995, 1+1, LJ_TISNUM); 1356 dasm_put(Dst, 6575, 1+1, LJ_TISNUM);
1375 } 1357 }
1376 dasm_put(Dst, 6876); 1358 dasm_put(Dst, 6462, LJ_TISNUM);
1377 if (sse) { 1359 if (sse) {
1378 dasm_put(Dst, 6886); 1360 dasm_put(Dst, 6615);
1379 }
1380 dasm_put(Dst, 6891, LJ_TISNUM);
1381 if (sse) {
1382 dasm_put(Dst, 7035);
1383 } else { 1361 } else {
1384 dasm_put(Dst, 7052); 1362 dasm_put(Dst, 6632);
1385 } 1363 }
1386 dasm_put(Dst, 6939); 1364 dasm_put(Dst, 6519);
1387 if (sse) { 1365 if (sse) {
1388 dasm_put(Dst, 7065, 1+1, LJ_TISNUM); 1366 dasm_put(Dst, 6645, 1+1, LJ_TISNUM);
1389 } else { 1367 } else {
1390 dasm_put(Dst, 7113, 1+1, LJ_TISNUM); 1368 dasm_put(Dst, 6693, 1+1, LJ_TISNUM);
1391 }
1392 dasm_put(Dst, 6876);
1393 if (sse) {
1394 dasm_put(Dst, 6886);
1395 } 1369 }
1396 dasm_put(Dst, 6891, LJ_TISNUM); 1370 dasm_put(Dst, 6462, LJ_TISNUM);
1397 if (sse) { 1371 if (sse) {
1398 dasm_put(Dst, 7153); 1372 dasm_put(Dst, 6733);
1399 } else { 1373 } else {
1400 dasm_put(Dst, 7170); 1374 dasm_put(Dst, 6750);
1401 } 1375 }
1402 dasm_put(Dst, 6939); 1376 dasm_put(Dst, 6519);
1403 if (sse) { 1377 if (sse) {
1404 dasm_put(Dst, 7183, 1+1, LJ_TISNUM); 1378 dasm_put(Dst, 6763, 1+1, LJ_TISNUM);
1405 } else { 1379 } else {
1406 dasm_put(Dst, 7231, 1+1, LJ_TISNUM); 1380 dasm_put(Dst, 6811, 1+1, LJ_TISNUM);
1407 } 1381 }
1408 dasm_put(Dst, 7271); 1382 dasm_put(Dst, 6851);
1409 if (sse) { 1383 if (sse) {
1410 dasm_put(Dst, 7278, 1+1, LJ_TISNUM); 1384 dasm_put(Dst, 6858, 1+1, LJ_TISNUM);
1411 } else { 1385 } else {
1412 dasm_put(Dst, 7326, 1+1, LJ_TISNUM); 1386 dasm_put(Dst, 6906, 1+1, LJ_TISNUM);
1413 } 1387 }
1414 dasm_put(Dst, 7366); 1388 dasm_put(Dst, 6946);
1415 if (sse) { 1389 if (sse) {
1416 dasm_put(Dst, 7370); 1390 dasm_put(Dst, 6950);
1417 } else { 1391 } else {
1418 dasm_put(Dst, 7397); 1392 dasm_put(Dst, 6962);
1419 } 1393 }
1420 dasm_put(Dst, 7412); 1394 dasm_put(Dst, 6975);
1421 if (sse) { 1395 if (sse) {
1422 dasm_put(Dst, 6661); 1396 dasm_put(Dst, 6986, 1+1, LJ_TISNUM, LJ_TISNUM);
1423 }
1424 dasm_put(Dst, 7415);
1425 if (sse) {
1426 dasm_put(Dst, 7424, 1+1, LJ_TISNUM, LJ_TISNUM);
1427 } else { 1397 } else {
1428 dasm_put(Dst, 7498, 2+1, LJ_TISNUM, LJ_TISNUM); 1398 dasm_put(Dst, 7060, 2+1, LJ_TISNUM, LJ_TISNUM);
1429 } 1399 }
1430 dasm_put(Dst, 7564); 1400 dasm_put(Dst, 7126);
1431 if (sse) { 1401 if (sse) {
1432 dasm_put(Dst, 7573, 1+1, LJ_TISNUM, LJ_TISNUM); 1402 dasm_put(Dst, 7135, 1+1, LJ_TISNUM, LJ_TISNUM);
1433 } else { 1403 } else {
1434 dasm_put(Dst, 7647, 2+1, LJ_TISNUM, LJ_TISNUM); 1404 dasm_put(Dst, 7209, 2+1, LJ_TISNUM, LJ_TISNUM);
1435 } 1405 }
1436 dasm_put(Dst, 7713); 1406 dasm_put(Dst, 7275);
1437 if (sse) { 1407 if (sse) {
1438 dasm_put(Dst, 7723, 1+1, LJ_TISNUM, LJ_TISNUM); 1408 dasm_put(Dst, 7285, 1+1, LJ_TISNUM, LJ_TISNUM);
1439 } else { 1409 } else {
1440 dasm_put(Dst, 7797, 2+1, LJ_TISNUM, LJ_TISNUM); 1410 dasm_put(Dst, 7359, 2+1, LJ_TISNUM, LJ_TISNUM);
1441 } 1411 }
1442 dasm_put(Dst, 7863); 1412 dasm_put(Dst, 7425);
1443 if (sse) { 1413 if (sse) {
1444 dasm_put(Dst, 7873, 1+1, LJ_TISNUM, LJ_TISNUM); 1414 dasm_put(Dst, 7435, 1+1, LJ_TISNUM, LJ_TISNUM);
1445 } else { 1415 } else {
1446 dasm_put(Dst, 7947, 2+1, LJ_TISNUM, LJ_TISNUM); 1416 dasm_put(Dst, 7509, 2+1, LJ_TISNUM, LJ_TISNUM);
1447 } 1417 }
1448 dasm_put(Dst, 8013); 1418 dasm_put(Dst, 7575);
1449 if (sse) { 1419 if (sse) {
1450 dasm_put(Dst, 8022, 1+1, LJ_TISNUM, LJ_TISNUM); 1420 dasm_put(Dst, 7584, 1+1, LJ_TISNUM, LJ_TISNUM);
1451 } else { 1421 } else {
1452 dasm_put(Dst, 8096, 2+1, LJ_TISNUM, LJ_TISNUM); 1422 dasm_put(Dst, 7658, 2+1, LJ_TISNUM, LJ_TISNUM);
1453 } 1423 }
1454 dasm_put(Dst, 8162, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1424 dasm_put(Dst, 7724, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1455 dasm_put(Dst, 8246, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1425 dasm_put(Dst, 7802, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1456 dasm_put(Dst, 8365, Dt1(->base), Dt1(->top)); 1426 dasm_put(Dst, 7925, Dt1(->top), Dt1(->base), Dt1(->top));
1457#if LJ_HASJIT 1427#if LJ_HASJIT
1458 dasm_put(Dst, 8406, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1428 dasm_put(Dst, 7963, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1459#endif 1429#endif
1460 dasm_put(Dst, 8437, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); 1430 dasm_put(Dst, 7994, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1461 dasm_put(Dst, 8503, BC__MAX*4); 1431 dasm_put(Dst, 8060, GG_DISP2STATIC);
1462#if LJ_HASJIT 1432#if LJ_HASJIT
1463 dasm_put(Dst, 8538, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); 1433 dasm_put(Dst, 8095, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1464#endif 1434#endif
1465 dasm_put(Dst, 8567); 1435 dasm_put(Dst, 8141);
1466#if LJ_HASJIT 1436#if LJ_HASJIT
1467 dasm_put(Dst, 8570, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); 1437 dasm_put(Dst, 8144, Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L), Dt1(->base), Dt1(->top), Dt7(->pc));
1468#endif 1438#endif
1469 dasm_put(Dst, 8616); 1439 dasm_put(Dst, 8214);
1470#if LJ_HASJIT 1440#if LJ_HASJIT
1471 dasm_put(Dst, 8619, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); 1441 dasm_put(Dst, 8217, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base));
1472#endif 1442#endif
1473 dasm_put(Dst, 8762); 1443 dasm_put(Dst, 8360);
1474#if LJ_HASJIT 1444#if LJ_HASJIT
1475 dasm_put(Dst, 8765, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1445 dasm_put(Dst, 8363, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1476#endif 1446#endif
1477 dasm_put(Dst, 8805); 1447 dasm_put(Dst, 8403);
1478 if (!sse) { 1448 if (!sse) {
1479 dasm_put(Dst, 8808); 1449 dasm_put(Dst, 8406);
1480 } 1450 }
1481 dasm_put(Dst, 8853); 1451 dasm_put(Dst, 8451);
1482 if (!sse) { 1452 if (!sse) {
1483 dasm_put(Dst, 8955); 1453 dasm_put(Dst, 8553);
1484 } 1454 }
1485 dasm_put(Dst, 9000); 1455 dasm_put(Dst, 8598);
1486 if (!sse) { 1456 if (!sse) {
1487 dasm_put(Dst, 9102); 1457 dasm_put(Dst, 8700);
1488 } 1458 }
1489 dasm_put(Dst, 9141); 1459 dasm_put(Dst, 8739);
1490 if (sse) { 1460 if (sse) {
1491 dasm_put(Dst, 9246); 1461 dasm_put(Dst, 8844);
1492 } else { 1462 } else {
1493 dasm_put(Dst, 9376); 1463 dasm_put(Dst, 8974);
1494 } 1464 }
1495 dasm_put(Dst, 9423); 1465 dasm_put(Dst, 9021);
1496 if (!sse) { 1466 if (!sse) {
1497 dasm_put(Dst, 9497); 1467 dasm_put(Dst, 9095);
1498 if (cmov) { 1468 if (cmov) {
1499 dasm_put(Dst, 9508); 1469 dasm_put(Dst, 9106);
1500 } else { 1470 } else {
1501 dasm_put(Dst, 9512); 1471 dasm_put(Dst, 9110);
1502 } 1472 }
1503 dasm_put(Dst, 9519); 1473 dasm_put(Dst, 9117);
1504 dasm_put(Dst, 9593); 1474 dasm_put(Dst, 9191);
1505 dasm_put(Dst, 9693); 1475 dasm_put(Dst, 9291);
1506 if (cmov) { 1476 if (cmov) {
1507 dasm_put(Dst, 9696); 1477 dasm_put(Dst, 9294);
1508 } else { 1478 } else {
1509 dasm_put(Dst, 9700); 1479 dasm_put(Dst, 9298);
1510 } 1480 }
1511 dasm_put(Dst, 9707); 1481 dasm_put(Dst, 9305);
1512 if (cmov) { 1482 if (cmov) {
1513 dasm_put(Dst, 9508); 1483 dasm_put(Dst, 9106);
1514 } else { 1484 } else {
1515 dasm_put(Dst, 9512); 1485 dasm_put(Dst, 9110);
1516 } 1486 }
1517 dasm_put(Dst, 9725); 1487 dasm_put(Dst, 9323);
1518 } else { 1488 } else {
1519 dasm_put(Dst, 9804); 1489 dasm_put(Dst, 9402);
1520 } 1490 }
1521 dasm_put(Dst, 9807); 1491 dasm_put(Dst, 9405);
1522 dasm_put(Dst, 9892); 1492 dasm_put(Dst, 9490);
1523 dasm_put(Dst, 10023); 1493 dasm_put(Dst, 9621);
1524 dasm_put(Dst, 10222); 1494 dasm_put(Dst, 9820);
1525 if (sse) { 1495 if (sse) {
1526 dasm_put(Dst, 10245); 1496 dasm_put(Dst, 9843);
1527 dasm_put(Dst, 10302); 1497 dasm_put(Dst, 9900);
1528 dasm_put(Dst, 10393); 1498 dasm_put(Dst, 9991);
1529 } else { 1499 } else {
1530 dasm_put(Dst, 10435); 1500 dasm_put(Dst, 10033);
1531 dasm_put(Dst, 10527); 1501 dasm_put(Dst, 10125);
1532 } 1502 }
1533 dasm_put(Dst, 10573); 1503 dasm_put(Dst, 10171);
1534 if (sse) { 1504 if (sse) {
1535 dasm_put(Dst, 10579); 1505 dasm_put(Dst, 10177);
1536 dasm_put(Dst, 10684); 1506 dasm_put(Dst, 10282);
1537 dasm_put(Dst, 10767); 1507 dasm_put(Dst, 10365);
1538 } else { 1508 } else {
1539 dasm_put(Dst, 10839); 1509 dasm_put(Dst, 10437);
1540 dasm_put(Dst, 10922); 1510 dasm_put(Dst, 10520);
1541 if (cmov) { 1511 if (cmov) {
1542 dasm_put(Dst, 10977); 1512 dasm_put(Dst, 10575);
1543 } else { 1513 } else {
1544 dasm_put(Dst, 10996); 1514 dasm_put(Dst, 10594);
1545 } 1515 }
1546 dasm_put(Dst, 10835); 1516 dasm_put(Dst, 10433);
1547 } 1517 }
1548 dasm_put(Dst, 11037); 1518 dasm_put(Dst, 10635);
1549} 1519}
1550 1520
1551/* Generate the code for a single instruction. */ 1521/* Generate the code for a single instruction. */
1552static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1522static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1553{ 1523{
1554 int vk = 0; 1524 int vk = 0;
1555 dasm_put(Dst, 154, defop); 1525 dasm_put(Dst, 10689, defop);
1556 1526
1557 switch (op) { 1527 switch (op) {
1558 1528
@@ -1561,619 +1531,619 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1561 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1531 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1562 1532
1563 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1533 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1564 dasm_put(Dst, 11091, LJ_TISNUM, LJ_TISNUM); 1534 dasm_put(Dst, 10691, LJ_TISNUM, LJ_TISNUM);
1565 if (sse) { 1535 if (sse) {
1566 dasm_put(Dst, 11112); 1536 dasm_put(Dst, 10712);
1567 } else { 1537 } else {
1568 dasm_put(Dst, 11127); 1538 dasm_put(Dst, 10727);
1569 if (cmov) { 1539 if (cmov) {
1570 dasm_put(Dst, 11137); 1540 dasm_put(Dst, 10737);
1571 } else { 1541 } else {
1572 dasm_put(Dst, 11143); 1542 dasm_put(Dst, 10743);
1573 } 1543 }
1574 } 1544 }
1575 switch (op) { 1545 switch (op) {
1576 case BC_ISLT: 1546 case BC_ISLT:
1577 dasm_put(Dst, 11150); 1547 dasm_put(Dst, 10750);
1578 break; 1548 break;
1579 case BC_ISGE: 1549 case BC_ISGE:
1580 dasm_put(Dst, 10388); 1550 dasm_put(Dst, 9986);
1581 break; 1551 break;
1582 case BC_ISLE: 1552 case BC_ISLE:
1583 dasm_put(Dst, 6585); 1553 dasm_put(Dst, 6179);
1584 break; 1554 break;
1585 case BC_ISGT: 1555 case BC_ISGT:
1586 dasm_put(Dst, 11155); 1556 dasm_put(Dst, 10755);
1587 break; 1557 break;
1588 default: break; /* Shut up GCC. */ 1558 default: break; /* Shut up GCC. */
1589 } 1559 }
1590 dasm_put(Dst, 11160, -BCBIAS_J*4); 1560 dasm_put(Dst, 10760, -BCBIAS_J*4);
1591 break; 1561 break;
1592 1562
1593 case BC_ISEQV: case BC_ISNEV: 1563 case BC_ISEQV: case BC_ISNEV:
1594 vk = op == BC_ISEQV; 1564 vk = op == BC_ISEQV;
1595 dasm_put(Dst, 11193, LJ_TISNUM, LJ_TISNUM); 1565 dasm_put(Dst, 10793, LJ_TISNUM, LJ_TISNUM);
1596 if (sse) { 1566 if (sse) {
1597 dasm_put(Dst, 11219); 1567 dasm_put(Dst, 10819);
1598 } else { 1568 } else {
1599 dasm_put(Dst, 11231); 1569 dasm_put(Dst, 10831);
1600 if (cmov) { 1570 if (cmov) {
1601 dasm_put(Dst, 11137); 1571 dasm_put(Dst, 10737);
1602 } else { 1572 } else {
1603 dasm_put(Dst, 11143); 1573 dasm_put(Dst, 10743);
1604 } 1574 }
1605 } 1575 }
1606 iseqne_fp: 1576 iseqne_fp:
1607 if (vk) { 1577 if (vk) {
1608 dasm_put(Dst, 11238); 1578 dasm_put(Dst, 10838);
1609 } else { 1579 } else {
1610 dasm_put(Dst, 11247); 1580 dasm_put(Dst, 10847);
1611 } 1581 }
1612 iseqne_end: 1582 iseqne_end:
1613 if (vk) { 1583 if (vk) {
1614 dasm_put(Dst, 11256, -BCBIAS_J*4); 1584 dasm_put(Dst, 10856, -BCBIAS_J*4);
1615 } else { 1585 } else {
1616 dasm_put(Dst, 11271, -BCBIAS_J*4); 1586 dasm_put(Dst, 10871, -BCBIAS_J*4);
1617 } 1587 }
1618 dasm_put(Dst, 8597); 1588 dasm_put(Dst, 8384);
1619 if (op == BC_ISEQV || op == BC_ISNEV) { 1589 if (op == BC_ISEQV || op == BC_ISNEV) {
1620 dasm_put(Dst, 11286, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1590 dasm_put(Dst, 10886, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1621 if (vk) { 1591 if (vk) {
1622 dasm_put(Dst, 11344); 1592 dasm_put(Dst, 10944);
1623 } else { 1593 } else {
1624 dasm_put(Dst, 11348); 1594 dasm_put(Dst, 10948);
1625 } 1595 }
1626 dasm_put(Dst, 11354); 1596 dasm_put(Dst, 10954);
1627 } 1597 }
1628 break; 1598 break;
1629 case BC_ISEQS: case BC_ISNES: 1599 case BC_ISEQS: case BC_ISNES:
1630 vk = op == BC_ISEQS; 1600 vk = op == BC_ISEQS;
1631 dasm_put(Dst, 11359, LJ_TSTR); 1601 dasm_put(Dst, 10959, LJ_TSTR);
1632 iseqne_test: 1602 iseqne_test:
1633 if (vk) { 1603 if (vk) {
1634 dasm_put(Dst, 11242); 1604 dasm_put(Dst, 10842);
1635 } else { 1605 } else {
1636 dasm_put(Dst, 10522); 1606 dasm_put(Dst, 2809);
1637 } 1607 }
1638 goto iseqne_end; 1608 goto iseqne_end;
1639 case BC_ISEQN: case BC_ISNEN: 1609 case BC_ISEQN: case BC_ISNEN:
1640 vk = op == BC_ISEQN; 1610 vk = op == BC_ISEQN;
1641 dasm_put(Dst, 11382, LJ_TISNUM); 1611 dasm_put(Dst, 10982, LJ_TISNUM);
1642 if (sse) { 1612 if (sse) {
1643 dasm_put(Dst, 11396); 1613 dasm_put(Dst, 10996);
1644 } else { 1614 } else {
1645 dasm_put(Dst, 11408); 1615 dasm_put(Dst, 11008);
1646 if (cmov) { 1616 if (cmov) {
1647 dasm_put(Dst, 11137); 1617 dasm_put(Dst, 10737);
1648 } else { 1618 } else {
1649 dasm_put(Dst, 11143); 1619 dasm_put(Dst, 10743);
1650 } 1620 }
1651 } 1621 }
1652 goto iseqne_fp; 1622 goto iseqne_fp;
1653 case BC_ISEQP: case BC_ISNEP: 1623 case BC_ISEQP: case BC_ISNEP:
1654 vk = op == BC_ISEQP; 1624 vk = op == BC_ISEQP;
1655 dasm_put(Dst, 11415); 1625 dasm_put(Dst, 11015);
1656 goto iseqne_test; 1626 goto iseqne_test;
1657 1627
1658 /* -- Unary test and copy ops ------------------------------------------- */ 1628 /* -- Unary test and copy ops ------------------------------------------- */
1659 1629
1660 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1630 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1661 dasm_put(Dst, 11426, LJ_TISTRUECOND); 1631 dasm_put(Dst, 11026, LJ_TISTRUECOND);
1662 if (op == BC_IST || op == BC_ISTC) { 1632 if (op == BC_IST || op == BC_ISTC) {
1663 dasm_put(Dst, 11438); 1633 dasm_put(Dst, 11038);
1664 } else { 1634 } else {
1665 dasm_put(Dst, 11443); 1635 dasm_put(Dst, 11043);
1666 } 1636 }
1667 if (op == BC_ISTC || op == BC_ISFC) { 1637 if (op == BC_ISTC || op == BC_ISFC) {
1668 dasm_put(Dst, 11448); 1638 dasm_put(Dst, 11048);
1669 } 1639 }
1670 dasm_put(Dst, 11459, -BCBIAS_J*4); 1640 dasm_put(Dst, 11059, -BCBIAS_J*4);
1671 break; 1641 break;
1672 1642
1673 /* -- Unary ops --------------------------------------------------------- */ 1643 /* -- Unary ops --------------------------------------------------------- */
1674 1644
1675 case BC_MOV: 1645 case BC_MOV:
1676 dasm_put(Dst, 11490); 1646 dasm_put(Dst, 11090);
1677 break; 1647 break;
1678 case BC_NOT: 1648 case BC_NOT:
1679 dasm_put(Dst, 11523, LJ_TISTRUECOND, LJ_TTRUE); 1649 dasm_put(Dst, 11123, LJ_TISTRUECOND, LJ_TTRUE);
1680 break; 1650 break;
1681 case BC_UNM: 1651 case BC_UNM:
1682 dasm_put(Dst, 11558, LJ_TISNUM); 1652 dasm_put(Dst, 11158, LJ_TISNUM);
1683 if (sse) { 1653 if (sse) {
1684 dasm_put(Dst, 11569); 1654 dasm_put(Dst, 11169);
1685 } else { 1655 } else {
1686 dasm_put(Dst, 11599); 1656 dasm_put(Dst, 11199);
1687 } 1657 }
1688 dasm_put(Dst, 8597); 1658 dasm_put(Dst, 8384);
1689 break; 1659 break;
1690 case BC_LEN: 1660 case BC_LEN:
1691 dasm_put(Dst, 11608, LJ_TSTR); 1661 dasm_put(Dst, 11208, LJ_TSTR);
1692 if (sse) { 1662 if (sse) {
1693 dasm_put(Dst, 11622, Dt5(->len)); 1663 dasm_put(Dst, 11222, Dt5(->len));
1694 } else { 1664 } else {
1695 dasm_put(Dst, 11640, Dt5(->len)); 1665 dasm_put(Dst, 11240, Dt5(->len));
1696 } 1666 }
1697 dasm_put(Dst, 11649, LJ_TTAB); 1667 dasm_put(Dst, 11249, LJ_TTAB);
1698 if (sse) { 1668 if (sse) {
1699 dasm_put(Dst, 11689); 1669 dasm_put(Dst, 11289);
1700 } else { 1670 } else {
1701 dasm_put(Dst, 11698); 1671 dasm_put(Dst, 11298);
1702 } 1672 }
1703 dasm_put(Dst, 11708); 1673 dasm_put(Dst, 11308);
1704 break; 1674 break;
1705 1675
1706 /* -- Binary ops -------------------------------------------------------- */ 1676 /* -- Binary ops -------------------------------------------------------- */
1707 1677
1708 1678
1709 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1679 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1710 dasm_put(Dst, 11718); 1680 dasm_put(Dst, 11318);
1711 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1681 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1712 switch (vk) { 1682 switch (vk) {
1713 case 0: 1683 case 0:
1714 dasm_put(Dst, 11726, LJ_TISNUM); 1684 dasm_put(Dst, 11326, LJ_TISNUM);
1715 if (sse) { 1685 if (sse) {
1716 dasm_put(Dst, 11738); 1686 dasm_put(Dst, 11338);
1717 } else { 1687 } else {
1718 dasm_put(Dst, 11752); 1688 dasm_put(Dst, 11352);
1719 } 1689 }
1720 break; 1690 break;
1721 case 1: 1691 case 1:
1722 dasm_put(Dst, 11760, LJ_TISNUM); 1692 dasm_put(Dst, 11360, LJ_TISNUM);
1723 if (sse) { 1693 if (sse) {
1724 dasm_put(Dst, 11772); 1694 dasm_put(Dst, 11372);
1725 } else { 1695 } else {
1726 dasm_put(Dst, 11786); 1696 dasm_put(Dst, 11386);
1727 } 1697 }
1728 break; 1698 break;
1729 default: 1699 default:
1730 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1700 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1731 if (sse) { 1701 if (sse) {
1732 dasm_put(Dst, 11816); 1702 dasm_put(Dst, 11416);
1733 } else { 1703 } else {
1734 dasm_put(Dst, 11830); 1704 dasm_put(Dst, 11430);
1735 } 1705 }
1736 break; 1706 break;
1737 } 1707 }
1738 if (sse) { 1708 if (sse) {
1739 dasm_put(Dst, 11592); 1709 dasm_put(Dst, 11192);
1740 } else { 1710 } else {
1741 dasm_put(Dst, 11604); 1711 dasm_put(Dst, 11204);
1742 } 1712 }
1743 dasm_put(Dst, 8597); 1713 dasm_put(Dst, 8384);
1744 break; 1714 break;
1745 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1715 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1746 dasm_put(Dst, 11718); 1716 dasm_put(Dst, 11318);
1747 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1717 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1748 switch (vk) { 1718 switch (vk) {
1749 case 0: 1719 case 0:
1750 dasm_put(Dst, 11726, LJ_TISNUM); 1720 dasm_put(Dst, 11326, LJ_TISNUM);
1751 if (sse) { 1721 if (sse) {
1752 dasm_put(Dst, 11838); 1722 dasm_put(Dst, 11438);
1753 } else { 1723 } else {
1754 dasm_put(Dst, 11852); 1724 dasm_put(Dst, 11452);
1755 } 1725 }
1756 break; 1726 break;
1757 case 1: 1727 case 1:
1758 dasm_put(Dst, 11760, LJ_TISNUM); 1728 dasm_put(Dst, 11360, LJ_TISNUM);
1759 if (sse) { 1729 if (sse) {
1760 dasm_put(Dst, 11860); 1730 dasm_put(Dst, 11460);
1761 } else { 1731 } else {
1762 dasm_put(Dst, 11874); 1732 dasm_put(Dst, 11474);
1763 } 1733 }
1764 break; 1734 break;
1765 default: 1735 default:
1766 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1736 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1767 if (sse) { 1737 if (sse) {
1768 dasm_put(Dst, 11882); 1738 dasm_put(Dst, 11482);
1769 } else { 1739 } else {
1770 dasm_put(Dst, 11896); 1740 dasm_put(Dst, 11496);
1771 } 1741 }
1772 break; 1742 break;
1773 } 1743 }
1774 if (sse) { 1744 if (sse) {
1775 dasm_put(Dst, 11592); 1745 dasm_put(Dst, 11192);
1776 } else { 1746 } else {
1777 dasm_put(Dst, 11604); 1747 dasm_put(Dst, 11204);
1778 } 1748 }
1779 dasm_put(Dst, 8597); 1749 dasm_put(Dst, 8384);
1780 break; 1750 break;
1781 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1751 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1782 dasm_put(Dst, 11718); 1752 dasm_put(Dst, 11318);
1783 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1753 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1784 switch (vk) { 1754 switch (vk) {
1785 case 0: 1755 case 0:
1786 dasm_put(Dst, 11726, LJ_TISNUM); 1756 dasm_put(Dst, 11326, LJ_TISNUM);
1787 if (sse) { 1757 if (sse) {
1788 dasm_put(Dst, 11904); 1758 dasm_put(Dst, 11504);
1789 } else { 1759 } else {
1790 dasm_put(Dst, 11918); 1760 dasm_put(Dst, 11518);
1791 } 1761 }
1792 break; 1762 break;
1793 case 1: 1763 case 1:
1794 dasm_put(Dst, 11760, LJ_TISNUM); 1764 dasm_put(Dst, 11360, LJ_TISNUM);
1795 if (sse) { 1765 if (sse) {
1796 dasm_put(Dst, 11926); 1766 dasm_put(Dst, 11526);
1797 } else { 1767 } else {
1798 dasm_put(Dst, 11940); 1768 dasm_put(Dst, 11540);
1799 } 1769 }
1800 break; 1770 break;
1801 default: 1771 default:
1802 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1772 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1803 if (sse) { 1773 if (sse) {
1804 dasm_put(Dst, 11948); 1774 dasm_put(Dst, 11548);
1805 } else { 1775 } else {
1806 dasm_put(Dst, 11962); 1776 dasm_put(Dst, 11562);
1807 } 1777 }
1808 break; 1778 break;
1809 } 1779 }
1810 if (sse) { 1780 if (sse) {
1811 dasm_put(Dst, 11592); 1781 dasm_put(Dst, 11192);
1812 } else { 1782 } else {
1813 dasm_put(Dst, 11604); 1783 dasm_put(Dst, 11204);
1814 } 1784 }
1815 dasm_put(Dst, 8597); 1785 dasm_put(Dst, 8384);
1816 break; 1786 break;
1817 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1787 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1818 dasm_put(Dst, 11718); 1788 dasm_put(Dst, 11318);
1819 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1789 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1820 switch (vk) { 1790 switch (vk) {
1821 case 0: 1791 case 0:
1822 dasm_put(Dst, 11726, LJ_TISNUM); 1792 dasm_put(Dst, 11326, LJ_TISNUM);
1823 if (sse) { 1793 if (sse) {
1824 dasm_put(Dst, 11970); 1794 dasm_put(Dst, 11570);
1825 } else { 1795 } else {
1826 dasm_put(Dst, 11984); 1796 dasm_put(Dst, 11584);
1827 } 1797 }
1828 break; 1798 break;
1829 case 1: 1799 case 1:
1830 dasm_put(Dst, 11760, LJ_TISNUM); 1800 dasm_put(Dst, 11360, LJ_TISNUM);
1831 if (sse) { 1801 if (sse) {
1832 dasm_put(Dst, 11992); 1802 dasm_put(Dst, 11592);
1833 } else { 1803 } else {
1834 dasm_put(Dst, 12006); 1804 dasm_put(Dst, 11606);
1835 } 1805 }
1836 break; 1806 break;
1837 default: 1807 default:
1838 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1808 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1839 if (sse) { 1809 if (sse) {
1840 dasm_put(Dst, 12014); 1810 dasm_put(Dst, 11614);
1841 } else { 1811 } else {
1842 dasm_put(Dst, 12028); 1812 dasm_put(Dst, 11628);
1843 } 1813 }
1844 break; 1814 break;
1845 } 1815 }
1846 if (sse) { 1816 if (sse) {
1847 dasm_put(Dst, 11592); 1817 dasm_put(Dst, 11192);
1848 } else { 1818 } else {
1849 dasm_put(Dst, 11604); 1819 dasm_put(Dst, 11204);
1850 } 1820 }
1851 dasm_put(Dst, 8597); 1821 dasm_put(Dst, 8384);
1852 break; 1822 break;
1853 case BC_MODVN: 1823 case BC_MODVN:
1854 dasm_put(Dst, 11718); 1824 dasm_put(Dst, 11318);
1855 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1825 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1856 switch (vk) { 1826 switch (vk) {
1857 case 0: 1827 case 0:
1858 dasm_put(Dst, 11726, LJ_TISNUM); 1828 dasm_put(Dst, 11326, LJ_TISNUM);
1859 if (sse) { 1829 if (sse) {
1860 dasm_put(Dst, 12036); 1830 dasm_put(Dst, 11636);
1861 } else { 1831 } else {
1862 dasm_put(Dst, 12050); 1832 dasm_put(Dst, 11650);
1863 } 1833 }
1864 break; 1834 break;
1865 case 1: 1835 case 1:
1866 dasm_put(Dst, 11760, LJ_TISNUM); 1836 dasm_put(Dst, 11360, LJ_TISNUM);
1867 if (sse) { 1837 if (sse) {
1868 dasm_put(Dst, 12058); 1838 dasm_put(Dst, 11658);
1869 } else { 1839 } else {
1870 dasm_put(Dst, 12072); 1840 dasm_put(Dst, 11672);
1871 } 1841 }
1872 break; 1842 break;
1873 default: 1843 default:
1874 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1844 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1875 if (sse) { 1845 if (sse) {
1876 dasm_put(Dst, 12080); 1846 dasm_put(Dst, 11680);
1877 } else { 1847 } else {
1878 dasm_put(Dst, 12094); 1848 dasm_put(Dst, 11694);
1879 } 1849 }
1880 break; 1850 break;
1881 } 1851 }
1882 dasm_put(Dst, 12102); 1852 dasm_put(Dst, 11702);
1883 if (sse) { 1853 if (sse) {
1884 dasm_put(Dst, 11592); 1854 dasm_put(Dst, 11192);
1885 } else { 1855 } else {
1886 dasm_put(Dst, 11604); 1856 dasm_put(Dst, 11204);
1887 } 1857 }
1888 dasm_put(Dst, 8597); 1858 dasm_put(Dst, 8384);
1889 break; 1859 break;
1890 case BC_MODNV: case BC_MODVV: 1860 case BC_MODNV: case BC_MODVV:
1891 dasm_put(Dst, 11718); 1861 dasm_put(Dst, 11318);
1892 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1862 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1893 switch (vk) { 1863 switch (vk) {
1894 case 0: 1864 case 0:
1895 dasm_put(Dst, 11726, LJ_TISNUM); 1865 dasm_put(Dst, 11326, LJ_TISNUM);
1896 if (sse) { 1866 if (sse) {
1897 dasm_put(Dst, 12036); 1867 dasm_put(Dst, 11636);
1898 } else { 1868 } else {
1899 dasm_put(Dst, 12050); 1869 dasm_put(Dst, 11650);
1900 } 1870 }
1901 break; 1871 break;
1902 case 1: 1872 case 1:
1903 dasm_put(Dst, 11760, LJ_TISNUM); 1873 dasm_put(Dst, 11360, LJ_TISNUM);
1904 if (sse) { 1874 if (sse) {
1905 dasm_put(Dst, 12058); 1875 dasm_put(Dst, 11658);
1906 } else { 1876 } else {
1907 dasm_put(Dst, 12072); 1877 dasm_put(Dst, 11672);
1908 } 1878 }
1909 break; 1879 break;
1910 default: 1880 default:
1911 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1881 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1912 if (sse) { 1882 if (sse) {
1913 dasm_put(Dst, 12080); 1883 dasm_put(Dst, 11680);
1914 } else { 1884 } else {
1915 dasm_put(Dst, 12094); 1885 dasm_put(Dst, 11694);
1916 } 1886 }
1917 break; 1887 break;
1918 } 1888 }
1919 dasm_put(Dst, 12108); 1889 dasm_put(Dst, 11708);
1920 break; 1890 break;
1921 case BC_POW: 1891 case BC_POW:
1922 dasm_put(Dst, 11718); 1892 dasm_put(Dst, 11318);
1923 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1893 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1924 switch (vk) { 1894 switch (vk) {
1925 case 0: 1895 case 0:
1926 dasm_put(Dst, 11726, LJ_TISNUM); 1896 dasm_put(Dst, 11326, LJ_TISNUM);
1927 if (sse) { 1897 if (sse) {
1928 dasm_put(Dst, 12036); 1898 dasm_put(Dst, 11636);
1929 } else { 1899 } else {
1930 dasm_put(Dst, 12050); 1900 dasm_put(Dst, 11650);
1931 } 1901 }
1932 break; 1902 break;
1933 case 1: 1903 case 1:
1934 dasm_put(Dst, 11760, LJ_TISNUM); 1904 dasm_put(Dst, 11360, LJ_TISNUM);
1935 if (sse) { 1905 if (sse) {
1936 dasm_put(Dst, 12058); 1906 dasm_put(Dst, 11658);
1937 } else { 1907 } else {
1938 dasm_put(Dst, 12072); 1908 dasm_put(Dst, 11672);
1939 } 1909 }
1940 break; 1910 break;
1941 default: 1911 default:
1942 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1912 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1943 if (sse) { 1913 if (sse) {
1944 dasm_put(Dst, 12080); 1914 dasm_put(Dst, 11680);
1945 } else { 1915 } else {
1946 dasm_put(Dst, 12094); 1916 dasm_put(Dst, 11694);
1947 } 1917 }
1948 break; 1918 break;
1949 } 1919 }
1950 dasm_put(Dst, 12113); 1920 dasm_put(Dst, 11713);
1951 if (sse) { 1921 if (sse) {
1952 dasm_put(Dst, 11592); 1922 dasm_put(Dst, 11192);
1953 } else { 1923 } else {
1954 dasm_put(Dst, 11604); 1924 dasm_put(Dst, 11204);
1955 } 1925 }
1956 dasm_put(Dst, 8597); 1926 dasm_put(Dst, 8384);
1957 break; 1927 break;
1958 1928
1959 case BC_CAT: 1929 case BC_CAT:
1960 dasm_put(Dst, 12117, Dt1(->base), Dt1(->base)); 1930 dasm_put(Dst, 11717, Dt1(->base), Dt1(->base));
1961 break; 1931 break;
1962 1932
1963 /* -- Constant ops ------------------------------------------------------ */ 1933 /* -- Constant ops ------------------------------------------------------ */
1964 1934
1965 case BC_KSTR: 1935 case BC_KSTR:
1966 dasm_put(Dst, 12211, LJ_TSTR); 1936 dasm_put(Dst, 11811, LJ_TSTR);
1967 break; 1937 break;
1968 case BC_KSHORT: 1938 case BC_KSHORT:
1969 if (sse) { 1939 if (sse) {
1970 dasm_put(Dst, 12244); 1940 dasm_put(Dst, 11844);
1971 } else { 1941 } else {
1972 dasm_put(Dst, 12259); 1942 dasm_put(Dst, 11859);
1973 } 1943 }
1974 dasm_put(Dst, 8597); 1944 dasm_put(Dst, 8384);
1975 break; 1945 break;
1976 case BC_KNUM: 1946 case BC_KNUM:
1977 if (sse) { 1947 if (sse) {
1978 dasm_put(Dst, 12267); 1948 dasm_put(Dst, 11867);
1979 } else { 1949 } else {
1980 dasm_put(Dst, 12280); 1950 dasm_put(Dst, 11880);
1981 } 1951 }
1982 dasm_put(Dst, 8597); 1952 dasm_put(Dst, 8384);
1983 break; 1953 break;
1984 case BC_KPRI: 1954 case BC_KPRI:
1985 dasm_put(Dst, 12287); 1955 dasm_put(Dst, 11887);
1986 break; 1956 break;
1987 case BC_KNIL: 1957 case BC_KNIL:
1988 dasm_put(Dst, 12313, LJ_TNIL); 1958 dasm_put(Dst, 11913, LJ_TNIL);
1989 break; 1959 break;
1990 1960
1991 /* -- Upvalue and function ops ------------------------------------------ */ 1961 /* -- Upvalue and function ops ------------------------------------------ */
1992 1962
1993 case BC_UGET: 1963 case BC_UGET:
1994 dasm_put(Dst, 12359, offsetof(GCfuncL, uvptr), DtA(->v)); 1964 dasm_put(Dst, 11959, offsetof(GCfuncL, uvptr), DtA(->v));
1995 break; 1965 break;
1996 case BC_USETV: 1966 case BC_USETV:
1997#define TV2MARKOFS \ 1967#define TV2MARKOFS \
1998 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1968 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1999 dasm_put(Dst, 12403, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1969 dasm_put(Dst, 12003, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
2000 dasm_put(Dst, 12493); 1970 dasm_put(Dst, 12093);
2001 break; 1971 break;
2002#undef TV2MARKOFS 1972#undef TV2MARKOFS
2003 case BC_USETS: 1973 case BC_USETS:
2004 dasm_put(Dst, 12505, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1974 dasm_put(Dst, 12105, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2005 break; 1975 break;
2006 case BC_USETN: 1976 case BC_USETN:
2007 dasm_put(Dst, 12596); 1977 dasm_put(Dst, 12196);
2008 if (sse) { 1978 if (sse) {
2009 dasm_put(Dst, 12601); 1979 dasm_put(Dst, 12201);
2010 } else { 1980 } else {
2011 dasm_put(Dst, 11411); 1981 dasm_put(Dst, 11011);
2012 } 1982 }
2013 dasm_put(Dst, 12608, offsetof(GCfuncL, uvptr), DtA(->v)); 1983 dasm_put(Dst, 12208, offsetof(GCfuncL, uvptr), DtA(->v));
2014 if (sse) { 1984 if (sse) {
2015 dasm_put(Dst, 4972); 1985 dasm_put(Dst, 12217);
2016 } else { 1986 } else {
2017 dasm_put(Dst, 4978); 1987 dasm_put(Dst, 12223);
2018 } 1988 }
2019 dasm_put(Dst, 8597); 1989 dasm_put(Dst, 8384);
2020 break; 1990 break;
2021 case BC_USETP: 1991 case BC_USETP:
2022 dasm_put(Dst, 12617, offsetof(GCfuncL, uvptr), DtA(->v)); 1992 dasm_put(Dst, 12226, offsetof(GCfuncL, uvptr), DtA(->v));
2023 break; 1993 break;
2024 case BC_UCLO: 1994 case BC_UCLO:
2025 dasm_put(Dst, 12654, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1995 dasm_put(Dst, 12263, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2026 break; 1996 break;
2027 1997
2028 case BC_FNEW: 1998 case BC_FNEW:
2029 dasm_put(Dst, 12708, Dt1(->base), Dt1(->base), LJ_TFUNC); 1999 dasm_put(Dst, 12317, Dt1(->base), Dt1(->base), LJ_TFUNC);
2030 break; 2000 break;
2031 2001
2032 /* -- Table ops --------------------------------------------------------- */ 2002 /* -- Table ops --------------------------------------------------------- */
2033 2003
2034 case BC_TNEW: 2004 case BC_TNEW:
2035 dasm_put(Dst, 12779, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2005 dasm_put(Dst, 12388, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2036 break; 2006 break;
2037 case BC_TDUP: 2007 case BC_TDUP:
2038 dasm_put(Dst, 12900, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2008 dasm_put(Dst, 12509, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2039 break; 2009 break;
2040 2010
2041 case BC_GGET: 2011 case BC_GGET:
2042 dasm_put(Dst, 12992, Dt7(->env)); 2012 dasm_put(Dst, 12601, Dt7(->env));
2043 break; 2013 break;
2044 case BC_GSET: 2014 case BC_GSET:
2045 dasm_put(Dst, 13010, Dt7(->env)); 2015 dasm_put(Dst, 12619, Dt7(->env));
2046 break; 2016 break;
2047 2017
2048 case BC_TGETV: 2018 case BC_TGETV:
2049 dasm_put(Dst, 13028, LJ_TTAB, LJ_TISNUM); 2019 dasm_put(Dst, 12637, LJ_TTAB, LJ_TISNUM);
2050 if (sse) { 2020 if (sse) {
2051 dasm_put(Dst, 13061); 2021 dasm_put(Dst, 12670);
2052 } else { 2022 } else {
2053 dasm_put(Dst, 13082); 2023 dasm_put(Dst, 12691);
2054 if (cmov) { 2024 if (cmov) {
2055 dasm_put(Dst, 11137); 2025 dasm_put(Dst, 10737);
2056 } else { 2026 } else {
2057 dasm_put(Dst, 11143); 2027 dasm_put(Dst, 10743);
2058 } 2028 }
2059 dasm_put(Dst, 2863); 2029 dasm_put(Dst, 2522);
2060 } 2030 }
2061 dasm_put(Dst, 13092, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2031 dasm_put(Dst, 12701, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2062 dasm_put(Dst, 13184, LJ_TSTR); 2032 dasm_put(Dst, 12793, LJ_TSTR);
2063 break; 2033 break;
2064 case BC_TGETS: 2034 case BC_TGETS:
2065 dasm_put(Dst, 13202, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2035 dasm_put(Dst, 12811, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2066 dasm_put(Dst, 13286, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2036 dasm_put(Dst, 12895, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2067 break; 2037 break;
2068 case BC_TGETB: 2038 case BC_TGETB:
2069 dasm_put(Dst, 13357, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2039 dasm_put(Dst, 12966, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2070 dasm_put(Dst, 11708); 2040 dasm_put(Dst, 11308);
2071 break; 2041 break;
2072 2042
2073 case BC_TSETV: 2043 case BC_TSETV:
2074 dasm_put(Dst, 13456, LJ_TTAB, LJ_TISNUM); 2044 dasm_put(Dst, 13065, LJ_TTAB, LJ_TISNUM);
2075 if (sse) { 2045 if (sse) {
2076 dasm_put(Dst, 13061); 2046 dasm_put(Dst, 12670);
2077 } else { 2047 } else {
2078 dasm_put(Dst, 13082); 2048 dasm_put(Dst, 12691);
2079 if (cmov) { 2049 if (cmov) {
2080 dasm_put(Dst, 11137); 2050 dasm_put(Dst, 10737);
2081 } else { 2051 } else {
2082 dasm_put(Dst, 11143); 2052 dasm_put(Dst, 10743);
2083 } 2053 }
2084 dasm_put(Dst, 2863); 2054 dasm_put(Dst, 2522);
2085 } 2055 }
2086 dasm_put(Dst, 13489, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2056 dasm_put(Dst, 13098, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
2087 dasm_put(Dst, 13572, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2057 dasm_put(Dst, 13181, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2088 break; 2058 break;
2089 case BC_TSETS: 2059 case BC_TSETS:
2090 dasm_put(Dst, 13634, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2060 dasm_put(Dst, 13243, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2091 dasm_put(Dst, 13709, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2061 dasm_put(Dst, 13318, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2092 dasm_put(Dst, 13801, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2062 dasm_put(Dst, 13410, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2093 break; 2063 break;
2094 case BC_TSETB: 2064 case BC_TSETB:
2095 dasm_put(Dst, 13897, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2065 dasm_put(Dst, 13506, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2096 dasm_put(Dst, 13995, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2066 dasm_put(Dst, 13604, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2097 break; 2067 break;
2098 2068
2099 case BC_TSETM: 2069 case BC_TSETM:
2100 dasm_put(Dst, 14041); 2070 dasm_put(Dst, 13650);
2101 if (sse) { 2071 if (sse) {
2102 dasm_put(Dst, 12601); 2072 dasm_put(Dst, 12201);
2103 } else { 2073 } else {
2104 dasm_put(Dst, 14046); 2074 dasm_put(Dst, 13655);
2105 } 2075 }
2106 dasm_put(Dst, 14054, Dt6(->marked), LJ_GC_BLACK); 2076 dasm_put(Dst, 13663, Dt6(->marked), LJ_GC_BLACK);
2107 if (sse) { 2077 if (sse) {
2108 dasm_put(Dst, 14079); 2078 dasm_put(Dst, 13688);
2109 } else { 2079 } else {
2110 dasm_put(Dst, 14086); 2080 dasm_put(Dst, 13695);
2111 } 2081 }
2112 dasm_put(Dst, 14091, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 2082 dasm_put(Dst, 13700, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
2113 dasm_put(Dst, 14219, Dt6(->gclist)); 2083 dasm_put(Dst, 13828, Dt6(->gclist));
2114 break; 2084 break;
2115 2085
2116 /* -- Calls and vararg handling ----------------------------------------- */ 2086 /* -- Calls and vararg handling ----------------------------------------- */
2117 2087
2118 case BC_CALL: case BC_CALLM: 2088 case BC_CALL: case BC_CALLM:
2119 dasm_put(Dst, 11722); 2089 dasm_put(Dst, 11322);
2120 if (op == BC_CALLM) { 2090 if (op == BC_CALLM) {
2121 dasm_put(Dst, 14227); 2091 dasm_put(Dst, 13836);
2122 } 2092 }
2123 dasm_put(Dst, 14232, LJ_TFUNC, Dt7(->gate)); 2093 dasm_put(Dst, 13841, LJ_TFUNC, Dt7(->pc));
2124 break; 2094 break;
2125 2095
2126 case BC_CALLMT: 2096 case BC_CALLMT:
2127 dasm_put(Dst, 14227); 2097 dasm_put(Dst, 13836);
2128 break; 2098 break;
2129 case BC_CALLT: 2099 case BC_CALLT:
2130 dasm_put(Dst, 14255, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 2100 dasm_put(Dst, 13882, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2131 dasm_put(Dst, 14360, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 2101 dasm_put(Dst, 14000, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
2132 break; 2102 break;
2133 2103
2134 case BC_ITERC: 2104 case BC_ITERC:
2135 dasm_put(Dst, 14417, LJ_TFUNC, Dt7(->gate)); 2105 dasm_put(Dst, 14057, LJ_TFUNC, 2+1, Dt7(->pc));
2136 break; 2106 break;
2137 2107
2138 case BC_VARG: 2108 case BC_VARG:
2139 dasm_put(Dst, 14479, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 2109 dasm_put(Dst, 14137, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
2140 dasm_put(Dst, 14623, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2110 dasm_put(Dst, 14281, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2141 break; 2111 break;
2142 2112
2143 /* -- Returns ----------------------------------------------------------- */ 2113 /* -- Returns ----------------------------------------------------------- */
2144 2114
2145 case BC_RETM: 2115 case BC_RETM:
2146 dasm_put(Dst, 14227); 2116 dasm_put(Dst, 13836);
2147 break; 2117 break;
2148 2118
2149 case BC_RET: case BC_RET0: case BC_RET1: 2119 case BC_RET: case BC_RET0: case BC_RET1:
2150 if (op != BC_RET0) { 2120 if (op != BC_RET0) {
2151 dasm_put(Dst, 14722); 2121 dasm_put(Dst, 14380);
2152 } 2122 }
2153 dasm_put(Dst, 14726, FRAME_TYPE); 2123 dasm_put(Dst, 14384, FRAME_TYPE);
2154 switch (op) { 2124 switch (op) {
2155 case BC_RET: 2125 case BC_RET:
2156 dasm_put(Dst, 14745); 2126 dasm_put(Dst, 14403);
2157 break; 2127 break;
2158 case BC_RET1: 2128 case BC_RET1:
2159 dasm_put(Dst, 14803); 2129 dasm_put(Dst, 14461);
2160 /* fallthrough */ 2130 /* fallthrough */
2161 case BC_RET0: 2131 case BC_RET0:
2162 dasm_put(Dst, 14819); 2132 dasm_put(Dst, 14477);
2163 default: 2133 default:
2164 break; 2134 break;
2165 } 2135 }
2166 dasm_put(Dst, 14830, Dt7(->pc), PC2PROTO(k)); 2136 dasm_put(Dst, 14488, Dt7(->pc), PC2PROTO(k));
2167 if (op == BC_RET) { 2137 if (op == BC_RET) {
2168 dasm_put(Dst, 14872, LJ_TNIL); 2138 dasm_put(Dst, 14530, LJ_TNIL);
2169 } else { 2139 } else {
2170 dasm_put(Dst, 14881, LJ_TNIL); 2140 dasm_put(Dst, 14539, LJ_TNIL);
2171 } 2141 }
2172 dasm_put(Dst, 14888); 2142 dasm_put(Dst, 14546);
2173 if (op != BC_RET0) { 2143 if (op != BC_RET0) {
2174 dasm_put(Dst, 14909); 2144 dasm_put(Dst, 14567);
2175 } 2145 }
2176 dasm_put(Dst, 5068); 2146 dasm_put(Dst, 4678);
2177 break; 2147 break;
2178 2148
2179 /* -- Loops and branches ------------------------------------------------ */ 2149 /* -- Loops and branches ------------------------------------------------ */
@@ -2181,7 +2151,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2181 2151
2182 case BC_FORL: 2152 case BC_FORL:
2183#if LJ_HASJIT 2153#if LJ_HASJIT
2184 dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); 2154 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
2185#endif 2155#endif
2186 break; 2156 break;
2187 2157
@@ -2193,57 +2163,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2193 case BC_FORI: 2163 case BC_FORI:
2194 case BC_IFORL: 2164 case BC_IFORL:
2195 vk = (op == BC_IFORL || op == BC_JFORL); 2165 vk = (op == BC_IFORL || op == BC_JFORL);
2196 dasm_put(Dst, 14934); 2166 dasm_put(Dst, 14592);
2197 if (!vk) { 2167 if (!vk) {
2198 dasm_put(Dst, 14938, LJ_TISNUM, LJ_TISNUM); 2168 dasm_put(Dst, 14596, LJ_TISNUM, LJ_TISNUM);
2199 } 2169 }
2200 dasm_put(Dst, 14957); 2170 dasm_put(Dst, 14615);
2201 if (!vk) { 2171 if (!vk) {
2202 dasm_put(Dst, 14961, LJ_TISNUM); 2172 dasm_put(Dst, 14619, LJ_TISNUM);
2203 } 2173 }
2204 if (sse) { 2174 if (sse) {
2205 dasm_put(Dst, 14970); 2175 dasm_put(Dst, 14628);
2206 if (vk) { 2176 if (vk) {
2207 dasm_put(Dst, 14982); 2177 dasm_put(Dst, 14640);
2208 } else { 2178 } else {
2209 dasm_put(Dst, 15001); 2179 dasm_put(Dst, 14659);
2210 } 2180 }
2211 dasm_put(Dst, 15006); 2181 dasm_put(Dst, 14664);
2212 } else { 2182 } else {
2213 dasm_put(Dst, 15019); 2183 dasm_put(Dst, 14677);
2214 if (vk) { 2184 if (vk) {
2215 dasm_put(Dst, 15025); 2185 dasm_put(Dst, 14683);
2216 } else { 2186 } else {
2217 dasm_put(Dst, 15041); 2187 dasm_put(Dst, 14699);
2218 } 2188 }
2219 dasm_put(Dst, 15049); 2189 dasm_put(Dst, 14707);
2220 if (cmov) { 2190 if (cmov) {
2221 dasm_put(Dst, 11137); 2191 dasm_put(Dst, 10737);
2222 } else { 2192 } else {
2223 dasm_put(Dst, 11143); 2193 dasm_put(Dst, 10743);
2224 } 2194 }
2225 if (!cmov) { 2195 if (!cmov) {
2226 dasm_put(Dst, 15054); 2196 dasm_put(Dst, 14712);
2227 } 2197 }
2228 } 2198 }
2229 if (op == BC_FORI) { 2199 if (op == BC_FORI) {
2230 dasm_put(Dst, 15060, -BCBIAS_J*4); 2200 dasm_put(Dst, 14718, -BCBIAS_J*4);
2231 } else if (op == BC_JFORI) { 2201 } else if (op == BC_JFORI) {
2232 dasm_put(Dst, 15070, -BCBIAS_J*4, BC_JLOOP); 2202 dasm_put(Dst, 14728, -BCBIAS_J*4, BC_JLOOP);
2233 } else if (op == BC_IFORL) { 2203 } else if (op == BC_IFORL) {
2234 dasm_put(Dst, 15084, -BCBIAS_J*4); 2204 dasm_put(Dst, 14742, -BCBIAS_J*4);
2235 } else { 2205 } else {
2236 dasm_put(Dst, 15080, BC_JLOOP); 2206 dasm_put(Dst, 14738, BC_JLOOP);
2237 } 2207 }
2238 dasm_put(Dst, 11172); 2208 dasm_put(Dst, 10772);
2239 if (sse) { 2209 if (sse) {
2240 dasm_put(Dst, 15094); 2210 dasm_put(Dst, 14752);
2241 } 2211 }
2242 break; 2212 break;
2243 2213
2244 case BC_ITERL: 2214 case BC_ITERL:
2245#if LJ_HASJIT 2215#if LJ_HASJIT
2246 dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); 2216 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
2247#endif 2217#endif
2248 break; 2218 break;
2249 2219
@@ -2252,33 +2222,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2252 break; 2222 break;
2253#endif 2223#endif
2254 case BC_IITERL: 2224 case BC_IITERL:
2255 dasm_put(Dst, 15105, LJ_TNIL); 2225 dasm_put(Dst, 14763, LJ_TNIL);
2256 if (op == BC_JITERL) { 2226 if (op == BC_JITERL) {
2257 dasm_put(Dst, 15120, BC_JLOOP); 2227 dasm_put(Dst, 14778, BC_JLOOP);
2258 } else { 2228 } else {
2259 dasm_put(Dst, 15134, -BCBIAS_J*4); 2229 dasm_put(Dst, 14792, -BCBIAS_J*4);
2260 } 2230 }
2261 dasm_put(Dst, 11469); 2231 dasm_put(Dst, 11069);
2262 break; 2232 break;
2263 2233
2264 case BC_LOOP: 2234 case BC_LOOP:
2265#if LJ_HASJIT 2235#if LJ_HASJIT
2266 dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); 2236 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
2267#endif 2237#endif
2268 break; 2238 break;
2269 2239
2270 case BC_ILOOP: 2240 case BC_ILOOP:
2271 dasm_put(Dst, 8597); 2241 dasm_put(Dst, 8384);
2272 break; 2242 break;
2273 2243
2274 case BC_JLOOP: 2244 case BC_JLOOP:
2275#if LJ_HASJIT 2245#if LJ_HASJIT
2276 dasm_put(Dst, 15150, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2246 dasm_put(Dst, 14808, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2277#endif 2247#endif
2278 break; 2248 break;
2279 2249
2280 case BC_JMP: 2250 case BC_JMP:
2281 dasm_put(Dst, 15173, -BCBIAS_J*4); 2251 dasm_put(Dst, 14831, -BCBIAS_J*4);
2252 break;
2253
2254 /* -- Function headers -------------------------------------------------- */
2255
2256 /*
2257 ** Reminder: A function may be called with func/args above L->maxstack,
2258 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
2259 ** too. This means all FUNC* ops (including fast functions) must check
2260 ** for stack overflow _before_ adding more slots!
2261 */
2262
2263 case BC_FUNCF:
2264#if LJ_HASJIT
2265#endif
2266 case BC_FUNCV: /* NYI: compiled vararg functions. */
2267 break;
2268
2269 case BC_JFUNCF:
2270#if !LJ_HASJIT
2271 break;
2272#endif
2273 case BC_IFUNCF:
2274 dasm_put(Dst, 14855, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2275 if (op == BC_JFUNCF) {
2276 dasm_put(Dst, 14885, BC_JLOOP);
2277 } else {
2278 dasm_put(Dst, 8384);
2279 }
2280 dasm_put(Dst, 14894, LJ_TNIL);
2281 break;
2282
2283 case BC_JFUNCV:
2284#if !LJ_HASJIT
2285 break;
2286#endif
2287 dasm_put(Dst, 10435);
2288 break; /* NYI: compiled vararg functions. */
2289
2290 case BC_IFUNCV:
2291 dasm_put(Dst, 14916, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2292 if (op == BC_JFUNCV) {
2293 dasm_put(Dst, 14885, BC_JLOOP);
2294 } else {
2295 dasm_put(Dst, 15007, -4+PC2PROTO(k));
2296 }
2297 dasm_put(Dst, 15029, LJ_TNIL);
2298 break;
2299
2300 case BC_FUNCC:
2301 case BC_FUNCCW:
2302 dasm_put(Dst, 15051, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2303 if (op == BC_FUNCC) {
2304 dasm_put(Dst, 15080);
2305 } else {
2306 dasm_put(Dst, 15084);
2307 }
2308 dasm_put(Dst, 15092, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2309 if (op == BC_FUNCC) {
2310 dasm_put(Dst, 15101);
2311 } else {
2312 dasm_put(Dst, 15105, DISPATCH_GL(wrapf));
2313 }
2314 dasm_put(Dst, 15110, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2282 break; 2315 break;
2283 2316
2284 /* ---------------------------------------------------------------------- */ 2317 /* ---------------------------------------------------------------------- */
@@ -2306,7 +2339,7 @@ static int build_backend(BuildCtx *ctx)
2306 2339
2307 build_subroutines(ctx, cmov, sse); 2340 build_subroutines(ctx, cmov, sse);
2308 2341
2309 dasm_put(Dst, 15197); 2342 dasm_put(Dst, 15135);
2310 for (op = 0; op < BC__MAX; op++) 2343 for (op = 0; op < BC__MAX; op++)
2311 build_ins(ctx, (BCOp)op, op, cmov, sse); 2344 build_ins(ctx, (BCOp)op, op, cmov, sse);
2312 2345
diff --git a/src/lib_base.c b/src/lib_base.c
index 032d5bcc..e85b7264 100644
--- a/src/lib_base.c
+++ b/src/lib_base.c
@@ -22,7 +22,9 @@
22#include "lj_tab.h" 22#include "lj_tab.h"
23#include "lj_meta.h" 23#include "lj_meta.h"
24#include "lj_state.h" 24#include "lj_state.h"
25#include "lj_bc.h"
25#include "lj_ff.h" 26#include "lj_ff.h"
27#include "lj_dispatch.h"
26#include "lj_ctype.h" 28#include "lj_ctype.h"
27#include "lj_lib.h" 29#include "lj_lib.h"
28 30
@@ -521,19 +523,25 @@ void LJ_FASTCALL lj_ffh_coroutine_wrap_err(lua_State *L, lua_State *co)
521 lj_err_run(L); 523 lj_err_run(L);
522} 524}
523 525
526/* Forward declaration. */
527static void setpc_wrap_aux(lua_State *L, GCfunc *fn);
528
524LJLIB_CF(coroutine_wrap) 529LJLIB_CF(coroutine_wrap)
525{ 530{
526 GCfunc *fn;
527 lj_cf_coroutine_create(L); 531 lj_cf_coroutine_create(L);
528 lua_pushcclosure(L, lj_ffh_coroutine_wrap_aux, 1); 532 lj_lib_pushcc(L, lj_ffh_coroutine_wrap_aux, FF_coroutine_wrap_aux, 1);
529 fn = funcV(L->top-1); 533 setpc_wrap_aux(L, funcV(L->top-1));
530 fn->c.gate = lj_ff_coroutine_wrap_aux;
531 fn->c.ffid = FF_coroutine_wrap_aux;
532 return 1; 534 return 1;
533} 535}
534 536
535#include "lj_libdef.h" 537#include "lj_libdef.h"
536 538
539/* Fix the PC of wrap_aux. Really ugly workaround. */
540static void setpc_wrap_aux(lua_State *L, GCfunc *fn)
541{
542 setmref(fn->c.pc, &L2GG(L)->bcff[lj_lib_init_coroutine[1]+2]);
543}
544
537/* ------------------------------------------------------------------------ */ 545/* ------------------------------------------------------------------------ */
538 546
539static void newproxy_weaktable(lua_State *L) 547static void newproxy_weaktable(lua_State *L)
diff --git a/src/lib_io.c b/src/lib_io.c
index 42200201..e8eb09cb 100644
--- a/src/lib_io.c
+++ b/src/lib_io.c
@@ -502,8 +502,7 @@ static GCobj *io_std_new(lua_State *L, FILE *fp, const char *name)
502 502
503LUALIB_API int luaopen_io(lua_State *L) 503LUALIB_API int luaopen_io(lua_State *L)
504{ 504{
505 lua_pushcfunction(L, lj_cf_io_lines_iter); 505 lj_lib_pushcf(L, lj_cf_io_lines_iter, FF_io_lines_iter);
506 funcV(L->top-1)->c.ffid = FF_io_lines_iter;
507 LJ_LIB_REG_(L, NULL, io_method); 506 LJ_LIB_REG_(L, NULL, io_method);
508 copyTV(L, L->top, L->top-1); L->top++; 507 copyTV(L, L->top, L->top-1); L->top++;
509 lua_setfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE); 508 lua_setfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE);
diff --git a/src/lib_jit.c b/src/lib_jit.c
index 8fda41d0..a5829dc3 100644
--- a/src/lib_jit.c
+++ b/src/lib_jit.c
@@ -177,7 +177,7 @@ LJLIB_CF(jit_util_funcinfo)
177 GCtab *t; 177 GCtab *t;
178 lua_createtable(L, 0, 16); /* Increment hash size if fields are added. */ 178 lua_createtable(L, 0, 16); /* Increment hash size if fields are added. */
179 t = tabV(L->top-1); 179 t = tabV(L->top-1);
180 setintfield(L, t, "linedefined", pt->linedefined); 180 setintfield(L, t, "linedefined", proto_line(pt, 0));
181 setintfield(L, t, "lastlinedefined", pt->lastlinedefined); 181 setintfield(L, t, "lastlinedefined", pt->lastlinedefined);
182 setintfield(L, t, "stackslots", pt->framesize); 182 setintfield(L, t, "stackslots", pt->framesize);
183 setintfield(L, t, "params", pt->numparams); 183 setintfield(L, t, "params", pt->numparams);
@@ -185,9 +185,9 @@ LJLIB_CF(jit_util_funcinfo)
185 setintfield(L, t, "gcconsts", (int32_t)pt->sizekgc); 185 setintfield(L, t, "gcconsts", (int32_t)pt->sizekgc);
186 setintfield(L, t, "nconsts", (int32_t)pt->sizekn); 186 setintfield(L, t, "nconsts", (int32_t)pt->sizekn);
187 setintfield(L, t, "upvalues", (int32_t)pt->sizeuv); 187 setintfield(L, t, "upvalues", (int32_t)pt->sizeuv);
188 if (pc-1 < pt->sizebc) 188 if (pc < pt->sizebc)
189 setintfield(L, t, "currentline", 189 setintfield(L, t, "currentline",
190 proto_lineinfo(pt) ? proto_line(pt, pc-1) : 0); 190 proto_lineinfo(pt) ? proto_line(pt, pc) : 0);
191 lua_pushboolean(L, (pt->flags & PROTO_IS_VARARG)); 191 lua_pushboolean(L, (pt->flags & PROTO_IS_VARARG));
192 lua_setfield(L, -2, "isvararg"); 192 lua_setfield(L, -2, "isvararg");
193 setstrV(L, L->top++, proto_chunkname(pt)); 193 setstrV(L, L->top++, proto_chunkname(pt));
@@ -209,7 +209,7 @@ LJLIB_CF(jit_util_funcinfo)
209LJLIB_CF(jit_util_funcbc) 209LJLIB_CF(jit_util_funcbc)
210{ 210{
211 GCproto *pt = check_Lproto(L, 0); 211 GCproto *pt = check_Lproto(L, 0);
212 BCPos pc = (BCPos)lj_lib_checkint(L, 2) - 1; 212 BCPos pc = (BCPos)lj_lib_checkint(L, 2);
213 if (pc < pt->sizebc) { 213 if (pc < pt->sizebc) {
214 BCIns ins = proto_bc(pt)[pc]; 214 BCIns ins = proto_bc(pt)[pc];
215 BCOp op = bc_op(ins); 215 BCOp op = bc_op(ins);
diff --git a/src/lib_package.c b/src/lib_package.c
index 7d0362a5..6d093500 100644
--- a/src/lib_package.c
+++ b/src/lib_package.c
@@ -482,14 +482,14 @@ LUALIB_API int luaopen_package(lua_State *L)
482{ 482{
483 int i; 483 int i;
484 luaL_newmetatable(L, "_LOADLIB"); 484 luaL_newmetatable(L, "_LOADLIB");
485 lua_pushcfunction(L, lj_cf_package_unloadlib); 485 lj_lib_pushcf(L, lj_cf_package_unloadlib, 1);
486 lua_setfield(L, -2, "__gc"); 486 lua_setfield(L, -2, "__gc");
487 luaL_register(L, LUA_LOADLIBNAME, package_lib); 487 luaL_register(L, LUA_LOADLIBNAME, package_lib);
488 lua_pushvalue(L, -1); 488 lua_pushvalue(L, -1);
489 lua_replace(L, LUA_ENVIRONINDEX); 489 lua_replace(L, LUA_ENVIRONINDEX);
490 lua_createtable(L, sizeof(package_loaders)/sizeof(package_loaders[0])-1, 0); 490 lua_createtable(L, sizeof(package_loaders)/sizeof(package_loaders[0])-1, 0);
491 for (i = 0; package_loaders[i] != NULL; i++) { 491 for (i = 0; package_loaders[i] != NULL; i++) {
492 lua_pushcfunction(L, package_loaders[i]); 492 lj_lib_pushcf(L, package_loaders[i], 1);
493 lua_rawseti(L, -2, i+1); 493 lua_rawseti(L, -2, i+1);
494 } 494 }
495 lua_setfield(L, -2, "loaders"); 495 lua_setfield(L, -2, "loaders");
diff --git a/src/lib_string.c b/src/lib_string.c
index b6a4864b..ab353c20 100644
--- a/src/lib_string.c
+++ b/src/lib_string.c
@@ -536,8 +536,7 @@ LJLIB_CF(string_gmatch)
536 lj_lib_checkstr(L, 2); 536 lj_lib_checkstr(L, 2);
537 L->top = L->base+3; 537 L->top = L->base+3;
538 (L->top-1)->u64 = 0; 538 (L->top-1)->u64 = 0;
539 lua_pushcclosure(L, lj_cf_string_gmatch_aux, 3); 539 lj_lib_pushcc(L, lj_cf_string_gmatch_aux, FF_string_gmatch_aux, 3);
540 funcV(L->top-1)->c.ffid = FF_string_gmatch_aux;
541 return 1; 540 return 1;
542} 541}
543 542
diff --git a/src/lj_api.c b/src/lj_api.c
index ad28bbf2..a19f0b33 100644
--- a/src/lj_api.c
+++ b/src/lj_api.c
@@ -18,6 +18,7 @@
18#include "lj_udata.h" 18#include "lj_udata.h"
19#include "lj_meta.h" 19#include "lj_meta.h"
20#include "lj_state.h" 20#include "lj_state.h"
21#include "lj_bc.h"
21#include "lj_frame.h" 22#include "lj_frame.h"
22#include "lj_trace.h" 23#include "lj_trace.h"
23#include "lj_vm.h" 24#include "lj_vm.h"
@@ -487,8 +488,8 @@ LUA_API lua_CFunction lua_tocfunction(lua_State *L, int idx)
487{ 488{
488 cTValue *o = index2adr(L, idx); 489 cTValue *o = index2adr(L, idx);
489 if (tvisfunc(o)) { 490 if (tvisfunc(o)) {
490 ASMFunction gate = funcV(o)->c.gate; 491 BCOp op = bc_op(*mref(funcV(o)->c.pc, BCIns));
491 if (gate == lj_gate_c || gate == lj_gate_cwrap) 492 if (op == BC_FUNCC || op == BC_FUNCCW)
492 return funcV(o)->c.f; 493 return funcV(o)->c.f;
493 } 494 }
494 return NULL; 495 return NULL;
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 3a2fee71..55bc814e 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -906,7 +906,7 @@ static MCode *asm_exitstub_gen(ASMState *as, ExitNo group)
906 *mxp++ = MODRM(XM_OFS8, 0, RID_ESP); 906 *mxp++ = MODRM(XM_OFS8, 0, RID_ESP);
907 *mxp++ = MODRM(XM_SCALE1, RID_ESP, RID_ESP); 907 *mxp++ = MODRM(XM_SCALE1, RID_ESP, RID_ESP);
908 *mxp++ = 2*sizeof(void *); 908 *mxp++ = 2*sizeof(void *);
909 *(int32_t *)mxp = ptr2addr(GG2DISP(J2GG(as->J))); mxp += 4; 909 *(int32_t *)mxp = ptr2addr(J2GG(as->J)->dispatch); mxp += 4;
910 /* Jump to exit handler which fills in the ExitState. */ 910 /* Jump to exit handler which fills in the ExitState. */
911 *mxp++ = XI_JMP; mxp += 4; 911 *mxp++ = XI_JMP; mxp += 4;
912 *((int32_t *)(mxp-4)) = (int32_t)((MCode *)lj_vm_exit_handler - mxp); 912 *((int32_t *)(mxp-4)) = (int32_t)((MCode *)lj_vm_exit_handler - mxp);
@@ -3066,7 +3066,7 @@ static void asm_tail_sync(ASMState *as)
3066 3066
3067 if (as->T->link == TRACE_INTERP) { 3067 if (as->T->link == TRACE_INTERP) {
3068 /* Setup fixed registers for exit to interpreter. */ 3068 /* Setup fixed registers for exit to interpreter. */
3069 emit_loada(as, RID_DISPATCH, GG2DISP(J2GG(as->J))); 3069 emit_loada(as, RID_DISPATCH, J2GG(as->J)->dispatch);
3070 emit_loadi(as, RID_PC, (int32_t)map[nent]); 3070 emit_loadi(as, RID_PC, (int32_t)map[nent]);
3071 } else if (newbase) { 3071 } else if (newbase) {
3072 /* Save modified BASE for linking to trace with higher start frame. */ 3072 /* Save modified BASE for linking to trace with higher start frame. */
diff --git a/src/lj_bc.c b/src/lj_bc.c
index 58e97b30..2519807c 100644
--- a/src/lj_bc.c
+++ b/src/lj_bc.c
@@ -9,11 +9,6 @@
9#include "lj_obj.h" 9#include "lj_obj.h"
10#include "lj_bc.h" 10#include "lj_bc.h"
11 11
12/* Bytecode instruction modes. */ 12/* Bytecode offsets and bytecode instruction modes. */
13LJ_DATADEF const uint16_t lj_bc_mode[BC__MAX+1] = {
14BCDEF(BCMODE)
15 0
16};
17
18#include "lj_bcdef.h" 13#include "lj_bcdef.h"
19 14
diff --git a/src/lj_bc.h b/src/lj_bc.h
index 83e2dea3..e1284916 100644
--- a/src/lj_bc.h
+++ b/src/lj_bc.h
@@ -178,7 +178,17 @@
178 _(ILOOP, rbase, ___, jump, ___) \ 178 _(ILOOP, rbase, ___, jump, ___) \
179 _(JLOOP, rbase, ___, lit, ___) \ 179 _(JLOOP, rbase, ___, lit, ___) \
180 \ 180 \
181 _(JMP, rbase, ___, jump, ___) 181 _(JMP, rbase, ___, jump, ___) \
182 \
183 /* Function headers. I/J = interp/JIT, F/V/C = fixarg/vararg/C func. */ \
184 _(FUNCF, rbase, ___, ___, ___) \
185 _(IFUNCF, rbase, ___, ___, ___) \
186 _(JFUNCF, rbase, ___, lit, ___) \
187 _(FUNCV, rbase, ___, ___, ___) \
188 _(IFUNCV, rbase, ___, ___, ___) \
189 _(JFUNCV, rbase, ___, lit, ___) \
190 _(FUNCC, ___, ___, ___, ___) \
191 _(FUNCCW, ___, ___, ___, ___)
182 192
183/* Bytecode opcode numbers. */ 193/* Bytecode opcode numbers. */
184typedef enum { 194typedef enum {
@@ -206,6 +216,10 @@ LJ_STATIC_ASSERT((int)BC_ITERL + 1 == (int)BC_IITERL);
206LJ_STATIC_ASSERT((int)BC_ITERL + 2 == (int)BC_JITERL); 216LJ_STATIC_ASSERT((int)BC_ITERL + 2 == (int)BC_JITERL);
207LJ_STATIC_ASSERT((int)BC_LOOP + 1 == (int)BC_ILOOP); 217LJ_STATIC_ASSERT((int)BC_LOOP + 1 == (int)BC_ILOOP);
208LJ_STATIC_ASSERT((int)BC_LOOP + 2 == (int)BC_JLOOP); 218LJ_STATIC_ASSERT((int)BC_LOOP + 2 == (int)BC_JLOOP);
219LJ_STATIC_ASSERT((int)BC_FUNCF + 1 == (int)BC_IFUNCF);
220LJ_STATIC_ASSERT((int)BC_FUNCF + 2 == (int)BC_JFUNCF);
221LJ_STATIC_ASSERT((int)BC_FUNCV + 1 == (int)BC_IFUNCV);
222LJ_STATIC_ASSERT((int)BC_FUNCV + 2 == (int)BC_JFUNCV);
209 223
210/* Stack slots used by FORI/FORL, relative to operand A. */ 224/* Stack slots used by FORI/FORL, relative to operand A. */
211enum { 225enum {
@@ -229,8 +243,9 @@ typedef enum {
229 243
230#define BCMODE(name, ma, mb, mc, mm) \ 244#define BCMODE(name, ma, mb, mc, mm) \
231 (BCM##ma|(BCM##mb<<3)|(BCM##mc<<7)|(MM_##mm<<11)), 245 (BCM##ma|(BCM##mb<<3)|(BCM##mc<<7)|(MM_##mm<<11)),
246#define BCMODE_FF 0
232 247
233LJ_DATA const uint16_t lj_bc_mode[BC__MAX+1]; 248LJ_DATA const uint16_t lj_bc_mode[];
234LJ_DATA const uint16_t lj_bc_ofs[BC__MAX+1]; 249LJ_DATA const uint16_t lj_bc_ofs[];
235 250
236#endif 251#endif
diff --git a/src/lj_def.h b/src/lj_def.h
index 64b08f7b..83b1935c 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -193,18 +193,14 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x)
193#endif 193#endif
194 194
195/* Attributes for internal functions. */ 195/* Attributes for internal functions. */
196#if defined(ljamalg_c)
197#define LJ_DATA static
198#define LJ_DATADEF static
199#define LJ_FUNC static
200#define LJ_ASMF LJ_NOAPI
201#define LJ_FUNCA LJ_NOAPI
202#else
203#define LJ_DATA LJ_NOAPI 196#define LJ_DATA LJ_NOAPI
204#define LJ_DATADEF 197#define LJ_DATADEF
205#define LJ_FUNC LJ_NOAPI
206#define LJ_ASMF LJ_NOAPI 198#define LJ_ASMF LJ_NOAPI
207#define LJ_FUNCA LJ_NOAPI 199#define LJ_FUNCA LJ_NOAPI
200#if defined(ljamalg_c)
201#define LJ_FUNC static
202#else
203#define LJ_FUNC LJ_NOAPI
208#endif 204#endif
209#define LJ_FUNC_NORET LJ_FUNC LJ_NORET 205#define LJ_FUNC_NORET LJ_FUNC LJ_NORET
210#define LJ_FUNCA_NORET LJ_FUNCA LJ_NORET 206#define LJ_FUNCA_NORET LJ_FUNCA LJ_NORET
diff --git a/src/lj_dispatch.c b/src/lj_dispatch.c
index 54cc9006..72211dca 100644
--- a/src/lj_dispatch.c
+++ b/src/lj_dispatch.c
@@ -11,6 +11,7 @@
11#include "lj_state.h" 11#include "lj_state.h"
12#include "lj_frame.h" 12#include "lj_frame.h"
13#include "lj_bc.h" 13#include "lj_bc.h"
14#include "lj_ff.h"
14#if LJ_HASJIT 15#if LJ_HASJIT
15#include "lj_jit.h" 16#include "lj_jit.h"
16#endif 17#endif
@@ -19,7 +20,8 @@
19#include "lj_vm.h" 20#include "lj_vm.h"
20#include "luajit.h" 21#include "luajit.h"
21 22
22#define GG_DISP_STATIC BC__MAX 23/* Bump GG_NUM_ASMFF in lj_dispatch.h as needed. Ugly. */
24LJ_STATIC_ASSERT(GG_NUM_ASMFF == FF_NUM_ASMFUNC);
23 25
24/* -- Dispatch table management ------------------------------------------- */ 26/* -- Dispatch table management ------------------------------------------- */
25 27
@@ -27,13 +29,20 @@
27void lj_dispatch_init(GG_State *GG) 29void lj_dispatch_init(GG_State *GG)
28{ 30{
29 uint32_t i; 31 uint32_t i;
30 ASMFunction *disp = GG2DISP(GG); 32 ASMFunction *disp = GG->dispatch;
31 for (i = 0; i < BC__MAX; i++) 33 for (i = 0; i < GG_LEN_SDISP; i++)
32 disp[GG_DISP_STATIC+i] = disp[i] = makeasmfunc(lj_bc_ofs[i]); 34 disp[GG_LEN_DDISP+i] = disp[i] = makeasmfunc(lj_bc_ofs[i]);
35 for (i = GG_LEN_SDISP; i < GG_LEN_DDISP; i++)
36 disp[i] = makeasmfunc(lj_bc_ofs[i]);
33 /* The JIT engine is off by default. luaopen_jit() turns it on. */ 37 /* The JIT engine is off by default. luaopen_jit() turns it on. */
34 disp[BC_FORL] = disp[BC_IFORL]; 38 disp[BC_FORL] = disp[BC_IFORL];
35 disp[BC_ITERL] = disp[BC_IITERL]; 39 disp[BC_ITERL] = disp[BC_IITERL];
36 disp[BC_LOOP] = disp[BC_ILOOP]; 40 disp[BC_LOOP] = disp[BC_ILOOP];
41 disp[BC_FUNCF] = disp[BC_IFUNCF];
42 disp[BC_FUNCV] = disp[BC_IFUNCV];
43 GG->g.bc_cfunc_ext = GG->g.bc_cfunc_int = BCINS_AD(BC_FUNCC, 0, 0);
44 for (i = 0; i < GG_NUM_ASMFF; i++)
45 GG->bcff[i] = BCINS_AD(BC__MAX+i, 0, 0);
37} 46}
38 47
39#if LJ_HASJIT 48#if LJ_HASJIT
@@ -57,39 +66,50 @@ void lj_dispatch_update(global_State *g)
57 mode |= (G2J(g)->flags & JIT_F_ON) ? 1 : 0; 66 mode |= (G2J(g)->flags & JIT_F_ON) ? 1 : 0;
58 mode |= G2J(g)->state != LJ_TRACE_IDLE ? 6 : 0; 67 mode |= G2J(g)->state != LJ_TRACE_IDLE ? 6 : 0;
59#endif 68#endif
60 mode |= (g->hookmask & HOOK_EVENTMASK) ? 2 : 0; 69 mode |= (g->hookmask & (LUA_MASKLINE|LUA_MASKCOUNT)) ? 2 : 0;
61 if (oldmode != mode) { /* Mode changed? */ 70 if (oldmode != mode) { /* Mode changed? */
62 ASMFunction *disp = GG2DISP(G2GG(g)); 71 ASMFunction *disp = G2GG(g)->dispatch;
63 ASMFunction f_forl, f_iterl, f_loop; 72 ASMFunction f_forl, f_iterl, f_loop, f_funcf, f_funcv;
64 g->dispatchmode = mode; 73 g->dispatchmode = mode;
65 if ((mode & 5) == 1) { /* Hotcount if JIT is on, but not when recording. */ 74 if ((mode & 5) == 1) { /* Hotcount if JIT is on, but not when recording. */
66 f_forl = makeasmfunc(lj_bc_ofs[BC_FORL]); 75 f_forl = makeasmfunc(lj_bc_ofs[BC_FORL]);
67 f_iterl = makeasmfunc(lj_bc_ofs[BC_ITERL]); 76 f_iterl = makeasmfunc(lj_bc_ofs[BC_ITERL]);
68 f_loop = makeasmfunc(lj_bc_ofs[BC_LOOP]); 77 f_loop = makeasmfunc(lj_bc_ofs[BC_LOOP]);
78 f_funcf = makeasmfunc(lj_bc_ofs[BC_FUNCF]);
79 f_funcv = makeasmfunc(lj_bc_ofs[BC_FUNCV]);
69 } else { /* Otherwise use the non-hotcounting instructions. */ 80 } else { /* Otherwise use the non-hotcounting instructions. */
70 f_forl = disp[GG_DISP_STATIC+BC_IFORL]; 81 f_forl = disp[GG_LEN_DDISP+BC_IFORL];
71 f_iterl = disp[GG_DISP_STATIC+BC_IITERL]; 82 f_iterl = disp[GG_LEN_DDISP+BC_IITERL];
72 f_loop = disp[GG_DISP_STATIC+BC_ILOOP]; 83 f_loop = disp[GG_LEN_DDISP+BC_ILOOP];
84 f_funcf = disp[GG_LEN_DDISP+BC_IFUNCF];
85 f_funcv = disp[GG_LEN_DDISP+BC_IFUNCV];
73 } 86 }
74 /* Set static loop ins first (may be copied below). */ 87 /* Set static counting ins first (may be copied below). */
75 disp[GG_DISP_STATIC+BC_FORL] = f_forl; 88 disp[GG_LEN_DDISP+BC_FORL] = f_forl;
76 disp[GG_DISP_STATIC+BC_ITERL] = f_iterl; 89 disp[GG_LEN_DDISP+BC_ITERL] = f_iterl;
77 disp[GG_DISP_STATIC+BC_LOOP] = f_loop; 90 disp[GG_LEN_DDISP+BC_LOOP] = f_loop;
91 disp[GG_LEN_DDISP+BC_FUNCF] = f_funcf;
92 disp[GG_LEN_DDISP+BC_FUNCV] = f_funcv;
78 if ((oldmode & 6) != (mode & 6)) { /* Need to change whole table? */ 93 if ((oldmode & 6) != (mode & 6)) { /* Need to change whole table? */
79 if ((mode & 6) == 0) { /* No hooks and no recording? */ 94 if ((mode & 6) == 0) { /* No hooks and no recording? */
80 /* Copy static dispatch table to dynamic dispatch table. */ 95 /* Copy static dispatch table to dynamic dispatch table. */
81 memcpy(&disp[0], &disp[GG_DISP_STATIC], sizeof(ASMFunction)*BC__MAX); 96 memcpy(&disp[0], &disp[GG_LEN_DDISP], GG_LEN_SDISP*sizeof(ASMFunction));
82 } else { 97 } else {
83 /* The recording dispatch also checks for hooks. */ 98 /* The recording dispatch also checks for hooks. */
84 ASMFunction f = (mode & 6) == 6 ? lj_vm_record : lj_vm_hook; 99 ASMFunction f = (mode & 6) == 6 ? lj_vm_record : lj_vm_hook;
85 uint32_t i; 100 uint32_t i;
86 for (i = 0; i < BC__MAX; i++) 101 for (i = 0; i < BC_FUNCF; i++)
87 disp[i] = f; 102 disp[i] = f;
103 /* NYI: call hooks for function headers. */
104 memcpy(&disp[BC_FUNCF], &disp[GG_LEN_DDISP+BC_FUNCF],
105 (GG_LEN_SDISP-BC_FUNCF)*sizeof(ASMFunction));
88 } 106 }
89 } else if ((mode & 6) == 0) { /* Fix dynamic loop ins unless overriden. */ 107 } else if ((mode & 6) == 0) { /* Set dynamic counting ins. */
90 disp[BC_FORL] = f_forl; 108 disp[BC_FORL] = f_forl;
91 disp[BC_ITERL] = f_iterl; 109 disp[BC_ITERL] = f_iterl;
92 disp[BC_LOOP] = f_loop; 110 disp[BC_LOOP] = f_loop;
111 disp[BC_FUNCF] = f_funcf;
112 disp[BC_FUNCV] = f_funcv;
93 } 113 }
94#if LJ_HASJIT 114#if LJ_HASJIT
95 if ((mode & 1) && !(oldmode & 1)) /* JIT off to on transition. */ 115 if ((mode & 1) && !(oldmode & 1)) /* JIT off to on transition. */
@@ -186,14 +206,16 @@ int luaJIT_setmode(lua_State *L, int idx, int mode)
186 if ((mode & LUAJIT_MODE_ON)) { 206 if ((mode & LUAJIT_MODE_ON)) {
187 if (idx != 0) { 207 if (idx != 0) {
188 cTValue *tv = idx > 0 ? L->base + (idx-1) : L->top + idx; 208 cTValue *tv = idx > 0 ? L->base + (idx-1) : L->top + idx;
189 if (tvislightud(tv) && lightudV(tv) != NULL) 209 if (tvislightud(tv))
190 g->wrapf = (lua_CFunction)lightudV(tv); 210 g->wrapf = (lua_CFunction)lightudV(tv);
191 else 211 else
192 return 0; /* Failed. */ 212 return 0; /* Failed. */
213 } else {
214 return 0; /* Failed. */
193 } 215 }
194 g->wrapmode = 1; 216 g->bc_cfunc_ext = BCINS_AD(BC_FUNCCW, 0, 0);
195 } else { 217 } else {
196 g->wrapmode = 0; 218 g->bc_cfunc_ext = BCINS_AD(BC_FUNCC, 0, 0);
197 } 219 }
198 break; 220 break;
199 default: 221 default:
diff --git a/src/lj_dispatch.h b/src/lj_dispatch.h
index bbbfa0be..865ee790 100644
--- a/src/lj_dispatch.h
+++ b/src/lj_dispatch.h
@@ -7,6 +7,7 @@
7#define _LJ_DISPATCH_H 7#define _LJ_DISPATCH_H
8 8
9#include "lj_obj.h" 9#include "lj_obj.h"
10#include "lj_bc.h"
10#if LJ_HASJIT 11#if LJ_HASJIT
11#include "lj_jit.h" 12#include "lj_jit.h"
12#endif 13#endif
@@ -21,6 +22,13 @@ typedef uint16_t HotCount;
21#define HOTCOUNT_MIN_PENALTY 103 22#define HOTCOUNT_MIN_PENALTY 103
22#define HOTCOUNT_MAX_PENALTY 60000 23#define HOTCOUNT_MAX_PENALTY 60000
23 24
25/* This solves a circular dependency problem -- bump as needed. Sigh. */
26#define GG_NUM_ASMFF 62
27
28#define GG_LEN_DDISP (BC__MAX + GG_NUM_ASMFF)
29#define GG_LEN_SDISP BC_FUNCC
30#define GG_LEN_DISP (GG_LEN_DDISP + GG_LEN_SDISP)
31
24/* Global state, main thread and extra fields are allocated together. */ 32/* Global state, main thread and extra fields are allocated together. */
25typedef struct GG_State { 33typedef struct GG_State {
26 lua_State L; /* Main thread. */ 34 lua_State L; /* Main thread. */
@@ -29,22 +37,22 @@ typedef struct GG_State {
29 jit_State J; /* JIT state. */ 37 jit_State J; /* JIT state. */
30 HotCount hotcount[HOTCOUNT_SIZE]; /* Hot counters. */ 38 HotCount hotcount[HOTCOUNT_SIZE]; /* Hot counters. */
31#endif 39#endif
32 /* Instruction dispatch tables follow. */ 40 ASMFunction dispatch[GG_LEN_DISP]; /* Instruction dispatch tables. */
41 BCIns bcff[GG_NUM_ASMFF]; /* Bytecode for ASM fast functions. */
33} GG_State; 42} GG_State;
34 43
35#define GG_OFS(field) ((int)offsetof(GG_State, field)) 44#define GG_OFS(field) ((int)offsetof(GG_State, field))
36#define GG_OFS_DISP ((int)sizeof(GG_State))
37#define GG2DISP(gg) ((ASMFunction *)((char *)(gg) + GG_OFS_DISP))
38#define G2GG(gl) ((GG_State *)((char *)(gl) - GG_OFS(g))) 45#define G2GG(gl) ((GG_State *)((char *)(gl) - GG_OFS(g)))
39#define J2GG(j) ((GG_State *)((char *)(j) - GG_OFS(J))) 46#define J2GG(j) ((GG_State *)((char *)(j) - GG_OFS(J)))
40#define L2GG(L) (G2GG(G(L))) 47#define L2GG(L) (G2GG(G(L)))
41#define J2G(J) (&J2GG(J)->g) 48#define J2G(J) (&J2GG(J)->g)
42#define G2J(gl) (&G2GG(gl)->J) 49#define G2J(gl) (&G2GG(gl)->J)
43#define L2J(L) (&L2GG(L)->J) 50#define L2J(L) (&L2GG(L)->J)
44#define GG_G2DISP (GG_OFS_DISP - GG_OFS(g)) 51#define GG_G2DISP (GG_OFS(dispatch) - GG_OFS(g))
45#define GG_DISP2G (GG_OFS(g) - GG_OFS_DISP) 52#define GG_DISP2G (GG_OFS(g) - GG_OFS(dispatch))
46#define GG_DISP2J (GG_OFS(J) - GG_OFS_DISP) 53#define GG_DISP2J (GG_OFS(J) - GG_OFS(dispatch))
47#define GG_DISP2HOT (GG_OFS(hotcount) - GG_OFS_DISP) 54#define GG_DISP2HOT (GG_OFS(hotcount) - GG_OFS(dispatch))
55#define GG_DISP2STATIC (GG_LEN_DDISP*(int)sizeof(ASMFunction))
48 56
49#define hotcount_get(gg, pc) \ 57#define hotcount_get(gg, pc) \
50 (gg)->hotcount[(u32ptr(pc)>>2) & (HOTCOUNT_SIZE-1)] 58 (gg)->hotcount[(u32ptr(pc)>>2) & (HOTCOUNT_SIZE-1)]
diff --git a/src/lj_err.c b/src/lj_err.c
index 2b021d28..fdc06001 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -152,7 +152,7 @@ static const char *getobjname(GCproto *pt, const BCIns *ip, BCReg slot,
152restart: 152restart:
153 lname = getvarname(pt, proto_bcpos(pt, ip), slot); 153 lname = getvarname(pt, proto_bcpos(pt, ip), slot);
154 if (lname != NULL) { *name = lname; return "local"; } 154 if (lname != NULL) { *name = lname; return "local"; }
155 while (--ip >= proto_bc(pt)) { 155 while (--ip > proto_bc(pt)) {
156 BCIns ins = *ip; 156 BCIns ins = *ip;
157 BCOp op = bc_op(ins); 157 BCOp op = bc_op(ins);
158 BCReg ra = bc_a(ins); 158 BCReg ra = bc_a(ins);
@@ -222,11 +222,7 @@ void lj_err_pushloc(lua_State *L, GCproto *pt, BCPos pc)
222 if (name) { 222 if (name) {
223 const char *s = strdata(name); 223 const char *s = strdata(name);
224 MSize i, len = name->len; 224 MSize i, len = name->len;
225 BCLine line; 225 BCLine line = pc < pt->sizebc ? proto_line(pt, pc) : 0;
226 if (pc)
227 line = proto_line(pt, pc-1);
228 else
229 line = pt->linedefined;
230 if (*s == '@') { 226 if (*s == '@') {
231 s++; len--; 227 s++; len--;
232 for (i = len; i > 0; i--) 228 for (i = len; i > 0; i--)
@@ -345,9 +341,10 @@ LUA_API int lua_getinfo(lua_State *L, const char *what, lua_Debug *ar)
345 switch (*what) { 341 switch (*what) {
346 case 'S': 342 case 'S':
347 if (isluafunc(fn)) { 343 if (isluafunc(fn)) {
348 ar->source = strdata(proto_chunkname(funcproto(fn))); 344 GCproto *pt = funcproto(fn);
349 ar->linedefined = cast_int(funcproto(fn)->linedefined); 345 ar->source = strdata(proto_chunkname(pt));
350 ar->lastlinedefined = cast_int(funcproto(fn)->lastlinedefined); 346 ar->linedefined = (int)proto_line(pt, 0);
347 ar->lastlinedefined = (int)pt->lastlinedefined;
351 ar->what = (ar->linedefined == 0) ? "main" : "Lua"; 348 ar->what = (ar->linedefined == 0) ? "main" : "Lua";
352 } else { 349 } else {
353 ar->source = "=[C]"; 350 ar->source = "=[C]";
@@ -380,7 +377,7 @@ LUA_API int lua_getinfo(lua_State *L, const char *what, lua_Debug *ar)
380 GCproto *pt = funcproto(fn); 377 GCproto *pt = funcproto(fn);
381 BCLine *lineinfo = proto_lineinfo(pt); 378 BCLine *lineinfo = proto_lineinfo(pt);
382 MSize i, szl = pt->sizebc; 379 MSize i, szl = pt->sizebc;
383 for (i = 0; i < szl; i++) 380 for (i = 1; i < szl; i++)
384 setboolV(lj_tab_setint(L, t, lineinfo[i]), 1); 381 setboolV(lj_tab_setint(L, t, lineinfo[i]), 1);
385 settabV(L, L->top, t); 382 settabV(L, L->top, t);
386 } else { 383 } else {
diff --git a/src/lj_func.c b/src/lj_func.c
index 7d130176..3766b25e 100644
--- a/src/lj_func.c
+++ b/src/lj_func.c
@@ -101,8 +101,8 @@ GCfunc *lj_func_newC(lua_State *L, MSize nelems, GCtab *env)
101 fn->c.ffid = FF_C; 101 fn->c.ffid = FF_C;
102 fn->c.nupvalues = cast_byte(nelems); 102 fn->c.nupvalues = cast_byte(nelems);
103 /* NOBARRIER: The GCfunc is new (marked white). */ 103 /* NOBARRIER: The GCfunc is new (marked white). */
104 setmref(fn->c.pc, &G(L)->bc_cfunc_ext);
104 setgcref(fn->c.env, obj2gco(env)); 105 setgcref(fn->c.env, obj2gco(env));
105 fn->c.gate = G(L)->wrapmode ? lj_gate_cwrap : lj_gate_c;
106 return fn; 106 return fn;
107} 107}
108 108
@@ -115,7 +115,6 @@ GCfunc *lj_func_newL(lua_State *L, GCproto *pt, GCtab *env)
115 /* NOBARRIER: Really a setgcref. But the GCfunc is new (marked white). */ 115 /* NOBARRIER: Really a setgcref. But the GCfunc is new (marked white). */
116 setmref(fn->l.pc, proto_bc(pt)); 116 setmref(fn->l.pc, proto_bc(pt));
117 setgcref(fn->l.env, obj2gco(env)); 117 setgcref(fn->l.env, obj2gco(env));
118 fn->l.gate = (pt->flags & PROTO_IS_VARARG) ? lj_gate_lv : lj_gate_lf;
119 return fn; 118 return fn;
120} 119}
121 120
diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c
index 3a4d5da1..f71b3081 100644
--- a/src/lj_gdbjit.c
+++ b/src/lj_gdbjit.c
@@ -705,10 +705,7 @@ void lj_gdbjit_addtrace(jit_State *J, Trace *T, TraceNo traceno)
705 ctx.szmcode = T->szmcode; 705 ctx.szmcode = T->szmcode;
706 ctx.spadjp = CFRAME_SIZE + (MSize)(parent ? J->trace[parent]->spadjust : 0); 706 ctx.spadjp = CFRAME_SIZE + (MSize)(parent ? J->trace[parent]->spadjust : 0);
707 ctx.spadj = CFRAME_SIZE + T->spadjust; 707 ctx.spadj = CFRAME_SIZE + T->spadjust;
708 if (startpc >= proto_bc(pt)) 708 ctx.lineno = proto_line(pt, proto_bcpos(pt, startpc));
709 ctx.lineno = proto_line(pt,proto_bcpos(pt,startpc));
710 else
711 ctx.lineno = pt->linedefined;
712 ctx.filename = strdata(proto_chunkname(pt)); 709 ctx.filename = strdata(proto_chunkname(pt));
713 if (*ctx.filename == '@' || *ctx.filename == '=') 710 if (*ctx.filename == '@' || *ctx.filename == '=')
714 ctx.filename++; 711 ctx.filename++;
diff --git a/src/lj_lib.c b/src/lj_lib.c
index de1c8646..0ba0ecb1 100644
--- a/src/lj_lib.c
+++ b/src/lj_lib.c
@@ -14,6 +14,8 @@
14#include "lj_str.h" 14#include "lj_str.h"
15#include "lj_tab.h" 15#include "lj_tab.h"
16#include "lj_func.h" 16#include "lj_func.h"
17#include "lj_bc.h"
18#include "lj_dispatch.h"
17#include "lj_vm.h" 19#include "lj_vm.h"
18#include "lj_lib.h" 20#include "lj_lib.h"
19 21
@@ -46,6 +48,7 @@ void lj_lib_register(lua_State *L, const char *libname,
46 GCtab *env = tabref(L->env); 48 GCtab *env = tabref(L->env);
47 GCfunc *ofn = NULL; 49 GCfunc *ofn = NULL;
48 int ffid = *p++; 50 int ffid = *p++;
51 BCIns *bcff = &L2GG(L)->bcff[*p++];
49 GCtab *tab = lib_create_table(L, libname, *p++); 52 GCtab *tab = lib_create_table(L, libname, *p++);
50 ptrdiff_t tpos = L->top - L->base; 53 ptrdiff_t tpos = L->top - L->base;
51 54
@@ -68,10 +71,10 @@ void lj_lib_register(lua_State *L, const char *libname,
68 fn->c.ffid = (uint8_t)(ffid++); 71 fn->c.ffid = (uint8_t)(ffid++);
69 name = (const char *)p; 72 name = (const char *)p;
70 p += len; 73 p += len;
71 if (tag != LIBINIT_CF) { 74 if (tag == LIBINIT_CF)
72 fn->c.gate = makeasmfunc(p[0] + (p[1] << 8)); 75 setmref(fn->c.pc, &G(L)->bc_cfunc_int);
73 p += 2; 76 else
74 } 77 setmref(fn->c.pc, bcff++);
75 if (tag == LIBINIT_ASM_) 78 if (tag == LIBINIT_ASM_)
76 fn->c.f = ofn->c.f; /* Copy handler from previous function. */ 79 fn->c.f = ofn->c.f; /* Copy handler from previous function. */
77 else 80 else
diff --git a/src/lj_lib.h b/src/lj_lib.h
index 44be96b9..fd2b025c 100644
--- a/src/lj_lib.h
+++ b/src/lj_lib.h
@@ -57,6 +57,19 @@ LJ_FUNC int lj_lib_checkopt(lua_State *L, int narg, int def, const char *lst);
57#define lj_lib_checkfpu(L) UNUSED(L) 57#define lj_lib_checkfpu(L) UNUSED(L)
58#endif 58#endif
59 59
60/* Push internal function on the stack. */
61static LJ_AINLINE void lj_lib_pushcc(lua_State *L, lua_CFunction f,
62 int id, int n)
63{
64 GCfunc *fn;
65 lua_pushcclosure(L, f, n);
66 fn = funcV(L->top-1);
67 fn->c.ffid = (uint8_t)id;
68 setmref(fn->c.pc, &G(L)->bc_cfunc_int);
69}
70
71#define lj_lib_pushcf(L, fn, id) (lj_lib_pushcc(L, (fn), (id), 0))
72
60/* Library function declarations. Scanned by buildvm. */ 73/* Library function declarations. Scanned by buildvm. */
61#define LJLIB_CF(name) static int lj_cf_##name(lua_State *L) 74#define LJLIB_CF(name) static int lj_cf_##name(lua_State *L)
62#define LJLIB_ASM(name) static int lj_ffh_##name(lua_State *L) 75#define LJLIB_ASM(name) static int lj_ffh_##name(lua_State *L)
diff --git a/src/lj_obj.h b/src/lj_obj.h
index a6637954..d463cb2c 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -360,7 +360,6 @@ typedef struct GCproto {
360 uint16_t trace; /* Anchor for chain of root traces. */ 360 uint16_t trace; /* Anchor for chain of root traces. */
361 /* ------ The following fields are for debugging/tracebacks only ------ */ 361 /* ------ The following fields are for debugging/tracebacks only ------ */
362 GCRef chunkname; /* Name of the chunk this function was defined in. */ 362 GCRef chunkname; /* Name of the chunk this function was defined in. */
363 BCLine linedefined; /* First line of the function definition. */
364 BCLine lastlinedefined; /* Last line of the function definition. */ 363 BCLine lastlinedefined; /* Last line of the function definition. */
365 MSize sizevarinfo; /* Size of local var info array. */ 364 MSize sizevarinfo; /* Size of local var info array. */
366 MRef varinfo; /* Names and extents of local variables. */ 365 MRef varinfo; /* Names and extents of local variables. */
@@ -419,7 +418,7 @@ typedef struct GCupval {
419/* Common header for functions. env should be at same offset in GCudata. */ 418/* Common header for functions. env should be at same offset in GCudata. */
420#define GCfuncHeader \ 419#define GCfuncHeader \
421 GCHeader; uint8_t ffid; uint8_t nupvalues; \ 420 GCHeader; uint8_t ffid; uint8_t nupvalues; \
422 GCRef env; GCRef gclist; ASMFunction gate 421 GCRef env; GCRef gclist; MRef pc
423 422
424typedef struct GCfuncC { 423typedef struct GCfuncC {
425 GCfuncHeader; 424 GCfuncHeader;
@@ -429,7 +428,6 @@ typedef struct GCfuncC {
429 428
430typedef struct GCfuncL { 429typedef struct GCfuncL {
431 GCfuncHeader; 430 GCfuncHeader;
432 MRef pc; /* Start PC (and GCproto reference). */
433 GCRef uvptr[1]; /* Array of _pointers_ to upvalue objects (GCupval). */ 431 GCRef uvptr[1]; /* Array of _pointers_ to upvalue objects (GCupval). */
434} GCfuncL; 432} GCfuncL;
435 433
@@ -558,7 +556,7 @@ typedef struct global_State {
558 uint8_t hookmask; /* Hook mask. */ 556 uint8_t hookmask; /* Hook mask. */
559 uint8_t dispatchmode; /* Dispatch mode. */ 557 uint8_t dispatchmode; /* Dispatch mode. */
560 uint8_t vmevmask; /* VM event mask. */ 558 uint8_t vmevmask; /* VM event mask. */
561 uint8_t wrapmode; /* Wrap mode. */ 559 uint8_t unused1;
562 GCRef mainthref; /* Link to main thread. */ 560 GCRef mainthref; /* Link to main thread. */
563 TValue registrytv; /* Anchor for registry. */ 561 TValue registrytv; /* Anchor for registry. */
564 TValue tmptv; /* Temporary TValue. */ 562 TValue tmptv; /* Temporary TValue. */
@@ -569,6 +567,8 @@ typedef struct global_State {
569 lua_CFunction wrapf; /* Wrapper for C function calls. */ 567 lua_CFunction wrapf; /* Wrapper for C function calls. */
570 lua_CFunction panic; /* Called as a last resort for errors. */ 568 lua_CFunction panic; /* Called as a last resort for errors. */
571 volatile int32_t vmstate; /* VM state or current JIT code trace number. */ 569 volatile int32_t vmstate; /* VM state or current JIT code trace number. */
570 BCIns bc_cfunc_int; /* Bytecode for internal C function calls. */
571 BCIns bc_cfunc_ext; /* Bytecode for external C function calls. */
572 GCRef jit_L; /* Current JIT code lua_State or NULL. */ 572 GCRef jit_L; /* Current JIT code lua_State or NULL. */
573 MRef jit_base; /* Current JIT code L->base. */ 573 MRef jit_base; /* Current JIT code L->base. */
574 GCRef gcroot[GCROOT__MAX]; /* GC roots. */ 574 GCRef gcroot[GCROOT__MAX]; /* GC roots. */
@@ -584,6 +584,7 @@ typedef struct global_State {
584/* Hook management. Hook event masks are defined in lua.h. */ 584/* Hook management. Hook event masks are defined in lua.h. */
585#define HOOK_EVENTMASK 0x0f 585#define HOOK_EVENTMASK 0x0f
586#define HOOK_ACTIVE 0x10 586#define HOOK_ACTIVE 0x10
587#define HOOK_ACTIVE_SHIFT 4
587#define HOOK_VMEVENT 0x20 588#define HOOK_VMEVENT 0x20
588#define HOOK_GC 0x40 589#define HOOK_GC 0x40
589#define hook_active(g) ((g)->hookmask & HOOK_ACTIVE) 590#define hook_active(g) ((g)->hookmask & HOOK_ACTIVE)
diff --git a/src/lj_parse.c b/src/lj_parse.c
index acc25519..3bef225a 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -1036,7 +1036,10 @@ static void fs_fixup_bc(FuncState *fs, GCproto *pt, BCIns *bc, BCLine *lineinfo)
1036 setmref(pt->lineinfo, lineinfo); 1036 setmref(pt->lineinfo, lineinfo);
1037 pt->sizebc = n; 1037 pt->sizebc = n;
1038 bc[n] = ~0u; /* Close potentially uninitialized gap between bc and kgc. */ 1038 bc[n] = ~0u; /* Close potentially uninitialized gap between bc and kgc. */
1039 for (i = 0; i < n; i++) { 1039 bc[0] = BCINS_AD((fs->flags & PROTO_IS_VARARG) ? BC_FUNCV : BC_FUNCF,
1040 fs->framesize, 0);
1041 lineinfo[0] = fs->linedefined;
1042 for (i = 1; i < n; i++) {
1040 bc[i] = base[i].ins; 1043 bc[i] = base[i].ins;
1041 lineinfo[i] = base[i].line; 1044 lineinfo[i] = base[i].line;
1042 } 1045 }
@@ -1181,7 +1184,6 @@ static GCproto *fs_finish(LexState *ls, BCLine line)
1181 pt->flags = fs->flags; 1184 pt->flags = fs->flags;
1182 pt->numparams = fs->numparams; 1185 pt->numparams = fs->numparams;
1183 pt->framesize = fs->framesize; 1186 pt->framesize = fs->framesize;
1184 pt->linedefined = fs->linedefined;
1185 pt->lastlinedefined = line; 1187 pt->lastlinedefined = line;
1186 1188
1187 fs_fixup_bc(fs, pt, (BCIns *)((char *)pt + sizeof(GCproto)), 1189 fs_fixup_bc(fs, pt, (BCIns *)((char *)pt + sizeof(GCproto)),
@@ -1416,29 +1418,30 @@ static void parse_chunk(LexState *ls);
1416/* Parse body of a function. */ 1418/* Parse body of a function. */
1417static void parse_body(LexState *ls, ExpDesc *e, int needself, BCLine line) 1419static void parse_body(LexState *ls, ExpDesc *e, int needself, BCLine line)
1418{ 1420{
1419 FuncState cfs, *fs = ls->fs; 1421 FuncState fs, *pfs = ls->fs;
1420 BCReg kidx; 1422 BCReg kidx;
1421 BCLine lastline; 1423 BCLine lastline;
1422 GCproto *pt; 1424 GCproto *pt;
1423 ptrdiff_t oldbase = fs->bcbase - ls->bcstack; 1425 ptrdiff_t oldbase = pfs->bcbase - ls->bcstack;
1424 fs_init(ls, &cfs); 1426 fs_init(ls, &fs);
1425 cfs.linedefined = line; 1427 fs.linedefined = line;
1426 cfs.numparams = (uint8_t)parse_params(ls, needself); 1428 fs.numparams = (uint8_t)parse_params(ls, needself);
1427 cfs.bcbase = fs->bcbase + fs->pc; 1429 fs.bcbase = pfs->bcbase + pfs->pc;
1428 cfs.bclim = fs->bclim - fs->pc; 1430 fs.bclim = pfs->bclim - pfs->pc;
1431 bcemit_AD(&fs, BC_FUNCF, 0, 0); /* Placeholder. */
1429 parse_chunk(ls); 1432 parse_chunk(ls);
1430 lastline = ls->linenumber; 1433 lastline = ls->linenumber;
1431 lex_match(ls, TK_end, TK_function, line); 1434 lex_match(ls, TK_end, TK_function, line);
1432 pt = fs_finish(ls, lastline); 1435 pt = fs_finish(ls, lastline);
1433 fs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */ 1436 pfs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */
1434 fs->bclim = (BCPos)(ls->sizebcstack - oldbase); 1437 pfs->bclim = (BCPos)(ls->sizebcstack - oldbase);
1435 /* Store new prototype in the constant array of the parent. */ 1438 /* Store new prototype in the constant array of the parent. */
1436 kidx = const_gc(fs, obj2gco(pt), LJ_TPROTO); 1439 kidx = const_gc(pfs, obj2gco(pt), LJ_TPROTO);
1437 expr_init(e, VRELOCABLE, bcemit_AD(fs, BC_FNEW, 0, kidx)); 1440 expr_init(e, VRELOCABLE, bcemit_AD(pfs, BC_FNEW, 0, kidx));
1438 if (!(fs->flags & PROTO_HAS_FNEW)) { 1441 if (!(pfs->flags & PROTO_HAS_FNEW)) {
1439 if (fs->flags & PROTO_HAS_RETURN) 1442 if (pfs->flags & PROTO_HAS_RETURN)
1440 fs->flags |= PROTO_FIXUP_RETURN; 1443 pfs->flags |= PROTO_FIXUP_RETURN;
1441 fs->flags |= PROTO_HAS_FNEW; 1444 pfs->flags |= PROTO_HAS_FNEW;
1442 } 1445 }
1443} 1446}
1444 1447
@@ -2227,6 +2230,7 @@ GCproto *lj_parse(LexState *ls)
2227 fs.bcbase = NULL; 2230 fs.bcbase = NULL;
2228 fs.bclim = 0; 2231 fs.bclim = 0;
2229 fs.flags |= PROTO_IS_VARARG; /* Main chunk is always a vararg func. */ 2232 fs.flags |= PROTO_IS_VARARG; /* Main chunk is always a vararg func. */
2233 bcemit_AD(&fs, BC_FUNCV, 0, 0); /* Placeholder. */
2230 lj_lex_next(ls); /* Read-ahead first token. */ 2234 lj_lex_next(ls); /* Read-ahead first token. */
2231 parse_chunk(ls); 2235 parse_chunk(ls);
2232 if (ls->token != TK_eof) 2236 if (ls->token != TK_eof)
diff --git a/src/lj_record.c b/src/lj_record.c
index 49e3d3b5..2709ea01 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -1671,14 +1671,8 @@ static int rec_call(jit_State *J, BCReg func, ptrdiff_t cres, ptrdiff_t nargs)
1671 GCproto *pt = funcproto(rd.fn); 1671 GCproto *pt = funcproto(rd.fn);
1672 if ((pt->flags & PROTO_NO_JIT)) 1672 if ((pt->flags & PROTO_NO_JIT))
1673 lj_trace_err(J, LJ_TRERR_CJITOFF); 1673 lj_trace_err(J, LJ_TRERR_CJITOFF);
1674 if ((pt->flags & PROTO_IS_VARARG)) { 1674 if ((pt->flags & PROTO_IS_VARARG))
1675 if (rd.fn->l.gate != lj_gate_lv)
1676 lj_trace_err(J, LJ_TRERR_NYILNKF);
1677 lj_trace_err(J, LJ_TRERR_NYIVF); 1675 lj_trace_err(J, LJ_TRERR_NYIVF);
1678 } else {
1679 if (rd.fn->l.gate != lj_gate_lf)
1680 lj_trace_err(J, LJ_TRERR_NYILNKF);
1681 }
1682 if (cres == CALLRES_TAILCALL) { 1676 if (cres == CALLRES_TAILCALL) {
1683 ptrdiff_t i; 1677 ptrdiff_t i;
1684 /* Tailcalls can form a loop, so count towards the loop unroll limit. */ 1678 /* Tailcalls can form a loop, so count towards the loop unroll limit. */
diff --git a/src/lj_state.c b/src/lj_state.c
index 69f182ed..8f8be97b 100644
--- a/src/lj_state.c
+++ b/src/lj_state.c
@@ -37,8 +37,8 @@
37** Calls to metamethods store their arguments beyond the current top 37** Calls to metamethods store their arguments beyond the current top
38** without checking for the stack limit. This avoids stack resizes which 38** without checking for the stack limit. This avoids stack resizes which
39** would invalidate passed TValue pointers. The stack check is performed 39** would invalidate passed TValue pointers. The stack check is performed
40** later by the call gate. This can safely resize the stack or raise an 40** later by the function header. This can safely resize the stack or raise
41** error. Thus we need some extra slots beyond the current stack limit. 41** an error. Thus we need some extra slots beyond the current stack limit.
42** 42**
43** Most metamethods need 4 slots above top (cont, mobj, arg1, arg2) plus 43** Most metamethods need 4 slots above top (cont, mobj, arg1, arg2) plus
44** one extra slot if mobj is not a function. Only lj_meta_tset needs 5 44** one extra slot if mobj is not a function. Only lj_meta_tset needs 5
@@ -119,8 +119,6 @@ static void stack_init(lua_State *L1, lua_State *L)
119 119
120/* -- State handling ------------------------------------------------------ */ 120/* -- State handling ------------------------------------------------------ */
121 121
122#define GG_SIZE (sizeof(GG_State)+(BC__MAX*2)*sizeof(ASMFunction))
123
124/* Open parts that may cause memory-allocation errors. */ 122/* Open parts that may cause memory-allocation errors. */
125static TValue *cpluaopen(lua_State *L, lua_CFunction dummy, void *ud) 123static TValue *cpluaopen(lua_State *L, lua_CFunction dummy, void *ud)
126{ 124{
@@ -156,8 +154,8 @@ static void close_state(lua_State *L)
156 lj_mem_freevec(g, g->strhash, g->strmask+1, GCRef); 154 lj_mem_freevec(g, g->strhash, g->strmask+1, GCRef);
157 lj_str_freebuf(g, &g->tmpbuf); 155 lj_str_freebuf(g, &g->tmpbuf);
158 lj_mem_freevec(g, L->stack, L->stacksize, TValue); 156 lj_mem_freevec(g, L->stack, L->stacksize, TValue);
159 lua_assert(g->gc.total == GG_SIZE); 157 lua_assert(g->gc.total == sizeof(GG_State));
160 g->allocf(g->allocd, G2GG(g), GG_SIZE, 0); 158 g->allocf(g->allocd, G2GG(g), sizeof(GG_State), 0);
161 } 159 }
162} 160}
163 161
@@ -167,7 +165,7 @@ lua_State *lj_state_newstate(lua_Alloc f, void *ud)
167LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud) 165LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
168#endif 166#endif
169{ 167{
170 GG_State *GG = cast(GG_State *, f(ud, NULL, 0, GG_SIZE)); 168 GG_State *GG = cast(GG_State *, f(ud, NULL, 0, sizeof(GG_State)));
171 lua_State *L = &GG->L; 169 lua_State *L = &GG->L;
172 global_State *g = &GG->g; 170 global_State *g = &GG->g;
173 if (GG == NULL || !checkptr32(GG)) return NULL; 171 if (GG == NULL || !checkptr32(GG)) return NULL;
@@ -190,7 +188,7 @@ LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
190 g->gc.state = GCSpause; 188 g->gc.state = GCSpause;
191 setgcref(g->gc.root, obj2gco(L)); 189 setgcref(g->gc.root, obj2gco(L));
192 g->gc.sweep = &g->gc.root; 190 g->gc.sweep = &g->gc.root;
193 g->gc.total = GG_SIZE; 191 g->gc.total = sizeof(GG_State);
194 g->gc.pause = LUAI_GCPAUSE; 192 g->gc.pause = LUAI_GCPAUSE;
195 g->gc.stepmul = LUAI_GCMUL; 193 g->gc.stepmul = LUAI_GCMUL;
196 lj_dispatch_init((GG_State *)L); 194 lj_dispatch_init((GG_State *)L);
diff --git a/src/lj_trace.c b/src/lj_trace.c
index 0bd32b1e..0a973d51 100644
--- a/src/lj_trace.c
+++ b/src/lj_trace.c
@@ -361,7 +361,7 @@ static void trace_start(jit_State *J)
361 setstrV(L, L->top++, lj_str_newlit(L, "start")); 361 setstrV(L, L->top++, lj_str_newlit(L, "start"));
362 setintV(L->top++, J->curtrace); 362 setintV(L->top++, J->curtrace);
363 setfuncV(L, L->top++, J->fn); 363 setfuncV(L, L->top++, J->fn);
364 setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1); 364 setintV(L->top++, proto_bcpos(J->pt, J->pc));
365 if (J->parent) { 365 if (J->parent) {
366 setintV(L->top++, J->parent); 366 setintV(L->top++, J->parent);
367 setintV(L->top++, J->exitno); 367 setintV(L->top++, J->exitno);
@@ -444,7 +444,7 @@ static int trace_abort(jit_State *J)
444 setstrV(L, L->top++, lj_str_newlit(L, "abort")); 444 setstrV(L, L->top++, lj_str_newlit(L, "abort"));
445 setintV(L->top++, J->curtrace); 445 setintV(L->top++, J->curtrace);
446 setfuncV(L, L->top++, J->fn); 446 setfuncV(L, L->top++, J->fn);
447 setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1); 447 setintV(L->top++, proto_bcpos(J->pt, J->pc));
448 copyTV(L, L->top++, restorestack(L, errobj)); 448 copyTV(L, L->top++, restorestack(L, errobj));
449 copyTV(L, L->top++, &J->errinfo); 449 copyTV(L, L->top++, &J->errinfo);
450 ); 450 );
@@ -478,7 +478,7 @@ static TValue *trace_state(lua_State *L, lua_CFunction dummy, void *ud)
478 lj_vmevent_send(L, RECORD, 478 lj_vmevent_send(L, RECORD,
479 setintV(L->top++, J->curtrace); 479 setintV(L->top++, J->curtrace);
480 setfuncV(L, L->top++, J->fn); 480 setfuncV(L, L->top++, J->fn);
481 setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1); 481 setintV(L->top++, proto_bcpos(J->pt, J->pc));
482 setintV(L->top++, J->framedepth); 482 setintV(L->top++, J->framedepth);
483 if (bcmode_mm(bc_op(*J->pc)) == MM_call) { 483 if (bcmode_mm(bc_op(*J->pc)) == MM_call) {
484 cTValue *o = &L->base[bc_a(*J->pc)]; 484 cTValue *o = &L->base[bc_a(*J->pc)];
@@ -555,8 +555,6 @@ void LJ_FASTCALL lj_trace_hot(jit_State *J, const BCIns *pc)
555 /* Only start a new trace if not recording or inside __gc call or vmevent. */ 555 /* Only start a new trace if not recording or inside __gc call or vmevent. */
556 if (J->state == LJ_TRACE_IDLE && 556 if (J->state == LJ_TRACE_IDLE &&
557 !(J2G(J)->hookmask & (HOOK_GC|HOOK_VMEVENT))) { 557 !(J2G(J)->hookmask & (HOOK_GC|HOOK_VMEVENT))) {
558 lua_State *L = J->L;
559 L->top = curr_topL(L); /* Only called from Lua and NRESULTS is not used. */
560 J->parent = 0; /* Root trace. */ 558 J->parent = 0; /* Root trace. */
561 J->exitno = 0; 559 J->exitno = 0;
562 J->pc = pc-1; /* The interpreter bytecode PC is offset by 1. */ 560 J->pc = pc-1; /* The interpreter bytecode PC is offset by 1. */
diff --git a/src/lj_vm.h b/src/lj_vm.h
index b25f182a..46312bb8 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -44,12 +44,6 @@ LJ_ASMF void lj_vm_exp2(void);
44LJ_ASMF void lj_vm_pow_sse(void); 44LJ_ASMF void lj_vm_pow_sse(void);
45LJ_ASMF void lj_vm_powi_sse(void); 45LJ_ASMF void lj_vm_powi_sse(void);
46 46
47/* Call gates for functions. */
48LJ_ASMF void lj_gate_lf(void);
49LJ_ASMF void lj_gate_lv(void);
50LJ_ASMF void lj_gate_c(void);
51LJ_ASMF void lj_gate_cwrap(void);
52
53/* Continuations for metamethods. */ 47/* Continuations for metamethods. */
54LJ_ASMF void lj_cont_cat(void); /* Continue with concatenation. */ 48LJ_ASMF void lj_cont_cat(void); /* Continue with concatenation. */
55LJ_ASMF void lj_cont_ra(void); /* Store result in RA from instruction. */ 49LJ_ASMF void lj_cont_ra(void); /* Store result in RA from instruction. */
diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
index 200f4cc9..db323dce 100644
--- a/src/msvcbuild.bat
+++ b/src/msvcbuild.bat
@@ -32,7 +32,7 @@ if exist buildvm.exe.manifest^
32 %LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe 32 %LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe
33 33
34buildvm -m peobj -o lj_vm.obj 34buildvm -m peobj -o lj_vm.obj
35buildvm -m bcdef -o lj_bcdef.h 35buildvm -m bcdef -o lj_bcdef.h %ALL_LIB%
36buildvm -m ffdef -o lj_ffdef.h %ALL_LIB% 36buildvm -m ffdef -o lj_ffdef.h %ALL_LIB%
37buildvm -m libdef -o lj_libdef.h %ALL_LIB% 37buildvm -m libdef -o lj_libdef.h %ALL_LIB%
38buildvm -m recdef -o lj_recdef.h %ALL_LIB% 38buildvm -m recdef -o lj_recdef.h %ALL_LIB%