aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2011-11-14 14:15:57 +0100
committerMike Pall <mike>2011-11-14 14:18:25 +0100
commit71d00a56dbab6c29c0346093dbe530d7b7608be4 (patch)
tree5e28e19b4d2f20168d5ee0e4fe500b1e2b233c1c
parente9eb4fdb4a08baaa2d9190187a6c38d5b3f8b091 (diff)
downloadluajit-71d00a56dbab6c29c0346093dbe530d7b7608be4.tar.gz
luajit-71d00a56dbab6c29c0346093dbe530d7b7608be4.tar.bz2
luajit-71d00a56dbab6c29c0346093dbe530d7b7608be4.zip
FFI: Add callback support (for x86/x64).
-rw-r--r--doc/ext_ffi_api.html28
-rw-r--r--doc/ext_ffi_semantics.html128
-rw-r--r--src/Makefile4
-rw-r--r--src/Makefile.dep43
-rw-r--r--src/buildvm.c1
-rw-r--r--src/buildvm_x64.h2528
-rw-r--r--src/buildvm_x64win.h2949
-rw-r--r--src/buildvm_x86.dasc136
-rw-r--r--src/buildvm_x86.h3205
-rw-r--r--src/lib_ffi.c59
-rw-r--r--src/lj_ccall.c9
-rw-r--r--src/lj_ccall.h6
-rw-r--r--src/lj_ccallback.c461
-rw-r--r--src/lj_ccallback.h25
-rw-r--r--src/lj_cconv.c8
-rw-r--r--src/lj_crecord.c9
-rw-r--r--src/lj_ctype.c9
-rw-r--r--src/lj_ctype.h22
-rw-r--r--src/lj_debug.c3
-rw-r--r--src/lj_def.h2
-rw-r--r--src/lj_err.c33
-rw-r--r--src/lj_errmsg.h6
-rw-r--r--src/lj_frame.h2
-rw-r--r--src/lj_meta.c2
-rw-r--r--src/lj_target_x86.h2
-rw-r--r--src/lj_vm.h2
-rw-r--r--src/ljamalg.c1
27 files changed, 5340 insertions, 4343 deletions
diff --git a/doc/ext_ffi_api.html b/doc/ext_ffi_api.html
index e865a5f7..222c580e 100644
--- a/doc/ext_ffi_api.html
+++ b/doc/ext_ffi_api.html
@@ -78,6 +78,9 @@ corresponding <b>ctype</b>.</li>
78<li><b>ct</b> &mdash; A C&nbsp;type specification which can be used for 78<li><b>ct</b> &mdash; A C&nbsp;type specification which can be used for
79most of the API functions. Either a <b>cdecl</b>, a <b>ctype</b> or a 79most of the API functions. Either a <b>cdecl</b>, a <b>ctype</b> or a
80<b>cdata</b> serving as a template type.</li> 80<b>cdata</b> serving as a template type.</li>
81<li><b>cb</b> &mdash; A callback object. This is a C&nbsp;data object
82holding a special function pointer. Calling this function from
83C&nbsp;code runs an associated Lua function.</li>
81<li><b>VLA</b> &mdash; A variable-length array is declared with a 84<li><b>VLA</b> &mdash; A variable-length array is declared with a
82<tt>?</tt> instead of the number of elements, e.g. <tt>"int[?]"</tt>. 85<tt>?</tt> instead of the number of elements, e.g. <tt>"int[?]"</tt>.
83The number of elements (<tt>nelem</tt>) must be given when it's 86The number of elements (<tt>nelem</tt>) must be given when it's
@@ -473,6 +476,31 @@ Contains the target architecture name. Same contents as
473<a href="ext_jit.html#jit_arch"><tt>jit.arch</tt></a>. 476<a href="ext_jit.html#jit_arch"><tt>jit.arch</tt></a>.
474</p> 477</p>
475 478
479<h2 id="callback">Methods for Callbacks</h2>
480<p>
481The C&nbsp;types for <a href="ext_ffi_semantics.html#callback">callbacks</a>
482have some extra methods:
483</p>
484
485<h3 id="callback_free"><tt>cb:free()</tt></h3>
486<p>
487Free the resources associated with a callback. The associated Lua
488function is unanchored and may be garbage collected. The callback
489function pointer is no longer valid and must not be called anymore
490(it may be reused by a subsequently created callback).
491</p>
492
493<h3 id="callback_set"><tt>cb:set(func)</tt></h3>
494<p>
495Associate a new Lua function with a callback. The C&nbsp;type of the
496callback and the callback function pointer are unchanged.
497</p>
498<p>
499This method is useful to dynamically switch the receiver of callbacks
500without creating a new callback each time and registering it again (e.g.
501with a GUI library).
502</p>
503
476<h2 id="extended">Extended Standard Library Functions</h2> 504<h2 id="extended">Extended Standard Library Functions</h2>
477<p> 505<p>
478The following standard library functions have been extended to work 506The following standard library functions have been extended to work
diff --git a/doc/ext_ffi_semantics.html b/doc/ext_ffi_semantics.html
index 79f25510..7e140e27 100644
--- a/doc/ext_ffi_semantics.html
+++ b/doc/ext_ffi_semantics.html
@@ -297,10 +297,12 @@ arguments to C&nbsp;calls:
297<tr class="even"> 297<tr class="even">
298<td class="convin">string</td><td class="convop">string data &rarr;</td><td class="convout"><tt>const char[]</tt></td></tr> 298<td class="convin">string</td><td class="convop">string data &rarr;</td><td class="convout"><tt>const char[]</tt></td></tr>
299<tr class="odd separate"> 299<tr class="odd separate">
300<td class="convin">function</td><td class="convop"><a href="#callback">create callback</a> &rarr;</td><td class="convout">C function type</td></tr>
301<tr class="even separate">
300<td class="convin">table</td><td class="convop"><a href="#init_table">table initializer</a></td><td class="convout">Array</td></tr> 302<td class="convin">table</td><td class="convop"><a href="#init_table">table initializer</a></td><td class="convout">Array</td></tr>
301<tr class="even"> 303<tr class="odd">
302<td class="convin">table</td><td class="convop"><a href="#init_table">table initializer</a></td><td class="convout"><tt>struct</tt>/<tt>union</tt></td></tr> 304<td class="convin">table</td><td class="convop"><a href="#init_table">table initializer</a></td><td class="convout"><tt>struct</tt>/<tt>union</tt></td></tr>
303<tr class="odd separate"> 305<tr class="even separate">
304<td class="convin">cdata</td><td class="convop">cdata payload &rarr;</td><td class="convout">C type</td></tr> 306<td class="convin">cdata</td><td class="convop">cdata payload &rarr;</td><td class="convout">C type</td></tr>
305</table> 307</table>
306<p> 308<p>
@@ -821,6 +823,127 @@ cdata objects are indistinguishable from pointers returned by C
821functions (which is one of the reasons why the GC cannot follow them). 823functions (which is one of the reasons why the GC cannot follow them).
822</p> 824</p>
823 825
826<h2 id="callback">Callbacks</h2>
827<p>
828The LuaJIT FFI automatically generates special callback functions
829whenever a Lua function is converted to a C&nbsp;function pointer. This
830associates the generated callback function pointer with the C&nbsp;type
831of the function pointer and the Lua function object (closure).
832</p>
833<p>
834This can happen implicitly due to the usual conversions, e.g. when
835passing a Lua function to a function pointer argument. Or you can use
836<tt>ffi.cast()</tt> to explicitly cast a Lua function to a
837C&nbsp;function pointer.
838</p>
839<p>
840Currently only certain C&nbsp;function types can be used as callback
841functions. Neither C&nbsp;vararg functions nor functions with
842pass-by-value aggregate argument or result types are supported. There
843are no restrictions for the kind of Lua functions that can be called
844from the callback &mdash; no checks for the proper number of arguments
845are made. The return value of the Lua function will be converted to the
846result type and an error will be thrown for invalid conversions.
847</p>
848<p>
849It's allowed to throw errors across a callback invocation, but it's not
850advisable in general. Do this only if you know the C&nbsp;function, that
851called the callback, copes with the forced stack unwinding and doesn't
852leak resources.
853</p>
854
855<h3 id="callback_resources">Callback resource handling</h3>
856<p>
857Callbacks take up resources &mdash; you can only have a limited number
858of them at the same time (500&nbsp;-&nbsp;1000, depending on the
859architecture). The associated Lua functions are anchored to prevent
860garbage collection, too.
861</p>
862<p>
863<b>Callbacks due to implicit conversions are permanent!</b> There is no
864way to guess their lifetime, since the C&nbsp;side might store the
865function pointer for later use (typical for GUI toolkits). The associated
866resources cannot be reclaimed until termination:
867</p>
868<pre class="code">
869ffi.cdef[[
870typedef int (__stdcall *WNDENUMPROC)(void *hwnd, intptr_t l);
871int EnumWindows(WNDENUMPROC func, intptr_t l);
872]]
873
874-- Implicit conversion to a callback via function pointer argument.
875local count = 0
876ffi.C.EnumWindows(function(hwnd, l)
877 count = count + 1
878end, 0)
879-- The callback is permanent and its resources cannot be reclaimed!
880-- Ok, so this may not be a problem, if you do this only once.
881</pre>
882<p>
883Note: this example shows that you <em>must</em> properly declare
884<tt>__stdcall</tt> callbacks on Windows/x86 systems. The calling
885convention cannot be automatically detected, unlike for
886<tt>__stdcall</tt> calls <em>to</em> Windows functions.
887</p>
888<p>
889For some use cases it's necessary to free up the resources or to
890dynamically redirect callbacks. Use an explicit cast to a
891C&nbsp;function pointer and keep the resulting cdata object. Then use
892the <a href="ext_ffi_api.html#callback_free"><tt>cb:free()</tt></a>
893or <a href="ext_ffi_api.html#callback_set"><tt>cb:set()</tt></a> methods
894on the cdata object:
895</p>
896<pre class="code">
897-- Explicitly convert to a callback via cast.
898local count = 0
899local cb = ffi.cast("WNDENUMPROC", function(hwnd, l)
900 count = count + 1
901end)
902
903-- Pass it to a C function.
904ffi.C.EnumWindows(cb, 0)
905-- EnumWindows doesn't need the callback after it returns, so free it.
906
907cb:free()
908-- The callback function pointer is no longer valid and its resources
909-- will be reclaimed. The created Lua closure will be garbage collected.
910</pre>
911
912<h3 id="callback_performance">Callback performance</h3>
913<p>
914<b>Callbacks are slow!</b> First, the C&nbsp;to Lua transition itself
915has an unavoidable cost, similar to a <tt>lua_call()</tt> or
916<tt>lua_pcall()</tt>. Argument and result marshalling add to that cost.
917And finally, neither the C&nbsp;compiler nor LuaJIT can inline or
918optimize across the language barrier and hoist repeated computations out
919of a callback function.
920</p>
921<p>
922Do not use callbacks for performance-sensitive work: e.g. consider a
923numerical integration routine which takes a user-defined function to
924integrate over. It's a bad idea to call a user-defined Lua function from
925C&nbsp;code millions of times. The callback overhead will be absolutely
926detrimental for performance.
927</p>
928<p>
929It's considerably faster to write the numerical integration routine
930itself in Lua &mdash; the JIT compiler will be able to inline the
931user-defined function and optimize it together with its calling context,
932with very competitive performance.
933</p>
934<p>
935As a general guideline: <b>use callbacks only when you must</b>, because
936of existing C&nbsp;APIs. E.g. callback performance is irrelevant for a
937GUI application, which waits for user input most of the time, anyway.
938</p>
939<p>
940For new designs <b>avoid push-style APIs</b> (C&nbsp;function repeatedly
941calling a callback for each result). Instead <b>use pull-style APIs</b>
942(call a C&nbsp;function repeatedly to get a new result). Calls from Lua
943to C via the FFI are much faster than the other way round. Most well
944designed libraries already use pull-style APIs (read/write, get/put).
945</p>
946
824<h2 id="clib">C Library Namespaces</h2> 947<h2 id="clib">C Library Namespaces</h2>
825<p> 948<p>
826A C&nbsp;library namespace is a special kind of object which allows 949A C&nbsp;library namespace is a special kind of object which allows
@@ -1002,7 +1125,6 @@ Other missing features:
1002<ul> 1125<ul>
1003<li>Bit operations for 64&nbsp;bit types.</li> 1126<li>Bit operations for 64&nbsp;bit types.</li>
1004<li>Arithmetic for <tt>complex</tt> numbers.</li> 1127<li>Arithmetic for <tt>complex</tt> numbers.</li>
1005<li>Callbacks from C&nbsp;code to Lua functions.</li>
1006<li>Passing structs by value to vararg C&nbsp;functions.</li> 1128<li>Passing structs by value to vararg C&nbsp;functions.</li>
1007<li><a href="extensions.html#exceptions">C++ exception interoperability</a> 1129<li><a href="extensions.html#exceptions">C++ exception interoperability</a>
1008does not extend to C&nbsp;functions called via the FFI, if the call is 1130does not extend to C&nbsp;functions called via the FFI, if the call is
diff --git a/src/Makefile b/src/Makefile
index 30985003..d4f80332 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -377,8 +377,8 @@ LJCORE_O= lj_gc.o lj_err.o lj_char.o lj_bc.o lj_obj.o \
377 lj_opt_dce.o lj_opt_loop.o lj_opt_split.o \ 377 lj_opt_dce.o lj_opt_loop.o lj_opt_split.o \
378 lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \ 378 lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \
379 lj_asm.o lj_trace.o lj_gdbjit.o \ 379 lj_asm.o lj_trace.o lj_gdbjit.o \
380 lj_ctype.o lj_cdata.o lj_cconv.o lj_ccall.o lj_carith.o lj_clib.o \ 380 lj_ctype.o lj_cdata.o lj_cconv.o lj_ccall.o lj_ccallback.o \
381 lj_cparse.o \ 381 lj_carith.o lj_clib.o lj_cparse.o \
382 lj_lib.o lj_alloc.o lib_aux.o \ 382 lj_lib.o lj_alloc.o lib_aux.o \
383 $(LJLIB_O) lib_init.o 383 $(LJLIB_O) lib_init.o
384 384
diff --git a/src/Makefile.dep b/src/Makefile.dep
index 81bbed29..b9d0df47 100644
--- a/src/Makefile.dep
+++ b/src/Makefile.dep
@@ -1,6 +1,6 @@
1buildvm.o: buildvm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \ 1buildvm.o: buildvm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \
2 lj_obj.h lj_gc.h lj_bc.h lj_ir.h lj_ircall.h lj_jit.h lj_frame.h \ 2 lj_obj.h lj_gc.h lj_bc.h lj_ir.h lj_ircall.h lj_jit.h lj_frame.h \
3 lj_dispatch.h lj_ccall.h lj_ctype.h luajit.h \ 3 lj_dispatch.h lj_ctype.h lj_ccall.h luajit.h \
4 lj_traceerr.h 4 lj_traceerr.h
5buildvm_asm.o: buildvm_asm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \ 5buildvm_asm.o: buildvm_asm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \
6 lj_bc.h 6 lj_bc.h
@@ -23,7 +23,7 @@ lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
23lib_ffi.o: lib_ffi.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 23lib_ffi.o: lib_ffi.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
24 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h \ 24 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h \
25 lj_ctype.h lj_cparse.h lj_cdata.h lj_cconv.h lj_carith.h lj_ccall.h \ 25 lj_ctype.h lj_cparse.h lj_cdata.h lj_cconv.h lj_carith.h lj_ccall.h \
26 lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h 26 lj_ccallback.h lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h
27lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h 27lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h
28lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 28lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
29 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \ 29 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \
@@ -69,11 +69,16 @@ lj_carith.o: lj_carith.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
69 lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_meta.h lj_ctype.h lj_cconv.h \ 69 lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_meta.h lj_ctype.h lj_cconv.h \
70 lj_cdata.h lj_carith.h 70 lj_cdata.h lj_carith.h
71lj_ccall.o: lj_ccall.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 71lj_ccall.o: lj_ccall.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
72 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ctype.h lj_cconv.h lj_cdata.h \ 72 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \
73 lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \ 73 lj_cdata.h lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
74 lj_traceerr.h 74 lj_traceerr.h
75lj_ccallback.o: lj_ccallback.c lj_obj.h lua.h luaconf.h lj_def.h \
76 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_state.h lj_frame.h \
77 lj_bc.h lj_ctype.h lj_cconv.h lj_ccall.h lj_ccallback.h lj_target.h \
78 lj_target_*.h lj_vm.h
75lj_cconv.o: lj_cconv.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 79lj_cconv.o: lj_cconv.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
76 lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h 80 lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h \
81 lj_ccallback.h
77lj_cdata.o: lj_cdata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 82lj_cdata.o: lj_cdata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
78 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \ 83 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \
79 lj_cdata.h 84 lj_cdata.h
@@ -86,11 +91,11 @@ lj_cparse.o: lj_cparse.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
86 lj_bc.h lj_vm.h lj_char.h 91 lj_bc.h lj_vm.h lj_char.h
87lj_crecord.o: lj_crecord.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 92lj_crecord.o: lj_crecord.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
88 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ctype.h \ 93 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ctype.h \
89 lj_gc.h lj_cparse.h lj_cconv.h lj_clib.h lj_ccall.h lj_ir.h lj_jit.h \ 94 lj_gc.h lj_cdata.h lj_cparse.h lj_cconv.h lj_clib.h lj_ccall.h lj_ir.h \
90 lj_ircall.h lj_iropt.h lj_trace.h lj_dispatch.h lj_traceerr.h \ 95 lj_jit.h lj_ircall.h lj_iropt.h lj_trace.h lj_dispatch.h lj_traceerr.h \
91 lj_record.h lj_ffrecord.h lj_crecord.h 96 lj_record.h lj_ffrecord.h lj_crecord.h
92lj_ctype.o: lj_ctype.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 97lj_ctype.o: lj_ctype.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
93 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h 98 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_ccallback.h
94lj_debug.o: lj_debug.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 99lj_debug.o: lj_debug.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
95 lj_err.h lj_errmsg.h lj_debug.h lj_str.h lj_tab.h lj_state.h lj_frame.h \ 100 lj_err.h lj_errmsg.h lj_debug.h lj_str.h lj_tab.h lj_state.h lj_frame.h \
96 lj_bc.h lj_jit.h lj_ir.h 101 lj_bc.h lj_jit.h lj_ir.h
@@ -188,15 +193,15 @@ ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \
188 lj_obj.c lj_str.c lj_tab.c lj_func.c lj_udata.c lj_meta.c lj_debug.c \ 193 lj_obj.c lj_str.c lj_tab.c lj_func.c lj_udata.c lj_meta.c lj_debug.c \
189 lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c luajit.h lj_vmevent.c \ 194 lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c luajit.h lj_vmevent.c \
190 lj_vmevent.h lj_vmmath.c lj_api.c lj_bcdump.h lj_parse.h lj_lex.c \ 195 lj_vmevent.h lj_vmmath.c lj_api.c lj_bcdump.h lj_parse.h lj_lex.c \
191 lualib.h lj_parse.c lj_bcread.c lj_bcwrite.c lj_ctype.c lj_cdata.c \ 196 lualib.h lj_parse.c lj_bcread.c lj_bcwrite.c lj_ctype.c lj_ccallback.h \
192 lj_cconv.h lj_cconv.c lj_ccall.c lj_ccall.h lj_carith.c lj_carith.h \ 197 lj_cdata.c lj_cconv.h lj_cconv.c lj_ccall.c lj_ccall.h lj_ccallback.c \
193 lj_clib.c lj_clib.h lj_cparse.c lj_cparse.h lj_lib.c lj_lib.h lj_ir.c \ 198 lj_target.h lj_target_*.h lj_carith.c lj_carith.h lj_clib.c lj_clib.h \
194 lj_ircall.h lj_iropt.h lj_opt_mem.c lj_opt_fold.c lj_folddef.h \ 199 lj_cparse.c lj_cparse.h lj_lib.c lj_lib.h lj_ir.c lj_ircall.h lj_iropt.h \
195 lj_opt_narrow.c lj_opt_dce.c lj_opt_loop.c lj_snap.h lj_opt_split.c \ 200 lj_opt_mem.c lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c \
196 lj_mcode.c lj_mcode.h lj_snap.c lj_target.h lj_target_*.h lj_record.c \ 201 lj_opt_loop.c lj_snap.h lj_opt_split.c lj_mcode.c lj_mcode.h lj_snap.c \
197 lj_record.h lj_ffrecord.h lj_crecord.c lj_crecord.h lj_ffrecord.c \ 202 lj_record.c lj_record.h lj_ffrecord.h lj_crecord.c lj_crecord.h \
198 lj_recdef.h lj_asm.c lj_asm.h lj_emit_*.h lj_asm_*.h lj_trace.c \ 203 lj_ffrecord.c lj_recdef.h lj_asm.c lj_asm.h lj_emit_*.h lj_asm_*.h \
199 lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c lj_libdef.h \ 204 lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c \
200 lib_math.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c \ 205 lj_libdef.h lib_math.c lib_string.c lib_table.c lib_io.c lib_os.c \
201 lib_debug.c lib_bit.c lib_jit.c lib_ffi.c lib_init.c 206 lib_package.c lib_debug.c lib_bit.c lib_jit.c lib_ffi.c lib_init.c
202luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h lj_arch.h 207luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h lj_arch.h
diff --git a/src/buildvm.c b/src/buildvm.c
index 72c2dd83..3e5d7b1c 100644
--- a/src/buildvm.c
+++ b/src/buildvm.c
@@ -23,6 +23,7 @@
23#include "lj_frame.h" 23#include "lj_frame.h"
24#include "lj_dispatch.h" 24#include "lj_dispatch.h"
25#if LJ_HASFFI 25#if LJ_HASFFI
26#include "lj_ctype.h"
26#include "lj_ccall.h" 27#include "lj_ccall.h"
27#endif 28#endif
28#include "luajit.h" 29#include "luajit.h"
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 06d6b038..55b22b2e 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[16165] = { 15static const unsigned char build_actionlist[16378] = {
16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141, 16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4, 17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133, 18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133,
@@ -52,426 +52,427 @@ static const unsigned char build_actionlist[16165] = {
52 68,137,124,36,16,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,209, 52 68,137,124,36,16,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,209,
53 133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,227, 53 133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,227,
54 252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,72,99, 54 252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,72,99,
55 77,252,240,133,201,15,132,244,247,255,76,141,61,245,76,1,252,249,68,139,122, 55 77,252,240,255,131,252,249,1,15,134,244,247,255,76,141,61,245,76,1,252,249,
56 252,248,69,139,191,233,69,139,191,233,252,255,225,248,1,41,213,193,252,237, 56 255,68,139,122,252,248,69,139,191,233,69,139,191,233,252,255,225,255,248,
57 3,141,69,252,255,252,233,244,32,248,33,15,182,75,252,255,131,252,237,16,141, 57 1,15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248,
58 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,139,124,36,24,137, 58 34,15,182,75,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,
59 151,233,137,202,72,139,8,72,137,77,0,137,252,238,252,233,244,35,248,36,137, 59 247,217,193,252,233,3,139,124,36,24,137,151,233,137,202,72,139,8,72,137,77,
60 4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244,247,65,141, 60 0,137,252,238,252,233,244,36,248,37,137,4,36,199,68,36,4,237,72,141,4,36,
61 142,233,137,41,199,65,4,237,255,137,205,252,233,244,248,248,37,15,182,67, 61 128,123,252,252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137,
62 252,254,255,199,68,36,4,237,137,4,36,255,252,242,15,42,192,252,242,15,17, 62 205,252,233,244,248,248,38,15,182,67,252,254,255,199,68,36,4,237,137,4,36,
63 4,36,255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141,4,194,248, 63 255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,4,36,252,233,244,247,
64 1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252, 64 248,39,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,
65 238,72,137,194,137,252,253,137,92,36,28,232,251,1,2,139,149,233,133,192,15, 65 248,2,139,124,36,24,137,151,233,137,252,238,72,137,194,137,252,253,137,92,
66 132,244,249,248,34,15,182,75,252,253,72,139,40,72,137,44,202,139,3,15,182, 66 36,28,232,251,1,2,139,149,233,133,192,15,132,244,249,248,35,15,182,75,252,
67 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233, 67 253,72,139,40,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
68 137,89,252,244,141,153,233,41,211,139,105,252,248,184,237,252,233,244,30, 68 16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,141,153,233,41,
69 248,39,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244, 69 211,139,105,252,248,184,237,252,233,244,30,248,40,137,4,36,199,68,36,4,237,
70 247,255,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,40, 70 72,141,4,36,128,123,252,252,235,15,133,244,247,255,65,141,142,233,137,41,
71 15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,41,15,182,67,252,254, 71 199,65,4,237,137,205,252,233,244,248,248,41,15,182,67,252,254,255,72,141,
72 141,4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,137, 72 4,36,252,233,244,247,248,42,15,182,67,252,254,141,4,194,248,1,15,182,107,
73 151,233,137,252,238,72,137,194,137,252,253,137,92,36,28,232,251,1,3,139,149, 73 252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252,238,72,137,
74 233,133,192,15,132,244,249,15,182,75,252,253,72,139,44,202,72,137,40,248, 74 194,137,252,253,137,92,36,28,232,251,1,3,139,149,233,133,192,15,132,244,249,
75 42,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 75 15,182,75,252,253,72,139,44,202,72,137,40,248,43,139,3,15,182,204,15,182,
76 248,3,139,141,233,137,89,252,244,15,182,67,252,253,72,139,44,194,72,137,105, 76 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,
77 16,141,153,233,41,211,139,105,252,248,184,237,252,233,244,30,248,43,139,108, 77 244,15,182,67,252,253,72,139,44,194,72,137,105,16,141,153,233,41,211,139,
78 36,24,137,149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,137, 78 105,252,248,184,237,252,233,244,30,248,44,139,108,36,24,137,149,233,141,52,
79 92,36,28,232,251,1,4,248,3,139,149,233,255,131,252,248,1,15,135,244,44,248, 79 202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,28,232,251,1,4,248,
80 4,141,91,4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,248, 80 3,139,149,233,255,131,252,248,1,15,135,244,45,248,4,141,91,4,15,130,244,252,
81 6,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 81 248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15,182,
82 248,45,131,195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129, 82 232,131,195,4,193,232,16,65,252,255,36,252,238,248,46,131,195,4,129,120,253,
83 120,253,4,239,252,233,244,4,248,47,131,252,235,4,137,206,137,252,233,139, 83 4,239,15,130,244,5,252,233,244,6,248,47,129,120,253,4,239,252,233,244,4,248,
84 108,36,24,137,149,233,255,137,194,137,252,239,137,92,36,28,232,251,1,5,252, 84 48,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255,137,194,
85 233,244,3,248,48,255,131,252,235,4,139,108,36,24,137,149,233,137,252,239, 85 137,252,239,137,92,36,28,232,251,1,5,252,233,244,3,248,49,255,131,252,235,
86 139,115,252,252,137,92,36,28,232,251,1,6,252,233,244,3,255,248,49,255,15, 86 4,139,108,36,24,137,149,233,137,252,239,139,115,252,252,137,92,36,28,232,
87 182,107,252,255,255,248,50,65,141,4,199,252,233,244,247,248,51,255,248,52, 87 251,1,6,252,233,244,3,255,248,50,255,15,182,107,252,255,255,248,51,65,141,
88 65,141,4,199,141,44,252,234,149,252,233,244,248,248,53,141,4,194,137,197, 88 4,199,252,233,244,247,248,52,255,248,53,65,141,4,199,141,44,252,234,149,252,
89 252,233,244,248,248,54,255,248,55,141,4,194,248,1,141,44,252,234,248,2,141, 89 233,244,248,248,54,141,4,194,137,197,252,233,244,248,248,55,255,248,56,141,
90 12,202,68,15,182,67,252,252,137,206,137,193,139,124,36,24,137,151,233,137, 90 4,194,248,1,141,44,252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,
91 252,234,137,252,253,137,92,36,28,232,251,1,7,139,149,233,133,192,15,132,244, 91 137,193,139,124,36,24,137,151,233,137,252,234,137,252,253,137,92,36,28,232,
92 42,248,44,137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,28, 92 251,1,7,139,149,233,133,192,15,132,244,43,248,45,137,193,41,208,137,89,252,
93 248,56,139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232, 93 244,141,152,233,184,237,252,233,244,28,248,57,139,108,36,24,137,149,233,141,
94 251,1,8,139,149,233,255,133,192,15,133,244,44,15,183,67,252,254,139,60,194, 94 52,194,137,252,239,137,92,36,28,232,251,1,8,139,149,233,255,133,192,15,133,
95 252,233,244,57,255,252,233,244,44,255,248,58,141,76,202,8,248,29,137,76,36, 95 244,45,15,183,67,252,254,139,60,194,252,233,244,58,255,252,233,244,45,255,
96 4,137,4,36,131,252,233,8,139,108,36,24,137,149,233,137,206,141,20,193,137, 96 248,59,141,76,202,8,248,29,137,76,36,4,137,4,36,131,252,233,8,139,108,36,
97 252,239,137,92,36,28,232,251,1,9,139,149,233,139,76,36,4,139,4,36,139,105, 97 24,137,149,233,137,206,141,20,193,137,252,239,137,92,36,28,232,251,1,9,139,
98 252,248,131,192,1,65,57,215,15,132,244,59,137,202,137,90,252,252,139,157, 98 149,233,139,76,36,4,139,4,36,139,105,252,248,131,192,1,65,57,215,15,132,244,
99 233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248, 99 60,137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,
100 60,139,108,36,24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,10, 100 195,4,65,252,255,36,252,238,248,61,139,108,36,24,137,149,233,137,206,137,
101 139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,164, 101 252,239,137,92,36,28,232,251,1,10,139,149,233,139,67,252,252,15,182,204,15,
102 253,252,238,233,248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253, 102 182,232,193,232,16,65,252,255,164,253,252,238,233,248,62,129,252,248,239,
103 239,15,131,244,62,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106, 103 15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,137,
104 252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,193,8,72,139,41,72, 104 68,36,4,137,106,252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,
105 137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,4,252,233,244,63,248, 105 137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,
106 64,129,252,248,239,15,130,244,62,139,106,4,137,252,233,193,252,249,15,131, 106 1,248,2,139,68,36,4,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139,
107 252,249,252,254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255, 107 106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237,
108 15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233, 108 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,
109 139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,184, 109 2,139,106,252,248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,
110 237,252,233,244,2,248,66,129,252,248,239,15,130,244,62,139,106,4,139,90,252, 110 66,252,248,252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248,
111 252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252, 111 239,15,130,244,63,139,106,4,139,90,252,252,129,252,253,239,15,133,244,252,
112 237,199,66,252,252,237,255,15,132,244,65,65,139,134,233,199,66,252,252,237, 112 248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,
113 137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185, 113 244,66,65,139,134,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,
114 233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201, 114 233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,
115 15,133,244,3,255,252,233,244,65,248,5,139,105,4,129,252,253,239,15,132,244, 115 15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66,
116 65,139,1,137,106,252,252,137,66,252,248,252,233,244,65,248,6,129,252,253, 116 248,5,139,105,4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66,
117 239,15,132,244,1,129,252,253,239,15,135,244,254,129,252,253,239,15,134,244, 117 252,248,252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,
118 253,189,237,252,233,244,254,248,7,255,189,237,248,8,252,247,213,65,139,172, 118 15,135,244,254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248,
119 253,174,233,252,233,244,2,248,67,129,252,248,239,15,130,244,62,129,122,253, 119 7,255,189,237,248,8,252,247,213,65,139,172,253,174,233,252,233,244,2,248,
120 4,239,15,133,244,62,139,42,131,189,233,0,15,133,244,62,129,122,253,12,239, 120 68,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131,
121 15,133,244,62,139,66,8,137,133,233,139,90,252,252,199,66,252,252,237,255, 121 189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133,
122 137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,65,139, 122 233,139,90,252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233,
123 134,233,65,137,174,233,137,133,233,248,1,252,233,244,65,248,68,129,252,248, 123 235,15,132,244,247,128,165,233,235,65,139,134,233,65,137,174,233,137,133,
124 239,15,130,244,62,129,122,253,4,239,15,133,244,62,137,213,139,50,141,82,8, 124 233,248,1,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,
125 139,124,36,24,232,251,1,11,137,252,234,72,139,40,139,90,252,252,72,137,106, 125 4,239,15,133,244,63,137,213,139,50,141,82,8,139,124,36,24,232,251,1,11,137,
126 252,248,252,233,244,65,248,69,255,129,252,248,239,15,133,244,62,129,122,253, 126 252,234,72,139,40,139,90,252,252,72,137,106,252,248,252,233,244,66,248,70,
127 4,239,255,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255,15, 127 255,129,252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139,
128 131,244,62,255,252,242,15,16,2,252,233,244,71,255,221,2,252,233,244,72,255, 128 42,252,233,244,71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16,
129 248,73,129,252,248,239,15,130,244,62,139,90,252,252,129,122,253,4,239,15, 129 2,252,233,244,72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130,
130 133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,65, 130 244,63,139,90,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,
131 248,3,129,122,253,4,239,15,135,244,62,65,131,190,233,0,15,133,244,62,65,139, 131 252,252,237,137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135,
132 174,233,65,59,174,233,255,15,130,244,247,232,244,74,248,1,139,108,36,24,137, 132 244,63,65,131,190,233,0,15,133,244,63,65,139,174,233,65,59,174,233,255,15,
133 149,233,137,92,36,28,137,214,137,252,239,255,232,251,1,12,255,232,251,1,13, 133 130,244,247,232,244,75,248,1,139,108,36,24,137,149,233,137,92,36,28,137,214,
134 255,139,149,233,252,233,244,2,248,75,129,252,248,239,15,130,244,62,15,132, 134 137,252,239,255,232,251,1,12,255,232,251,1,13,255,139,149,233,252,233,244,
135 244,248,248,1,129,122,253,4,239,15,133,244,62,139,108,36,24,137,149,233,137, 135 2,248,76,129,252,248,239,15,130,244,63,15,132,244,248,248,1,129,122,253,4,
136 149,233,139,90,252,252,139,50,141,82,8,137,252,239,137,92,36,28,232,251,1, 136 239,15,133,244,63,139,108,36,24,137,149,233,137,149,233,139,90,252,252,139,
137 14,139,149,233,133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106, 137 50,141,82,8,137,252,239,137,92,36,28,232,251,1,14,139,149,233,133,192,15,
138 252,248,72,137,2,248,76,184,237,255,252,233,244,77,248,2,199,66,12,237,252, 138 132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77,
139 233,244,1,248,3,199,66,252,252,237,252,233,244,65,248,78,129,252,248,239, 139 184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66,
140 15,130,244,62,139,42,129,122,253,4,239,15,133,244,62,255,131,189,233,0,15, 140 252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139,42,129,
141 133,244,62,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252, 141 122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139,106,252,
142 237,137,66,252,248,199,66,12,237,184,237,252,233,244,77,248,79,129,252,248, 142 248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,199,66,12,
143 239,15,130,244,62,129,122,253,4,239,15,133,244,62,129,122,253,12,239,255, 143 237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63,129,122,253,
144 139,90,252,252,255,139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255, 144 4,239,15,133,244,63,129,122,253,12,239,255,139,90,252,252,255,139,66,8,131,
145 252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252, 145 192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,
146 242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248, 146 237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,
147 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,80,72,139,40,72,137, 147 252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,
148 42,252,233,244,76,248,2,131,189,233,0,15,132,244,80,137,252,239,137,213,137, 148 120,253,4,239,15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131,
149 198,232,251,1,15,137,252,234,133,192,15,133,244,1,248,80,184,237,252,233, 149 189,233,0,15,132,244,81,137,252,239,137,213,137,198,232,251,1,15,137,252,
150 244,77,248,81,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252, 150 234,133,192,15,133,244,1,248,81,184,237,252,233,244,78,248,82,255,139,106,
151 237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242, 151 252,248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,255,
152 15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,77,248,82,129, 152 199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,
153 252,248,239,15,130,244,62,141,74,8,131,232,1,187,237,248,1,65,15,182,174, 153 238,221,90,8,255,184,237,252,233,244,78,248,83,129,252,248,239,15,130,244,
154 233,193,252,237,235,131,229,1,1,252,235,252,233,244,28,248,83,129,252,248, 154 63,141,74,8,131,232,1,187,237,248,1,65,15,182,174,233,193,252,237,235,131,
155 239,15,130,244,62,129,122,253,12,239,15,133,244,62,255,139,106,4,137,106, 155 229,1,1,252,235,252,233,244,28,248,84,129,252,248,239,15,130,244,63,129,122,
156 12,199,66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,187, 156 253,12,239,15,133,244,63,255,139,106,4,137,106,12,199,66,4,237,139,42,139,
157 237,252,233,244,1,248,84,129,252,248,239,15,130,244,62,139,42,139,90,252, 157 90,8,137,106,8,137,26,141,74,16,131,232,2,187,237,252,233,244,1,248,85,129,
158 252,137,92,36,28,137,44,36,129,122,253,4,239,15,133,244,62,72,131,189,233, 158 252,248,239,15,130,244,63,139,42,139,90,252,252,137,92,36,28,137,44,36,129,
159 0,15,133,244,62,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247, 159 122,253,4,239,15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235,
160 255,59,141,233,15,132,244,62,248,1,141,92,193,252,240,59,157,233,15,135,244, 160 15,135,244,63,139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248,
161 62,137,157,233,139,108,36,24,137,149,233,131,194,8,137,149,233,141,108,194, 161 1,141,92,193,252,240,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137,
162 232,72,41,221,57,203,15,132,244,249,248,2,72,139,4,43,72,137,67,252,248,131, 162 149,233,131,194,8,137,149,233,141,108,194,232,72,41,221,57,203,15,132,244,
163 252,235,8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,25,65,199,134, 163 249,248,2,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,
164 233,237,255,139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244, 164 248,3,137,206,139,60,36,232,244,25,65,199,134,233,237,255,139,108,36,24,139,
165 254,248,4,139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15, 165 28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,
166 132,244,252,141,4,26,193,252,235,3,59,133,233,15,135,244,255,137,213,72,41, 166 187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,
167 205,248,5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6, 167 235,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,
168 141,67,2,199,66,252,252,237,248,7,139,92,36,28,137,68,36,4,72,199,193,252, 168 41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,
169 248,252,255,252,255,252,255,252,247,195,237,255,15,132,244,13,252,233,244, 169 248,7,139,92,36,28,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,
170 14,248,8,199,66,252,252,237,139,139,233,131,252,233,8,137,139,233,72,139, 170 252,247,195,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,
171 1,72,137,2,184,237,252,233,244,7,248,9,139,12,36,68,137,185,233,137,222,137, 171 139,139,233,131,252,233,8,137,139,233,72,139,1,72,137,2,184,237,252,233,244,
172 252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,85,139,106,252, 172 7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,28,36,
173 248,139,173,233,139,90,252,252,137,92,36,28,137,44,36,72,131,189,233,0,15, 173 139,149,233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,90,252,252,
174 133,244,62,255,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247,59, 174 137,92,36,28,137,44,36,72,131,189,233,0,15,133,244,63,255,128,189,233,235,
175 141,233,15,132,244,62,248,1,141,92,193,252,248,59,157,233,15,135,244,62,137, 175 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141,
176 157,233,139,108,36,24,137,149,233,137,149,233,141,108,194,252,240,72,41,221, 176 92,193,252,248,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137,149,
177 57,203,15,132,244,249,248,2,255,72,139,4,43,72,137,67,252,248,131,252,235, 177 233,137,149,233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,
178 8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,25,65,199,134,233,237, 178 255,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,
179 139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4, 179 137,206,139,60,36,232,244,25,65,199,134,233,237,139,108,36,24,139,28,36,139,
180 139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252, 180 149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,
181 141,4,26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248, 181 139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,
182 5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67, 182 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,
183 1,248,7,139,92,36,28,137,68,36,4,49,201,252,247,195,237,15,132,244,13,252, 183 8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,28,137,68,36,
184 233,244,14,248,8,137,222,137,252,239,232,251,1,16,248,9,139,12,36,68,137, 184 4,49,201,252,247,195,237,15,132,244,13,252,233,244,14,248,8,137,222,137,252,
185 185,233,137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,233,244, 185 239,232,251,1,16,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,
186 4,248,86,139,108,36,24,72,252,247,133,233,237,15,132,244,62,255,137,149,233, 186 1,0,139,28,36,139,149,233,252,233,244,4,248,87,139,108,36,24,72,252,247,133,
187 141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233, 187 233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,133,233,49,192,
188 252,233,244,16,255,248,70,255,248,72,139,90,252,252,221,90,252,248,252,233, 188 72,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71,255,248,73,139,
189 244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4,239,15, 189 90,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252,248,239,15,130,
190 133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136,244,247, 190 244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252,253,0,15,137,244,
191 248,88,248,70,139,90,252,252,199,66,252,252,237,137,106,252,248,252,233,244, 191 71,252,247,221,15,136,244,247,248,89,248,71,139,90,252,252,199,66,252,252,
192 65,248,1,139,90,252,252,199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0, 192 237,137,106,252,248,252,233,244,66,248,1,139,90,252,252,199,66,252,252,0,
193 252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131,244,62,255, 193 0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15,135,244,63,255,129,
194 252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,71,139,90, 194 122,253,4,239,15,131,244,63,255,252,242,15,16,2,72,184,237,237,102,72,15,
195 252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,71,248,72,139,90,252, 195 110,200,15,84,193,248,72,139,90,252,252,252,242,15,17,66,252,248,255,221,
196 252,221,90,252,248,255,248,65,184,237,248,77,137,68,36,4,248,63,252,247,195, 196 2,217,225,248,72,248,73,139,90,252,252,221,90,252,248,255,248,66,184,237,
197 237,15,133,244,253,248,5,56,67,252,255,15,135,244,252,15,182,75,252,253,72, 197 248,78,137,68,36,4,248,64,252,247,195,237,15,133,244,253,248,5,56,67,252,
198 252,247,209,141,20,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 198 255,15,135,244,252,15,182,75,252,253,72,252,247,209,141,20,202,139,3,15,182,
199 252,255,36,252,238,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248, 199 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,199,68,194,
200 7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,248,89,255,129, 200 252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,
201 122,253,4,239,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255, 201 255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,15,133,244,247,139,
202 252,242,15,16,2,232,244,90,255,252,242,15,45,232,129,252,253,0,0,0,128,15, 202 42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,2,232,244,91,255,
203 133,244,70,252,242,15,42,205,102,15,46,193,15,138,244,71,15,132,244,70,255, 203 252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,242,15,42,205,102,
204 221,2,232,244,90,255,248,91,255,252,242,15,16,2,232,244,92,255,221,2,232, 204 15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,91,255,248,92,255,
205 244,92,255,248,93,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 205 252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239,
206 244,62,252,242,15,81,2,252,233,244,71,255,248,93,129,252,248,239,15,130,244, 206 15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244,
207 62,129,122,253,4,239,15,131,244,62,221,2,217,252,250,252,233,244,72,255,248, 207 72,255,248,94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
208 94,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252, 208 63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248,239,15,130,244,
209 237,221,2,217,252,241,252,233,244,72,248,95,129,252,248,239,15,130,244,62, 209 63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252,241,252,233,
210 129,122,253,4,239,15,131,244,62,217,252,236,221,2,217,252,241,252,233,244, 210 244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
211 72,248,96,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15,131,244, 211 63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252,248,239,255,
212 62,221,2,232,244,97,252,233,244,72,248,98,129,252,248,239,15,130,244,62,129, 212 15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244,
213 122,253,4,239,15,131,244,62,221,2,217,252,254,252,233,244,72,248,99,129,252, 213 73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
214 248,239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,255, 214 2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15,130,244,63,129,
215 252,233,244,72,248,100,129,252,248,239,15,130,244,62,129,122,253,4,239,15, 215 122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244,73,248,101,129,
216 131,244,62,221,2,217,252,242,221,216,252,233,244,72,248,101,129,252,248,239, 216 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242,
217 15,130,244,62,255,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217, 217 221,216,252,233,244,73,248,102,129,252,248,239,15,130,244,63,255,129,122,
218 232,222,225,217,252,250,217,252,243,252,233,244,72,248,102,129,252,248,239, 218 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,
219 15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,232, 219 217,252,243,252,233,244,73,248,103,129,252,248,239,15,130,244,63,129,122,
220 222,225,217,252,250,217,201,217,252,243,252,233,244,72,248,103,129,252,248, 220 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,
221 239,15,130,244,62,129,122,253,4,239,15,131,244,62,255,221,2,217,232,217,252, 221 217,201,217,252,243,252,233,244,73,248,104,129,252,248,239,15,130,244,63,
222 243,252,233,244,72,255,248,104,129,252,248,239,15,130,244,62,129,122,253, 222 129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243,252,233,244,
223 4,239,15,131,244,62,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234, 223 73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
224 252,233,244,71,255,248,105,129,252,248,239,15,130,244,62,129,122,253,4,239, 224 63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72,255,
225 15,131,244,62,252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233, 225 248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,
226 244,71,255,248,106,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 226 242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,255,248,107,
227 244,62,252,242,15,16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,71, 227 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,
228 248,107,255,248,108,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 228 16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,72,248,108,255,248,
229 244,62,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244, 229 109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
230 71,255,248,108,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 230 15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,248,109,
231 62,221,2,139,106,252,248,220,141,233,252,233,244,72,255,248,109,129,252,248, 231 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,139,106,
232 239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131, 232 252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,15,130,244,
233 244,62,221,2,221,66,8,217,252,243,252,233,244,72,248,110,129,252,248,239, 233 63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,
234 15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,255,15,131, 234 221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,244,63,
235 244,62,221,66,8,221,2,217,252,253,221,217,252,233,244,72,248,111,129,252, 235 129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,63,221,
236 248,239,15,130,244,62,139,106,4,129,252,253,239,15,131,244,62,139,90,252, 236 66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,239,15,
237 252,139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252, 237 130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,139,2,137,
238 255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0, 238 106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,
239 32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255, 239 249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,
240 137,44,36,219,4,36,255,139,106,252,252,129,229,252,255,252,255,15,128,129, 240 250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,44,36,219,4,
241 205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184, 241 36,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,
242 237,252,233,244,77,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252, 242 137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
243 233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205, 243 244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
244 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90, 244 248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,
245 216,12,36,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233, 245 193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90,216,12,36,221,
246 244,1,255,248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 246 90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,
247 244,62,252,242,15,16,2,255,248,112,129,252,248,239,15,130,244,62,129,122, 247 113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
248 253,4,239,15,131,244,62,221,2,255,139,106,4,139,90,252,252,209,229,129,252, 248 15,16,2,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
249 253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,113,252,242,15,92, 249 244,63,221,2,255,139,106,4,139,90,252,252,209,229,129,252,253,0,0,224,252,
250 224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,113, 250 255,15,132,244,250,255,15,40,224,232,244,114,252,242,15,92,224,248,1,252,
251 220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232, 251 242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,114,220,252,233,
252 15,136,244,249,248,2,184,237,252,233,244,77,248,3,129,252,245,0,0,0,128,137, 252 248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,
253 106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217, 253 249,248,2,184,237,252,233,244,78,248,3,129,252,245,0,0,0,128,137,106,4,252,
254 201,252,233,244,1,255,248,114,129,252,248,239,15,130,244,62,129,122,253,4, 254 233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,
255 239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,66,8,221,2,248,1,217, 255 244,1,255,248,115,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
256 252,248,223,224,158,15,138,244,1,221,217,252,233,244,72,255,248,115,129,252, 256 244,63,129,122,253,12,239,15,131,244,63,221,66,8,221,2,248,1,217,252,248,
257 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 257 223,224,158,15,138,244,1,221,217,252,233,244,73,255,248,116,129,252,248,239,
258 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,232,244,116,252,233,244, 258 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
259 71,255,248,115,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 259 63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252,233,244,72,255,248,
260 62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,232,244,116,252,233,244, 260 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,
261 72,255,248,117,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248, 261 253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252,233,244,73,255,248,
262 1,57,193,15,131,244,70,129,124,253,202,252,252,239,15,133,244,249,59,108, 262 118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,
263 202,252,248,15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244, 263 15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,
264 62,255,252,233,244,252,248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193, 264 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255,252,
265 15,131,244,71,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,62, 265 233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248,5,57,193,15,131,244,
266 252,242,15,42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202, 266 72,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,63,252,242,15,
267 252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,118,185,2, 267 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,
268 0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244, 268 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,119,185,2,0,0,0,129,
269 70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108, 269 122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124,
270 202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242, 270 253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248,
271 15,16,76,202,252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255, 271 131,193,1,252,233,244,1,248,3,15,135,244,63,255,248,6,252,242,15,16,76,202,
272 248,9,221,216,252,233,244,62,255,248,119,129,252,248,239,15,130,244,62,129, 272 252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,
273 122,253,4,239,15,133,244,62,139,42,255,139,173,233,252,233,244,70,255,252, 273 252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129,122,253,4,239,
274 242,15,42,133,233,252,233,244,71,255,219,133,233,252,233,244,72,255,248,120, 274 15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252,242,15,42,133,
275 129,252,248,239,15,133,244,62,129,122,253,4,239,15,133,244,62,139,42,139, 275 233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121,129,252,248,
276 90,252,252,131,189,233,1,15,130,244,80,15,182,173,233,255,252,242,15,42,197, 276 239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139,90,252,252,131,
277 252,233,244,71,255,137,44,36,219,4,36,252,233,244,72,255,248,121,65,139,174, 277 189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42,197,252,233,244,
278 233,65,59,174,233,15,130,244,247,232,244,74,248,1,129,252,248,239,15,133, 278 72,255,137,44,36,219,4,36,252,233,244,73,255,248,122,65,139,174,233,65,59,
279 244,62,129,122,253,4,239,255,15,133,244,62,139,42,129,252,253,252,255,0,0, 279 174,233,15,130,244,247,232,244,75,248,1,129,252,248,239,15,133,244,63,129,
280 0,15,135,244,62,137,108,36,4,255,15,131,244,62,252,242,15,44,42,129,252,253, 280 122,253,4,239,255,15,133,244,63,139,42,129,252,253,252,255,0,0,0,15,135,244,
281 252,255,0,0,0,15,135,244,62,137,108,36,4,255,15,131,244,62,221,2,219,92,36, 281 63,137,108,36,4,255,15,131,244,63,252,242,15,44,42,129,252,253,252,255,0,
282 4,129,124,36,4,252,255,0,0,0,15,135,244,62,255,199,68,36,8,1,0,0,0,72,141, 282 0,0,15,135,244,63,137,108,36,4,255,15,131,244,63,221,2,219,92,36,4,129,124,
283 68,36,4,248,122,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252, 283 36,4,252,255,0,0,0,15,135,244,63,255,199,68,36,8,1,0,0,0,72,141,68,36,4,248,
284 239,137,92,36,28,232,251,1,20,139,149,233,139,90,252,252,199,66,252,252,237, 284 123,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252,239,137,92,36,
285 137,66,252,248,252,233,244,65,248,123,65,139,174,233,65,59,174,233,15,130, 285 28,232,251,1,20,139,149,233,139,90,252,252,199,66,252,252,237,137,66,252,
286 244,247,232,244,74,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129, 286 248,252,233,244,66,248,124,65,139,174,233,65,59,174,233,15,130,244,247,232,
287 252,248,239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15,133,244, 287 244,75,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,239,
288 62,139,106,16,137,108,36,4,255,15,131,244,62,252,242,15,44,106,16,137,108, 288 15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63,139,106,
289 36,4,255,15,131,244,62,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239, 289 16,137,108,36,4,255,15,131,244,63,252,242,15,44,106,16,137,108,36,4,255,15,
290 15,133,244,62,129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255, 290 131,244,63,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,63,
291 139,74,8,255,252,242,15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248, 291 129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255,139,74,8,255,252,
292 2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244,124,141,172, 292 242,15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,
293 253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,122,248,5,15,140, 293 244,253,248,3,139,108,36,8,41,200,15,140,244,125,141,172,253,13,233,131,192,
294 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15, 294 1,248,4,137,68,36,8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40,
295 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244, 295 1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,
296 3,248,124,49,192,252,233,244,4,248,125,129,252,248,239,15,130,244,62,65,139, 296 233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192,
297 174,233,65,59,174,233,15,130,244,247,232,244,74,248,1,255,129,122,253,4,239, 297 252,233,244,4,248,126,129,252,248,239,15,130,244,63,65,139,174,233,65,59,
298 15,133,244,62,129,122,253,12,239,139,42,255,15,133,244,62,139,66,8,255,15, 298 174,233,15,130,244,247,232,244,75,248,1,255,129,122,253,4,239,15,133,244,
299 131,244,62,252,242,15,44,66,8,255,15,131,244,62,221,66,8,219,92,36,4,139, 299 63,129,122,253,12,239,139,42,255,15,133,244,63,139,66,8,255,15,131,244,63,
300 68,36,4,255,133,192,15,142,244,124,131,189,233,1,15,130,244,124,15,133,244, 300 252,242,15,44,66,8,255,15,131,244,63,221,66,8,219,92,36,4,139,68,36,4,255,
301 126,65,57,134,233,15,130,244,126,15,182,141,233,65,139,174,233,137,68,36, 301 133,192,15,142,244,125,131,189,233,1,15,130,244,125,15,133,244,127,65,57,
302 8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,233, 302 134,233,15,130,244,127,15,182,141,233,65,139,174,233,137,68,36,8,248,1,136,
303 244,122,248,127,129,252,248,239,255,15,130,244,62,65,139,174,233,65,59,174, 303 77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,233,244,123,248,
304 233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42, 304 128,129,252,248,239,255,15,130,244,63,65,139,174,233,65,59,174,233,15,130,
305 139,133,233,133,192,15,132,244,124,65,57,134,233,15,130,244,128,129,197,239, 305 244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,
306 137,92,36,4,137,68,36,8,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131, 306 133,192,15,132,244,125,65,57,134,233,15,130,244,129,129,197,239,137,92,36,
307 232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,122,248,129,129, 307 4,137,68,36,8,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,
308 252,248,239,15,130,244,62,65,139,174,233,65,59,174,233,15,130,244,247,232, 308 12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,123,248,130,129,252,248,
309 244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,65,57,134, 309 239,15,130,244,63,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75,
310 233,255,15,130,244,128,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233, 310 248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,255,
311 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252, 311 15,130,244,129,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,
312 249,90,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137, 312 244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,
313 244,1,137,216,139,92,36,4,252,233,244,122,248,130,129,252,248,239,15,130, 313 15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,
314 244,62,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,74,248,1,129, 314 137,216,139,92,36,4,252,233,244,123,248,131,129,252,248,239,15,130,244,63,
315 122,253,4,239,15,133,244,62,139,42,139,133,233,65,57,134,233,15,130,244,128, 315 255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75,248,1,129,122,
316 129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1, 316 253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,15,130,244,129,129,
317 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244, 317 197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,
318 248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139, 318 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
319 92,36,4,252,233,244,122,248,131,129,252,248,239,15,130,244,62,129,122,253, 319 252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,
320 4,239,15,133,244,62,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252, 320 4,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122,253,4,239,
321 233,244,70,255,252,242,15,42,192,252,233,244,71,255,248,132,129,252,248,239, 321 15,133,244,63,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252,233,
322 15,130,244,62,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,88, 322 244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248,239,15,
323 248,1,15,135,244,62,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205, 323 130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248,
324 252,242,15,88,193,102,15,126,197,255,252,233,244,88,255,248,133,129,252,248, 324 1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
325 239,15,130,244,62,255,72,189,237,237,102,72,15,110,205,255,199,4,36,0,0,192, 325 242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248,239,
326 89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,62,255,252, 326 15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,4,36,0,0,192,89,
327 242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,4,141,68, 327 255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255,252,242,
328 194,252,240,248,1,57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248, 328 15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,4,141,68,194,
329 35,40,131,232,8,252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255, 329 252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35,
330 252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252, 330 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252,
331 233,244,1,248,135,129,252,248,239,15,130,244,62,255,15,133,244,248,11,40, 331 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,
332 131,232,8,252,233,244,1,248,2,15,135,244,134,255,252,242,15,16,0,252,242, 332 244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11,40,131,
333 15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,136,129,252, 333 232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242,15,88,
334 248,239,15,130,244,62,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248, 334 193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252,248,
335 2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49, 335 239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,
336 205,255,131,232,8,252,233,244,1,248,137,129,252,248,239,15,130,244,62,129, 336 15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,
337 122,253,4,239,255,248,2,15,205,252,233,244,88,248,138,129,252,248,239,15, 337 255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129,122,
338 130,244,62,129,122,253,4,239,255,248,2,252,247,213,255,248,88,252,242,15, 338 253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15,130,
339 42,197,252,233,244,71,255,248,134,139,68,36,4,252,233,244,62,255,248,139, 339 244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15,42,197,
340 129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2,129,122,253,12, 340 252,233,244,72,255,248,135,139,68,36,4,252,233,244,63,255,248,140,129,252,
341 239,15,133,244,62,139,74,8,255,248,139,129,252,248,239,15,130,244,62,129, 341 248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,
342 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16, 342 244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239,
343 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252, 343 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,
344 242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,88,255, 344 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
345 248,140,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,140,129,252, 345 202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255,248,141,
346 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 346 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248,239,
347 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15, 347 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
348 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201, 348 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
349 255,211,252,237,252,233,244,88,255,248,141,129,252,248,239,15,130,244,62, 349 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,
350 129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,62,129,122,253,4, 350 237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129,122,253,
351 239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242, 351 4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
352 15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15, 352 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,
353 88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,88,255,248,
354 142,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,142,129,252,248,
355 239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,
356 244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
357 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,
358 197,252,233,244,88,255,248,143,129,252,248,239,15,130,244,62,129,122,253,
359 4,239,255,248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
360 244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,
361 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102, 353 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,
362 15,126,197,102,15,126,201,255,211,205,252,233,244,88,248,126,184,237,252, 354 15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248,143,129,
363 233,244,62,248,128,184,237,248,62,139,108,36,24,139,90,252,252,137,92,36, 355 252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248,239,15,
364 28,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248, 356 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
365 59,141,233,15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192, 357 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
366 15,143,244,77,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1, 358 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,
367 139,106,252,248,15,133,244,32,139,157,233,139,11,15,182,252,233,15,182,205, 359 252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,
368 131,195,4,65,252,255,36,252,238,248,32,137,209,252,247,195,237,15,133,244, 360 255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
369 249,15,182,107,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3, 361 129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,
370 137,221,131,229,252,248,41,252,234,252,233,244,28,248,5,190,237,137,252,239, 362 237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,
371 232,251,1,0,139,149,233,49,192,252,233,244,1,248,74,93,72,137,108,36,8,139, 363 197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252,233,244,
372 108,36,24,137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137, 364 63,248,129,184,237,248,63,139,108,36,24,139,90,252,252,137,92,36,28,137,149,
373 133,233,232,251,1,22,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72, 365 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,
374 139,108,36,8,85,195,248,144,255,65,15,182,134,233,168,235,15,133,244,251, 366 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,143,244,
375 168,235,15,133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233, 367 78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,
376 244,247,255,248,145,65,15,182,134,233,168,235,15,133,244,251,252,233,244, 368 248,15,133,244,33,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,
377 247,248,146,65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251, 369 65,252,255,36,252,238,248,33,137,209,252,247,195,237,15,133,244,249,15,182,
378 65,252,255,142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108, 370 107,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137,221,131,
379 36,24,137,149,233,137,222,137,252,239,232,251,1,23,248,3,139,149,233,248, 371 229,252,248,41,252,234,252,233,244,28,248,5,190,237,137,252,239,232,251,1,
380 4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255, 372 0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,8,139,108,36,24,
381 164,253,252,238,233,248,147,131,195,4,139,77,232,137,76,36,4,252,233,244, 373 137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232,
382 4,248,148,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108, 374 251,1,22,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,
383 36,24,137,149,233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92, 375 8,85,195,248,145,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,
384 36,28,232,251,1,24,252,233,244,3,255,248,149,137,92,36,28,255,248,150,255, 376 133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,
385 137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149, 377 248,146,65,15,182,134,233,168,235,15,133,244,251,252,233,244,247,248,147,
386 233,137,133,233,137,222,137,252,239,232,251,1,25,199,68,36,28,0,0,0,0,255, 378 65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255,
387 131,227,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205, 379 142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,24,137,
388 15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,151,255,65,85,65,84, 380 149,233,137,222,137,252,239,232,251,1,23,248,3,139,149,233,248,4,15,182,75,
389 65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69, 381 252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252,
390 252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,68,139,117, 382 238,233,248,148,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,149,255,
391 0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,142,233,72,129, 383 139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,24,137,149,
392 252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68,15,17, 384 233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92,36,28,232,251,
393 117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242,68, 385 1,24,252,233,244,3,255,248,150,137,92,36,28,255,248,151,255,137,92,36,28,
394 15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15, 386 131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149,233,137,133,
395 17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109,168, 387 233,137,222,137,252,239,232,251,1,25,199,68,36,28,0,0,0,0,255,131,227,252,
396 252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15, 388 254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,75,252,
397 17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233, 389 253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83,65,82,65,
398 65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,26, 390 81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,
399 72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,233,139,153, 391 252,240,76,137,125,252,248,76,137,117,252,240,68,139,117,0,65,139,142,233,
400 233,252,233,244,247,255,248,152,255,72,131,196,16,248,1,76,139,108,36,8,76, 392 65,199,134,233,237,65,137,134,233,65,137,142,233,72,129,252,236,239,72,131,
401 139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191, 393 197,128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,
402 233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182, 394 68,15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,
403 204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68, 395 68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,
404 36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232, 396 17,125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,
405 251,1,1,255,248,90,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36, 397 160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,
406 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, 398 15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233,65,199,134,233,
407 36,4,139,68,36,8,195,255,248,153,72,184,237,237,102,72,15,110,208,72,184, 399 0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,26,72,139,141,233,
400 72,129,225,239,72,137,204,137,169,233,139,149,233,139,153,233,252,233,244,
401 247,255,248,153,255,72,131,196,16,248,1,76,139,108,36,8,76,139,36,36,133,
402 192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191,233,69,139,191,
403 233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204,15,182,232,
404 131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36,4,248,2,65,
405 252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232,251,1,1,255,
406 248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
407 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
408 36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
409 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
410 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
411 72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,
412 193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,
413 4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
414 36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,72,184,
408 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244, 415 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
409 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184, 416 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
410 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92, 417 237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
411 200,15,40,193,248,1,195,248,92,255,217,124,36,4,137,68,36,8,102,184,0,8,102, 418 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12,
412 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252, 419 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
413 217,108,36,4,139,68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208, 420 68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
414 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, 421 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
415 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, 422 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,
416 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242, 423 15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,
417 15,92,200,15,40,193,248,1,195,248,113,255,217,124,36,4,137,68,36,8,102,184, 424 202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184,237,
418 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 425 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,
419 139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,72,184,237,237, 426 226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,
420 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, 427 15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,
421 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102, 428 1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,
422 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, 429 92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,
423 86,202,15,40,193,248,1,195,248,156,255,15,40,232,252,242,15,94,193,72,184, 430 193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
424 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102, 431 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,
425 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252, 432 233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,252,248,129,124,
426 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194, 433 36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,
427 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242, 434 15,132,244,248,248,159,217,192,217,252,252,220,252,233,217,201,217,252,240,
428 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255, 435 217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,
429 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255, 436 255,248,117,255,248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,
430 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222, 437 15,133,244,254,15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1,
431 252,233,195,255,248,97,217,252,234,222,201,248,157,217,84,36,252,248,129, 438 169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,
432 124,36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252, 439 209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,
433 255,15,132,244,248,248,158,217,192,217,252,252,220,252,233,217,201,217,252, 440 250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,
434 240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238, 441 193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,
435 195,255,248,116,255,248,159,252,242,15,45,193,252,242,15,42,208,102,15,46, 442 184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,
436 202,15,133,244,254,15,138,244,255,248,160,131,252,248,1,15,142,244,252,248, 443 237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,
437 1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248, 444 12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,
438 2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132, 445 244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,
439 244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15, 446 17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68,36,
440 89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1, 447 252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,217,
441 72,184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72, 448 232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36,252,
442 184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193, 449 248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,247,
443 192,12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15, 450 15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84,194,
444 132,244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242, 451 72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80,193,
445 15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68, 452 15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237,255,
446 36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240, 453 102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,192,
447 217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36, 454 195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,162,255,131,
448 252,248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244, 455 252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15,135,
449 247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84, 456 244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68,36,
450 194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80, 457 252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,98,252,233,244,
451 193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237, 458 253,248,1,232,244,158,255,252,233,244,253,248,2,131,252,255,7,15,132,244,
452 255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87, 459 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1,
453 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,161,255, 460 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132,244,
454 131,252,255,1,15,130,244,90,15,132,244,92,131,252,255,3,15,130,244,113,15, 461 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1,
455 135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68, 462 255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,135,
456 36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,97,252,233, 463 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92,
457 244,253,248,1,232,244,157,255,252,233,244,253,248,2,131,252,255,7,15,132, 464 36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,4,
458 244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248, 465 131,252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15,
459 1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132, 466 135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,98,15,132,244,
460 244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248, 467 158,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
461 1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,
462 135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,
463 92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,
464 4,131,252,255,1,15,130,244,90,15,132,244,92,131,252,255,3,15,130,244,113,
465 15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,97,15,132,244,
466 157,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
467 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,9,15,132, 468 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,9,15,132,
468 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 469 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
469 252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255, 470 252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255,
470 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,162,255,131,252,255, 471 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,131,252,255,
471 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92, 472 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
472 193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,193, 473 193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,193,
473 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,156,15,132, 474 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,157,15,132,
474 244,116,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102, 475 244,117,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102,
475 72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,84, 476 72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,84,
476 193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,252, 477 193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,252,
477 242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,247, 478 242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,247,
@@ -481,55 +482,65 @@ static const unsigned char build_actionlist[16165] = {
481 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, 482 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,
482 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, 483 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,
483 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 484 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,
484 252,248,5,15,130,244,156,15,132,244,116,131,252,248,7,15,132,244,247,15,135, 485 252,248,5,15,130,244,157,15,132,244,117,131,252,248,7,15,132,244,247,15,135,
485 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 486 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,
486 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 487 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,
487 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 488 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,
488 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 489 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,
489 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 490 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,
490 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 491 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,
491 163,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,164, 492 164,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,165,
492 255,204,248,165,255,85,72,137,229,83,72,137,252,251,139,131,233,72,41,196, 493 255,204,248,166,255,83,65,87,65,86,72,131,252,236,40,68,141,181,233,139,157,
493 255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,139,132,253,203, 494 233,15,183,192,137,131,233,72,137,187,233,72,137,179,233,72,137,147,233,72,
494 233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,2,15,182,131,233, 495 137,139,233,252,242,15,17,131,233,252,242,15,17,139,233,252,242,15,17,147,
495 72,139,187,233,72,139,179,233,72,139,147,233,72,139,139,233,76,139,131,233, 496 233,252,242,15,17,155,233,72,141,132,253,36,233,76,137,131,233,76,137,139,
496 76,139,139,233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,255,15, 497 233,252,242,15,17,163,233,252,242,15,17,171,233,252,242,15,17,179,233,252,
497 40,147,233,15,40,155,233,131,252,248,4,15,134,244,251,15,40,163,233,15,40, 498 242,15,17,187,233,72,137,131,233,72,137,230,137,92,36,28,137,223,232,251,
498 171,233,15,40,179,233,15,40,187,233,248,5,252,255,147,233,72,137,131,233, 499 1,27,65,199,134,233,237,255,139,144,233,139,128,233,41,208,139,106,252,248,
499 15,41,131,233,72,137,147,233,15,41,139,233,255,72,139,93,252,248,201,195, 500 193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
500 255,249,255,129,124,253,202,4,239,15,133,244,253,129,124,253,194,4,239,15, 501 4,65,252,255,36,252,238,255,248,32,255,139,76,36,24,65,139,158,233,72,137,
501 133,244,254,139,44,202,131,195,4,59,44,194,255,15,141,244,255,255,15,140, 502 139,233,137,145,233,137,169,233,137,223,137,198,232,251,1,28,72,139,131,233,
502 244,255,255,15,143,244,255,255,15,142,244,255,255,248,6,15,183,67,252,254, 503 252,242,15,16,131,233,252,233,244,16,255,248,167,255,85,72,137,229,83,72,
503 141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 504 137,252,251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,
504 65,252,255,36,252,238,248,7,15,135,244,43,129,124,253,194,4,239,15,130,244, 505 244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,
505 247,15,133,244,43,255,252,242,15,42,4,194,252,233,244,248,255,221,4,202,219, 506 15,137,244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,
506 4,194,252,233,244,249,255,248,8,15,135,244,43,255,252,242,15,42,12,202,252, 507 233,72,139,139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,
507 242,15,16,4,194,131,195,4,102,15,46,193,255,15,134,244,9,255,15,135,244,9, 508 40,131,233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,
508 255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,219,4,202,252,233, 509 134,244,251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,
509 244,248,255,129,124,253,202,4,239,15,131,244,43,129,124,253,194,4,239,15, 510 252,255,147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,
510 131,244,43,255,248,1,252,242,15,16,4,194,248,2,131,195,4,102,15,46,4,202, 511 255,72,139,93,252,248,201,195,255,129,124,253,202,4,239,15,133,244,253,129,
511 248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,195,4,255,223,252,233, 512 124,253,194,4,239,15,133,244,254,139,44,202,131,195,4,59,44,194,255,15,141,
512 221,216,255,218,252,233,223,224,158,255,15,134,244,247,255,15,135,244,247, 513 244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,248,
513 255,15,130,244,247,255,15,131,244,247,255,15,183,67,252,254,141,156,253,131, 514 6,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,
514 233,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 515 131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,44,129,124,253,
515 252,238,255,139,108,194,4,131,195,4,255,129,252,253,239,15,133,244,253,129, 516 194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244,
516 124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,133,244,255, 517 248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252,
517 255,15,132,244,255,255,15,183,67,252,254,141,156,253,131,233,248,9,139,3, 518 242,15,42,12,202,252,242,15,16,4,194,131,195,4,102,15,46,193,255,15,134,244,
518 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,7,15, 519 9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,
519 135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,252,242, 520 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124,
520 15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,255,252, 521 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,195,4,
521 242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,244,250, 522 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,195,4,
522 255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,251,255, 523 255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,135,244,247,255,
523 248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202, 524 15,130,244,247,255,15,131,244,247,255,15,183,67,252,254,141,156,253,131,233,
524 248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248, 525 248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
525 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255, 526 238,255,139,108,194,4,131,195,4,255,129,252,253,239,15,133,244,253,129,124,
526 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,252,233,244,9,255,248, 527 253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,133,244,255,255,
527 5,255,129,252,253,239,15,132,244,48,129,124,253,202,4,239,15,132,244,48,255, 528 15,132,244,255,255,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,
529 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,
530 251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,252,242,15,42,
531 4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,255,252,242,
532 15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,244,250,255,
533 129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,251,255,248,
534 1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,
535 2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,
536 132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,
537 2,15,183,67,252,254,141,156,253,131,233,248,1,255,252,233,244,9,255,248,5,
538 255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255,
528 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, 539 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
529 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244, 540 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244,
530 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255, 541 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,
531 49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,248,3,129,252,253,239,255, 542 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,
532 15,133,244,9,255,252,233,244,48,255,72,252,247,208,139,108,202,4,131,195, 543 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,195,
533 4,129,252,253,239,15,133,244,249,139,12,202,65,59,12,135,255,139,108,202, 544 4,129,252,253,239,15,133,244,249,139,12,202,65,59,12,135,255,139,108,202,
534 4,131,195,4,255,129,252,253,239,15,133,244,253,65,129,124,253,199,4,239,15, 545 4,131,195,4,255,129,252,253,239,15,133,244,253,65,129,124,253,199,4,239,15,
535 133,244,254,65,139,44,199,59,44,202,255,15,183,67,252,254,141,156,253,131, 546 133,244,254,65,139,44,199,59,44,202,255,15,183,67,252,254,141,156,253,131,
@@ -541,8 +552,8 @@ static const unsigned char build_actionlist[16165] = {
541 202,248,4,255,248,1,65,221,4,199,248,2,221,4,202,248,4,255,72,252,247,208, 552 202,248,4,255,248,1,65,221,4,199,248,2,221,4,202,248,4,255,72,252,247,208,
542 139,108,202,4,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254,141,156, 553 139,108,202,4,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254,141,156,
543 253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, 554 253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
544 255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,48,255,15,132, 555 255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132,
545 244,248,129,252,253,239,15,132,244,48,15,183,67,252,254,141,156,253,131,233, 556 244,248,129,252,253,239,15,132,244,49,15,183,67,252,254,141,156,253,131,233,
546 248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 557 248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
547 238,255,139,108,194,4,131,195,4,129,252,253,239,255,137,108,202,4,139,44, 558 238,255,139,108,194,4,131,195,4,129,252,253,239,255,137,108,202,4,139,44,
548 194,137,44,202,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232, 559 194,137,44,202,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,
@@ -551,42 +562,42 @@ static const unsigned char build_actionlist[16165] = {
551 232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,133,244,251,139, 562 232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,133,244,251,139,
552 44,194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,3, 563 44,194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,3,
553 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,199, 564 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,199,
554 68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,53,255, 565 68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255,
555 129,124,253,194,4,239,15,131,244,53,255,252,242,15,16,4,194,72,184,237,237, 566 129,124,253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,72,184,237,237,
556 102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221, 567 102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,
557 28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233, 568 28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,
558 248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248, 569 248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,
559 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204, 570 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204,
560 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194, 571 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194,
561 4,239,15,133,244,56,139,60,194,255,139,175,233,131,252,253,0,15,133,244,255, 572 4,239,15,133,244,57,139,60,194,255,139,175,233,131,252,253,0,15,133,244,255,
562 248,3,255,248,57,137,213,232,251,1,21,255,252,242,15,42,192,255,137,252,234, 573 248,3,255,248,58,137,213,232,251,1,21,255,252,242,15,42,192,255,137,252,234,
563 15,182,75,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244, 574 15,182,75,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,
564 3,252,233,244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4, 575 3,252,233,244,57,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,
565 239,15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65, 576 239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65,
566 3,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129, 577 3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129,
567 124,253,199,4,239,15,133,244,52,65,139,4,199,3,4,252,234,15,128,244,51,255, 578 124,253,199,4,239,15,133,244,53,65,139,4,199,3,4,252,234,15,128,244,52,255,
568 129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244, 579 129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244,
569 55,139,44,252,234,3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124, 580 56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237,255,129,124,
570 253,252,234,4,239,15,131,244,50,255,65,129,124,253,199,4,239,15,131,244,50, 581 253,252,234,4,239,15,131,244,51,255,65,129,124,253,199,4,239,15,131,244,51,
571 255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,220, 582 255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,220,
572 4,199,255,129,124,253,252,234,4,239,15,131,244,52,255,65,129,124,253,199, 583 4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,65,129,124,253,199,
573 4,239,15,131,244,52,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255, 584 4,239,15,131,244,53,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,
574 65,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,55,129, 585 65,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,
575 124,253,194,4,239,15,131,244,55,255,252,242,15,16,4,252,234,252,242,15,88, 586 124,253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,
576 4,194,255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244, 587 4,194,255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,
577 50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65,43,44,199,15, 588 51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65,43,44,199,15,
578 128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129,124,253,199, 589 128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129,124,253,199,
579 4,239,15,133,244,52,65,139,4,199,43,4,252,234,15,128,244,51,255,129,124,253, 590 4,239,15,133,244,53,65,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,
580 252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252, 591 252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,
581 234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234,252,242,65,15,92, 592 234,43,44,194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,65,15,92,
582 4,199,255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242, 593 4,199,255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,
583 15,92,4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234, 594 15,92,4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,
584 252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,252,234, 595 252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,252,234,
585 4,239,15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234, 596 4,239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,
586 65,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52, 597 65,15,175,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,
587 65,129,124,253,199,4,239,15,133,244,52,65,139,4,199,15,175,4,252,234,15,128, 598 65,129,124,253,199,4,239,15,133,244,53,65,139,4,199,15,175,4,252,234,15,128,
588 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239, 599 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,
589 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16, 600 15,133,244,56,139,44,252,234,15,175,44,194,15,128,244,55,255,252,242,15,16,
590 4,252,234,252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252, 601 4,252,234,252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,
591 242,65,15,16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234, 602 242,65,15,16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,
592 255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12, 603 255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,
@@ -596,10 +607,10 @@ static const unsigned char build_actionlist[16165] = {
596 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12, 607 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12,
597 199,255,221,4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15, 608 199,255,221,4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15,
598 16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234, 609 16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,
599 252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,166,232,244,156, 610 252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,157,
600 255,252,233,244,166,255,232,244,116,255,15,182,252,236,15,182,192,139,124, 611 255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139,124,
601 36,24,137,151,233,141,52,194,137,194,41,252,234,248,35,137,252,253,137,92, 612 36,24,137,151,233,141,52,194,137,194,41,252,234,248,36,137,252,253,137,92,
602 36,28,232,251,1,27,139,149,233,133,192,15,133,244,44,15,182,107,252,255,15, 613 36,28,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,107,252,255,15,
603 182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,182,204,15,182,232, 614 182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,182,204,15,182,232,
604 131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135, 615 131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,
605 199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232, 616 199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
@@ -616,82 +627,82 @@ static const unsigned char build_actionlist[16165] = {
616 69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, 627 69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,
617 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239, 628 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,
618 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238, 629 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,
619 137,213,65,141,190,233,255,232,251,1,28,137,252,234,252,233,244,1,255,72, 630 137,213,65,141,190,233,255,232,251,1,30,137,252,234,252,233,244,1,255,72,
620 252,247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233, 631 252,247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,
621 137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, 632 137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,
622 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129, 633 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,
623 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190, 634 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,
624 233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, 635 233,232,251,1,30,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,
625 65,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255, 636 65,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,
626 221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233, 637 221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,
627 137,65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 638 137,65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
628 238,255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137, 639 238,255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,
629 149,233,141,52,202,137,252,239,232,251,1,29,139,149,233,248,1,139,3,15,182, 640 149,233,141,52,202,137,252,239,232,251,1,31,139,149,233,248,1,139,3,15,182,
630 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247, 641 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,
631 208,139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137, 642 208,139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,
632 92,36,28,232,251,1,30,139,149,233,15,182,75,252,253,137,4,202,199,68,202, 643 92,36,28,232,251,1,32,139,149,233,15,182,75,252,253,137,4,202,199,68,202,
633 4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 644 4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
634 238,255,139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36, 645 238,255,139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,
635 28,15,131,244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255, 646 28,15,131,244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,
636 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,31,139,149,233,15, 647 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,33,139,149,233,15,
637 182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131, 648 182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,
638 195,4,193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248, 649 195,4,193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,
639 5,137,252,239,232,251,1,32,15,183,67,252,254,252,233,244,1,255,72,252,247, 650 5,137,252,239,232,251,1,34,15,183,67,252,254,252,233,244,1,255,72,252,247,
640 208,139,108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15, 651 208,139,108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,
641 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,33,139,149,233,15,182, 652 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,35,139,149,233,15,182,
642 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195, 653 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,
643 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,32,15,183, 654 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,34,15,183,
644 67,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248, 655 67,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,
645 139,173,233,65,139,4,135,252,233,244,167,255,72,252,247,208,139,106,252,248, 656 139,173,233,65,139,4,135,252,233,244,169,255,72,252,247,208,139,106,252,248,
646 139,173,233,65,139,4,135,252,233,244,168,255,15,182,252,236,15,182,192,129, 657 139,173,233,65,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192,129,
647 124,253,252,234,4,239,15,133,244,38,139,44,252,234,255,129,124,253,194,4, 658 124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194,4,
648 239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255, 659 239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,
649 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, 660 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
650 15,133,244,38,255,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253, 661 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
651 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182, 662 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
652 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132, 663 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
653 244,249,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,252,253,248, 664 244,249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,75,252,253,248,
654 3,199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, 665 3,199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
655 38,139,4,194,252,233,244,167,255,15,182,252,236,15,182,192,72,252,247,208, 666 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208,
656 65,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,167, 667 65,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,
657 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, 668 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
658 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, 669 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
659 67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232, 670 67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232,
660 131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68, 671 131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68,
661 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139, 672 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
662 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244, 673 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
663 36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,37, 674 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,
664 139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4, 675 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,
665 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182, 676 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
666 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132, 677 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
667 244,249,139,141,233,252,246,129,233,235,15,132,244,37,255,15,182,75,252,253, 678 244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,75,252,253,
668 248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124, 679 248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,
669 253,252,234,4,239,15,133,244,41,139,44,252,234,255,15,133,244,41,255,59,133, 680 253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133,
670 233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, 681 233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
671 1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,3, 682 1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,3,
672 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131, 683 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,
673 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,41, 684 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42,
674 15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,41, 685 15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42,
675 139,4,194,252,233,244,168,248,7,128,165,233,235,65,139,142,233,65,137,174, 686 139,4,194,252,233,244,170,248,7,128,165,233,235,65,139,142,233,65,137,174,
676 233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,182, 687 233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,182,
677 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139, 688 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139,
678 44,252,234,248,168,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141, 689 44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,
679 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121, 690 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,
680 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248, 691 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,
681 3,15,182,67,252,253,72,139,44,194,72,137,41,139,3,15,182,204,15,182,232,131, 692 3,15,182,67,252,253,72,139,44,194,72,137,41,139,3,15,182,204,15,182,232,131,
682 195,4,193,232,16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137, 693 195,4,193,232,16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137,
683 12,36,139,141,233,252,246,129,233,235,15,132,244,39,139,12,36,252,233,244, 694 12,36,139,141,233,252,246,129,233,235,15,132,244,40,139,12,36,252,233,244,
684 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244, 695 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
685 252,252,246,129,233,235,15,132,244,39,248,6,137,4,36,199,68,36,4,237,137, 696 252,252,246,129,233,235,15,132,244,40,248,6,137,4,36,199,68,36,4,237,137,
686 108,36,8,139,124,36,24,137,151,233,72,141,20,36,137,252,238,137,252,253,137, 697 108,36,8,139,124,36,24,137,151,233,72,141,20,36,137,252,238,137,252,253,137,
687 92,36,28,232,251,1,34,139,149,233,139,108,36,8,137,193,252,233,244,2,248, 698 92,36,28,232,251,1,36,139,149,233,139,108,36,8,137,193,252,233,244,2,248,
688 7,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,3, 699 7,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,3,
689 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139, 700 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,
690 44,252,234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239, 701 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,
691 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202, 702 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
692 72,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 703 72,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
693 238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235, 704 238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
694 15,132,244,40,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139, 705 15,132,244,41,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139,
695 142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,68, 706 142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,68,
696 137,60,36,69,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233, 707 137,60,36,69,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,
697 235,15,133,244,253,248,2,139,68,36,4,131,232,1,15,132,244,250,68,1,252,248, 708 235,15,133,244,253,248,2,139,68,36,4,131,232,1,15,132,244,250,68,1,252,248,
@@ -699,12 +710,12 @@ static const unsigned char build_actionlist[16165] = {
699 139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139, 710 139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139,
700 60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 711 60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
701 238,248,5,139,124,36,24,137,151,233,137,252,238,137,194,137,252,253,137,92, 712 238,248,5,139,124,36,24,137,151,233,137,252,238,137,194,137,252,253,137,92,
702 36,28,232,251,1,35,139,149,233,15,182,75,252,253,252,233,244,1,248,7,255, 713 36,28,232,251,1,37,139,149,233,15,182,75,252,253,252,233,244,1,248,7,255,
703 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,2,255, 714 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,2,255,
704 3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8, 715 3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,59,141,84,202,8,
705 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65, 716 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,
706 252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,129,121,253, 717 252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,129,121,253,
707 252,252,239,15,133,244,29,248,59,139,90,252,252,252,247,195,237,15,133,244, 718 252,252,239,15,133,244,29,248,60,139,90,252,252,252,247,195,237,15,133,244,
708 253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139, 719 253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139,
709 41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248, 720 41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248,
710 248,3,139,68,36,4,128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15, 721 248,3,139,68,36,4,128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15,
@@ -752,19 +763,19 @@ static const unsigned char build_actionlist[16165] = {
752 65,199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192, 763 65,199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,
753 1,252,233,244,5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234, 764 1,252,233,244,5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,
754 255,1,252,233,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233, 765 255,1,252,233,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,
755 238,15,130,244,148,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255, 766 238,15,130,244,149,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,
756 129,121,253,12,239,15,133,244,60,129,121,253,20,239,15,133,244,60,139,41, 767 129,121,253,12,239,15,133,244,61,129,121,253,20,239,15,133,244,61,139,41,
757 131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,164,129,121, 768 131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,165,129,121,
758 253,20,239,15,133,244,164,255,139,105,16,133,252,237,15,136,244,251,3,41, 769 253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136,244,251,3,41,
759 15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244, 770 15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244,
760 253,248,1,248,6,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252, 771 253,248,1,248,6,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252,
761 254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,156,253,131,233,248, 772 254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,156,253,131,233,248,
762 1,255,248,7,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 773 1,255,248,7,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
763 252,238,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,255,141,156,253, 774 252,238,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,255,141,156,253,
764 131,233,15,183,67,252,254,15,141,245,255,15,140,244,7,255,252,233,244,6,248, 775 131,233,15,183,67,252,254,15,141,245,255,15,140,244,7,255,252,233,244,6,248,
765 9,255,129,121,253,4,239,255,15,131,244,60,129,121,253,12,239,15,131,244,60, 776 9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12,239,15,131,244,61,
766 255,129,121,253,12,239,15,131,244,164,129,121,253,20,239,15,131,244,164,255, 777 255,129,121,253,12,239,15,131,244,165,129,121,253,20,239,15,131,244,165,255,
767 139,105,20,255,129,252,253,239,15,131,244,60,255,252,242,15,16,1,252,242, 778 139,105,20,255,129,252,253,239,15,131,244,61,255,252,242,15,16,1,252,242,
768 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244, 779 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,
769 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221, 780 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,
770 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255, 781 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,
@@ -778,7 +789,7 @@ static const unsigned char build_actionlist[16165] = {
778 233,76,137,36,36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156, 789 233,76,137,36,36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,
779 253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 790 253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
780 252,238,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,238, 791 252,238,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,238,
781 15,130,244,150,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15, 792 15,130,244,151,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,
782 135,244,24,15,182,139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254, 793 135,244,24,15,182,139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,
783 252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244, 794 252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,
784 3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252, 795 3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252,
@@ -818,6 +829,7 @@ enum {
818 GLOB_vmeta_call, 829 GLOB_vmeta_call,
819 GLOB_vm_call_dispatch_f, 830 GLOB_vm_call_dispatch_f,
820 GLOB_vm_cpcall, 831 GLOB_vm_cpcall,
832 GLOB_cont_ffi_callback,
821 GLOB_vm_call_tail, 833 GLOB_vm_call_tail,
822 GLOB_cont_cat, 834 GLOB_cont_cat,
823 GLOB_cont_ra, 835 GLOB_cont_ra,
@@ -951,6 +963,7 @@ enum {
951 GLOB_vm_foldarith, 963 GLOB_vm_foldarith,
952 GLOB_vm_cpuid, 964 GLOB_vm_cpuid,
953 GLOB_assert_bad_for_arg_type, 965 GLOB_assert_bad_for_arg_type,
966 GLOB_vm_ffi_callback,
954 GLOB_vm_ffi_call, 967 GLOB_vm_ffi_call,
955 GLOB_BC_MODVN_Z, 968 GLOB_BC_MODVN_Z,
956 GLOB_BC_TGETS_Z, 969 GLOB_BC_TGETS_Z,
@@ -980,6 +993,7 @@ static const char *const globnames[] = {
980 "vmeta_call", 993 "vmeta_call",
981 "vm_call_dispatch_f", 994 "vm_call_dispatch_f",
982 "vm_cpcall", 995 "vm_cpcall",
996 "cont_ffi_callback",
983 "vm_call_tail", 997 "vm_call_tail",
984 "cont_cat", 998 "cont_cat",
985 "cont_ra", 999 "cont_ra",
@@ -1113,6 +1127,7 @@ static const char *const globnames[] = {
1113 "vm_foldarith", 1127 "vm_foldarith",
1114 "vm_cpuid", 1128 "vm_cpuid",
1115 "assert_bad_for_arg_type", 1129 "assert_bad_for_arg_type",
1130 "vm_ffi_callback",
1116 "vm_ffi_call@4", 1131 "vm_ffi_call@4",
1117 "BC_MODVN_Z", 1132 "BC_MODVN_Z",
1118 "BC_TGETS_Z", 1133 "BC_TGETS_Z",
@@ -1147,6 +1162,8 @@ static const char *const extnames[] = {
1147 "lj_trace_hot@8", 1162 "lj_trace_hot@8",
1148 "lj_dispatch_call@8", 1163 "lj_dispatch_call@8",
1149 "lj_trace_exit@8", 1164 "lj_trace_exit@8",
1165 "lj_ccallback_enter@8",
1166 "lj_ccallback_leave@8",
1150 "lj_meta_cat", 1167 "lj_meta_cat",
1151 "lj_gc_barrieruv@8", 1168 "lj_gc_barrieruv@8",
1152 "lj_func_closeuv@8", 1169 "lj_func_closeuv@8",
@@ -1187,667 +1204,686 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1187 dasm_put(Dst, 385, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); 1204 dasm_put(Dst, 385, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1188 dasm_put(Dst, 548, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1205 dasm_put(Dst, 548, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1189 dasm_put(Dst, 648, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); 1206 dasm_put(Dst, 648, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
1190 dasm_put(Dst, 819, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1207#if LJ_HASFFI
1191 dasm_put(Dst, 944); 1208 dasm_put(Dst, 813);
1209#endif
1210 dasm_put(Dst, 822, 0);
1211#if LJ_HASFFI
1212#endif
1213 dasm_put(Dst, 831, Dt7(->pc), PC2PROTO(k));
1214#if LJ_HASFFI
1215 dasm_put(Dst, 848);
1216#endif
1217 dasm_put(Dst, 869, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1192 if (LJ_DUALNUM) { 1218 if (LJ_DUALNUM) {
1193 dasm_put(Dst, 958, LJ_TISNUM); 1219 dasm_put(Dst, 967, LJ_TISNUM);
1194 } else if (sse) { 1220 } else if (sse) {
1195 dasm_put(Dst, 967); 1221 dasm_put(Dst, 976);
1196 } else { 1222 } else {
1197 } 1223 }
1198 dasm_put(Dst, 979, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1224 dasm_put(Dst, 988, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1199 dasm_put(Dst, 1125, DISPATCH_GL(tmptv), LJ_TTAB); 1225 dasm_put(Dst, 1134, DISPATCH_GL(tmptv), LJ_TTAB);
1200 if (LJ_DUALNUM) { 1226 if (LJ_DUALNUM) {
1201 dasm_put(Dst, 958, LJ_TISNUM); 1227 dasm_put(Dst, 967, LJ_TISNUM);
1202 } else if (sse) { 1228 } else if (sse) {
1203 dasm_put(Dst, 967); 1229 dasm_put(Dst, 976);
1204 } else { 1230 } else {
1205 } 1231 }
1206 dasm_put(Dst, 1149, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1232 dasm_put(Dst, 1158, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1207 dasm_put(Dst, 1321, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1233 dasm_put(Dst, 1330, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1208 dasm_put(Dst, 1420); 1234 dasm_put(Dst, 1429);
1209#if LJ_HASFFI 1235#if LJ_HASFFI
1210 dasm_put(Dst, 1440, Dt1(->base)); 1236 dasm_put(Dst, 1449, Dt1(->base));
1211#endif 1237#endif
1212 dasm_put(Dst, 1471); 1238 dasm_put(Dst, 1480);
1213#if LJ_DUALNUM 1239#if LJ_DUALNUM
1214 dasm_put(Dst, 1474); 1240 dasm_put(Dst, 1483);
1215#endif 1241#endif
1216 dasm_put(Dst, 1480); 1242 dasm_put(Dst, 1489);
1217#if LJ_DUALNUM 1243#if LJ_DUALNUM
1218 dasm_put(Dst, 952); 1244 dasm_put(Dst, 961);
1219#endif 1245#endif
1220 dasm_put(Dst, 1493); 1246 dasm_put(Dst, 1502);
1221#if LJ_DUALNUM 1247#if LJ_DUALNUM
1222 dasm_put(Dst, 1474); 1248 dasm_put(Dst, 1483);
1223#endif 1249#endif
1224 dasm_put(Dst, 1522, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); 1250 dasm_put(Dst, 1531, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
1225#ifdef LUAJIT_ENABLE_LUA52COMPAT 1251#ifdef LUAJIT_ENABLE_LUA52COMPAT
1226 dasm_put(Dst, 1624); 1252 dasm_put(Dst, 1633);
1227#else 1253#else
1228 dasm_put(Dst, 1643); 1254 dasm_put(Dst, 1652);
1229#endif 1255#endif
1230 dasm_put(Dst, 1648, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1256 dasm_put(Dst, 1657, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1231 dasm_put(Dst, 1834, 1+1, ~LJ_TNUMX); 1257 dasm_put(Dst, 1843, 1+1, ~LJ_TNUMX);
1232 if (cmov) { 1258 if (cmov) {
1233 dasm_put(Dst, 1903); 1259 dasm_put(Dst, 1912);
1234 } else { 1260 } else {
1235 dasm_put(Dst, 1907); 1261 dasm_put(Dst, 1916);
1236 } 1262 }
1237 dasm_put(Dst, 1916, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); 1263 dasm_put(Dst, 1925, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1238 dasm_put(Dst, 1995, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next)); 1264 dasm_put(Dst, 2004, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1239 dasm_put(Dst, 2053, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD); 1265 dasm_put(Dst, 2062, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
1240 dasm_put(Dst, 2119, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB); 1266 dasm_put(Dst, 2128, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
1241 dasm_put(Dst, 2190, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB); 1267 dasm_put(Dst, 2199, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
1242 dasm_put(Dst, 2280, 1+1, LJ_TISNUM); 1268 dasm_put(Dst, 2289, 1+1, LJ_TISNUM);
1243 if (LJ_DUALNUM) { 1269 if (LJ_DUALNUM) {
1244 dasm_put(Dst, 2294); 1270 dasm_put(Dst, 2303);
1245 } else { 1271 } else {
1246 dasm_put(Dst, 2311); 1272 dasm_put(Dst, 2320);
1247 } 1273 }
1248 if (sse) { 1274 if (sse) {
1249 dasm_put(Dst, 2316); 1275 dasm_put(Dst, 2325);
1250 } else { 1276 } else {
1251 dasm_put(Dst, 2326); 1277 dasm_put(Dst, 2335);
1252 } 1278 }
1253 dasm_put(Dst, 2333, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1279 dasm_put(Dst, 2342, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1254 dasm_put(Dst, 2402, Dt1(->base)); 1280 dasm_put(Dst, 2411, Dt1(->base));
1255 if (LJ_DUALNUM) { 1281 if (LJ_DUALNUM) {
1256 dasm_put(Dst, 2428); 1282 dasm_put(Dst, 2437);
1257 } else { 1283 } else {
1258 dasm_put(Dst, 2433); 1284 dasm_put(Dst, 2442);
1259 } 1285 }
1260 dasm_put(Dst, 2438, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); 1286 dasm_put(Dst, 2447, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1261 dasm_put(Dst, 2530, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1287 dasm_put(Dst, 2539, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1262#ifdef LUAJIT_ENABLE_LUA52COMPAT 1288#ifdef LUAJIT_ENABLE_LUA52COMPAT
1263 dasm_put(Dst, 2577, Dt6(->metatable)); 1289 dasm_put(Dst, 2586, Dt6(->metatable));
1264#endif 1290#endif
1265 dasm_put(Dst, 2586, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1291 dasm_put(Dst, 2595, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1266 if (LJ_DUALNUM) { 1292 if (LJ_DUALNUM) {
1267 dasm_put(Dst, 2572); 1293 dasm_put(Dst, 2581);
1268 } else { 1294 } else {
1269 dasm_put(Dst, 2311); 1295 dasm_put(Dst, 2320);
1270 } 1296 }
1271 dasm_put(Dst, 2641); 1297 dasm_put(Dst, 2650);
1272 if (LJ_DUALNUM) { 1298 if (LJ_DUALNUM) {
1273 dasm_put(Dst, 2646, LJ_TISNUM); 1299 dasm_put(Dst, 2655, LJ_TISNUM);
1274 } else if (sse) { 1300 } else if (sse) {
1275 dasm_put(Dst, 2662, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1301 dasm_put(Dst, 2671, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1276 } else { 1302 } else {
1277 } 1303 }
1278 dasm_put(Dst, 2695, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1304 dasm_put(Dst, 2704, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1279 dasm_put(Dst, 2557, 1+1, LJ_TTAB); 1305 dasm_put(Dst, 2566, 1+1, LJ_TTAB);
1280#ifdef LUAJIT_ENABLE_LUA52COMPAT 1306#ifdef LUAJIT_ENABLE_LUA52COMPAT
1281 dasm_put(Dst, 2577, Dt6(->metatable)); 1307 dasm_put(Dst, 2586, Dt6(->metatable));
1282#endif 1308#endif
1283 dasm_put(Dst, 2772, Dt8(->upvalue[0]), LJ_TFUNC); 1309 dasm_put(Dst, 2781, Dt8(->upvalue[0]), LJ_TFUNC);
1284 if (LJ_DUALNUM) { 1310 if (LJ_DUALNUM) {
1285 dasm_put(Dst, 2793, LJ_TISNUM); 1311 dasm_put(Dst, 2802, LJ_TISNUM);
1286 } else if (sse) { 1312 } else if (sse) {
1287 dasm_put(Dst, 2805); 1313 dasm_put(Dst, 2814);
1288 } else { 1314 } else {
1289 dasm_put(Dst, 2815); 1315 dasm_put(Dst, 2824);
1290 } 1316 }
1291 dasm_put(Dst, 2822, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1317 dasm_put(Dst, 2831, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1292 dasm_put(Dst, 2887, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1318 dasm_put(Dst, 2896, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1293 dasm_put(Dst, 2976, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1319 dasm_put(Dst, 2985, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1294 dasm_put(Dst, 3063, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1320 dasm_put(Dst, 3072, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1295 dasm_put(Dst, 3178, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1321 dasm_put(Dst, 3187, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1296 dasm_put(Dst, 3273, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1322 dasm_put(Dst, 3282, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1297 dasm_put(Dst, 3339, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1323 dasm_put(Dst, 3348, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1298 dasm_put(Dst, 3428, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1324 dasm_put(Dst, 3437, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1299 dasm_put(Dst, 3538, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1325 dasm_put(Dst, 3547, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1300 if (!LJ_DUALNUM) { 1326 if (!LJ_DUALNUM) {
1301 dasm_put(Dst, 3565); 1327 dasm_put(Dst, 3574);
1302 } 1328 }
1303 if (sse) { 1329 if (sse) {
1304 dasm_put(Dst, 3568); 1330 dasm_put(Dst, 3577);
1305 } 1331 }
1306 dasm_put(Dst, 3583, 1+1); 1332 dasm_put(Dst, 3592, 1+1);
1307 if (LJ_DUALNUM) { 1333 if (LJ_DUALNUM) {
1308 dasm_put(Dst, 3594, LJ_TISNUM, LJ_TISNUM); 1334 dasm_put(Dst, 3603, LJ_TISNUM, LJ_TISNUM);
1309 } else { 1335 } else {
1310 dasm_put(Dst, 3674, LJ_TISNUM); 1336 dasm_put(Dst, 3683, LJ_TISNUM);
1311 } 1337 }
1312 if (sse) { 1338 if (sse) {
1313 dasm_put(Dst, 3684, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1339 dasm_put(Dst, 3693, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1314 } else { 1340 } else {
1315 dasm_put(Dst, 3715); 1341 dasm_put(Dst, 3724);
1316 } 1342 }
1317 dasm_put(Dst, 3732, 1+1, FRAME_TYPE, LJ_TNIL); 1343 dasm_put(Dst, 3741, 1+1, FRAME_TYPE, LJ_TNIL);
1318 if (LJ_DUALNUM) { 1344 if (LJ_DUALNUM) {
1319 dasm_put(Dst, 3829, LJ_TISNUM); 1345 dasm_put(Dst, 3838, LJ_TISNUM);
1320 } else { 1346 } else {
1321 dasm_put(Dst, 3674, LJ_TISNUM); 1347 dasm_put(Dst, 3683, LJ_TISNUM);
1322 } 1348 }
1323 if (sse) { 1349 if (sse) {
1324 dasm_put(Dst, 3851);
1325 if (LJ_DUALNUM) {
1326 dasm_put(Dst, 3860); 1350 dasm_put(Dst, 3860);
1351 if (LJ_DUALNUM) {
1352 dasm_put(Dst, 3869);
1327 } 1353 }
1328 dasm_put(Dst, 2321); 1354 dasm_put(Dst, 2330);
1329 } else { 1355 } else {
1330 dasm_put(Dst, 3894); 1356 dasm_put(Dst, 3903);
1331 if (LJ_DUALNUM) { 1357 if (LJ_DUALNUM) {
1332 } else { 1358 } else {
1333 dasm_put(Dst, 2328); 1359 dasm_put(Dst, 2337);
1334 } 1360 }
1335 } 1361 }
1336 dasm_put(Dst, 3900); 1362 dasm_put(Dst, 3909);
1337 if (LJ_DUALNUM) { 1363 if (LJ_DUALNUM) {
1338 dasm_put(Dst, 3829, LJ_TISNUM); 1364 dasm_put(Dst, 3838, LJ_TISNUM);
1339 } else { 1365 } else {
1340 dasm_put(Dst, 3674, LJ_TISNUM); 1366 dasm_put(Dst, 3683, LJ_TISNUM);
1341 } 1367 }
1342 if (sse) { 1368 if (sse) {
1343 dasm_put(Dst, 3903); 1369 dasm_put(Dst, 3912);
1344 if (LJ_DUALNUM) { 1370 if (LJ_DUALNUM) {
1345 dasm_put(Dst, 3860); 1371 dasm_put(Dst, 3869);
1346 } 1372 }
1347 dasm_put(Dst, 2321); 1373 dasm_put(Dst, 2330);
1348 } else { 1374 } else {
1349 dasm_put(Dst, 3912); 1375 dasm_put(Dst, 3921);
1350 if (LJ_DUALNUM) { 1376 if (LJ_DUALNUM) {
1351 } else { 1377 } else {
1352 dasm_put(Dst, 2328); 1378 dasm_put(Dst, 2337);
1353 } 1379 }
1354 } 1380 }
1355 if (sse) { 1381 if (sse) {
1356 dasm_put(Dst, 3918, 1+1, LJ_TISNUM); 1382 dasm_put(Dst, 3927, 1+1, LJ_TISNUM);
1357 } else { 1383 } else {
1358 dasm_put(Dst, 3947, 1+1, LJ_TISNUM); 1384 dasm_put(Dst, 3956, 1+1, LJ_TISNUM);
1359 } 1385 }
1360 dasm_put(Dst, 3976, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1386 dasm_put(Dst, 3985, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1361 dasm_put(Dst, 4045, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1387 dasm_put(Dst, 4054, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1362 dasm_put(Dst, 4102, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1388 dasm_put(Dst, 4111, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1363 dasm_put(Dst, 4165, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1389 dasm_put(Dst, 4174, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1364 dasm_put(Dst, 4255); 1390 dasm_put(Dst, 4264);
1365 if (sse) { 1391 if (sse) {
1366 dasm_put(Dst, 4267, 1+1, LJ_TISNUM); 1392 dasm_put(Dst, 4276, 1+1, LJ_TISNUM);
1367 } else { 1393 } else {
1368 } 1394 }
1369 dasm_put(Dst, 4292); 1395 dasm_put(Dst, 4301);
1370 if (sse) { 1396 if (sse) {
1371 dasm_put(Dst, 4306, 1+1, LJ_TISNUM); 1397 dasm_put(Dst, 4315, 1+1, LJ_TISNUM);
1372 } else { 1398 } else {
1373 } 1399 }
1374 dasm_put(Dst, 4331); 1400 dasm_put(Dst, 4340);
1375 if (sse) { 1401 if (sse) {
1376 dasm_put(Dst, 4345, 1+1, LJ_TISNUM); 1402 dasm_put(Dst, 4354, 1+1, LJ_TISNUM);
1377 } else { 1403 } else {
1378 } 1404 }
1379 dasm_put(Dst, 4370); 1405 dasm_put(Dst, 4379);
1380 if (sse) { 1406 if (sse) {
1381 dasm_put(Dst, 4386, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1407 dasm_put(Dst, 4395, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1382 } else { 1408 } else {
1383 dasm_put(Dst, 4425, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1409 dasm_put(Dst, 4434, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1384 } 1410 }
1385 dasm_put(Dst, 4458, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1411 dasm_put(Dst, 4467, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1386 dasm_put(Dst, 4523, 1+1, LJ_TISNUM); 1412 dasm_put(Dst, 4532, 1+1, LJ_TISNUM);
1387 if (sse) { 1413 if (sse) {
1388 dasm_put(Dst, 4622); 1414 dasm_put(Dst, 4631);
1389 } else { 1415 } else {
1390 dasm_put(Dst, 4628); 1416 dasm_put(Dst, 4637);
1391 } 1417 }
1392 dasm_put(Dst, 4635); 1418 dasm_put(Dst, 4644);
1393 if (sse) { 1419 if (sse) {
1394 dasm_put(Dst, 4660); 1420 dasm_put(Dst, 4669);
1395 } else { 1421 } else {
1396 dasm_put(Dst, 4666); 1422 dasm_put(Dst, 4675);
1397 } 1423 }
1398 dasm_put(Dst, 4669, 1+2); 1424 dasm_put(Dst, 4678, 1+2);
1399 if (sse) { 1425 if (sse) {
1400 dasm_put(Dst, 4678); 1426 dasm_put(Dst, 4687);
1401 } else { 1427 } else {
1402 dasm_put(Dst, 4686); 1428 dasm_put(Dst, 4695);
1403 } 1429 }
1404 dasm_put(Dst, 4694); 1430 dasm_put(Dst, 4703);
1405 if (sse) { 1431 if (sse) {
1406 dasm_put(Dst, 4697, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1432 dasm_put(Dst, 4706, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1407 } else { 1433 } else {
1408 dasm_put(Dst, 4724); 1434 dasm_put(Dst, 4733);
1409 } 1435 }
1410 dasm_put(Dst, 4741); 1436 dasm_put(Dst, 4750);
1411 if (sse) { 1437 if (sse) {
1412 dasm_put(Dst, 4757, 1+1, LJ_TISNUM); 1438 dasm_put(Dst, 4766, 1+1, LJ_TISNUM);
1413 } else { 1439 } else {
1414 dasm_put(Dst, 4782, 1+1, LJ_TISNUM); 1440 dasm_put(Dst, 4791, 1+1, LJ_TISNUM);
1415 } 1441 }
1416 dasm_put(Dst, 4804); 1442 dasm_put(Dst, 4813);
1417 if (sse) { 1443 if (sse) {
1418 dasm_put(Dst, 4826); 1444 dasm_put(Dst, 4835);
1419 } else { 1445 } else {
1420 dasm_put(Dst, 4852); 1446 dasm_put(Dst, 4861);
1421 } 1447 }
1422 dasm_put(Dst, 4869, 1+2); 1448 dasm_put(Dst, 4878, 1+2);
1423 if (sse) { 1449 if (sse) {
1424 dasm_put(Dst, 4909); 1450 dasm_put(Dst, 4918);
1425 } else { 1451 } else {
1426 dasm_put(Dst, 4917); 1452 dasm_put(Dst, 4926);
1427 } 1453 }
1428 dasm_put(Dst, 4927, 2+1, LJ_TISNUM, LJ_TISNUM); 1454 dasm_put(Dst, 4936, 2+1, LJ_TISNUM, LJ_TISNUM);
1429 if (sse) { 1455 if (sse) {
1430 dasm_put(Dst, 4979, 2+1, LJ_TISNUM, LJ_TISNUM); 1456 dasm_put(Dst, 4988, 2+1, LJ_TISNUM, LJ_TISNUM);
1431 } else { 1457 } else {
1432 dasm_put(Dst, 5026, 2+1, LJ_TISNUM, LJ_TISNUM); 1458 dasm_put(Dst, 5035, 2+1, LJ_TISNUM, LJ_TISNUM);
1433 } 1459 }
1434 dasm_put(Dst, 5067, LJ_TISNUM); 1460 dasm_put(Dst, 5076, LJ_TISNUM);
1435 if (LJ_DUALNUM) { 1461 if (LJ_DUALNUM) {
1436 dasm_put(Dst, 5080, LJ_TISNUM); 1462 dasm_put(Dst, 5089, LJ_TISNUM);
1437 if (sse) { 1463 if (sse) {
1438 dasm_put(Dst, 4622); 1464 dasm_put(Dst, 4631);
1439 } else { 1465 } else {
1440 } 1466 }
1441 dasm_put(Dst, 5130); 1467 dasm_put(Dst, 5139);
1442 } else { 1468 } else {
1443 dasm_put(Dst, 2311); 1469 dasm_put(Dst, 2320);
1444 } 1470 }
1445 if (sse) { 1471 if (sse) {
1446 dasm_put(Dst, 5141, LJ_TISNUM); 1472 dasm_put(Dst, 5150, LJ_TISNUM);
1447 if (LJ_DUALNUM) { 1473 if (LJ_DUALNUM) {
1448 dasm_put(Dst, 5162); 1474 dasm_put(Dst, 5171);
1449 } else { 1475 } else {
1450 dasm_put(Dst, 2311); 1476 dasm_put(Dst, 2320);
1451 } 1477 }
1452 dasm_put(Dst, 5183); 1478 dasm_put(Dst, 5192);
1453 } else { 1479 } else {
1454 } 1480 }
1455 dasm_put(Dst, 5208, LJ_TISNUM); 1481 dasm_put(Dst, 5217, LJ_TISNUM);
1456 if (LJ_DUALNUM) { 1482 if (LJ_DUALNUM) {
1457 dasm_put(Dst, 5221, LJ_TISNUM); 1483 dasm_put(Dst, 5230, LJ_TISNUM);
1458 if (sse) { 1484 if (sse) {
1459 dasm_put(Dst, 4622); 1485 dasm_put(Dst, 4631);
1460 } else { 1486 } else {
1461 } 1487 }
1462 dasm_put(Dst, 5130); 1488 dasm_put(Dst, 5139);
1463 } else { 1489 } else {
1464 dasm_put(Dst, 2311); 1490 dasm_put(Dst, 2320);
1465 } 1491 }
1466 if (sse) { 1492 if (sse) {
1467 dasm_put(Dst, 5141, LJ_TISNUM); 1493 dasm_put(Dst, 5150, LJ_TISNUM);
1468 if (LJ_DUALNUM) { 1494 if (LJ_DUALNUM) {
1469 dasm_put(Dst, 5162); 1495 dasm_put(Dst, 5171);
1470 } else { 1496 } else {
1471 dasm_put(Dst, 2311); 1497 dasm_put(Dst, 2320);
1472 } 1498 }
1473 dasm_put(Dst, 5271); 1499 dasm_put(Dst, 5280);
1474 } else { 1500 } else {
1475 } 1501 }
1476 if (!sse) { 1502 if (!sse) {
1477 dasm_put(Dst, 5296); 1503 dasm_put(Dst, 5305);
1478 } 1504 }
1479 dasm_put(Dst, 5305, 1+1, LJ_TSTR); 1505 dasm_put(Dst, 5314, 1+1, LJ_TSTR);
1480 if (LJ_DUALNUM) { 1506 if (LJ_DUALNUM) {
1481 dasm_put(Dst, 5327, Dt5(->len)); 1507 dasm_put(Dst, 5336, Dt5(->len));
1482 } else if (sse) { 1508 } else if (sse) {
1483 dasm_put(Dst, 5335, Dt5(->len)); 1509 dasm_put(Dst, 5344, Dt5(->len));
1484 } else { 1510 } else {
1485 dasm_put(Dst, 5346, Dt5(->len)); 1511 dasm_put(Dst, 5355, Dt5(->len));
1486 } 1512 }
1487 dasm_put(Dst, 5354, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1513 dasm_put(Dst, 5363, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1488 if (LJ_DUALNUM) { 1514 if (LJ_DUALNUM) {
1489 dasm_put(Dst, 5330); 1515 dasm_put(Dst, 5339);
1490 } else if (sse) { 1516 } else if (sse) {
1491 dasm_put(Dst, 5392); 1517 dasm_put(Dst, 5401);
1492 } else { 1518 } else {
1493 dasm_put(Dst, 5402); 1519 dasm_put(Dst, 5411);
1494 } 1520 }
1495 dasm_put(Dst, 5413, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1521 dasm_put(Dst, 5422, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1496 if (LJ_DUALNUM) { 1522 if (LJ_DUALNUM) {
1497 dasm_put(Dst, 5446); 1523 dasm_put(Dst, 5455);
1498 } else if (sse) { 1524 } else if (sse) {
1499 dasm_put(Dst, 5469); 1525 dasm_put(Dst, 5478);
1500 } else { 1526 } else {
1501 dasm_put(Dst, 5495); 1527 dasm_put(Dst, 5504);
1502 } 1528 }
1503 dasm_put(Dst, 5519, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1529 dasm_put(Dst, 5528, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1504 if (LJ_DUALNUM) { 1530 if (LJ_DUALNUM) {
1505 dasm_put(Dst, 5628); 1531 dasm_put(Dst, 5637);
1506 } else if (sse) { 1532 } else if (sse) {
1507 dasm_put(Dst, 5640); 1533 dasm_put(Dst, 5649);
1508 } else { 1534 } else {
1509 dasm_put(Dst, 5655); 1535 dasm_put(Dst, 5664);
1510 } 1536 }
1511 dasm_put(Dst, 5667, LJ_TSTR, LJ_TISNUM); 1537 dasm_put(Dst, 5676, LJ_TSTR, LJ_TISNUM);
1512 if (LJ_DUALNUM) { 1538 if (LJ_DUALNUM) {
1513 dasm_put(Dst, 2572); 1539 dasm_put(Dst, 2581);
1514 } else { 1540 } else {
1515 dasm_put(Dst, 2311); 1541 dasm_put(Dst, 2320);
1516 } 1542 }
1517 dasm_put(Dst, 5684, Dt5(->len)); 1543 dasm_put(Dst, 5693, Dt5(->len));
1518 if (LJ_DUALNUM) { 1544 if (LJ_DUALNUM) {
1519 dasm_put(Dst, 5694); 1545 dasm_put(Dst, 5703);
1520 } else if (sse) { 1546 } else if (sse) {
1521 dasm_put(Dst, 5698); 1547 dasm_put(Dst, 5707);
1522 } else { 1548 } else {
1523 } 1549 }
1524 dasm_put(Dst, 5705, sizeof(GCstr)-1); 1550 dasm_put(Dst, 5714, sizeof(GCstr)-1);
1525 dasm_put(Dst, 5780, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1551 dasm_put(Dst, 5789, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1526 dasm_put(Dst, 5841, LJ_TSTR, LJ_TISNUM); 1552 dasm_put(Dst, 5850, LJ_TSTR, LJ_TISNUM);
1527 if (LJ_DUALNUM) { 1553 if (LJ_DUALNUM) {
1528 dasm_put(Dst, 5858); 1554 dasm_put(Dst, 5867);
1529 } else if (sse) { 1555 } else if (sse) {
1530 dasm_put(Dst, 5866); 1556 dasm_put(Dst, 5875);
1531 } else { 1557 } else {
1532 dasm_put(Dst, 5877); 1558 dasm_put(Dst, 5886);
1533 } 1559 }
1534 dasm_put(Dst, 5893, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1560 dasm_put(Dst, 5902, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1535 dasm_put(Dst, 5961, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1561 dasm_put(Dst, 5970, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1536 dasm_put(Dst, 6028, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1562 dasm_put(Dst, 6037, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1537 dasm_put(Dst, 6101, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1563 dasm_put(Dst, 6110, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1538 dasm_put(Dst, 6186, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1564 dasm_put(Dst, 6195, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1539 dasm_put(Dst, 6260, 1+1, LJ_TTAB); 1565 dasm_put(Dst, 6269, 1+1, LJ_TTAB);
1540 if (LJ_DUALNUM) { 1566 if (LJ_DUALNUM) {
1541 dasm_put(Dst, 6327); 1567 dasm_put(Dst, 6336);
1542 } else if (sse) { 1568 } else if (sse) {
1543 dasm_put(Dst, 6334); 1569 dasm_put(Dst, 6343);
1544 } else { 1570 } else {
1545 } 1571 }
1546 dasm_put(Dst, 6344, 1+1, LJ_TISNUM); 1572 dasm_put(Dst, 6353, 1+1, LJ_TISNUM);
1547 if (LJ_DUALNUM) { 1573 if (LJ_DUALNUM) {
1548 dasm_put(Dst, 6360); 1574 dasm_put(Dst, 6369);
1549 } else { 1575 } else {
1550 dasm_put(Dst, 2311); 1576 dasm_put(Dst, 2320);
1551 } 1577 }
1552 if (sse) { 1578 if (sse) {
1553 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1579 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1554 } else { 1580 } else {
1555 } 1581 }
1556 dasm_put(Dst, 106); 1582 dasm_put(Dst, 106);
1557 if (LJ_DUALNUM || sse) { 1583 if (LJ_DUALNUM || sse) {
1558 if (!sse) { 1584 if (!sse) {
1559 } 1585 }
1560 dasm_put(Dst, 6401); 1586 dasm_put(Dst, 6410);
1561 } else { 1587 } else {
1562 } 1588 }
1563 dasm_put(Dst, 6406, 1+1); 1589 dasm_put(Dst, 6415, 1+1);
1564 if (sse) { 1590 if (sse) {
1565 dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1591 dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1566 } else { 1592 } else {
1567 dasm_put(Dst, 6427); 1593 dasm_put(Dst, 6436);
1568 } 1594 }
1569 dasm_put(Dst, 2288, LJ_TISNUM); 1595 dasm_put(Dst, 2297, LJ_TISNUM);
1570 if (LJ_DUALNUM) { 1596 if (LJ_DUALNUM) {
1571 dasm_put(Dst, 6435); 1597 dasm_put(Dst, 6444);
1572 } else { 1598 } else {
1573 dasm_put(Dst, 2311); 1599 dasm_put(Dst, 2320);
1574 } 1600 }
1575 if (sse) { 1601 if (sse) {
1576 dasm_put(Dst, 6452); 1602 dasm_put(Dst, 6461);
1577 } else { 1603 } else {
1578 } 1604 }
1579 dasm_put(Dst, 6467, LJ_TISNUM); 1605 dasm_put(Dst, 6476, LJ_TISNUM);
1580 if (LJ_DUALNUM) { 1606 if (LJ_DUALNUM) {
1581 dasm_put(Dst, 6492); 1607 dasm_put(Dst, 6501);
1582 } else { 1608 } else {
1583 dasm_put(Dst, 6512); 1609 dasm_put(Dst, 6521);
1584 } 1610 }
1585 if (sse) { 1611 if (sse) {
1586 dasm_put(Dst, 6517); 1612 dasm_put(Dst, 6526);
1587 } else { 1613 } else {
1588 } 1614 }
1589 dasm_put(Dst, 6534, 1+1); 1615 dasm_put(Dst, 6543, 1+1);
1590 if (sse) { 1616 if (sse) {
1591 dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1617 dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1592 } else { 1618 } else {
1593 dasm_put(Dst, 6427); 1619 dasm_put(Dst, 6436);
1594 } 1620 }
1595 dasm_put(Dst, 2288, LJ_TISNUM); 1621 dasm_put(Dst, 2297, LJ_TISNUM);
1596 if (LJ_DUALNUM) { 1622 if (LJ_DUALNUM) {
1597 dasm_put(Dst, 6435); 1623 dasm_put(Dst, 6444);
1598 } else { 1624 } else {
1599 dasm_put(Dst, 2311); 1625 dasm_put(Dst, 2320);
1600 } 1626 }
1601 if (sse) { 1627 if (sse) {
1602 dasm_put(Dst, 6452); 1628 dasm_put(Dst, 6461);
1603 } else { 1629 } else {
1604 } 1630 }
1605 dasm_put(Dst, 6467, LJ_TISNUM); 1631 dasm_put(Dst, 6476, LJ_TISNUM);
1606 if (LJ_DUALNUM) { 1632 if (LJ_DUALNUM) {
1607 dasm_put(Dst, 6552); 1633 dasm_put(Dst, 6561);
1608 } else { 1634 } else {
1609 dasm_put(Dst, 6512); 1635 dasm_put(Dst, 6521);
1610 } 1636 }
1611 if (sse) { 1637 if (sse) {
1612 dasm_put(Dst, 6572); 1638 dasm_put(Dst, 6581);
1613 } else { 1639 } else {
1614 } 1640 }
1615 dasm_put(Dst, 6589, 1+1); 1641 dasm_put(Dst, 6598, 1+1);
1616 if (sse) { 1642 if (sse) {
1617 dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1643 dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1618 } else { 1644 } else {
1619 dasm_put(Dst, 6427); 1645 dasm_put(Dst, 6436);
1620 } 1646 }
1621 dasm_put(Dst, 2288, LJ_TISNUM); 1647 dasm_put(Dst, 2297, LJ_TISNUM);
1622 if (LJ_DUALNUM) { 1648 if (LJ_DUALNUM) {
1623 dasm_put(Dst, 6435); 1649 dasm_put(Dst, 6444);
1624 } else { 1650 } else {
1625 dasm_put(Dst, 2311); 1651 dasm_put(Dst, 2320);
1626 } 1652 }
1627 if (sse) { 1653 if (sse) {
1628 dasm_put(Dst, 6452); 1654 dasm_put(Dst, 6461);
1629 } else { 1655 } else {
1630 } 1656 }
1631 dasm_put(Dst, 6467, LJ_TISNUM); 1657 dasm_put(Dst, 6476, LJ_TISNUM);
1632 if (LJ_DUALNUM) { 1658 if (LJ_DUALNUM) {
1633 dasm_put(Dst, 6607); 1659 dasm_put(Dst, 6616);
1634 } else { 1660 } else {
1635 dasm_put(Dst, 6512); 1661 dasm_put(Dst, 6521);
1636 } 1662 }
1637 if (sse) { 1663 if (sse) {
1638 dasm_put(Dst, 6627); 1664 dasm_put(Dst, 6636);
1639 } else { 1665 } else {
1640 } 1666 }
1641 dasm_put(Dst, 6644, 1+1, LJ_TISNUM); 1667 dasm_put(Dst, 6653, 1+1, LJ_TISNUM);
1642 if (LJ_DUALNUM) { 1668 if (LJ_DUALNUM) {
1643 dasm_put(Dst, 6435); 1669 dasm_put(Dst, 6444);
1644 } else { 1670 } else {
1645 dasm_put(Dst, 2311); 1671 dasm_put(Dst, 2320);
1646 } 1672 }
1647 if (sse) { 1673 if (sse) {
1648 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1674 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1649 } else { 1675 } else {
1650 } 1676 }
1651 dasm_put(Dst, 6667, 1+1, LJ_TISNUM); 1677 dasm_put(Dst, 6676, 1+1, LJ_TISNUM);
1652 if (LJ_DUALNUM) { 1678 if (LJ_DUALNUM) {
1653 dasm_put(Dst, 6435); 1679 dasm_put(Dst, 6444);
1654 } else { 1680 } else {
1655 dasm_put(Dst, 2311); 1681 dasm_put(Dst, 2320);
1656 } 1682 }
1657 if (sse) { 1683 if (sse) {
1658 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1684 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1659 } else { 1685 } else {
1660 } 1686 }
1661 dasm_put(Dst, 6691); 1687 dasm_put(Dst, 6700);
1662 if (LJ_DUALNUM) { 1688 if (LJ_DUALNUM) {
1663 dasm_put(Dst, 6401); 1689 dasm_put(Dst, 6410);
1664 } else if (sse) { 1690 } else if (sse) {
1665 dasm_put(Dst, 6697); 1691 dasm_put(Dst, 6706);
1666 } else { 1692 } else {
1667 } 1693 }
1668 dasm_put(Dst, 6709); 1694 dasm_put(Dst, 6718);
1669 if (LJ_DUALNUM) { 1695 if (LJ_DUALNUM) {
1670 dasm_put(Dst, 6720, 1+1, LJ_TISNUM); 1696 dasm_put(Dst, 6729, 1+1, LJ_TISNUM);
1671 if (LJ_DUALNUM) { 1697 if (LJ_DUALNUM) {
1672 dasm_put(Dst, 6435); 1698 dasm_put(Dst, 6444);
1673 } else { 1699 } else {
1674 dasm_put(Dst, 2311); 1700 dasm_put(Dst, 2320);
1675 } 1701 }
1676 if (sse) { 1702 if (sse) {
1677 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1703 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1678 } else { 1704 } else {
1679 } 1705 }
1680 dasm_put(Dst, 6736, LJ_TISNUM); 1706 dasm_put(Dst, 6745, LJ_TISNUM);
1681 } else if (sse) { 1707 } else if (sse) {
1682 dasm_put(Dst, 6751, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1708 dasm_put(Dst, 6760, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1683 } else { 1709 } else {
1684 } 1710 }
1685 dasm_put(Dst, 6818); 1711 dasm_put(Dst, 6827);
1686 if (LJ_DUALNUM) { 1712 if (LJ_DUALNUM) {
1687 dasm_put(Dst, 6825, 1+1, LJ_TISNUM); 1713 dasm_put(Dst, 6834, 1+1, LJ_TISNUM);
1688 if (LJ_DUALNUM) { 1714 if (LJ_DUALNUM) {
1689 dasm_put(Dst, 6435); 1715 dasm_put(Dst, 6444);
1690 } else { 1716 } else {
1691 dasm_put(Dst, 2311); 1717 dasm_put(Dst, 2320);
1692 } 1718 }
1693 if (sse) { 1719 if (sse) {
1694 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1720 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1695 } else { 1721 } else {
1696 } 1722 }
1697 dasm_put(Dst, 6736, LJ_TISNUM); 1723 dasm_put(Dst, 6745, LJ_TISNUM);
1698 } else if (sse) { 1724 } else if (sse) {
1699 dasm_put(Dst, 6841, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1725 dasm_put(Dst, 6850, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1700 } else { 1726 } else {
1701 } 1727 }
1702 dasm_put(Dst, 6908); 1728 dasm_put(Dst, 6917);
1703 if (LJ_DUALNUM) { 1729 if (LJ_DUALNUM) {
1704 dasm_put(Dst, 6916, 1+1, LJ_TISNUM); 1730 dasm_put(Dst, 6925, 1+1, LJ_TISNUM);
1705 if (LJ_DUALNUM) { 1731 if (LJ_DUALNUM) {
1706 dasm_put(Dst, 6435); 1732 dasm_put(Dst, 6444);
1707 } else { 1733 } else {
1708 dasm_put(Dst, 2311); 1734 dasm_put(Dst, 2320);
1709 } 1735 }
1710 if (sse) { 1736 if (sse) {
1711 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1737 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1712 } else { 1738 } else {
1713 } 1739 }
1714 dasm_put(Dst, 6736, LJ_TISNUM); 1740 dasm_put(Dst, 6745, LJ_TISNUM);
1715 } else if (sse) { 1741 } else if (sse) {
1716 dasm_put(Dst, 6932, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1742 dasm_put(Dst, 6941, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1717 } else { 1743 } else {
1718 } 1744 }
1719 dasm_put(Dst, 6999); 1745 dasm_put(Dst, 7008);
1720 if (LJ_DUALNUM) { 1746 if (LJ_DUALNUM) {
1721 dasm_put(Dst, 7007, 1+1, LJ_TISNUM); 1747 dasm_put(Dst, 7016, 1+1, LJ_TISNUM);
1722 if (LJ_DUALNUM) { 1748 if (LJ_DUALNUM) {
1723 dasm_put(Dst, 6435); 1749 dasm_put(Dst, 6444);
1724 } else { 1750 } else {
1725 dasm_put(Dst, 2311); 1751 dasm_put(Dst, 2320);
1726 } 1752 }
1727 if (sse) { 1753 if (sse) {
1728 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1754 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1729 } else { 1755 } else {
1730 } 1756 }
1731 dasm_put(Dst, 6736, LJ_TISNUM); 1757 dasm_put(Dst, 6745, LJ_TISNUM);
1732 } else if (sse) { 1758 } else if (sse) {
1733 dasm_put(Dst, 7023, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1759 dasm_put(Dst, 7032, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1734 } else { 1760 } else {
1735 } 1761 }
1736 dasm_put(Dst, 7090); 1762 dasm_put(Dst, 7099);
1737 if (LJ_DUALNUM) { 1763 if (LJ_DUALNUM) {
1738 dasm_put(Dst, 7097, 1+1, LJ_TISNUM); 1764 dasm_put(Dst, 7106, 1+1, LJ_TISNUM);
1739 if (LJ_DUALNUM) { 1765 if (LJ_DUALNUM) {
1740 dasm_put(Dst, 6435); 1766 dasm_put(Dst, 6444);
1741 } else { 1767 } else {
1742 dasm_put(Dst, 2311); 1768 dasm_put(Dst, 2320);
1743 } 1769 }
1744 if (sse) { 1770 if (sse) {
1745 dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1771 dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1746 } else { 1772 } else {
1747 } 1773 }
1748 dasm_put(Dst, 6736, LJ_TISNUM); 1774 dasm_put(Dst, 6745, LJ_TISNUM);
1749 } else if (sse) { 1775 } else if (sse) {
1750 dasm_put(Dst, 7113, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1776 dasm_put(Dst, 7122, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1751 } else { 1777 } else {
1752 } 1778 }
1753 dasm_put(Dst, 7180, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1779 dasm_put(Dst, 7189, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1754 dasm_put(Dst, 7256, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1780 dasm_put(Dst, 7265, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1755 dasm_put(Dst, 7383, Dt1(->top), Dt1(->base), Dt1(->top)); 1781 dasm_put(Dst, 7392, Dt1(->top), Dt1(->base), Dt1(->top));
1756#if LJ_HASJIT 1782#if LJ_HASJIT
1757 dasm_put(Dst, 7422, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1783 dasm_put(Dst, 7431, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1758#endif 1784#endif
1759 dasm_put(Dst, 7455, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1785 dasm_put(Dst, 7464, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1760 dasm_put(Dst, 7509, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1786 dasm_put(Dst, 7518, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1761#if LJ_HASJIT 1787#if LJ_HASJIT
1762 dasm_put(Dst, 7576, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1788 dasm_put(Dst, 7585, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1763#endif 1789#endif
1764 dasm_put(Dst, 7623); 1790 dasm_put(Dst, 7632);
1765#if LJ_HASJIT 1791#if LJ_HASJIT
1766 dasm_put(Dst, 7450); 1792 dasm_put(Dst, 7459);
1767#endif 1793#endif
1768 dasm_put(Dst, 7630); 1794 dasm_put(Dst, 7639);
1769#if LJ_HASJIT 1795#if LJ_HASJIT
1770 dasm_put(Dst, 7633); 1796 dasm_put(Dst, 7642);
1771#endif 1797#endif
1772 dasm_put(Dst, 7643, Dt1(->base), Dt1(->top)); 1798 dasm_put(Dst, 7652, Dt1(->base), Dt1(->top));
1773#if LJ_HASJIT 1799#if LJ_HASJIT
1774 dasm_put(Dst, 7676); 1800 dasm_put(Dst, 7685);
1775#endif 1801#endif
1776 dasm_put(Dst, 7681, Dt1(->base), Dt1(->top)); 1802 dasm_put(Dst, 7690, Dt1(->base), Dt1(->top));
1777#if LJ_HASJIT 1803#if LJ_HASJIT
1778 dasm_put(Dst, 7712, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); 1804 dasm_put(Dst, 7721, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
1779#endif 1805#endif
1780 dasm_put(Dst, 7951); 1806 dasm_put(Dst, 7960);
1781#if LJ_HASJIT 1807#if LJ_HASJIT
1782 dasm_put(Dst, 7954, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1808 dasm_put(Dst, 7963, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1783#endif 1809#endif
1784 dasm_put(Dst, 8054); 1810 dasm_put(Dst, 8063);
1785 if (!sse) { 1811 if (!sse) {
1786 dasm_put(Dst, 8057); 1812 dasm_put(Dst, 8066);
1787 } 1813 }
1788 dasm_put(Dst, 8102, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1814 dasm_put(Dst, 8111, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1789 if (!sse) { 1815 if (!sse) {
1790 dasm_put(Dst, 8188); 1816 dasm_put(Dst, 8197);
1791 } 1817 }
1792 dasm_put(Dst, 8233, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); 1818 dasm_put(Dst, 8242, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
1793 if (!sse) { 1819 if (!sse) {
1794 dasm_put(Dst, 8319); 1820 dasm_put(Dst, 8328);
1795 } 1821 }
1796 dasm_put(Dst, 8358, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1822 dasm_put(Dst, 8367, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1797 if (sse) { 1823 if (sse) {
1798 dasm_put(Dst, 8447, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1824 dasm_put(Dst, 8456, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1799 } else { 1825 } else {
1800 dasm_put(Dst, 8561); 1826 dasm_put(Dst, 8570);
1801 } 1827 }
1802 dasm_put(Dst, 8608); 1828 dasm_put(Dst, 8617);
1803 if (!sse) { 1829 if (!sse) {
1804 } else { 1830 } else {
1805 dasm_put(Dst, 8685); 1831 dasm_put(Dst, 8694);
1806 } 1832 }
1807 dasm_put(Dst, 8688); 1833 dasm_put(Dst, 8697);
1808 dasm_put(Dst, 8773, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1834 dasm_put(Dst, 8782, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1809 dasm_put(Dst, 8876, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1835 dasm_put(Dst, 8885, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1810 dasm_put(Dst, 9038); 1836 dasm_put(Dst, 9047);
1811#if LJ_HASJIT 1837#if LJ_HASJIT
1812 if (sse) { 1838 if (sse) {
1813 dasm_put(Dst, 9079); 1839 dasm_put(Dst, 9088);
1814 dasm_put(Dst, 9149); 1840 dasm_put(Dst, 9158);
1815 dasm_put(Dst, 9221); 1841 dasm_put(Dst, 9230);
1816 } else { 1842 } else {
1817 dasm_put(Dst, 9273); 1843 dasm_put(Dst, 9282);
1818 dasm_put(Dst, 9365); 1844 dasm_put(Dst, 9374);
1819 } 1845 }
1820 dasm_put(Dst, 9411); 1846 dasm_put(Dst, 9420);
1821#endif 1847#endif
1822 dasm_put(Dst, 9415); 1848 dasm_put(Dst, 9424);
1823 if (sse) { 1849 if (sse) {
1824 dasm_put(Dst, 9418, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1850 dasm_put(Dst, 9427, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1825 dasm_put(Dst, 9503, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1851 dasm_put(Dst, 9512, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1826 } else { 1852 } else {
1827 dasm_put(Dst, 9631); 1853 dasm_put(Dst, 9640);
1828 dasm_put(Dst, 9714); 1854 dasm_put(Dst, 9723);
1829 if (cmov) { 1855 if (cmov) {
1830 dasm_put(Dst, 9769); 1856 dasm_put(Dst, 9778);
1831 } else { 1857 } else {
1832 dasm_put(Dst, 9788); 1858 dasm_put(Dst, 9797);
1833 } 1859 }
1834 dasm_put(Dst, 9411); 1860 dasm_put(Dst, 9420);
1835 } 1861 }
1836 dasm_put(Dst, 9829); 1862 dasm_put(Dst, 9838);
1837#ifdef LUA_USE_ASSERT 1863#ifdef LUA_USE_ASSERT
1838 dasm_put(Dst, 9413); 1864 dasm_put(Dst, 9422);
1865#endif
1866 dasm_put(Dst, 9862);
1867#if LJ_HASFFI
1868#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
1869 dasm_put(Dst, 9866, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE, DtE(->cb.gpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[4]), DtE(->cb.fpr[5]), DtE(->cb.fpr[6]), DtE(->cb.fpr[7]), DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1870 dasm_put(Dst, 9990, Dt1(->base), Dt1(->top), Dt7(->pc));
1839#endif 1871#endif
1840 dasm_put(Dst, 9853); 1872 dasm_put(Dst, 10030);
1841#if LJ_HASFFI 1873#if LJ_HASFFI
1842#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1874 dasm_put(Dst, 10033, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]));
1843 dasm_put(Dst, 9857, DtE(->spadj)); 1875#endif
1876 dasm_put(Dst, 10074);
1877#if LJ_HASFFI
1878#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1879 dasm_put(Dst, 10077, DtF(->spadj));
1844#if LJ_TARGET_WINDOWS 1880#if LJ_TARGET_WINDOWS
1845#endif 1881#endif
1846 dasm_put(Dst, 9873, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1])); 1882 dasm_put(Dst, 10093, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->fpr[0]), DtF(->fpr[1]));
1847 dasm_put(Dst, 9952, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1])); 1883 dasm_put(Dst, 10172, DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->fpr[1]));
1848#if LJ_TARGET_WINDOWS 1884#if LJ_TARGET_WINDOWS
1849#endif 1885#endif
1850 dasm_put(Dst, 10007); 1886 dasm_put(Dst, 10227);
1851#endif 1887#endif
1852} 1888}
1853 1889
@@ -1855,7 +1891,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1855static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1891static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1856{ 1892{
1857 int vk = 0; 1893 int vk = 0;
1858 dasm_put(Dst, 10015, defop); 1894 dasm_put(Dst, 829, defop);
1859 1895
1860 switch (op) { 1896 switch (op) {
1861 1897
@@ -1866,302 +1902,302 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1866 1902
1867 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1903 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1868 if (LJ_DUALNUM) { 1904 if (LJ_DUALNUM) {
1869 dasm_put(Dst, 10017, LJ_TISNUM, LJ_TISNUM); 1905 dasm_put(Dst, 10235, LJ_TISNUM, LJ_TISNUM);
1870 switch (op) { 1906 switch (op) {
1871 case BC_ISLT: 1907 case BC_ISLT:
1872 dasm_put(Dst, 10047); 1908 dasm_put(Dst, 10265);
1873 break; 1909 break;
1874 case BC_ISGE: 1910 case BC_ISGE:
1875 dasm_put(Dst, 10052); 1911 dasm_put(Dst, 10270);
1876 break; 1912 break;
1877 case BC_ISLE: 1913 case BC_ISLE:
1878 dasm_put(Dst, 10057); 1914 dasm_put(Dst, 10275);
1879 break; 1915 break;
1880 case BC_ISGT: 1916 case BC_ISGT:
1881 dasm_put(Dst, 10062); 1917 dasm_put(Dst, 10280);
1882 break; 1918 break;
1883 default: break; /* Shut up GCC. */ 1919 default: break; /* Shut up GCC. */
1884 } 1920 }
1885 dasm_put(Dst, 10067, -BCBIAS_J*4, LJ_TISNUM); 1921 dasm_put(Dst, 10285, -BCBIAS_J*4, LJ_TISNUM);
1886 if (sse) { 1922 if (sse) {
1887 dasm_put(Dst, 10122); 1923 dasm_put(Dst, 10340);
1888 } else { 1924 } else {
1889 dasm_put(Dst, 10133); 1925 dasm_put(Dst, 10351);
1890 } 1926 }
1891 dasm_put(Dst, 10144); 1927 dasm_put(Dst, 10362);
1892 if (sse) { 1928 if (sse) {
1893 dasm_put(Dst, 10151); 1929 dasm_put(Dst, 10369);
1894 switch (op) { 1930 switch (op) {
1895 case BC_ISLT: 1931 case BC_ISLT:
1896 dasm_put(Dst, 10171); 1932 dasm_put(Dst, 10389);
1897 break; 1933 break;
1898 case BC_ISGE: 1934 case BC_ISGE:
1899 dasm_put(Dst, 10176); 1935 dasm_put(Dst, 10394);
1900 break; 1936 break;
1901 case BC_ISLE: 1937 case BC_ISLE:
1902 dasm_put(Dst, 10181); 1938 dasm_put(Dst, 10399);
1903 break; 1939 break;
1904 case BC_ISGT: 1940 case BC_ISGT:
1905 dasm_put(Dst, 10186); 1941 dasm_put(Dst, 10404);
1906 break; 1942 break;
1907 default: break; /* Shut up GCC. */ 1943 default: break; /* Shut up GCC. */
1908 } 1944 }
1909 dasm_put(Dst, 10191); 1945 dasm_put(Dst, 10409);
1910 } else { 1946 } else {
1911 dasm_put(Dst, 10196); 1947 dasm_put(Dst, 10414);
1912 } 1948 }
1913 } else { 1949 } else {
1914 dasm_put(Dst, 10204, LJ_TISNUM, LJ_TISNUM); 1950 dasm_put(Dst, 10422, LJ_TISNUM, LJ_TISNUM);
1915 } 1951 }
1916 if (sse) { 1952 if (sse) {
1917 dasm_put(Dst, 10225); 1953 dasm_put(Dst, 10443);
1918 } else { 1954 } else {
1919 dasm_put(Dst, 10246); 1955 dasm_put(Dst, 10464);
1920 if (cmov) { 1956 if (cmov) {
1921 dasm_put(Dst, 10262); 1957 dasm_put(Dst, 10480);
1922 } else { 1958 } else {
1923 dasm_put(Dst, 10268); 1959 dasm_put(Dst, 10486);
1924 } 1960 }
1925 } 1961 }
1926 if (LJ_DUALNUM) { 1962 if (LJ_DUALNUM) {
1927 switch (op) { 1963 switch (op) {
1928 case BC_ISLT: 1964 case BC_ISLT:
1929 dasm_put(Dst, 10171); 1965 dasm_put(Dst, 10389);
1930 break; 1966 break;
1931 case BC_ISGE: 1967 case BC_ISGE:
1932 dasm_put(Dst, 10176); 1968 dasm_put(Dst, 10394);
1933 break; 1969 break;
1934 case BC_ISLE: 1970 case BC_ISLE:
1935 dasm_put(Dst, 10181); 1971 dasm_put(Dst, 10399);
1936 break; 1972 break;
1937 case BC_ISGT: 1973 case BC_ISGT:
1938 dasm_put(Dst, 10186); 1974 dasm_put(Dst, 10404);
1939 break; 1975 break;
1940 default: break; /* Shut up GCC. */ 1976 default: break; /* Shut up GCC. */
1941 } 1977 }
1942 dasm_put(Dst, 10191); 1978 dasm_put(Dst, 10409);
1943 } else { 1979 } else {
1944 switch (op) { 1980 switch (op) {
1945 case BC_ISLT: 1981 case BC_ISLT:
1946 dasm_put(Dst, 10275); 1982 dasm_put(Dst, 817);
1947 break; 1983 break;
1948 case BC_ISGE: 1984 case BC_ISGE:
1949 dasm_put(Dst, 10280); 1985 dasm_put(Dst, 10493);
1950 break; 1986 break;
1951 case BC_ISLE: 1987 case BC_ISLE:
1952 dasm_put(Dst, 10285); 1988 dasm_put(Dst, 10498);
1953 break; 1989 break;
1954 case BC_ISGT: 1990 case BC_ISGT:
1955 dasm_put(Dst, 10290); 1991 dasm_put(Dst, 10503);
1956 break; 1992 break;
1957 default: break; /* Shut up GCC. */ 1993 default: break; /* Shut up GCC. */
1958 } 1994 }
1959 dasm_put(Dst, 10295, -BCBIAS_J*4); 1995 dasm_put(Dst, 10508, -BCBIAS_J*4);
1960 } 1996 }
1961 break; 1997 break;
1962 1998
1963 case BC_ISEQV: case BC_ISNEV: 1999 case BC_ISEQV: case BC_ISNEV:
1964 vk = op == BC_ISEQV; 2000 vk = op == BC_ISEQV;
1965 dasm_put(Dst, 10328); 2001 dasm_put(Dst, 10541);
1966 if (LJ_DUALNUM) { 2002 if (LJ_DUALNUM) {
1967 dasm_put(Dst, 10336, LJ_TISNUM, LJ_TISNUM); 2003 dasm_put(Dst, 10549, LJ_TISNUM, LJ_TISNUM);
1968 if (vk) { 2004 if (vk) {
1969 dasm_put(Dst, 10361); 2005 dasm_put(Dst, 10574);
1970 } else { 2006 } else {
1971 dasm_put(Dst, 10366); 2007 dasm_put(Dst, 10579);
1972 } 2008 }
1973 dasm_put(Dst, 10371, -BCBIAS_J*4, LJ_TISNUM); 2009 dasm_put(Dst, 10584, -BCBIAS_J*4, LJ_TISNUM);
1974 if (sse) { 2010 if (sse) {
1975 dasm_put(Dst, 10424); 2011 dasm_put(Dst, 10637);
1976 } else { 2012 } else {
1977 dasm_put(Dst, 10431); 2013 dasm_put(Dst, 10644);
1978 } 2014 }
1979 dasm_put(Dst, 10435); 2015 dasm_put(Dst, 10648);
1980 if (sse) { 2016 if (sse) {
1981 dasm_put(Dst, 10446); 2017 dasm_put(Dst, 10659);
1982 } else { 2018 } else {
1983 dasm_put(Dst, 10458); 2019 dasm_put(Dst, 10671);
1984 } 2020 }
1985 dasm_put(Dst, 10465); 2021 dasm_put(Dst, 10678);
1986 } else { 2022 } else {
1987 dasm_put(Dst, 10470, LJ_TISNUM, LJ_TISNUM); 2023 dasm_put(Dst, 10683, LJ_TISNUM, LJ_TISNUM);
1988 } 2024 }
1989 if (sse) { 2025 if (sse) {
1990 dasm_put(Dst, 10489); 2026 dasm_put(Dst, 10702);
1991 } else { 2027 } else {
1992 dasm_put(Dst, 10507); 2028 dasm_put(Dst, 10720);
1993 if (cmov) { 2029 if (cmov) {
1994 dasm_put(Dst, 10262); 2030 dasm_put(Dst, 10480);
1995 } else { 2031 } else {
1996 dasm_put(Dst, 10268); 2032 dasm_put(Dst, 10486);
1997 } 2033 }
1998 } 2034 }
1999 iseqne_fp: 2035 iseqne_fp:
2000 if (vk) { 2036 if (vk) {
2001 dasm_put(Dst, 10520); 2037 dasm_put(Dst, 10733);
2002 } else { 2038 } else {
2003 dasm_put(Dst, 10529); 2039 dasm_put(Dst, 10742);
2004 } 2040 }
2005 iseqne_end: 2041 iseqne_end:
2006 if (vk) { 2042 if (vk) {
2007 dasm_put(Dst, 10538, -BCBIAS_J*4); 2043 dasm_put(Dst, 10751, -BCBIAS_J*4);
2008 if (!LJ_HASFFI) { 2044 if (!LJ_HASFFI) {
2009 dasm_put(Dst, 4675); 2045 dasm_put(Dst, 4684);
2010 } 2046 }
2011 } else { 2047 } else {
2012 if (!LJ_HASFFI) { 2048 if (!LJ_HASFFI) {
2013 dasm_put(Dst, 4675); 2049 dasm_put(Dst, 4684);
2014 } 2050 }
2015 dasm_put(Dst, 10553, -BCBIAS_J*4); 2051 dasm_put(Dst, 10766, -BCBIAS_J*4);
2016 } 2052 }
2017 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || 2053 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
2018 op == BC_ISEQN || op == BC_ISNEN)) { 2054 op == BC_ISEQN || op == BC_ISNEN)) {
2019 dasm_put(Dst, 10568); 2055 dasm_put(Dst, 10781);
2020 } else { 2056 } else {
2021 dasm_put(Dst, 10307); 2057 dasm_put(Dst, 10520);
2022 } 2058 }
2023 if (op == BC_ISEQV || op == BC_ISNEV) { 2059 if (op == BC_ISEQV || op == BC_ISNEV) {
2024 dasm_put(Dst, 10573); 2060 dasm_put(Dst, 10786);
2025 if (LJ_HASFFI) { 2061 if (LJ_HASFFI) {
2026 dasm_put(Dst, 10576, LJ_TCDATA, LJ_TCDATA); 2062 dasm_put(Dst, 10789, LJ_TCDATA, LJ_TCDATA);
2027 } 2063 }
2028 dasm_put(Dst, 10595, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 2064 dasm_put(Dst, 10808, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
2029 if (vk) { 2065 if (vk) {
2030 dasm_put(Dst, 10659); 2066 dasm_put(Dst, 10872);
2031 } else { 2067 } else {
2032 dasm_put(Dst, 10663); 2068 dasm_put(Dst, 10876);
2033 } 2069 }
2034 dasm_put(Dst, 10669); 2070 dasm_put(Dst, 10882);
2035 } else if (LJ_HASFFI) { 2071 } else if (LJ_HASFFI) {
2036 dasm_put(Dst, 10674, LJ_TCDATA); 2072 dasm_put(Dst, 10887, LJ_TCDATA);
2037 if (LJ_DUALNUM && vk) { 2073 if (LJ_DUALNUM && vk) {
2038 dasm_put(Dst, 10681); 2074 dasm_put(Dst, 10894);
2039 } else { 2075 } else {
2040 dasm_put(Dst, 10654); 2076 dasm_put(Dst, 10867);
2041 } 2077 }
2042 dasm_put(Dst, 10686); 2078 dasm_put(Dst, 10899);
2043 } 2079 }
2044 break; 2080 break;
2045 case BC_ISEQS: case BC_ISNES: 2081 case BC_ISEQS: case BC_ISNES:
2046 vk = op == BC_ISEQS; 2082 vk = op == BC_ISEQS;
2047 dasm_put(Dst, 10691, LJ_TSTR); 2083 dasm_put(Dst, 10904, LJ_TSTR);
2048 iseqne_test: 2084 iseqne_test:
2049 if (vk) { 2085 if (vk) {
2050 dasm_put(Dst, 10524); 2086 dasm_put(Dst, 10737);
2051 } else { 2087 } else {
2052 dasm_put(Dst, 814); 2088 dasm_put(Dst, 2980);
2053 } 2089 }
2054 goto iseqne_end; 2090 goto iseqne_end;
2055 case BC_ISEQN: case BC_ISNEN: 2091 case BC_ISEQN: case BC_ISNEN:
2056 vk = op == BC_ISEQN; 2092 vk = op == BC_ISEQN;
2057 dasm_put(Dst, 10718); 2093 dasm_put(Dst, 10931);
2058 if (LJ_DUALNUM) { 2094 if (LJ_DUALNUM) {
2059 dasm_put(Dst, 10726, LJ_TISNUM, LJ_TISNUM); 2095 dasm_put(Dst, 10939, LJ_TISNUM, LJ_TISNUM);
2060 if (vk) { 2096 if (vk) {
2061 dasm_put(Dst, 10361); 2097 dasm_put(Dst, 10574);
2062 } else { 2098 } else {
2063 dasm_put(Dst, 10366); 2099 dasm_put(Dst, 10579);
2064 } 2100 }
2065 dasm_put(Dst, 10753, -BCBIAS_J*4, LJ_TISNUM); 2101 dasm_put(Dst, 10966, -BCBIAS_J*4, LJ_TISNUM);
2066 if (sse) { 2102 if (sse) {
2067 dasm_put(Dst, 10803); 2103 dasm_put(Dst, 11016);
2068 } else { 2104 } else {
2069 dasm_put(Dst, 10811); 2105 dasm_put(Dst, 11024);
2070 } 2106 }
2071 dasm_put(Dst, 10816); 2107 dasm_put(Dst, 11029);
2072 if (sse) { 2108 if (sse) {
2073 dasm_put(Dst, 10823); 2109 dasm_put(Dst, 11036);
2074 } else { 2110 } else {
2075 dasm_put(Dst, 10836); 2111 dasm_put(Dst, 11049);
2076 } 2112 }
2077 dasm_put(Dst, 10465); 2113 dasm_put(Dst, 10678);
2078 } else { 2114 } else {
2079 dasm_put(Dst, 10844, LJ_TISNUM); 2115 dasm_put(Dst, 11057, LJ_TISNUM);
2080 } 2116 }
2081 if (sse) { 2117 if (sse) {
2082 dasm_put(Dst, 10853); 2118 dasm_put(Dst, 11066);
2083 } else { 2119 } else {
2084 dasm_put(Dst, 10872); 2120 dasm_put(Dst, 11085);
2085 if (cmov) { 2121 if (cmov) {
2086 dasm_put(Dst, 10262); 2122 dasm_put(Dst, 10480);
2087 } else { 2123 } else {
2088 dasm_put(Dst, 10268); 2124 dasm_put(Dst, 10486);
2089 } 2125 }
2090 } 2126 }
2091 goto iseqne_fp; 2127 goto iseqne_fp;
2092 case BC_ISEQP: case BC_ISNEP: 2128 case BC_ISEQP: case BC_ISNEP:
2093 vk = op == BC_ISEQP; 2129 vk = op == BC_ISEQP;
2094 dasm_put(Dst, 10886); 2130 dasm_put(Dst, 11099);
2095 if (!LJ_HASFFI) goto iseqne_test; 2131 if (!LJ_HASFFI) goto iseqne_test;
2096 if (vk) { 2132 if (vk) {
2097 dasm_put(Dst, 10900, -BCBIAS_J*4, LJ_TCDATA); 2133 dasm_put(Dst, 11113, -BCBIAS_J*4, LJ_TCDATA);
2098 } else { 2134 } else {
2099 dasm_put(Dst, 10951, LJ_TCDATA, -BCBIAS_J*4); 2135 dasm_put(Dst, 11164, LJ_TCDATA, -BCBIAS_J*4);
2100 } 2136 }
2101 break; 2137 break;
2102 2138
2103 /* -- Unary test and copy ops ------------------------------------------- */ 2139 /* -- Unary test and copy ops ------------------------------------------- */
2104 2140
2105 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2141 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
2106 dasm_put(Dst, 10996, LJ_TISTRUECOND); 2142 dasm_put(Dst, 11209, LJ_TISTRUECOND);
2107 if (op == BC_IST || op == BC_ISTC) { 2143 if (op == BC_IST || op == BC_ISTC) {
2108 dasm_put(Dst, 10290); 2144 dasm_put(Dst, 10503);
2109 } else { 2145 } else {
2110 dasm_put(Dst, 10285); 2146 dasm_put(Dst, 10498);
2111 } 2147 }
2112 if (op == BC_ISTC || op == BC_ISFC) { 2148 if (op == BC_ISTC || op == BC_ISFC) {
2113 dasm_put(Dst, 11008); 2149 dasm_put(Dst, 11221);
2114 } 2150 }
2115 dasm_put(Dst, 10295, -BCBIAS_J*4); 2151 dasm_put(Dst, 10508, -BCBIAS_J*4);
2116 break; 2152 break;
2117 2153
2118 /* -- Unary ops --------------------------------------------------------- */ 2154 /* -- Unary ops --------------------------------------------------------- */
2119 2155
2120 case BC_MOV: 2156 case BC_MOV:
2121 dasm_put(Dst, 11019); 2157 dasm_put(Dst, 11232);
2122 break; 2158 break;
2123 case BC_NOT: 2159 case BC_NOT:
2124 dasm_put(Dst, 11048, LJ_TISTRUECOND, LJ_TTRUE); 2160 dasm_put(Dst, 11261, LJ_TISTRUECOND, LJ_TTRUE);
2125 break; 2161 break;
2126 case BC_UNM: 2162 case BC_UNM:
2127 if (LJ_DUALNUM) { 2163 if (LJ_DUALNUM) {
2128 dasm_put(Dst, 11085, LJ_TISNUM, LJ_TISNUM); 2164 dasm_put(Dst, 11298, LJ_TISNUM, LJ_TISNUM);
2129 } else { 2165 } else {
2130 dasm_put(Dst, 11163, LJ_TISNUM); 2166 dasm_put(Dst, 11376, LJ_TISNUM);
2131 } 2167 }
2132 if (sse) { 2168 if (sse) {
2133 dasm_put(Dst, 11174, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 2169 dasm_put(Dst, 11387, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
2134 } else { 2170 } else {
2135 dasm_put(Dst, 11199); 2171 dasm_put(Dst, 11412);
2136 } 2172 }
2137 if (LJ_DUALNUM) { 2173 if (LJ_DUALNUM) {
2138 dasm_put(Dst, 10568); 2174 dasm_put(Dst, 10781);
2139 } else { 2175 } else {
2140 dasm_put(Dst, 10307); 2176 dasm_put(Dst, 10520);
2141 } 2177 }
2142 break; 2178 break;
2143 case BC_LEN: 2179 case BC_LEN:
2144 dasm_put(Dst, 11208, LJ_TSTR); 2180 dasm_put(Dst, 11421, LJ_TSTR);
2145 if (LJ_DUALNUM) { 2181 if (LJ_DUALNUM) {
2146 dasm_put(Dst, 11222, Dt5(->len), LJ_TISNUM); 2182 dasm_put(Dst, 11435, Dt5(->len), LJ_TISNUM);
2147 } else if (sse) { 2183 } else if (sse) {
2148 dasm_put(Dst, 11236, Dt5(->len)); 2184 dasm_put(Dst, 11449, Dt5(->len));
2149 } else { 2185 } else {
2150 dasm_put(Dst, 11254, Dt5(->len)); 2186 dasm_put(Dst, 11467, Dt5(->len));
2151 } 2187 }
2152 dasm_put(Dst, 11263, LJ_TTAB); 2188 dasm_put(Dst, 11476, LJ_TTAB);
2153#ifdef LUAJIT_ENABLE_LUA52COMPAT 2189#ifdef LUAJIT_ENABLE_LUA52COMPAT
2154 dasm_put(Dst, 11299, Dt6(->metatable)); 2190 dasm_put(Dst, 11512, Dt6(->metatable));
2155#endif 2191#endif
2156 dasm_put(Dst, 11313); 2192 dasm_put(Dst, 11526);
2157 if (LJ_DUALNUM) { 2193 if (LJ_DUALNUM) {
2158 } else if (sse) { 2194 } else if (sse) {
2159 dasm_put(Dst, 11322); 2195 dasm_put(Dst, 11535);
2160 } else { 2196 } else {
2161 } 2197 }
2162 dasm_put(Dst, 11328); 2198 dasm_put(Dst, 11541);
2163#ifdef LUAJIT_ENABLE_LUA52COMPAT 2199#ifdef LUAJIT_ENABLE_LUA52COMPAT
2164 dasm_put(Dst, 11341, Dt6(->nomm), 1<<MM_len); 2200 dasm_put(Dst, 11554, Dt6(->nomm), 1<<MM_len);
2165#endif 2201#endif
2166 break; 2202 break;
2167 2203
@@ -2170,605 +2206,605 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2170 2206
2171 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2207 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
2172 if (LJ_DUALNUM) { 2208 if (LJ_DUALNUM) {
2173 dasm_put(Dst, 11357); 2209 dasm_put(Dst, 11570);
2174 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2210 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2175 switch (vk) { 2211 switch (vk) {
2176 case 0: 2212 case 0:
2177 dasm_put(Dst, 11365, LJ_TISNUM, LJ_TISNUM); 2213 dasm_put(Dst, 11578, LJ_TISNUM, LJ_TISNUM);
2178 break; 2214 break;
2179 case 1: 2215 case 1:
2180 dasm_put(Dst, 11400, LJ_TISNUM, LJ_TISNUM); 2216 dasm_put(Dst, 11613, LJ_TISNUM, LJ_TISNUM);
2181 break; 2217 break;
2182 default: 2218 default:
2183 dasm_put(Dst, 11435, LJ_TISNUM, LJ_TISNUM); 2219 dasm_put(Dst, 11648, LJ_TISNUM, LJ_TISNUM);
2184 break; 2220 break;
2185 } 2221 }
2186 dasm_put(Dst, 11468, LJ_TISNUM); 2222 dasm_put(Dst, 11681, LJ_TISNUM);
2187 if (vk == 1) { 2223 if (vk == 1) {
2188 dasm_put(Dst, 11232); 2224 dasm_put(Dst, 11445);
2189 } else { 2225 } else {
2190 dasm_put(Dst, 11015); 2226 dasm_put(Dst, 11228);
2191 } 2227 }
2192 dasm_put(Dst, 10307); 2228 dasm_put(Dst, 10520);
2193 } else { 2229 } else {
2194 dasm_put(Dst, 11357); 2230 dasm_put(Dst, 11570);
2195 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2231 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2196 switch (vk) { 2232 switch (vk) {
2197 case 0: 2233 case 0:
2198 dasm_put(Dst, 11474, LJ_TISNUM); 2234 dasm_put(Dst, 11687, LJ_TISNUM);
2199 if (LJ_DUALNUM) { 2235 if (LJ_DUALNUM) {
2200 dasm_put(Dst, 11486, LJ_TISNUM); 2236 dasm_put(Dst, 11699, LJ_TISNUM);
2201 } 2237 }
2202 if (sse) { 2238 if (sse) {
2203 dasm_put(Dst, 11498); 2239 dasm_put(Dst, 11711);
2204 } else { 2240 } else {
2205 dasm_put(Dst, 11513); 2241 dasm_put(Dst, 11726);
2206 } 2242 }
2207 break; 2243 break;
2208 case 1: 2244 case 1:
2209 dasm_put(Dst, 11522, LJ_TISNUM); 2245 dasm_put(Dst, 11735, LJ_TISNUM);
2210 if (LJ_DUALNUM) { 2246 if (LJ_DUALNUM) {
2211 dasm_put(Dst, 11534, LJ_TISNUM); 2247 dasm_put(Dst, 11747, LJ_TISNUM);
2212 } 2248 }
2213 if (sse) { 2249 if (sse) {
2214 dasm_put(Dst, 11546); 2250 dasm_put(Dst, 11759);
2215 } else { 2251 } else {
2216 dasm_put(Dst, 11561); 2252 dasm_put(Dst, 11774);
2217 } 2253 }
2218 break; 2254 break;
2219 default: 2255 default:
2220 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2256 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2221 if (sse) { 2257 if (sse) {
2222 dasm_put(Dst, 11592); 2258 dasm_put(Dst, 11805);
2223 } else { 2259 } else {
2224 dasm_put(Dst, 11606); 2260 dasm_put(Dst, 11819);
2225 } 2261 }
2226 break; 2262 break;
2227 } 2263 }
2228 if (sse) { 2264 if (sse) {
2229 dasm_put(Dst, 11192); 2265 dasm_put(Dst, 11405);
2230 } else { 2266 } else {
2231 dasm_put(Dst, 11204); 2267 dasm_put(Dst, 11417);
2232 } 2268 }
2233 dasm_put(Dst, 10307); 2269 dasm_put(Dst, 10520);
2234 } 2270 }
2235 break; 2271 break;
2236 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2272 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
2237 if (LJ_DUALNUM) { 2273 if (LJ_DUALNUM) {
2238 dasm_put(Dst, 11357); 2274 dasm_put(Dst, 11570);
2239 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2275 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2240 switch (vk) { 2276 switch (vk) {
2241 case 0: 2277 case 0:
2242 dasm_put(Dst, 11614, LJ_TISNUM, LJ_TISNUM); 2278 dasm_put(Dst, 11827, LJ_TISNUM, LJ_TISNUM);
2243 break; 2279 break;
2244 case 1: 2280 case 1:
2245 dasm_put(Dst, 11649, LJ_TISNUM, LJ_TISNUM); 2281 dasm_put(Dst, 11862, LJ_TISNUM, LJ_TISNUM);
2246 break; 2282 break;
2247 default: 2283 default:
2248 dasm_put(Dst, 11684, LJ_TISNUM, LJ_TISNUM); 2284 dasm_put(Dst, 11897, LJ_TISNUM, LJ_TISNUM);
2249 break; 2285 break;
2250 } 2286 }
2251 dasm_put(Dst, 11468, LJ_TISNUM); 2287 dasm_put(Dst, 11681, LJ_TISNUM);
2252 if (vk == 1) { 2288 if (vk == 1) {
2253 dasm_put(Dst, 11232); 2289 dasm_put(Dst, 11445);
2254 } else { 2290 } else {
2255 dasm_put(Dst, 11015); 2291 dasm_put(Dst, 11228);
2256 } 2292 }
2257 dasm_put(Dst, 10307); 2293 dasm_put(Dst, 10520);
2258 } else { 2294 } else {
2259 dasm_put(Dst, 11357); 2295 dasm_put(Dst, 11570);
2260 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2296 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2261 switch (vk) { 2297 switch (vk) {
2262 case 0: 2298 case 0:
2263 dasm_put(Dst, 11474, LJ_TISNUM); 2299 dasm_put(Dst, 11687, LJ_TISNUM);
2264 if (LJ_DUALNUM) { 2300 if (LJ_DUALNUM) {
2265 dasm_put(Dst, 11486, LJ_TISNUM); 2301 dasm_put(Dst, 11699, LJ_TISNUM);
2266 } 2302 }
2267 if (sse) { 2303 if (sse) {
2268 dasm_put(Dst, 11717); 2304 dasm_put(Dst, 11930);
2269 } else { 2305 } else {
2270 dasm_put(Dst, 11732); 2306 dasm_put(Dst, 11945);
2271 } 2307 }
2272 break; 2308 break;
2273 case 1: 2309 case 1:
2274 dasm_put(Dst, 11522, LJ_TISNUM); 2310 dasm_put(Dst, 11735, LJ_TISNUM);
2275 if (LJ_DUALNUM) { 2311 if (LJ_DUALNUM) {
2276 dasm_put(Dst, 11534, LJ_TISNUM); 2312 dasm_put(Dst, 11747, LJ_TISNUM);
2277 } 2313 }
2278 if (sse) { 2314 if (sse) {
2279 dasm_put(Dst, 11741); 2315 dasm_put(Dst, 11954);
2280 } else { 2316 } else {
2281 dasm_put(Dst, 11756); 2317 dasm_put(Dst, 11969);
2282 } 2318 }
2283 break; 2319 break;
2284 default: 2320 default:
2285 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2321 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2286 if (sse) { 2322 if (sse) {
2287 dasm_put(Dst, 11765); 2323 dasm_put(Dst, 11978);
2288 } else { 2324 } else {
2289 dasm_put(Dst, 11779); 2325 dasm_put(Dst, 11992);
2290 } 2326 }
2291 break; 2327 break;
2292 } 2328 }
2293 if (sse) { 2329 if (sse) {
2294 dasm_put(Dst, 11192); 2330 dasm_put(Dst, 11405);
2295 } else { 2331 } else {
2296 dasm_put(Dst, 11204); 2332 dasm_put(Dst, 11417);
2297 } 2333 }
2298 dasm_put(Dst, 10307); 2334 dasm_put(Dst, 10520);
2299 } 2335 }
2300 break; 2336 break;
2301 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2337 case BC_MULVN: case BC_MULNV: case BC_MULVV:
2302 if (LJ_DUALNUM) { 2338 if (LJ_DUALNUM) {
2303 dasm_put(Dst, 11357); 2339 dasm_put(Dst, 11570);
2304 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2340 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2305 switch (vk) { 2341 switch (vk) {
2306 case 0: 2342 case 0:
2307 dasm_put(Dst, 11787, LJ_TISNUM, LJ_TISNUM); 2343 dasm_put(Dst, 12000, LJ_TISNUM, LJ_TISNUM);
2308 break; 2344 break;
2309 case 1: 2345 case 1:
2310 dasm_put(Dst, 11823, LJ_TISNUM, LJ_TISNUM); 2346 dasm_put(Dst, 12036, LJ_TISNUM, LJ_TISNUM);
2311 break; 2347 break;
2312 default: 2348 default:
2313 dasm_put(Dst, 11859, LJ_TISNUM, LJ_TISNUM); 2349 dasm_put(Dst, 12072, LJ_TISNUM, LJ_TISNUM);
2314 break; 2350 break;
2315 } 2351 }
2316 dasm_put(Dst, 11468, LJ_TISNUM); 2352 dasm_put(Dst, 11681, LJ_TISNUM);
2317 if (vk == 1) { 2353 if (vk == 1) {
2318 dasm_put(Dst, 11232); 2354 dasm_put(Dst, 11445);
2319 } else { 2355 } else {
2320 dasm_put(Dst, 11015); 2356 dasm_put(Dst, 11228);
2321 } 2357 }
2322 dasm_put(Dst, 10307); 2358 dasm_put(Dst, 10520);
2323 } else { 2359 } else {
2324 dasm_put(Dst, 11357); 2360 dasm_put(Dst, 11570);
2325 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2361 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2326 switch (vk) { 2362 switch (vk) {
2327 case 0: 2363 case 0:
2328 dasm_put(Dst, 11474, LJ_TISNUM); 2364 dasm_put(Dst, 11687, LJ_TISNUM);
2329 if (LJ_DUALNUM) { 2365 if (LJ_DUALNUM) {
2330 dasm_put(Dst, 11486, LJ_TISNUM); 2366 dasm_put(Dst, 11699, LJ_TISNUM);
2331 } 2367 }
2332 if (sse) { 2368 if (sse) {
2333 dasm_put(Dst, 11893); 2369 dasm_put(Dst, 12106);
2334 } else { 2370 } else {
2335 dasm_put(Dst, 11908); 2371 dasm_put(Dst, 12121);
2336 } 2372 }
2337 break; 2373 break;
2338 case 1: 2374 case 1:
2339 dasm_put(Dst, 11522, LJ_TISNUM); 2375 dasm_put(Dst, 11735, LJ_TISNUM);
2340 if (LJ_DUALNUM) { 2376 if (LJ_DUALNUM) {
2341 dasm_put(Dst, 11534, LJ_TISNUM); 2377 dasm_put(Dst, 11747, LJ_TISNUM);
2342 } 2378 }
2343 if (sse) { 2379 if (sse) {
2344 dasm_put(Dst, 11917); 2380 dasm_put(Dst, 12130);
2345 } else { 2381 } else {
2346 dasm_put(Dst, 11932); 2382 dasm_put(Dst, 12145);
2347 } 2383 }
2348 break; 2384 break;
2349 default: 2385 default:
2350 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2386 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2351 if (sse) { 2387 if (sse) {
2352 dasm_put(Dst, 11941); 2388 dasm_put(Dst, 12154);
2353 } else { 2389 } else {
2354 dasm_put(Dst, 11955); 2390 dasm_put(Dst, 12168);
2355 } 2391 }
2356 break; 2392 break;
2357 } 2393 }
2358 if (sse) { 2394 if (sse) {
2359 dasm_put(Dst, 11192); 2395 dasm_put(Dst, 11405);
2360 } else { 2396 } else {
2361 dasm_put(Dst, 11204); 2397 dasm_put(Dst, 11417);
2362 } 2398 }
2363 dasm_put(Dst, 10307); 2399 dasm_put(Dst, 10520);
2364 } 2400 }
2365 break; 2401 break;
2366 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2402 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
2367 dasm_put(Dst, 11357); 2403 dasm_put(Dst, 11570);
2368 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2404 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2369 switch (vk) { 2405 switch (vk) {
2370 case 0: 2406 case 0:
2371 dasm_put(Dst, 11474, LJ_TISNUM); 2407 dasm_put(Dst, 11687, LJ_TISNUM);
2372 if (LJ_DUALNUM) { 2408 if (LJ_DUALNUM) {
2373 dasm_put(Dst, 11486, LJ_TISNUM); 2409 dasm_put(Dst, 11699, LJ_TISNUM);
2374 } 2410 }
2375 if (sse) { 2411 if (sse) {
2376 dasm_put(Dst, 11963); 2412 dasm_put(Dst, 12176);
2377 } else { 2413 } else {
2378 dasm_put(Dst, 11978); 2414 dasm_put(Dst, 12191);
2379 } 2415 }
2380 break; 2416 break;
2381 case 1: 2417 case 1:
2382 dasm_put(Dst, 11522, LJ_TISNUM); 2418 dasm_put(Dst, 11735, LJ_TISNUM);
2383 if (LJ_DUALNUM) { 2419 if (LJ_DUALNUM) {
2384 dasm_put(Dst, 11534, LJ_TISNUM); 2420 dasm_put(Dst, 11747, LJ_TISNUM);
2385 } 2421 }
2386 if (sse) { 2422 if (sse) {
2387 dasm_put(Dst, 11987); 2423 dasm_put(Dst, 12200);
2388 } else { 2424 } else {
2389 dasm_put(Dst, 12002); 2425 dasm_put(Dst, 12215);
2390 } 2426 }
2391 break; 2427 break;
2392 default: 2428 default:
2393 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2429 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2394 if (sse) { 2430 if (sse) {
2395 dasm_put(Dst, 12011); 2431 dasm_put(Dst, 12224);
2396 } else { 2432 } else {
2397 dasm_put(Dst, 12025); 2433 dasm_put(Dst, 12238);
2398 } 2434 }
2399 break; 2435 break;
2400 } 2436 }
2401 if (sse) { 2437 if (sse) {
2402 dasm_put(Dst, 11192); 2438 dasm_put(Dst, 11405);
2403 } else { 2439 } else {
2404 dasm_put(Dst, 11204); 2440 dasm_put(Dst, 11417);
2405 } 2441 }
2406 dasm_put(Dst, 10307); 2442 dasm_put(Dst, 10520);
2407 break; 2443 break;
2408 case BC_MODVN: 2444 case BC_MODVN:
2409 dasm_put(Dst, 11357); 2445 dasm_put(Dst, 11570);
2410 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2446 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2411 switch (vk) { 2447 switch (vk) {
2412 case 0: 2448 case 0:
2413 dasm_put(Dst, 11474, LJ_TISNUM); 2449 dasm_put(Dst, 11687, LJ_TISNUM);
2414 if (LJ_DUALNUM) { 2450 if (LJ_DUALNUM) {
2415 dasm_put(Dst, 11486, LJ_TISNUM); 2451 dasm_put(Dst, 11699, LJ_TISNUM);
2416 } 2452 }
2417 if (sse) { 2453 if (sse) {
2418 dasm_put(Dst, 12033); 2454 dasm_put(Dst, 12246);
2419 } else { 2455 } else {
2420 dasm_put(Dst, 12048); 2456 dasm_put(Dst, 12261);
2421 } 2457 }
2422 break; 2458 break;
2423 case 1: 2459 case 1:
2424 dasm_put(Dst, 11522, LJ_TISNUM); 2460 dasm_put(Dst, 11735, LJ_TISNUM);
2425 if (LJ_DUALNUM) { 2461 if (LJ_DUALNUM) {
2426 dasm_put(Dst, 11534, LJ_TISNUM); 2462 dasm_put(Dst, 11747, LJ_TISNUM);
2427 } 2463 }
2428 if (sse) { 2464 if (sse) {
2429 dasm_put(Dst, 12057); 2465 dasm_put(Dst, 12270);
2430 } else { 2466 } else {
2431 dasm_put(Dst, 12072); 2467 dasm_put(Dst, 12285);
2432 } 2468 }
2433 break; 2469 break;
2434 default: 2470 default:
2435 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2471 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2436 if (sse) { 2472 if (sse) {
2437 dasm_put(Dst, 12081); 2473 dasm_put(Dst, 12294);
2438 } else { 2474 } else {
2439 dasm_put(Dst, 12095); 2475 dasm_put(Dst, 12308);
2440 } 2476 }
2441 break; 2477 break;
2442 } 2478 }
2443 dasm_put(Dst, 12103); 2479 dasm_put(Dst, 12316);
2444 if (sse) { 2480 if (sse) {
2445 dasm_put(Dst, 11192); 2481 dasm_put(Dst, 11405);
2446 } else { 2482 } else {
2447 dasm_put(Dst, 11204); 2483 dasm_put(Dst, 11417);
2448 } 2484 }
2449 dasm_put(Dst, 10307); 2485 dasm_put(Dst, 10520);
2450 break; 2486 break;
2451 case BC_MODNV: case BC_MODVV: 2487 case BC_MODNV: case BC_MODVV:
2452 dasm_put(Dst, 11357); 2488 dasm_put(Dst, 11570);
2453 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2489 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2454 switch (vk) { 2490 switch (vk) {
2455 case 0: 2491 case 0:
2456 dasm_put(Dst, 11474, LJ_TISNUM); 2492 dasm_put(Dst, 11687, LJ_TISNUM);
2457 if (LJ_DUALNUM) { 2493 if (LJ_DUALNUM) {
2458 dasm_put(Dst, 11486, LJ_TISNUM); 2494 dasm_put(Dst, 11699, LJ_TISNUM);
2459 } 2495 }
2460 if (sse) { 2496 if (sse) {
2461 dasm_put(Dst, 12033); 2497 dasm_put(Dst, 12246);
2462 } else { 2498 } else {
2463 dasm_put(Dst, 12048); 2499 dasm_put(Dst, 12261);
2464 } 2500 }
2465 break; 2501 break;
2466 case 1: 2502 case 1:
2467 dasm_put(Dst, 11522, LJ_TISNUM); 2503 dasm_put(Dst, 11735, LJ_TISNUM);
2468 if (LJ_DUALNUM) { 2504 if (LJ_DUALNUM) {
2469 dasm_put(Dst, 11534, LJ_TISNUM); 2505 dasm_put(Dst, 11747, LJ_TISNUM);
2470 } 2506 }
2471 if (sse) { 2507 if (sse) {
2472 dasm_put(Dst, 12057); 2508 dasm_put(Dst, 12270);
2473 } else { 2509 } else {
2474 dasm_put(Dst, 12072); 2510 dasm_put(Dst, 12285);
2475 } 2511 }
2476 break; 2512 break;
2477 default: 2513 default:
2478 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2514 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2479 if (sse) { 2515 if (sse) {
2480 dasm_put(Dst, 12081); 2516 dasm_put(Dst, 12294);
2481 } else { 2517 } else {
2482 dasm_put(Dst, 12095); 2518 dasm_put(Dst, 12308);
2483 } 2519 }
2484 break; 2520 break;
2485 } 2521 }
2486 dasm_put(Dst, 12109); 2522 dasm_put(Dst, 12322);
2487 break; 2523 break;
2488 case BC_POW: 2524 case BC_POW:
2489 dasm_put(Dst, 11357); 2525 dasm_put(Dst, 11570);
2490 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2526 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2491 switch (vk) { 2527 switch (vk) {
2492 case 0: 2528 case 0:
2493 dasm_put(Dst, 11474, LJ_TISNUM); 2529 dasm_put(Dst, 11687, LJ_TISNUM);
2494 if (LJ_DUALNUM) { 2530 if (LJ_DUALNUM) {
2495 dasm_put(Dst, 11486, LJ_TISNUM); 2531 dasm_put(Dst, 11699, LJ_TISNUM);
2496 } 2532 }
2497 if (sse) { 2533 if (sse) {
2498 dasm_put(Dst, 12033); 2534 dasm_put(Dst, 12246);
2499 } else { 2535 } else {
2500 dasm_put(Dst, 12048); 2536 dasm_put(Dst, 12261);
2501 } 2537 }
2502 break; 2538 break;
2503 case 1: 2539 case 1:
2504 dasm_put(Dst, 11522, LJ_TISNUM); 2540 dasm_put(Dst, 11735, LJ_TISNUM);
2505 if (LJ_DUALNUM) { 2541 if (LJ_DUALNUM) {
2506 dasm_put(Dst, 11534, LJ_TISNUM); 2542 dasm_put(Dst, 11747, LJ_TISNUM);
2507 } 2543 }
2508 if (sse) { 2544 if (sse) {
2509 dasm_put(Dst, 12057); 2545 dasm_put(Dst, 12270);
2510 } else { 2546 } else {
2511 dasm_put(Dst, 12072); 2547 dasm_put(Dst, 12285);
2512 } 2548 }
2513 break; 2549 break;
2514 default: 2550 default:
2515 dasm_put(Dst, 11570, LJ_TISNUM, LJ_TISNUM); 2551 dasm_put(Dst, 11783, LJ_TISNUM, LJ_TISNUM);
2516 if (sse) { 2552 if (sse) {
2517 dasm_put(Dst, 12081); 2553 dasm_put(Dst, 12294);
2518 } else { 2554 } else {
2519 dasm_put(Dst, 12095); 2555 dasm_put(Dst, 12308);
2520 } 2556 }
2521 break; 2557 break;
2522 } 2558 }
2523 dasm_put(Dst, 12114); 2559 dasm_put(Dst, 12327);
2524 if (sse) { 2560 if (sse) {
2525 dasm_put(Dst, 11192); 2561 dasm_put(Dst, 11405);
2526 } else { 2562 } else {
2527 dasm_put(Dst, 11204); 2563 dasm_put(Dst, 11417);
2528 } 2564 }
2529 dasm_put(Dst, 10307); 2565 dasm_put(Dst, 10520);
2530 break; 2566 break;
2531 2567
2532 case BC_CAT: 2568 case BC_CAT:
2533 dasm_put(Dst, 12118, Dt1(->base), Dt1(->base)); 2569 dasm_put(Dst, 12331, Dt1(->base), Dt1(->base));
2534 break; 2570 break;
2535 2571
2536 /* -- Constant ops ------------------------------------------------------ */ 2572 /* -- Constant ops ------------------------------------------------------ */
2537 2573
2538 case BC_KSTR: 2574 case BC_KSTR:
2539 dasm_put(Dst, 12202, LJ_TSTR); 2575 dasm_put(Dst, 12415, LJ_TSTR);
2540 break; 2576 break;
2541 case BC_KCDATA: 2577 case BC_KCDATA:
2542#if LJ_HASFFI 2578#if LJ_HASFFI
2543 dasm_put(Dst, 12202, LJ_TCDATA); 2579 dasm_put(Dst, 12415, LJ_TCDATA);
2544#endif 2580#endif
2545 break; 2581 break;
2546 case BC_KSHORT: 2582 case BC_KSHORT:
2547 if (LJ_DUALNUM) { 2583 if (LJ_DUALNUM) {
2548 dasm_put(Dst, 12239, LJ_TISNUM); 2584 dasm_put(Dst, 12452, LJ_TISNUM);
2549 } else if (sse) { 2585 } else if (sse) {
2550 dasm_put(Dst, 12251); 2586 dasm_put(Dst, 12464);
2551 } else { 2587 } else {
2552 dasm_put(Dst, 12266); 2588 dasm_put(Dst, 12479);
2553 } 2589 }
2554 dasm_put(Dst, 10307); 2590 dasm_put(Dst, 10520);
2555 break; 2591 break;
2556 case BC_KNUM: 2592 case BC_KNUM:
2557 if (sse) { 2593 if (sse) {
2558 dasm_put(Dst, 12274); 2594 dasm_put(Dst, 12487);
2559 } else { 2595 } else {
2560 dasm_put(Dst, 12288); 2596 dasm_put(Dst, 12501);
2561 } 2597 }
2562 dasm_put(Dst, 10307); 2598 dasm_put(Dst, 10520);
2563 break; 2599 break;
2564 case BC_KPRI: 2600 case BC_KPRI:
2565 dasm_put(Dst, 12296); 2601 dasm_put(Dst, 12509);
2566 break; 2602 break;
2567 case BC_KNIL: 2603 case BC_KNIL:
2568 dasm_put(Dst, 12325, LJ_TNIL); 2604 dasm_put(Dst, 12538, LJ_TNIL);
2569 break; 2605 break;
2570 2606
2571 /* -- Upvalue and function ops ------------------------------------------ */ 2607 /* -- Upvalue and function ops ------------------------------------------ */
2572 2608
2573 case BC_UGET: 2609 case BC_UGET:
2574 dasm_put(Dst, 12373, offsetof(GCfuncL, uvptr), DtA(->v)); 2610 dasm_put(Dst, 12586, offsetof(GCfuncL, uvptr), DtA(->v));
2575 break; 2611 break;
2576 case BC_USETV: 2612 case BC_USETV:
2577#define TV2MARKOFS \ 2613#define TV2MARKOFS \
2578 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2614 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2579 dasm_put(Dst, 12414, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 2615 dasm_put(Dst, 12627, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
2580 dasm_put(Dst, 12510); 2616 dasm_put(Dst, 12723);
2581 break; 2617 break;
2582#undef TV2MARKOFS 2618#undef TV2MARKOFS
2583 case BC_USETS: 2619 case BC_USETS:
2584 dasm_put(Dst, 12522, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2620 dasm_put(Dst, 12735, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2585 break; 2621 break;
2586 case BC_USETN: 2622 case BC_USETN:
2587 dasm_put(Dst, 12618); 2623 dasm_put(Dst, 12831);
2588 if (sse) { 2624 if (sse) {
2589 dasm_put(Dst, 12623); 2625 dasm_put(Dst, 12836);
2590 } else { 2626 } else {
2591 dasm_put(Dst, 10839); 2627 dasm_put(Dst, 11052);
2592 } 2628 }
2593 dasm_put(Dst, 12631, offsetof(GCfuncL, uvptr), DtA(->v)); 2629 dasm_put(Dst, 12844, offsetof(GCfuncL, uvptr), DtA(->v));
2594 if (sse) { 2630 if (sse) {
2595 dasm_put(Dst, 12640); 2631 dasm_put(Dst, 12853);
2596 } else { 2632 } else {
2597 dasm_put(Dst, 12646); 2633 dasm_put(Dst, 12859);
2598 } 2634 }
2599 dasm_put(Dst, 10307); 2635 dasm_put(Dst, 10520);
2600 break; 2636 break;
2601 case BC_USETP: 2637 case BC_USETP:
2602 dasm_put(Dst, 12649, offsetof(GCfuncL, uvptr), DtA(->v)); 2638 dasm_put(Dst, 12862, offsetof(GCfuncL, uvptr), DtA(->v));
2603 break; 2639 break;
2604 case BC_UCLO: 2640 case BC_UCLO:
2605 dasm_put(Dst, 12689, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2641 dasm_put(Dst, 12902, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2606 break; 2642 break;
2607 2643
2608 case BC_FNEW: 2644 case BC_FNEW:
2609 dasm_put(Dst, 12745, Dt1(->base), Dt1(->base), LJ_TFUNC); 2645 dasm_put(Dst, 12958, Dt1(->base), Dt1(->base), LJ_TFUNC);
2610 break; 2646 break;
2611 2647
2612 /* -- Table ops --------------------------------------------------------- */ 2648 /* -- Table ops --------------------------------------------------------- */
2613 2649
2614 case BC_TNEW: 2650 case BC_TNEW:
2615 dasm_put(Dst, 12812, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2651 dasm_put(Dst, 13025, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2616 break; 2652 break;
2617 case BC_TDUP: 2653 case BC_TDUP:
2618 dasm_put(Dst, 12936, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2654 dasm_put(Dst, 13149, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2619 break; 2655 break;
2620 2656
2621 case BC_GGET: 2657 case BC_GGET:
2622 dasm_put(Dst, 13035, Dt7(->env)); 2658 dasm_put(Dst, 13248, Dt7(->env));
2623 break; 2659 break;
2624 case BC_GSET: 2660 case BC_GSET:
2625 dasm_put(Dst, 13055, Dt7(->env)); 2661 dasm_put(Dst, 13268, Dt7(->env));
2626 break; 2662 break;
2627 2663
2628 case BC_TGETV: 2664 case BC_TGETV:
2629 dasm_put(Dst, 13075, LJ_TTAB); 2665 dasm_put(Dst, 13288, LJ_TTAB);
2630 if (LJ_DUALNUM) { 2666 if (LJ_DUALNUM) {
2631 dasm_put(Dst, 13098, LJ_TISNUM); 2667 dasm_put(Dst, 13311, LJ_TISNUM);
2632 } else { 2668 } else {
2633 dasm_put(Dst, 13112, LJ_TISNUM); 2669 dasm_put(Dst, 13325, LJ_TISNUM);
2634 if (sse) { 2670 if (sse) {
2635 dasm_put(Dst, 13123); 2671 dasm_put(Dst, 13336);
2636 } else { 2672 } else {
2637 } 2673 }
2638 dasm_put(Dst, 13144); 2674 dasm_put(Dst, 13357);
2639 } 2675 }
2640 dasm_put(Dst, 13149, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL); 2676 dasm_put(Dst, 13362, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2641 dasm_put(Dst, 13241, LJ_TSTR); 2677 dasm_put(Dst, 13454, LJ_TSTR);
2642 break; 2678 break;
2643 case BC_TGETS: 2679 case BC_TGETS:
2644 dasm_put(Dst, 13259, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2680 dasm_put(Dst, 13472, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2645 dasm_put(Dst, 13344, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2681 dasm_put(Dst, 13557, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2646 break; 2682 break;
2647 case BC_TGETB: 2683 case BC_TGETB:
2648 dasm_put(Dst, 13416, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2684 dasm_put(Dst, 13629, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2649 dasm_put(Dst, 13512, LJ_TNIL); 2685 dasm_put(Dst, 13725, LJ_TNIL);
2650 break; 2686 break;
2651 2687
2652 case BC_TSETV: 2688 case BC_TSETV:
2653 dasm_put(Dst, 13529, LJ_TTAB); 2689 dasm_put(Dst, 13742, LJ_TTAB);
2654 if (LJ_DUALNUM) { 2690 if (LJ_DUALNUM) {
2655 dasm_put(Dst, 13098, LJ_TISNUM); 2691 dasm_put(Dst, 13311, LJ_TISNUM);
2656 } else { 2692 } else {
2657 dasm_put(Dst, 13112, LJ_TISNUM); 2693 dasm_put(Dst, 13325, LJ_TISNUM);
2658 if (sse) { 2694 if (sse) {
2659 dasm_put(Dst, 13123); 2695 dasm_put(Dst, 13336);
2660 } else { 2696 } else {
2661 } 2697 }
2662 dasm_put(Dst, 13552); 2698 dasm_put(Dst, 13765);
2663 } 2699 }
2664 dasm_put(Dst, 13557, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 2700 dasm_put(Dst, 13770, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2665 dasm_put(Dst, 13638, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2701 dasm_put(Dst, 13851, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2666 break; 2702 break;
2667 case BC_TSETS: 2703 case BC_TSETS:
2668 dasm_put(Dst, 13697, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2704 dasm_put(Dst, 13910, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2669 dasm_put(Dst, 13774, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2705 dasm_put(Dst, 13987, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2670 dasm_put(Dst, 13861, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2706 dasm_put(Dst, 14074, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2671 break; 2707 break;
2672 case BC_TSETB: 2708 case BC_TSETB:
2673 dasm_put(Dst, 13953, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2709 dasm_put(Dst, 14166, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2674 dasm_put(Dst, 14048, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2710 dasm_put(Dst, 14261, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2675 break; 2711 break;
2676 2712
2677 case BC_TSETM: 2713 case BC_TSETM:
2678 dasm_put(Dst, 14096, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2714 dasm_put(Dst, 14309, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2679 dasm_put(Dst, 14246, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2715 dasm_put(Dst, 14459, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2680 break; 2716 break;
2681 2717
2682 /* -- Calls and vararg handling ----------------------------------------- */ 2718 /* -- Calls and vararg handling ----------------------------------------- */
2683 2719
2684 case BC_CALL: case BC_CALLM: 2720 case BC_CALL: case BC_CALLM:
2685 dasm_put(Dst, 11361); 2721 dasm_put(Dst, 11574);
2686 if (op == BC_CALLM) { 2722 if (op == BC_CALLM) {
2687 dasm_put(Dst, 14266); 2723 dasm_put(Dst, 14479);
2688 } 2724 }
2689 dasm_put(Dst, 14271, LJ_TFUNC, Dt7(->pc)); 2725 dasm_put(Dst, 14484, LJ_TFUNC, Dt7(->pc));
2690 break; 2726 break;
2691 2727
2692 case BC_CALLMT: 2728 case BC_CALLMT:
2693 dasm_put(Dst, 14266); 2729 dasm_put(Dst, 14479);
2694 break; 2730 break;
2695 case BC_CALLT: 2731 case BC_CALLT:
2696 dasm_put(Dst, 14314, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2732 dasm_put(Dst, 14527, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2697 dasm_put(Dst, 14432, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2733 dasm_put(Dst, 14645, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2698 break; 2734 break;
2699 2735
2700 case BC_ITERC: 2736 case BC_ITERC:
2701 dasm_put(Dst, 14506, LJ_TFUNC, 2+1, Dt7(->pc)); 2737 dasm_put(Dst, 14719, LJ_TFUNC, 2+1, Dt7(->pc));
2702 break; 2738 break;
2703 2739
2704 case BC_ITERN: 2740 case BC_ITERN:
2705#if LJ_HASJIT 2741#if LJ_HASJIT
2706#endif 2742#endif
2707 dasm_put(Dst, 14578, Dt6(->asize), Dt6(->array), LJ_TNIL); 2743 dasm_put(Dst, 14791, Dt6(->asize), Dt6(->array), LJ_TNIL);
2708 if (LJ_DUALNUM) { 2744 if (LJ_DUALNUM) {
2709 dasm_put(Dst, 11227, LJ_TISNUM); 2745 dasm_put(Dst, 11440, LJ_TISNUM);
2710 } else if (sse) { 2746 } else if (sse) {
2711 dasm_put(Dst, 11322); 2747 dasm_put(Dst, 11535);
2712 } else { 2748 } else {
2713 dasm_put(Dst, 14630); 2749 dasm_put(Dst, 14843);
2714 } 2750 }
2715 dasm_put(Dst, 14636); 2751 dasm_put(Dst, 14849);
2716 if (LJ_DUALNUM) { 2752 if (LJ_DUALNUM) {
2717 } else if (sse) { 2753 } else if (sse) {
2718 dasm_put(Dst, 11192); 2754 dasm_put(Dst, 11405);
2719 } else { 2755 } else {
2720 dasm_put(Dst, 11204); 2756 dasm_put(Dst, 11417);
2721 } 2757 }
2722 dasm_put(Dst, 14649, -BCBIAS_J*4); 2758 dasm_put(Dst, 14862, -BCBIAS_J*4);
2723 if (!LJ_DUALNUM && !sse) { 2759 if (!LJ_DUALNUM && !sse) {
2724 dasm_put(Dst, 14703); 2760 dasm_put(Dst, 14916);
2725 } 2761 }
2726 dasm_put(Dst, 14709, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2762 dasm_put(Dst, 14922, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2727 break; 2763 break;
2728 2764
2729 case BC_ISNEXT: 2765 case BC_ISNEXT:
2730 dasm_put(Dst, 14788, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2766 dasm_put(Dst, 15001, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2731 break; 2767 break;
2732 2768
2733 case BC_VARG: 2769 case BC_VARG:
2734 dasm_put(Dst, 14889, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2770 dasm_put(Dst, 15102, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2735 dasm_put(Dst, 15056, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2771 dasm_put(Dst, 15269, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2736 break; 2772 break;
2737 2773
2738 /* -- Returns ----------------------------------------------------------- */ 2774 /* -- Returns ----------------------------------------------------------- */
2739 2775
2740 case BC_RETM: 2776 case BC_RETM:
2741 dasm_put(Dst, 14266); 2777 dasm_put(Dst, 14479);
2742 break; 2778 break;
2743 2779
2744 case BC_RET: case BC_RET0: case BC_RET1: 2780 case BC_RET: case BC_RET0: case BC_RET1:
2745 if (op != BC_RET0) { 2781 if (op != BC_RET0) {
2746 dasm_put(Dst, 15126); 2782 dasm_put(Dst, 15339);
2747 } 2783 }
2748 dasm_put(Dst, 15130, FRAME_TYPE); 2784 dasm_put(Dst, 15343, FRAME_TYPE);
2749 switch (op) { 2785 switch (op) {
2750 case BC_RET: 2786 case BC_RET:
2751 dasm_put(Dst, 15149); 2787 dasm_put(Dst, 15362);
2752 break; 2788 break;
2753 case BC_RET1: 2789 case BC_RET1:
2754 dasm_put(Dst, 15203); 2790 dasm_put(Dst, 15416);
2755 /* fallthrough */ 2791 /* fallthrough */
2756 case BC_RET0: 2792 case BC_RET0:
2757 dasm_put(Dst, 15213); 2793 dasm_put(Dst, 15426);
2758 default: 2794 default:
2759 break; 2795 break;
2760 } 2796 }
2761 dasm_put(Dst, 15224, Dt7(->pc), PC2PROTO(k)); 2797 dasm_put(Dst, 15437, Dt7(->pc), PC2PROTO(k));
2762 if (op == BC_RET) { 2798 if (op == BC_RET) {
2763 dasm_put(Dst, 15272, LJ_TNIL); 2799 dasm_put(Dst, 15485, LJ_TNIL);
2764 } else { 2800 } else {
2765 dasm_put(Dst, 15283, LJ_TNIL); 2801 dasm_put(Dst, 15496, LJ_TNIL);
2766 } 2802 }
2767 dasm_put(Dst, 15290, -FRAME_VARG, FRAME_TYPEP); 2803 dasm_put(Dst, 15503, -FRAME_VARG, FRAME_TYPEP);
2768 if (op != BC_RET0) { 2804 if (op != BC_RET0) {
2769 dasm_put(Dst, 15314); 2805 dasm_put(Dst, 15527);
2770 } 2806 }
2771 dasm_put(Dst, 4752); 2807 dasm_put(Dst, 4761);
2772 break; 2808 break;
2773 2809
2774 /* -- Loops and branches ------------------------------------------------ */ 2810 /* -- Loops and branches ------------------------------------------------ */
@@ -2776,7 +2812,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2776 2812
2777 case BC_FORL: 2813 case BC_FORL:
2778#if LJ_HASJIT 2814#if LJ_HASJIT
2779 dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2815 dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2780#endif 2816#endif
2781 break; 2817 break;
2782 2818
@@ -2788,111 +2824,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2788 case BC_FORI: 2824 case BC_FORI:
2789 case BC_IFORL: 2825 case BC_IFORL:
2790 vk = (op == BC_IFORL || op == BC_JFORL); 2826 vk = (op == BC_IFORL || op == BC_JFORL);
2791 dasm_put(Dst, 15339); 2827 dasm_put(Dst, 15552);
2792 if (LJ_DUALNUM) { 2828 if (LJ_DUALNUM) {
2793 dasm_put(Dst, 15343, LJ_TISNUM); 2829 dasm_put(Dst, 15556, LJ_TISNUM);
2794 if (!vk) { 2830 if (!vk) {
2795 dasm_put(Dst, 15353, LJ_TISNUM, LJ_TISNUM); 2831 dasm_put(Dst, 15566, LJ_TISNUM, LJ_TISNUM);
2796 } else { 2832 } else {
2797#ifdef LUA_USE_ASSERT 2833#ifdef LUA_USE_ASSERT
2798 dasm_put(Dst, 15382, LJ_TISNUM, LJ_TISNUM); 2834 dasm_put(Dst, 15595, LJ_TISNUM, LJ_TISNUM);
2799#endif 2835#endif
2800 dasm_put(Dst, 15401); 2836 dasm_put(Dst, 15614);
2801 } 2837 }
2802 dasm_put(Dst, 15420, LJ_TISNUM); 2838 dasm_put(Dst, 15633, LJ_TISNUM);
2803 if (op == BC_FORI) { 2839 if (op == BC_FORI) {
2804 dasm_put(Dst, 15431, -BCBIAS_J*4); 2840 dasm_put(Dst, 15644, -BCBIAS_J*4);
2805 } else if (op == BC_JFORI) { 2841 } else if (op == BC_JFORI) {
2806 dasm_put(Dst, 15445, -BCBIAS_J*4, BC_JLOOP); 2842 dasm_put(Dst, 15658, -BCBIAS_J*4, BC_JLOOP);
2807 } else if (op == BC_IFORL) { 2843 } else if (op == BC_IFORL) {
2808 dasm_put(Dst, 15463, -BCBIAS_J*4); 2844 dasm_put(Dst, 15676, -BCBIAS_J*4);
2809 } else { 2845 } else {
2810 dasm_put(Dst, 15455, BC_JLOOP); 2846 dasm_put(Dst, 15668, BC_JLOOP);
2811 } 2847 }
2812 dasm_put(Dst, 15477); 2848 dasm_put(Dst, 15690);
2813 if (vk) { 2849 if (vk) {
2814 dasm_put(Dst, 15502); 2850 dasm_put(Dst, 15715);
2815 } 2851 }
2816 dasm_put(Dst, 15420, LJ_TISNUM); 2852 dasm_put(Dst, 15633, LJ_TISNUM);
2817 if (op == BC_FORI) { 2853 if (op == BC_FORI) {
2818 dasm_put(Dst, 15511); 2854 dasm_put(Dst, 15724);
2819 } else if (op == BC_JFORI) { 2855 } else if (op == BC_JFORI) {
2820 dasm_put(Dst, 15516, -BCBIAS_J*4, BC_JLOOP); 2856 dasm_put(Dst, 15729, -BCBIAS_J*4, BC_JLOOP);
2821 } else if (op == BC_IFORL) { 2857 } else if (op == BC_IFORL) {
2822 dasm_put(Dst, 15530); 2858 dasm_put(Dst, 15743);
2823 } else { 2859 } else {
2824 dasm_put(Dst, 15526, BC_JLOOP); 2860 dasm_put(Dst, 15739, BC_JLOOP);
2825 } 2861 }
2826 dasm_put(Dst, 15535); 2862 dasm_put(Dst, 15748);
2827 } else if (!vk) { 2863 } else if (!vk) {
2828 dasm_put(Dst, 15542, LJ_TISNUM); 2864 dasm_put(Dst, 15755, LJ_TISNUM);
2829 } 2865 }
2830 if (!vk) { 2866 if (!vk) {
2831 dasm_put(Dst, 15548, LJ_TISNUM); 2867 dasm_put(Dst, 15761, LJ_TISNUM);
2832 } else { 2868 } else {
2833#ifdef LUA_USE_ASSERT 2869#ifdef LUA_USE_ASSERT
2834 dasm_put(Dst, 15562, LJ_TISNUM, LJ_TISNUM); 2870 dasm_put(Dst, 15775, LJ_TISNUM, LJ_TISNUM);
2835#endif 2871#endif
2836 } 2872 }
2837 dasm_put(Dst, 15581); 2873 dasm_put(Dst, 15794);
2838 if (!vk) { 2874 if (!vk) {
2839 dasm_put(Dst, 15585, LJ_TISNUM); 2875 dasm_put(Dst, 15798, LJ_TISNUM);
2840 } 2876 }
2841 if (sse) { 2877 if (sse) {
2842 dasm_put(Dst, 15594); 2878 dasm_put(Dst, 15807);
2843 if (vk) { 2879 if (vk) {
2844 dasm_put(Dst, 15606); 2880 dasm_put(Dst, 15819);
2845 } else { 2881 } else {
2846 dasm_put(Dst, 15625); 2882 dasm_put(Dst, 15838);
2847 } 2883 }
2848 dasm_put(Dst, 15630); 2884 dasm_put(Dst, 15843);
2849 } else { 2885 } else {
2850 dasm_put(Dst, 15643); 2886 dasm_put(Dst, 15856);
2851 if (vk) { 2887 if (vk) {
2852 dasm_put(Dst, 15649); 2888 dasm_put(Dst, 15862);
2853 } else { 2889 } else {
2854 dasm_put(Dst, 15665); 2890 dasm_put(Dst, 15878);
2855 } 2891 }
2856 dasm_put(Dst, 15673); 2892 dasm_put(Dst, 15886);
2857 if (cmov) { 2893 if (cmov) {
2858 dasm_put(Dst, 10262); 2894 dasm_put(Dst, 10480);
2859 } else { 2895 } else {
2860 dasm_put(Dst, 10268); 2896 dasm_put(Dst, 10486);
2861 } 2897 }
2862 if (!cmov) { 2898 if (!cmov) {
2863 dasm_put(Dst, 15678); 2899 dasm_put(Dst, 15891);
2864 } 2900 }
2865 } 2901 }
2866 if (op == BC_FORI) { 2902 if (op == BC_FORI) {
2867 if (LJ_DUALNUM) { 2903 if (LJ_DUALNUM) {
2868 dasm_put(Dst, 15684); 2904 dasm_put(Dst, 15897);
2869 } else { 2905 } else {
2870 dasm_put(Dst, 15689, -BCBIAS_J*4); 2906 dasm_put(Dst, 15902, -BCBIAS_J*4);
2871 } 2907 }
2872 } else if (op == BC_JFORI) { 2908 } else if (op == BC_JFORI) {
2873 dasm_put(Dst, 15699, -BCBIAS_J*4, BC_JLOOP); 2909 dasm_put(Dst, 15912, -BCBIAS_J*4, BC_JLOOP);
2874 } else if (op == BC_IFORL) { 2910 } else if (op == BC_IFORL) {
2875 if (LJ_DUALNUM) { 2911 if (LJ_DUALNUM) {
2876 dasm_put(Dst, 15713); 2912 dasm_put(Dst, 15926);
2877 } else { 2913 } else {
2878 dasm_put(Dst, 15718, -BCBIAS_J*4); 2914 dasm_put(Dst, 15931, -BCBIAS_J*4);
2879 } 2915 }
2880 } else { 2916 } else {
2881 dasm_put(Dst, 15709, BC_JLOOP); 2917 dasm_put(Dst, 15922, BC_JLOOP);
2882 } 2918 }
2883 if (LJ_DUALNUM) { 2919 if (LJ_DUALNUM) {
2884 dasm_put(Dst, 10191); 2920 dasm_put(Dst, 10409);
2885 } else { 2921 } else {
2886 dasm_put(Dst, 10973); 2922 dasm_put(Dst, 11186);
2887 } 2923 }
2888 if (sse) { 2924 if (sse) {
2889 dasm_put(Dst, 15728); 2925 dasm_put(Dst, 15941);
2890 } 2926 }
2891 break; 2927 break;
2892 2928
2893 case BC_ITERL: 2929 case BC_ITERL:
2894#if LJ_HASJIT 2930#if LJ_HASJIT
2895 dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2931 dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2896#endif 2932#endif
2897 break; 2933 break;
2898 2934
@@ -2901,33 +2937,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2901 break; 2937 break;
2902#endif 2938#endif
2903 case BC_IITERL: 2939 case BC_IITERL:
2904 dasm_put(Dst, 15739, LJ_TNIL); 2940 dasm_put(Dst, 15952, LJ_TNIL);
2905 if (op == BC_JITERL) { 2941 if (op == BC_JITERL) {
2906 dasm_put(Dst, 15754, BC_JLOOP); 2942 dasm_put(Dst, 15967, BC_JLOOP);
2907 } else { 2943 } else {
2908 dasm_put(Dst, 15768, -BCBIAS_J*4); 2944 dasm_put(Dst, 15981, -BCBIAS_J*4);
2909 } 2945 }
2910 dasm_put(Dst, 10305); 2946 dasm_put(Dst, 10518);
2911 break; 2947 break;
2912 2948
2913 case BC_LOOP: 2949 case BC_LOOP:
2914#if LJ_HASJIT 2950#if LJ_HASJIT
2915 dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2951 dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2916#endif 2952#endif
2917 break; 2953 break;
2918 2954
2919 case BC_ILOOP: 2955 case BC_ILOOP:
2920 dasm_put(Dst, 10307); 2956 dasm_put(Dst, 10520);
2921 break; 2957 break;
2922 2958
2923 case BC_JLOOP: 2959 case BC_JLOOP:
2924#if LJ_HASJIT 2960#if LJ_HASJIT
2925 dasm_put(Dst, 15784, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2961 dasm_put(Dst, 15997, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2926#endif 2962#endif
2927 break; 2963 break;
2928 2964
2929 case BC_JMP: 2965 case BC_JMP:
2930 dasm_put(Dst, 15825, -BCBIAS_J*4); 2966 dasm_put(Dst, 16038, -BCBIAS_J*4);
2931 break; 2967 break;
2932 2968
2933 /* -- Function headers -------------------------------------------------- */ 2969 /* -- Function headers -------------------------------------------------- */
@@ -2941,7 +2977,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2941 2977
2942 case BC_FUNCF: 2978 case BC_FUNCF:
2943#if LJ_HASJIT 2979#if LJ_HASJIT
2944 dasm_put(Dst, 15851, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); 2980 dasm_put(Dst, 16064, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
2945#endif 2981#endif
2946 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2982 case BC_FUNCV: /* NYI: compiled vararg functions. */
2947 break; 2983 break;
@@ -2951,47 +2987,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2951 break; 2987 break;
2952#endif 2988#endif
2953 case BC_IFUNCF: 2989 case BC_IFUNCF:
2954 dasm_put(Dst, 15872, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2990 dasm_put(Dst, 16085, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2955 if (op == BC_JFUNCF) { 2991 if (op == BC_JFUNCF) {
2956 dasm_put(Dst, 15903, BC_JLOOP); 2992 dasm_put(Dst, 16116, BC_JLOOP);
2957 } else { 2993 } else {
2958 dasm_put(Dst, 10307); 2994 dasm_put(Dst, 10520);
2959 } 2995 }
2960 dasm_put(Dst, 15912, LJ_TNIL); 2996 dasm_put(Dst, 16125, LJ_TNIL);
2961 break; 2997 break;
2962 2998
2963 case BC_JFUNCV: 2999 case BC_JFUNCV:
2964#if !LJ_HASJIT 3000#if !LJ_HASJIT
2965 break; 3001 break;
2966#endif 3002#endif
2967 dasm_put(Dst, 9413); 3003 dasm_put(Dst, 9422);
2968 break; /* NYI: compiled vararg functions. */ 3004 break; /* NYI: compiled vararg functions. */
2969 3005
2970 case BC_IFUNCV: 3006 case BC_IFUNCV:
2971 dasm_put(Dst, 15934, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 3007 dasm_put(Dst, 16147, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2972 if (op == BC_JFUNCV) { 3008 if (op == BC_JFUNCV) {
2973 dasm_put(Dst, 15903, BC_JLOOP); 3009 dasm_put(Dst, 16116, BC_JLOOP);
2974 } else { 3010 } else {
2975 dasm_put(Dst, 16031, -4+PC2PROTO(k)); 3011 dasm_put(Dst, 16244, -4+PC2PROTO(k));
2976 } 3012 }
2977 dasm_put(Dst, 16056, LJ_TNIL); 3013 dasm_put(Dst, 16269, LJ_TNIL);
2978 break; 3014 break;
2979 3015
2980 case BC_FUNCC: 3016 case BC_FUNCC:
2981 case BC_FUNCCW: 3017 case BC_FUNCCW:
2982 dasm_put(Dst, 16078, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 3018 dasm_put(Dst, 16291, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2983 if (op == BC_FUNCC) { 3019 if (op == BC_FUNCC) {
2984 dasm_put(Dst, 2424); 3020 dasm_put(Dst, 2433);
2985 } else { 3021 } else {
2986 dasm_put(Dst, 16108); 3022 dasm_put(Dst, 16321);
2987 } 3023 }
2988 dasm_put(Dst, 16116, DISPATCH_GL(vmstate), ~LJ_VMST_C); 3024 dasm_put(Dst, 16329, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2989 if (op == BC_FUNCC) { 3025 if (op == BC_FUNCC) {
2990 dasm_put(Dst, 16126); 3026 dasm_put(Dst, 16339);
2991 } else { 3027 } else {
2992 dasm_put(Dst, 16131, DISPATCH_GL(wrapf)); 3028 dasm_put(Dst, 16344, DISPATCH_GL(wrapf));
2993 } 3029 }
2994 dasm_put(Dst, 16137, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 3030 dasm_put(Dst, 16350, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2995 break; 3031 break;
2996 3032
2997 /* ---------------------------------------------------------------------- */ 3033 /* ---------------------------------------------------------------------- */
@@ -3019,7 +3055,7 @@ static int build_backend(BuildCtx *ctx)
3019 3055
3020 build_subroutines(ctx, cmov, sse); 3056 build_subroutines(ctx, cmov, sse);
3021 3057
3022 dasm_put(Dst, 16163); 3058 dasm_put(Dst, 16376);
3023 for (op = 0; op < BC__MAX; op++) 3059 for (op = 0; op < BC__MAX; op++)
3024 build_ins(ctx, (BCOp)op, op, cmov, sse); 3060 build_ins(ctx, (BCOp)op, op, cmov, sse);
3025 3061
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index b051974c..533d5b00 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[16020] = { 15static const unsigned char build_actionlist[16196] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68, 17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237, 18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,
@@ -50,746 +50,755 @@ static const unsigned char build_actionlist[16020] = {
50 124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209, 50 124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209,
51 133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,209,131,230, 51 133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,209,131,230,
52 252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244, 52 252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,
53 72,99,77,252,240,133,201,15,132,244,247,255,72,141,61,245,72,1,252,249,139, 53 72,99,77,252,240,255,131,252,249,1,15,134,244,247,255,72,141,61,245,72,1,
54 122,252,248,139,191,233,139,191,233,252,255,225,248,1,41,213,193,252,237, 54 252,249,255,139,122,252,248,139,191,233,139,191,233,252,255,225,255,248,1,
55 3,141,69,252,255,252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141, 55 15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248,
56 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,65,137,200,139, 56 34,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,
57 76,36,96,137,145,233,72,139,0,72,137,69,0,137,252,234,252,233,244,35,248, 57 247,217,193,252,233,3,65,137,200,139,76,36,96,137,145,233,72,139,0,72,137,
58 36,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133, 58 69,0,137,252,234,252,233,244,36,248,37,137,68,36,80,199,68,36,84,237,72,141,
59 244,247,141,139,233,137,41,199,65,4,237,255,137,205,252,233,244,248,248,37, 59 68,36,80,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,
60 15,182,70,252,254,255,199,68,36,84,237,137,68,36,80,255,252,242,15,42,192, 60 137,205,252,233,244,248,248,38,15,182,70,252,254,255,199,68,36,84,237,137,
61 252,242,15,17,68,36,80,255,72,141,68,36,80,252,233,244,247,248,38,15,182, 61 68,36,80,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141,68,36,80,
62 70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,139,76, 62 252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,
63 36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,36,100,232,251,1, 63 141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,
64 1,139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,72,139,40,72, 64 205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244,249,248,35,
65 137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 65 15,182,78,252,253,72,139,40,72,137,44,202,139,6,15,182,204,15,182,232,131,
66 235,248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248, 66 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,141,
67 184,237,252,233,244,30,248,39,137,68,36,80,199,68,36,84,237,72,141,68,36, 67 177,233,41,214,139,105,252,248,184,237,252,233,244,30,248,40,137,68,36,80,
68 80,128,126,252,252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237, 68 199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,244,247,255,141,
69 137,205,252,233,244,248,248,40,15,182,70,252,254,255,72,141,68,36,80,252, 69 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,41,15,182,70,252,
70 233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141, 70 254,255,72,141,68,36,80,252,233,244,247,248,42,15,182,70,252,254,141,4,194,
71 44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205, 71 248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,
72 137,116,36,100,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252, 72 252,234,73,137,192,137,205,137,116,36,100,232,251,1,2,139,149,233,133,192,
73 253,72,139,44,202,72,137,40,248,42,139,6,15,182,204,15,182,232,131,198,4, 73 15,132,244,249,15,182,78,252,253,72,139,44,202,72,137,40,248,43,139,6,15,
74 193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,15,182,70, 74 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,139,141,
75 252,253,72,139,44,194,72,137,105,16,141,177,233,41,214,139,105,252,248,184, 75 233,137,113,252,244,15,182,70,252,253,72,139,44,194,72,137,105,16,141,177,
76 237,252,233,244,30,248,43,139,108,36,96,137,149,233,68,141,4,194,141,20,202, 76 233,41,214,139,105,252,248,184,237,252,233,244,30,248,44,139,108,36,96,137,
77 137,252,233,68,15,182,78,252,252,137,116,36,100,232,251,1,3,248,3,139,149, 77 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116,
78 233,255,131,252,248,1,15,135,244,44,248,4,141,118,4,15,130,244,252,248,5, 78 36,100,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248,
79 15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131, 79 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,
80 198,4,193,232,16,252,255,36,252,235,248,45,131,198,4,129,120,253,4,239,15, 80 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,
81 130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131, 81 46,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120,
82 252,238,4,65,137,192,65,137,252,233,139,108,36,96,137,149,233,255,137,202, 82 253,4,239,252,233,244,4,248,48,131,252,238,4,65,137,192,65,137,252,233,139,
83 137,252,233,137,116,36,100,232,251,1,4,252,233,244,3,248,48,255,131,252,238, 83 108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,
84 4,139,108,36,96,137,149,233,137,252,233,139,86,252,252,137,116,36,100,232, 84 252,233,244,3,248,49,255,131,252,238,4,139,108,36,96,137,149,233,137,252,
85 251,1,5,252,233,244,3,255,248,49,255,15,182,110,252,255,255,248,50,141,4, 85 233,139,86,252,252,137,116,36,100,232,251,1,5,252,233,244,3,255,248,50,255,
86 199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233, 86 15,182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53,
87 244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,141,4, 87 141,4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252,
88 194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,70, 88 233,244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12,
89 252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,116, 89 202,65,137,232,65,137,193,15,182,70,252,252,137,68,36,32,139,108,36,96,137,
90 36,100,232,251,1,6,139,149,233,133,192,15,132,244,42,248,44,137,193,41,208, 90 149,233,137,202,137,252,233,137,116,36,100,232,251,1,6,139,149,233,133,192,
91 137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108,36,96,137, 91 15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237,252,
92 149,233,141,20,194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,255, 92 233,244,28,248,57,139,108,36,96,137,149,233,141,20,194,137,252,233,137,116,
93 133,192,15,133,244,44,15,183,70,252,254,139,12,194,252,233,244,57,255,252, 93 36,100,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252,254,
94 233,244,44,255,248,58,141,76,202,8,248,29,137,76,36,84,137,68,36,80,131,252, 94 139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8,248,
95 233,8,139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137,116, 95 29,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,96,137,149,233,137,
96 36,100,232,251,1,8,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248, 96 202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,8,139,149,233,139,76,
97 131,192,1,57,215,15,132,244,59,137,202,137,114,252,252,139,181,233,139,14, 97 36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,15,132,244,60,137,202,
98 15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,248,60,139,108,36, 98 137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,
99 96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,9,139,149,233, 99 255,36,252,235,248,61,139,108,36,96,137,149,233,137,202,137,252,233,137,116,
100 139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235,233, 100 36,100,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,
101 248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253,239,15,131,244, 101 16,252,255,164,253,252,235,233,248,62,129,252,248,239,15,130,244,63,139,106,
102 62,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131, 102 4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,84,137,106,252,
103 232,2,15,132,244,248,255,137,209,248,1,131,193,8,72,139,41,72,137,105,252, 103 252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,
104 248,131,232,1,15,133,244,1,248,2,139,68,36,84,252,233,244,63,248,64,129,252, 104 193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
105 248,239,15,130,244,62,139,106,4,137,252,233,193,252,249,15,131,252,249,252, 105 84,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139,106,4,137,252,
106 254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244, 106 233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237,252,247,213,
107 247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252, 107 57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,
108 252,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,184,237,252,233, 108 248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
109 244,2,248,66,129,252,248,239,15,130,244,62,139,106,4,139,114,252,252,129, 109 252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248,239,15,130,
110 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199, 110 244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,
111 66,252,252,237,255,15,132,244,65,139,131,233,199,66,252,252,237,137,106,252, 111 42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,244,66,139,
112 248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15, 112 131,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,233,105,201,
113 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244, 113 239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,
114 3,255,252,233,244,65,248,5,139,105,4,129,252,253,239,15,132,244,65,139,1, 114 251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66,248,5,139,105,
115 137,106,252,252,137,66,252,248,252,233,244,65,248,6,129,252,253,239,15,132, 115 4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66,252,248,252,
116 244,1,129,252,253,239,15,135,244,254,129,252,253,239,15,134,244,253,189,237, 116 233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,
117 252,233,244,254,248,7,255,189,237,248,8,252,247,213,139,172,253,171,233,252, 117 254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248,7,255,189,
118 233,244,2,248,67,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244, 118 237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68,129,252,248,
119 62,139,42,131,189,233,0,15,133,244,62,129,122,253,12,239,15,133,244,62,139, 119 239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131,189,233,0,15,
120 66,8,137,133,233,139,114,252,252,199,66,252,252,237,255,137,106,252,248,252, 120 133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133,233,139,114,
121 246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137, 121 252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233,235,15,132,
122 133,233,248,1,252,233,244,65,248,68,129,252,248,239,15,130,244,62,129,122, 122 244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,
123 253,4,239,15,133,244,62,137,213,68,141,66,8,139,18,139,76,36,96,232,251,1, 123 244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,
124 10,137,252,234,72,139,40,139,114,252,252,72,137,106,252,248,252,233,244,65, 124 63,137,213,68,141,66,8,139,18,139,76,36,96,232,251,1,10,137,252,234,72,139,
125 248,69,255,129,252,248,239,15,133,244,62,129,122,253,4,239,255,15,133,244, 125 40,139,114,252,252,72,137,106,252,248,252,233,244,66,248,70,255,129,252,248,
126 247,139,42,252,233,244,70,248,1,15,135,244,62,255,15,131,244,62,255,252,242, 126 239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,
127 15,16,2,252,233,244,71,255,221,2,252,233,244,72,255,248,73,129,252,248,239, 127 71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244,
128 15,130,244,62,139,114,252,252,129,122,253,4,239,15,133,244,249,139,2,248, 128 72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130,244,63,139,
129 2,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,129,122,253,4,239, 129 114,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,
130 15,135,244,62,131,187,233,0,15,133,244,62,139,171,233,59,171,233,255,15,130, 130 137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187,
131 244,247,232,244,74,248,1,139,108,36,96,137,149,233,137,116,36,100,137,252, 131 233,0,15,133,244,63,139,171,233,59,171,233,255,15,130,244,247,232,244,75,
132 233,255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,75, 132 248,1,139,108,36,96,137,149,233,137,116,36,100,137,252,233,255,232,251,1,
133 129,252,248,239,15,130,244,62,15,132,244,248,248,1,129,122,253,4,239,15,133, 133 11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,76,129,252,248,239,
134 244,62,139,108,36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8, 134 15,130,244,63,15,132,244,248,248,1,129,122,253,4,239,15,133,244,63,139,108,
135 139,18,137,252,233,137,116,36,100,232,251,1,13,139,149,233,133,192,15,132, 135 36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8,139,18,137,252,
136 244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,76,184, 136 233,137,116,36,100,232,251,1,13,139,149,233,133,192,15,132,244,249,72,139,
137 237,255,252,233,244,77,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252, 137 106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77,184,237,255,252,233,
138 252,237,252,233,244,65,248,78,129,252,248,239,15,130,244,62,139,42,129,122, 138 244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,
139 253,4,239,15,133,244,62,255,131,189,233,0,15,133,244,62,255,139,106,252,248, 139 244,66,248,79,129,252,248,239,15,130,244,63,139,42,129,122,253,4,239,15,133,
140 139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237, 140 244,63,255,131,189,233,0,15,133,244,63,255,139,106,252,248,139,133,233,139,
141 184,237,252,233,244,77,248,79,129,252,248,239,15,130,244,62,129,122,253,4, 141 114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,
142 239,15,133,244,62,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131, 142 244,78,248,80,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,
143 192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237, 143 63,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,192,1,199,66,252,
144 237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66, 144 252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,
145 252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129, 145 205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,
146 120,253,4,239,15,132,244,80,72,139,40,72,137,42,252,233,244,76,248,2,131, 146 42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,
147 189,233,0,15,132,244,80,137,252,233,137,213,137,194,232,251,1,14,137,252, 147 15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131,189,233,0,15,132,
148 234,133,192,15,133,244,1,248,80,184,237,252,233,244,77,248,81,255,139,106, 148 244,81,137,252,233,137,213,137,194,232,251,1,14,137,252,234,133,192,15,133,
149 252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,255, 149 244,1,248,81,184,237,252,233,244,78,248,82,255,139,106,252,248,139,133,233,
150 199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252, 150 139,114,252,252,199,66,252,252,237,137,66,252,248,255,199,66,12,237,199,66,
151 238,221,90,8,255,184,237,252,233,244,77,248,82,129,252,248,239,15,130,244, 151 8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,
152 62,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229, 152 237,252,233,244,78,248,83,129,252,248,239,15,130,244,63,141,74,8,131,232,
153 1,1,252,238,252,233,244,28,248,83,129,252,248,239,15,130,244,62,129,122,253, 153 1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,238,252,233,
154 12,239,15,133,244,62,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114, 154 244,28,248,84,129,252,248,239,15,130,244,63,129,122,253,12,239,15,133,244,
155 8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,84,129,252, 155 63,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,
156 248,239,15,130,244,62,139,42,139,114,252,252,137,116,36,100,137,108,36,80, 156 141,74,16,131,232,2,190,237,252,233,244,1,248,85,129,252,248,239,15,130,244,
157 129,122,253,4,239,15,133,244,62,72,131,189,233,0,15,133,244,62,128,189,233, 157 63,139,42,139,114,252,252,137,116,36,100,137,108,36,80,129,122,253,4,239,
158 235,15,135,244,62,139,141,233,15,132,244,247,255,59,141,233,15,132,244,62, 158 15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235,15,135,244,63,
159 248,1,141,116,193,252,240,59,181,233,15,135,244,62,137,181,233,139,108,36, 159 139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248,1,141,116,193,
160 96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206, 160 252,240,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149,233,131,
161 15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15, 161 194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,15,132,244,249,248,
162 133,244,2,248,3,137,202,139,76,36,80,232,244,25,199,131,233,237,255,139,108, 162 2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,
163 36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139, 163 202,139,76,36,80,232,244,25,199,131,233,237,255,139,108,36,96,139,116,36,
164 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50, 164 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,
165 193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1, 165 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,
166 72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252, 166 233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,
167 237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252,255, 167 57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,
168 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252, 168 100,137,68,36,84,72,199,193,252,248,252,255,252,255,252,255,252,247,198,237,
169 252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237,252, 169 255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,
170 233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,251, 170 252,233,8,137,142,233,72,139,1,72,137,2,184,237,252,233,244,7,248,9,139,76,
171 1,0,139,116,36,80,139,149,233,252,233,244,4,248,85,139,106,252,248,139,173, 171 36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,
172 233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133, 172 233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,114,252,252,137,
173 244,62,255,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247,59,141, 173 116,36,100,137,108,36,80,72,131,189,233,0,15,133,244,63,255,128,189,233,235,
174 233,15,132,244,62,248,1,141,116,193,252,248,59,181,233,15,135,244,62,137, 174 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141,
175 181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72,41,252, 175 116,193,252,248,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149,
176 245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248,131,252, 176 233,137,149,233,141,108,194,252,240,72,41,252,245,57,206,15,132,244,249,248,
177 238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,25,199,131,233, 177 2,255,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,
178 237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254, 178 3,137,202,139,76,36,80,232,244,25,199,131,233,237,139,108,36,96,139,116,36,
179 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252, 179 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,
180 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248, 180 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,
181 5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248, 181 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,
182 7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233, 182 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,100,137,68,36,84,
183 244,14,248,8,137,252,242,137,252,233,232,251,1,15,248,9,139,76,36,80,137, 183 49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252,242,137,
184 185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,233,252, 184 252,233,232,251,1,15,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,
185 233,244,4,248,86,139,108,36,96,72,252,247,133,233,237,15,132,244,62,255,137, 185 232,251,1,0,139,116,36,80,139,149,233,252,233,244,4,248,87,139,108,36,96,
186 149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136, 186 72,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,
187 133,233,252,233,244,16,255,248,70,255,248,72,139,114,252,252,221,90,252,248, 187 133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,244,16,255,248,
188 252,233,244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4, 188 71,255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129,
189 239,15,133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136, 189 252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,
190 244,247,248,88,248,70,139,114,252,252,199,66,252,252,237,137,106,252,248, 190 252,253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114,
191 252,233,244,65,248,1,139,114,252,252,199,66,252,252,0,0,224,65,199,66,252, 191 252,252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252,
192 248,0,0,0,0,252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131, 192 252,199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,
193 244,62,255,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248, 193 15,135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,72,
194 71,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,71,248, 194 184,237,237,102,72,15,110,200,15,84,193,248,72,139,114,252,252,252,242,15,
195 72,139,114,252,252,221,90,252,248,255,248,65,184,237,248,77,137,68,36,84, 195 17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252,252,221,90,252,
196 248,63,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252, 196 248,255,248,66,184,237,248,78,137,68,36,84,248,64,252,247,198,237,15,133,
197 15,182,78,252,253,72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131, 197 244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,72,252,247,209,
198 198,4,193,232,16,252,255,36,252,235,248,6,199,68,194,252,244,237,131,192, 198 141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
199 1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,252,233, 199 235,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,
200 244,14,248,89,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,70, 200 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,
201 248,1,15,135,244,62,255,252,242,15,16,2,232,244,90,255,252,242,15,45,232, 201 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,
202 129,252,253,0,0,0,128,15,133,244,70,252,242,15,42,205,102,15,46,193,15,138, 202 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,
203 244,71,15,132,244,70,255,221,2,232,244,90,255,248,91,255,252,242,15,16,2, 203 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,
204 232,244,92,255,221,2,232,244,92,255,248,93,129,252,248,239,15,130,244,62, 204 91,255,248,92,255,252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248,
205 129,122,253,4,239,15,131,244,62,252,242,15,81,2,252,233,244,71,255,248,93, 205 94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
206 129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252, 206 15,81,2,252,233,244,72,255,248,94,129,252,248,239,15,130,244,63,129,122,253,
207 250,252,233,244,72,255,248,94,129,252,248,239,15,130,244,62,129,122,253,4, 207 4,239,15,131,244,63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248,
208 239,15,131,244,62,217,252,237,221,2,217,252,241,252,233,244,72,248,95,129, 208 239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252,
209 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252,236,221, 209 241,252,233,244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239,
210 2,217,252,241,252,233,244,72,248,96,129,252,248,239,255,15,130,244,62,129, 210 15,131,244,63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252,
211 122,253,4,239,15,131,244,62,221,2,232,244,97,252,233,244,72,248,98,129,252, 211 248,239,255,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98,
212 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,254,252, 212 252,233,244,73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
213 233,244,72,248,99,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15, 213 131,244,63,221,2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15,
214 131,244,62,221,2,217,252,255,252,233,244,72,248,100,129,252,248,239,15,130, 214 130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244,
215 244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,242,221,216,252,233, 215 73,248,101,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
216 244,72,248,101,129,252,248,239,15,130,244,62,255,129,122,253,4,239,15,131, 216 221,2,217,252,242,221,216,252,233,244,73,248,102,129,252,248,239,15,130,244,
217 244,62,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252, 217 63,255,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,
218 233,244,72,248,102,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 218 225,217,252,250,217,252,243,252,233,244,73,248,103,129,252,248,239,15,130,
219 244,62,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252, 219 244,63,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,
220 243,252,233,244,72,248,103,129,252,248,239,15,130,244,62,129,122,253,4,239, 220 225,217,252,250,217,201,217,252,243,252,233,244,73,248,104,129,252,248,239,
221 15,131,244,62,255,221,2,217,232,217,252,243,252,233,244,72,255,248,104,129, 221 15,130,244,63,129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243,
222 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2, 222 252,233,244,73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239,
223 255,137,213,232,251,1,16,137,252,234,252,233,244,71,255,248,105,129,252,248, 223 15,131,244,63,252,242,15,16,2,255,137,213,232,251,1,16,137,252,234,252,233,
224 239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255,137, 224 244,72,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
225 213,232,251,1,17,137,252,234,252,233,244,71,255,248,106,129,252,248,239,15, 225 244,63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72,
226 130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255,137,213,232, 226 255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
227 251,1,18,137,252,234,252,233,244,71,248,107,255,248,108,129,252,248,239,15, 227 252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,248,108,
228 130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,139,106,252,248, 228 255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
229 252,242,15,89,133,233,252,233,244,71,255,248,108,129,252,248,239,15,130,244, 229 252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,
230 62,129,122,253,4,239,15,131,244,62,221,2,139,106,252,248,220,141,233,252, 230 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
231 233,244,72,255,248,109,129,252,248,239,15,130,244,62,129,122,253,4,239,15, 231 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,
232 131,244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,217,252,243,252, 232 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
233 233,244,72,248,110,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 233 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,
234 244,62,129,122,253,12,239,255,15,131,244,62,221,66,8,221,2,217,252,253,221, 234 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,
235 217,252,233,244,72,248,111,129,252,248,239,15,130,244,62,139,106,4,129,252, 235 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,
236 253,239,15,131,244,62,139,114,252,252,139,2,137,106,252,252,137,66,252,248, 236 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252,
237 209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184, 237 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,
238 252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41, 238 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,
239 197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252, 239 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,
240 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248, 240 108,36,80,219,68,36,80,255,139,106,252,252,129,229,252,255,252,255,15,128,
241 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,77,248,3,255,15, 241 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,
242 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242, 242 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,
243 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17, 243 252,233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,
244 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248, 244 205,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,80,0,0,
245 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,112,129,252, 245 128,90,216,76,36,80,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,
246 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255, 246 252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239,
247 248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221, 247 15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15,130,244,63,129,
248 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132, 248 122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252,252,209,229,129,
249 244,250,255,15,40,224,232,244,113,252,242,15,92,224,248,1,252,242,15,17,66, 249 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,114,252,242,
250 252,248,252,242,15,17,34,255,217,192,232,244,113,220,252,233,248,1,221,90, 250 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
251 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184, 251 244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
252 237,252,233,244,77,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248, 252 4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248,3,129,252,245,0,
253 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248, 253 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,
254 114,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 254 252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15,130,244,63,129,
255 253,12,239,15,131,244,62,221,66,8,221,2,248,1,217,252,248,223,224,158,15, 255 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,66,8,221,
256 138,244,1,221,217,252,233,244,72,255,248,115,129,252,248,239,15,130,244,62, 256 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,73,255,248,
257 129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242, 257 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,
258 15,16,2,252,242,15,16,74,8,232,244,116,252,233,244,71,255,248,115,129,252, 258 253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252,
259 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 259 233,244,72,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
260 15,131,244,62,221,2,221,66,8,232,244,116,252,233,244,72,255,248,117,185,2, 260 131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252,
261 0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244, 261 233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,
262 70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,79,108, 262 42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,
263 202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,252,233,244,252, 263 59,108,202,252,248,15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,
264 248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193,15,131,244,71,129,124, 264 135,244,63,255,252,233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248,
265 253,202,252,252,239,255,15,130,244,252,15,135,244,62,252,242,15,42,76,202, 265 5,57,193,15,131,244,72,129,124,253,202,252,252,239,255,15,130,244,252,15,
266 252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,248,7,252, 266 135,244,63,252,242,15,42,76,202,252,248,252,233,244,253,255,248,6,252,242,
267 242,15,93,193,131,193,1,252,233,244,5,255,248,118,185,2,0,0,0,129,122,253, 267 15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,
268 4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,70,129,124,253,202, 268 248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,
269 252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248,131,193, 269 193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,
270 1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242,15,16,76,202,252,248, 270 248,15,76,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255,
271 248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,252,233, 271 248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,95,193,131,193,1,252,
272 244,62,255,248,119,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133, 272 233,244,5,255,248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15,
273 244,62,139,42,255,139,173,233,252,233,244,70,255,252,242,15,42,133,233,252, 273 130,244,63,129,122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233,
274 233,244,71,255,219,133,233,252,233,244,72,255,248,120,129,252,248,239,15, 274 244,71,255,252,242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244,
275 133,244,62,129,122,253,4,239,15,133,244,62,139,42,139,114,252,252,131,189, 275 73,255,248,121,129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244,
276 233,1,15,130,244,80,15,182,173,233,255,252,242,15,42,197,252,233,244,71,255, 276 63,139,42,139,114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255,
277 137,108,36,80,219,68,36,80,252,233,244,72,255,248,121,139,171,233,59,171, 277 252,242,15,42,197,252,233,244,72,255,137,108,36,80,219,68,36,80,252,233,244,
278 233,15,130,244,247,232,244,74,248,1,129,252,248,239,15,133,244,62,129,122, 278 73,255,248,122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,
279 253,4,239,255,15,133,244,62,139,42,129,252,253,252,255,0,0,0,15,135,244,62, 279 252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129,
280 137,108,36,84,255,15,131,244,62,252,242,15,44,42,129,252,253,252,255,0,0, 280 252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131,244,63,252,242,
281 0,15,135,244,62,137,108,36,84,255,15,131,244,62,221,2,219,92,36,84,129,124, 281 15,44,42,129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131,
282 36,84,252,255,0,0,0,15,135,244,62,255,199,68,36,32,1,0,0,0,72,141,68,36,84, 282 244,63,221,2,219,92,36,84,129,124,36,84,252,255,0,0,0,15,135,244,63,255,199,
283 248,122,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233, 283 68,36,32,1,0,0,0,72,141,68,36,84,248,123,139,108,36,96,137,149,233,68,139,
284 137,116,36,100,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252,237, 284 68,36,32,72,137,194,137,252,233,137,116,36,100,232,251,1,19,139,149,233,139,
285 137,66,252,248,252,233,244,65,248,123,139,171,233,59,171,233,15,130,244,247, 285 114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,66,248,124,139,
286 232,244,74,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248, 286 171,233,59,171,233,15,130,244,247,232,244,75,248,1,199,68,36,84,252,255,252,
287 239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15,133,244,62,139, 287 255,252,255,252,255,129,252,248,239,15,130,244,63,15,134,244,247,129,122,
288 106,16,137,108,36,84,255,15,131,244,62,252,242,15,44,106,16,137,108,36,84, 288 253,20,239,255,15,133,244,63,139,106,16,137,108,36,84,255,15,131,244,63,252,
289 255,15,131,244,62,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133, 289 242,15,44,106,16,137,108,36,84,255,15,131,244,63,221,66,16,219,92,36,84,255,
290 244,62,129,122,253,12,239,255,139,42,137,108,36,32,139,173,233,255,139,74, 290 248,1,129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,42,137,108,
291 8,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133, 291 36,32,139,173,233,255,139,74,8,255,252,242,15,44,74,8,255,139,68,36,84,57,
292 201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,124,141,172,253, 292 197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,
293 13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,122,248,5,15,140, 293 15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,
294 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15, 294 233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,
295 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244, 295 252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,
296 3,248,124,49,192,252,233,244,4,248,125,129,252,248,239,15,130,244,62,139, 296 8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4,248,126,129,252,
297 171,233,59,171,233,15,130,244,247,232,244,74,248,1,255,129,122,253,4,239, 297 248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248,
298 15,133,244,62,129,122,253,12,239,139,42,255,15,133,244,62,139,66,8,255,15, 298 1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139,42,255,15,133,
299 131,244,62,252,242,15,44,66,8,255,15,131,244,62,221,66,8,219,92,36,84,139, 299 244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15,131,244,63,221,
300 68,36,84,255,133,192,15,142,244,124,131,189,233,1,15,130,244,124,15,133,244, 300 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,125,131,189,233,1,15,
301 126,57,131,233,15,130,244,126,15,182,141,233,139,171,233,137,68,36,32,248, 301 130,244,125,15,133,244,127,57,131,233,15,130,244,127,15,182,141,233,139,171,
302 1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,122,248, 302 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,
303 127,129,252,248,239,255,15,130,244,62,139,171,233,59,171,233,15,130,244,247, 303 233,252,233,244,123,248,128,129,252,248,239,255,15,130,244,63,139,171,233,
304 232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,133,192, 304 59,171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,
305 15,132,244,124,57,131,233,15,130,244,128,129,197,239,137,116,36,84,137,68, 305 139,42,139,133,233,133,192,15,132,244,125,57,131,233,15,130,244,129,129,197,
306 36,32,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133, 306 239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,15,182,77,0,131,197,
307 244,1,137,252,240,139,116,36,84,252,233,244,122,248,129,129,252,248,239,15, 307 1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,84,252,233,244,123,
308 130,244,62,139,171,233,59,171,233,15,130,244,247,232,244,74,248,1,129,122, 308 248,130,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,
309 253,4,239,15,133,244,62,139,42,139,133,233,57,131,233,255,15,130,244,128, 309 232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,
310 233,255,15,130,244,129,129,197,239,137,116,36,84,137,68,36,32,139,179,233,
311 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,
312 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,
313 244,1,137,252,240,139,116,36,84,252,233,244,123,248,131,129,252,248,239,15,
314 130,244,63,255,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,
315 122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233,15,130,244,129,
310 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1, 316 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,
311 15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248, 317 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,
312 131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139, 318 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,
313 116,36,84,252,233,244,122,248,130,129,252,248,239,15,130,244,62,255,139,171, 319 139,116,36,84,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122,
314 233,59,171,233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244, 320 253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252,234,255,137,197,
315 62,139,42,139,133,233,57,131,233,15,130,244,128,129,197,239,137,116,36,84, 321 252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248,
316 137,68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249, 322 239,15,130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,
317 97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,2, 323 89,248,1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
318 136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244, 324 252,242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248,
319 122,248,131,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244,62, 325 239,15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,68,36,80,0,
320 137,213,139,10,232,251,1,20,137,252,234,255,137,197,252,233,244,70,255,252, 326 0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255,
321 242,15,42,192,252,233,244,71,255,248,132,129,252,248,239,15,130,244,62,129, 327 252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,84,141,
322 122,253,4,239,255,15,133,244,247,139,42,252,233,244,88,248,1,15,135,244,62, 328 68,194,252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244,
323 255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102, 329 248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135,
324 15,126,197,255,252,233,244,88,255,248,133,129,252,248,239,15,130,244,62,255, 330 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,
325 72,189,237,237,102,72,15,110,205,255,199,68,36,80,0,0,192,89,255,15,133,244, 331 252,233,244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11,
326 247,139,42,252,233,244,248,248,1,15,135,244,62,255,252,242,15,16,2,252,242, 332 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242,
327 15,88,193,102,15,126,197,255,248,2,137,68,36,84,141,68,194,252,240,248,1, 333 15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252,
328 57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8, 334 248,239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,
329 252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255,252,242,15,16,0, 335 2,15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,
330 252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244,1,248,135, 336 205,255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129,
331 129,252,248,239,15,130,244,62,255,15,133,244,248,11,40,131,232,8,252,233, 337 122,253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15,
332 244,1,248,2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126, 338 130,244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15,
333 193,9,205,255,131,232,8,252,233,244,1,248,136,129,252,248,239,15,130,244, 339 42,197,252,233,244,72,255,248,135,139,68,36,84,252,233,244,63,255,248,140,
334 62,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135,244,134, 340 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,
335 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,131,232,8, 341 239,15,133,244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,
336 252,233,244,1,248,137,129,252,248,239,15,130,244,62,129,122,253,4,239,255, 342 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,
337 248,2,15,205,252,233,244,88,248,138,129,252,248,239,15,130,244,62,129,122,
338 253,4,239,255,248,2,252,247,213,255,248,88,252,242,15,42,197,252,233,244,
339 71,255,248,134,139,68,36,84,252,233,244,62,255,248,139,129,252,248,239,15,
340 130,244,62,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,244,62,139,
341 74,8,255,248,139,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,
342 62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,
343 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,
344 126,197,102,15,126,201,255,211,229,252,233,244,88,255,248,140,129,252,248,
345 239,15,130,244,62,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,
346 62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,
347 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
348 194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,237,252,233,
349 244,88,255,248,141,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,
350 141,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,
351 253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
352 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,
353 15,126,201,255,211,252,253,252,233,244,88,255,248,142,129,252,248,239,15,
354 130,244,62,129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,62,129,
355 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,
356 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252, 343 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
357 242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,252,233,244,88,255, 344 242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255,
358 248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,143,129,252, 345 248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,
359 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239, 346 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,
360 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15, 347 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,
361 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201, 348 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,
362 255,211,205,252,233,244,88,248,126,184,237,252,233,244,62,248,128,184,237, 349 255,211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,
363 248,62,139,108,36,96,139,114,252,252,137,116,36,100,137,149,233,141,68,194, 350 129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,
364 252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251, 351 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,
365 137,252,233,252,255,144,233,139,149,233,133,192,15,143,244,77,248,1,255,139, 352 15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,
366 141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244, 353 88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248,
367 32,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252, 354 143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248,
368 235,248,32,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,72,252, 355 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,
369 247,213,141,20,252,234,252,233,244,28,248,3,137,252,245,131,229,252,248,41, 356 244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
370 252,234,252,233,244,28,248,5,186,237,137,252,233,232,251,1,0,139,149,233, 357 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,
371 49,192,252,233,244,1,248,74,93,72,137,108,36,32,139,108,36,96,137,116,36, 358 197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253,
372 100,137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1, 359 4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
373 21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,32,85, 360 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,
374 195,248,144,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244, 361 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,
375 247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,145,15, 362 15,126,197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252,
376 182,131,233,168,235,15,133,244,251,252,233,244,247,248,146,15,182,131,233, 363 233,244,63,248,129,184,237,248,63,139,108,36,96,139,114,252,252,137,116,36,
377 168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244, 364 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,
378 247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,233,137,252,242, 365 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192,
379 137,252,233,232,251,1,22,248,3,139,149,233,248,4,15,182,78,252,253,248,5, 366 15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
380 15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,233,248,147, 367 139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233,15,182,205,
381 131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,148,255,139,106,252,248, 368 131,198,4,252,255,36,252,235,248,33,137,209,252,247,198,237,15,133,244,249,
382 139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,137,133,233, 369 15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137,
383 137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,1,23,252,233, 370 252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137,252,233,
384 244,3,255,248,149,137,116,36,100,255,248,150,255,137,116,36,100,131,206,1, 371 232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,32,139,
385 248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,133,233,137,252, 372 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137,
386 242,137,252,233,232,251,1,24,199,68,36,100,0,0,0,0,255,131,230,252,254,255, 373 133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
387 139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,78,252,253,193, 374 139,108,36,32,85,195,248,145,255,15,182,131,233,168,235,15,133,244,251,168,
388 232,3,131,192,1,252,255,229,248,151,255,65,85,65,84,65,83,65,82,65,81,65, 375 235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,
389 80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,252, 376 255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,147,
390 240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,233,199,131,233, 377 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,
391 237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,128,252,242,68, 378 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,
392 15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68,15,17,109,232,252, 379 233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,15,182,78,
393 242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68,15,17,85,208,252, 380 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,
394 242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,125,184,252,242, 381 233,248,148,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,149,255,139,
395 15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,252,242,15,17,93, 382 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,
396 152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,17,69,128,139,171, 383 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,
397 233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,149,233,72,141,148, 384 1,23,252,233,244,3,255,248,150,137,116,36,100,255,248,151,255,137,116,36,
398 253,36,233,141,139,233,232,251,1,25,72,139,141,233,72,129,225,239,137,169, 385 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,
399 233,139,149,233,139,177,233,252,233,244,247,255,248,152,255,72,141,140,253, 386 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,100,0,0,0,0,255,131,
400 36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,102,68,15,111,169, 387 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,
401 233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,15,111,145,233,102, 388 78,252,253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83,
402 68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,233,72,137,204,102, 389 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,
403 15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108,36,32,76,139,100,36, 390 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,
404 80,133,192,15,136,244,249,137,68,36,84,139,122,252,248,139,191,233,139,191, 391 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,
405 233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198, 392 128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68,
406 4,193,232,16,129,252,253,239,15,130,244,248,255,139,68,36,84,248,2,252,255, 393 15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68,
407 36,252,235,248,3,252,247,216,137,252,233,137,194,232,251,1,26,255,248,90, 394 15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,
408 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252, 395 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,
409 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 396 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,
410 255,248,153,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 397 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,
411 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252, 398 149,233,72,141,148,253,36,233,141,139,233,232,251,1,25,72,139,141,233,72,
412 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110, 399 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,153,
413 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1, 400 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,
414 195,248,92,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37, 401 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,
415 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, 402 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,
416 68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,237,237,102, 403 233,72,137,204,102,15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108,
417 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 404 36,32,76,139,100,36,80,133,192,15,136,244,249,137,68,36,84,139,122,252,248,
418 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102, 405 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,
419 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40, 406 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139,
420 193,248,1,195,248,113,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68, 407 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232,
421 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 408 251,1,26,255,248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
422 255,248,155,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 409 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
423 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15, 410 36,4,139,68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,
424 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216, 411 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
425 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40, 412 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
426 193,248,1,195,248,156,255,15,40,232,252,242,15,94,193,72,184,237,237,102, 413 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,
427 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102, 414 200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102,
428 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227, 415 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,
429 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15, 416 217,108,36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,
430 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195, 417 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
431 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252, 418 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
432 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137, 419 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,
433 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255, 420 15,92,200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,
434 248,97,217,252,234,222,201,248,157,217,84,36,8,129,124,36,8,0,0,128,127,15, 421 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
435 132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,248,158,217,192,217, 422 139,68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,
436 252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217, 423 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
437 248,1,195,248,2,221,216,217,252,238,195,255,248,116,255,248,159,252,242,15, 424 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,
438 45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248, 425 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
439 160,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242, 426 86,202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184,
440 15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248, 427 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,
441 3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89, 428 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,
442 200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15, 429 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,
443 130,244,253,252,247,216,232,244,1,72,184,237,237,102,72,15,110,200,252,242, 430 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,
444 15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15,110,192,195,248,8, 431 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,
445 102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15,132,244, 432 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,
446 248,102,72,15,126,192,72,209,224,15,132,244,250,255,72,193,192,12,72,61,252, 433 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,
447 254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,15,17,68,36,8,221, 434 252,233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,8,129,124,36,
448 68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,252,233,217,201, 435 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,
449 217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,8,252,242,15,16, 436 248,159,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
450 68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244, 437 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,117,255,
451 247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84, 438 248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
452 194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80, 439 15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
453 193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237, 440 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,
454 255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87, 441 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,
455 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,161,255, 442 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,
456 131,252,250,1,15,130,244,90,15,132,244,92,131,252,250,3,15,130,244,113,15, 443 6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,184,237,237,102,72,
457 135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,8,221,68,36,8, 444 15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15,
458 131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,97,80,252,233,244, 445 110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,
459 253,248,1,232,244,157,255,80,252,233,244,253,248,2,131,252,250,7,15,132,244, 446 15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,244,250,255,72,
460 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1, 447 193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,
461 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9,15,132,244, 448 242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,
462 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1, 449 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,
463 255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244,247,15,135, 450 36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,
464 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92, 451 15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,
465 36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4,131,252,250,1, 452 15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,
466 15,130,244,90,15,132,244,92,131,252,250,3,15,130,244,113,15,135,244,248,217, 453 132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,
467 252,250,195,248,2,131,252,250,5,15,130,244,97,15,132,244,157,131,252,250, 454 248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,
468 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1, 455 15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,
469 217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,244,247,255,15, 456 192,195,248,162,255,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250,
470 135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248, 457 3,15,130,244,114,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,
471 2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217, 458 68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,
472 252,242,221,216,195,255,248,9,204,255,248,162,255,65,131,252,248,1,15,132, 459 98,80,252,233,244,253,248,1,232,244,158,255,80,252,233,244,253,248,2,131,
473 244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,193,195, 460 252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,
474 248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,195, 461 233,244,253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,
475 248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,156,15,132, 462 250,9,15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,
476 244,116,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237,237,255, 463 244,253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,
477 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15, 464 244,247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,
478 84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68,36,8,252, 465 216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,
479 242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,252,243,248, 466 4,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250,3,15,130,244,114,
480 7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,253,221,217, 467 15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,98,15,132,244,
481 252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,255,252,242, 468 158,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
482 15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,20,221, 469 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,
483 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, 470 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
484 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 471 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,
485 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,156,15,132, 472 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,65,131,252,
486 244,116,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195, 473 248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,
487 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, 474 92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,
488 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 475 89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,
489 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, 476 157,15,132,244,117,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,
490 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 477 237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,
491 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 478 110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,
492 244,248,217,201,248,2,221,216,195,255,248,163,137,200,86,72,137,214,83,15, 479 68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,
493 162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,164,255,204,248,165,255, 480 252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,
494 85,72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233,131, 481 253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,
495 252,233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253,204, 482 255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,
496 233,131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72,139, 483 36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,
497 147,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233, 484 222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,
498 15,40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72,137, 485 244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,
499 131,233,15,41,131,233,255,72,139,93,252,248,201,195,255,249,255,129,124,253, 486 157,15,132,244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,
500 202,4,239,15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202, 487 217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,
501 131,198,4,59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244, 488 15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
502 255,255,15,142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248, 489 2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,
503 9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 490 217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,
504 7,15,135,244,43,129,124,253,194,4,239,15,130,244,247,15,133,244,43,255,252, 491 196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,
505 242,15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255, 492 246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,164,137,200,86,
506 248,8,15,135,244,43,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198, 493 72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,165,
507 4,102,15,46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15, 494 255,204,248,166,255,87,86,83,72,131,252,236,40,141,157,233,139,181,233,15,
508 131,244,9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253, 495 183,192,137,134,233,72,137,142,233,72,137,150,233,76,137,134,233,76,137,142,
509 202,4,239,15,131,244,43,129,124,253,194,4,239,15,131,244,43,255,248,1,252, 496 233,252,242,15,17,134,233,252,242,15,17,142,233,252,242,15,17,150,233,252,
510 242,15,16,4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202, 497 242,15,17,158,233,72,141,132,253,36,233,72,137,134,233,72,137,226,137,116,
511 248,2,221,4,194,248,3,131,198,4,255,223,252,233,221,216,255,218,252,233,223, 498 36,100,137,252,241,232,251,1,27,199,131,233,237,139,144,233,139,128,233,41,
512 224,158,255,15,134,244,247,255,15,135,244,247,255,15,130,244,247,255,15,131, 499 208,139,106,252,248,193,232,3,131,192,1,139,181,233,139,14,15,182,252,233,
513 244,247,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204, 500 15,182,205,131,198,4,252,255,36,252,235,255,248,32,255,139,76,36,96,139,179,
514 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131, 501 233,72,137,142,233,137,145,233,137,169,233,137,252,241,137,194,232,251,1,
515 198,4,255,129,252,253,239,15,133,244,253,129,124,253,202,4,239,15,133,244, 502 28,72,139,134,233,252,242,15,16,134,233,252,233,244,16,255,248,167,255,85,
516 254,139,44,194,59,44,202,255,15,133,244,255,255,15,132,244,255,255,15,183, 503 72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233,131,252,
517 70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131,198, 504 233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233,
518 4,193,232,16,252,255,36,252,235,248,7,15,135,244,251,129,124,253,202,4,239, 505 131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72,139,147,
519 15,130,244,247,15,133,244,251,255,252,242,15,42,4,202,255,219,4,202,255,252, 506 233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,15,
520 233,244,248,248,8,15,135,244,251,255,252,242,15,42,4,194,102,15,46,4,202, 507 40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72,137,131,
521 255,219,4,194,221,4,202,255,252,233,244,250,255,129,252,253,239,15,131,244, 508 233,15,41,131,233,255,72,139,93,252,248,201,195,255,129,124,253,202,4,239,
522 251,129,124,253,202,4,239,15,131,244,251,255,248,1,252,242,15,16,4,202,248, 509 15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4,
523 2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,2,221,4,194,248,4,255,15, 510 59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15,
524 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15, 511 142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,
525 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141, 512 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,
526 180,253,134,233,248,1,255,252,233,244,9,255,129,252,253,239,15,132,244,48, 513 44,129,124,253,194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,
527 129,124,253,202,4,239,15,132,244,48,255,57,108,202,4,15,133,244,2,129,252, 514 194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,
528 253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253, 515 135,244,44,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,
529 239,15,135,244,2,129,252,253,239,15,130,244,2,139,169,233,133,252,237,15, 516 46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,
530 132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0, 517 9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,202,4,239,
531 255,252,233,244,47,255,248,3,129,252,253,239,255,15,133,244,9,255,252,233, 518 15,131,244,44,129,124,253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,
532 244,48,255,72,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,133, 519 4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,
533 244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,252,253, 520 4,194,248,3,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,
534 239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,59,44, 521 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,
535 202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182, 522 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
536 232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,249,129,124, 523 16,252,255,36,252,235,255,139,108,194,4,131,198,4,255,129,252,253,239,15,
537 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252, 524 133,244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,
538 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221, 525 15,133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
539 4,199,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248, 526 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
540 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,248,4,255,72, 527 248,7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,
541 252,247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252, 528 255,252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,
542 254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232, 529 251,255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,
543 16,252,255,36,252,235,248,3,129,252,253,239,15,133,244,2,252,233,244,48,255, 530 233,244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,
544 15,132,244,248,129,252,253,239,15,132,244,48,15,183,70,252,254,141,180,253, 531 244,251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,
545 134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 532 1,221,4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,
546 252,235,255,139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139, 533 138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,
547 44,194,137,44,202,255,72,139,44,194,72,137,44,202,139,6,15,182,204,15,182, 534 248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,
548 232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,237,129,124,253,194, 535 9,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255,
549 4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193, 536 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
550 232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,133,244,251,139,44, 537 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244,
551 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15, 538 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,
552 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,199,68,202, 539 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,
553 4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,53,255,129, 540 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,198,
554 124,253,194,4,239,15,131,244,53,255,252,242,15,16,4,194,72,184,237,237,102, 541 4,129,252,253,239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,
555 72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28, 542 198,4,255,129,252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,
556 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,248, 543 254,139,44,199,59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,
557 1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252, 544 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,
558 242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15, 545 15,135,244,249,129,124,253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,
559 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,4,239, 546 255,219,4,199,255,252,233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,
560 15,133,244,56,139,12,194,255,139,169,233,131,252,253,0,15,133,244,255,248, 547 4,199,255,219,4,202,221,4,199,255,129,252,253,239,15,131,244,249,255,248,
561 3,255,248,57,137,213,232,251,1,20,255,252,242,15,42,192,255,137,252,234,15, 548 1,252,242,15,16,4,199,248,2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,
562 182,78,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,3,252, 549 2,221,4,202,248,4,255,72,252,247,208,139,108,202,4,131,198,4,57,197,255,15,
563 233,244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15, 550 133,244,249,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,
564 133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,3,44,199,15, 551 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,129,252,253,239,
565 128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4, 552 15,133,244,2,252,233,244,49,255,15,132,244,248,129,252,253,239,15,132,244,
566 239,15,133,244,52,139,4,199,3,4,252,234,15,128,244,51,255,129,124,253,252, 553 49,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,
567 234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234, 554 131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,
568 3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,234,4,239, 555 253,239,255,137,108,202,4,139,44,194,137,44,202,255,72,139,44,194,72,137,
569 15,131,244,50,255,129,124,253,199,4,239,15,131,244,50,255,252,242,15,16,4, 556 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
570 252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252, 557 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
571 234,4,239,15,131,244,52,255,129,124,253,199,4,239,15,131,244,52,255,252,242, 558 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,
572 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, 559 4,239,15,133,244,251,139,44,194,252,247,221,15,128,244,250,199,68,202,4,237,
573 253,252,234,4,239,15,131,244,55,129,124,253,194,4,239,15,131,244,55,255,252, 560 137,44,202,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
574 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,129, 561 36,252,235,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,
575 124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139, 562 248,5,15,135,244,54,255,129,124,253,194,4,239,15,131,244,54,255,252,242,15,
576 44,252,234,43,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 563 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,
577 52,129,124,253,199,4,239,15,133,244,52,139,4,199,43,4,252,234,15,128,244, 564 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,
578 51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133, 565 4,194,255,139,128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,
579 244,55,139,44,252,234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234, 566 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,
580 252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199, 567 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
581 252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4, 568 248,2,129,124,253,194,4,239,15,133,244,57,139,12,194,255,139,169,233,131,
582 252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253, 569 252,253,0,15,133,244,255,248,3,255,248,58,137,213,232,251,1,20,255,252,242,
583 252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252, 570 15,42,192,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252,246,
584 234,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 571 133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192,255,
585 52,129,124,253,199,4,239,15,133,244,52,139,4,199,15,175,4,252,234,15,128, 572 129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,244,
586 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239, 573 51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,
587 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16, 574 133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15,128,
588 4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15, 575 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,
589 16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242, 576 15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237,
590 15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252, 577 255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239,15,
591 242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255, 578 131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,
592 252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234, 579 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253,
593 255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52, 580 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,
594 194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221, 581 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124,
595 4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221, 582 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194,
596 4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252, 583 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129,
597 234,221,4,194,255,248,166,232,244,156,255,252,233,244,166,255,232,244,116, 584 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255,
598 255,15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137, 585 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
599 192,65,41,232,248,35,137,205,137,116,36,100,232,251,1,27,139,149,233,133, 586 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15,
600 192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72, 587 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15,
601 137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 588 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
602 235,255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182, 589 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
603 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,199, 590 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
604 68,202,4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202, 591 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124,
605 255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202, 592 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255,
606 255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,204, 593 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
607 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,141, 594 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,
608 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244, 595 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44,
609 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, 596 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
610 139,106,252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,202, 597 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,
611 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139, 598 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
612 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139, 599 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,
613 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244, 600 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,
614 248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 601 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
615 235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15, 602 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
616 132,244,1,135,213,141,139,233,255,232,251,1,28,137,252,234,252,233,244,1, 603 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
617 255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133, 604 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
618 233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15, 605 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,
619 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246, 606 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139,
620 129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139, 607 76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,36,137,205,137,116,
621 233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, 608 36,100,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,110,252,255,
622 15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, 609 15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,15,182,232,
623 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137, 610 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,
624 65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 611 68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
625 255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149, 612 255,36,252,235,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252,
626 233,141,20,202,137,252,233,232,251,1,29,139,149,233,248,1,139,6,15,182,204, 613 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,
627 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139, 614 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,
628 108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36, 615 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
629 100,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237, 616 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,
630 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139, 617 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,
631 108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251, 618 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,
632 248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244, 619 233,72,139,69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,
633 249,248,2,137,252,233,137,194,232,251,1,31,139,149,233,15,182,78,252,253, 620 16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,
621 0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,
622 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,
623 4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,
624 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,
625 30,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,
626 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,
627 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
628 36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,
629 1,137,213,137,194,141,139,233,232,251,1,30,137,252,234,252,233,244,1,255,
630 139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,
631 255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,
632 253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,
633 232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,
634 0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,31,139,149,
635 233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
636 235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,
637 135,137,252,233,137,116,36,100,232,251,1,32,139,149,233,15,182,78,252,253,
634 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232, 638 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
635 16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232, 639 16,252,255,36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,
636 251,1,32,15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96, 640 137,116,36,100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,
637 139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139, 641 11,61,252,255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,33,
638 20,135,137,252,233,232,251,1,33,139,149,233,15,182,78,252,253,137,4,202,199, 642 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
639 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 643 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,
640 252,235,248,3,137,252,233,232,251,1,32,15,183,70,252,254,72,252,247,208,252, 644 233,244,2,248,5,137,252,233,232,251,1,34,15,183,70,252,254,252,233,244,1,
641 233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233, 645 255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,
642 244,167,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233, 646 149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,35,139,149,
643 244,168,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, 647 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,
644 38,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251,139,4,194,255, 648 232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,34,
645 129,124,253,194,4,239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45, 649 15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,
646 192,252,242,15,42,200,102,15,46,193,255,15,133,244,38,255,59,133,233,15,131, 650 252,248,139,173,233,139,4,135,252,233,244,169,255,72,252,247,208,139,106,
647 244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72, 651 252,248,139,173,233,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192,
648 137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 652 129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194,
649 36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233, 653 4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,
650 235,15,132,244,38,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1, 654 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
651 248,5,255,129,124,253,194,4,239,15,133,244,38,139,4,194,252,233,244,167,255, 655 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
652 15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4, 656 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,
653 239,15,133,244,36,139,44,252,234,248,167,139,141,233,35,136,233,105,201,239, 657 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,
654 3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250, 658 249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3,
655 129,121,253,4,239,15,132,244,251,15,182,70,252,253,72,139,41,72,137,44,194, 659 199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
656 248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 660 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208,
657 235,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137, 661 139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,
658 233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129, 662 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
659 233,235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124, 663 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
660 253,252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193, 664 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232,
661 224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72,137,44,202, 665 131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194,
662 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 666 4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,
663 248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132, 667 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,37,
664 244,37,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15, 668 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,
665 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44,252, 669 44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,
666 234,255,15,133,244,41,255,59,133,233,15,131,244,41,193,224,3,3,133,233,129, 670 15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,
667 120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248, 671 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,
668 2,72,139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 672 139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,78,252,253,248,3,
669 252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129, 673 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,
670 233,235,255,15,132,244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253, 674 252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133,233,
671 194,4,239,15,133,244,41,139,4,194,252,233,244,168,248,7,128,165,233,235,139, 675 15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,
672 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182, 676 252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,6,15,
673 252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15, 677 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,
674 133,244,39,139,44,252,234,248,168,139,141,233,35,136,233,105,201,239,198, 678 233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42,15,182,
675 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133, 679 78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42,139,4,
676 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15, 680 194,252,233,244,170,248,7,128,165,233,235,139,139,233,137,171,233,137,141,
677 133,244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182, 681 233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,
678 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233, 682 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139,44,252,234,
679 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,39, 683 248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
680 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, 684 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,
681 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137, 685 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,
682 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68, 686 70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,232,131,198,4,
683 36,80,137,252,234,137,205,137,116,36,100,232,251,1,34,139,149,233,139,108, 687 193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,2,137,76,36,
684 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, 688 80,139,141,233,252,246,129,233,235,15,132,244,40,139,76,36,80,252,233,244,
685 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, 689 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
686 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133, 690 252,252,246,129,233,235,15,132,244,40,248,6,137,68,36,80,199,68,36,84,237,
687 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 691 137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205,
688 253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193, 692 137,116,36,100,232,251,1,36,139,149,233,139,108,36,32,137,193,252,233,244,
689 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233, 693 2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,
690 252,246,129,233,235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128, 694 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,
691 165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233, 695 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,
692 244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246, 696 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
693 133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1, 697 72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
694 252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72, 698 235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
695 139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 699 15,132,244,41,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
696 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 700 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,
697 248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36, 701 80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,
698 100,232,251,1,35,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 702 244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,233,
699 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 703 15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,8,72,
700 84,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8,137,114, 704 137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,
701 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 705 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,
702 252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239, 706 137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,37,139,
703 15,133,244,29,248,59,139,114,252,252,252,247,198,237,15,133,244,253,248,1, 707 149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,
704 137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131, 708 233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,253,
705 193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139, 709 202,4,239,139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233,
706 68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252, 710 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,76,
707 233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15, 711 202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60,
708 133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139, 712 139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
709 191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15, 713 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
710 133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198, 714 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
711 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137, 715 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
712 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129, 716 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
713 252,248,239,184,237,15,133,244,29,137,202,137,114,252,252,139,181,233,139, 717 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
714 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36, 718 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
715 80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198, 719 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
716 4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244, 720 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
717 250,255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255, 721 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
718 137,68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139, 722 133,244,29,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
719 92,36,84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 723 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
720 255,36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248, 724 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
721 5,41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191, 725 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,
722 233,239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44, 726 255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,
723 202,72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252, 727 15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,84,139,124,36,80,139,
724 233,244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232, 728 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,
725 129,124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15, 729 192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,133,
726 133,244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202, 730 233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,253,
727 252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 731 141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,72,137,68,202,8,137,
728 255,36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252, 732 92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6,255,129,124,253,
729 233,244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233, 733 202,252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239,
730 141,12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252, 734 15,133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235,
731 248,57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131, 735 15,133,244,251,141,180,253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,
732 193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131, 736 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,198,70,
733 193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182, 737 252,252,235,141,180,253,134,233,198,6,235,252,233,244,1,255,15,182,252,236,
734 232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137, 738 15,182,192,137,124,36,80,141,188,253,194,233,141,12,202,43,122,252,252,133,
735 208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84, 739 252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248,
736 139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248, 740 1,72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,
737 131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137, 741 57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,
738 149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137, 742 248,3,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
739 252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225, 743 255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,
740 3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255, 744 137,197,193,252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133,
741 248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252, 745 233,15,135,244,253,248,6,255,72,139,71,252,248,131,199,8,72,137,1,131,193,
742 248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255, 746 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,
743 248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5, 747 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,
744 56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20, 748 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,
745 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131, 749 137,68,36,84,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,
746 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199, 750 15,132,244,249,248,2,72,139,44,15,72,137,111,252,248,131,199,8,131,232,1,
747 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233, 751 15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,244,
748 252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209, 752 252,255,72,139,44,10,72,137,106,252,248,255,248,5,56,70,252,255,15,135,244,
749 252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,148,255,141,12, 753 252,255,15,182,78,252,253,72,252,247,209,141,20,202,139,122,252,248,139,191,
750 202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12,239,15,133,244, 754 233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
751 60,129,121,253,20,239,15,133,244,60,139,41,131,121,16,0,15,140,244,251,255, 755 36,252,235,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,
752 129,121,253,12,239,15,133,244,164,129,121,253,20,239,15,133,244,164,255,139, 756 237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,15,133,
753 105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8, 757 244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,239,102,
754 199,65,28,237,137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233, 758 129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121,253,4,239,
755 255,141,180,253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143, 759 15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253,20,239,15,
756 244,253,248,6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182, 760 133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,
757 232,131,198,4,193,232,16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137, 761 244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136,
758 41,255,15,141,244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245, 762 244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,
759 255,15,140,244,7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131, 763 255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,253,134,233,
760 244,60,129,121,253,12,239,15,131,244,60,255,129,121,253,12,239,15,131,244, 764 15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,180,
761 164,129,121,253,20,239,15,131,244,164,255,139,105,20,255,129,252,253,239, 765 253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,4,193,232,
762 15,131,244,60,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65, 766 16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,
763 16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102, 767 255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,7,255,
764 15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221, 768 252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12,
765 17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,247,255, 769 239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253,20,239,
766 217,201,248,1,255,15,183,70,252,254,255,15,131,244,7,255,15,131,244,248,141, 770 15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255,252,242,
767 180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255, 771 15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,
768 15,130,244,7,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193, 772 237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,
769 252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255, 773 17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,
770 137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233, 774 136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,
771 139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128, 775 252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255,141,180,
772 233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36, 776 253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15,130,244,
773 32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15, 777 248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,
774 127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102, 778 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137,
775 68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127, 779 105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,137,
776 169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180, 780 65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,147,
777 253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 781 233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,137,116,36,24,76,137,
778 235,255,137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15, 782 124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,102,15,127,185,233,
779 130,244,150,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244, 783 102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,127,145,233,102,68,
780 24,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233, 784 15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,233,102,68,15,127,
781 245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233, 785 177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,134,233,139,6,15,
782 244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120, 786 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,137,252,245,
783 252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,23,137,209,137,194, 787 209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139,
784 15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244, 788 190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,24,15,182,142,233,
785 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252, 789 57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,
786 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204, 790 68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,
787 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237, 791 197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,
788 131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72, 792 36,96,141,12,200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233,
789 139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141, 793 133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,
790 233,137,133,233,255,72,137,252,250,137,252,233,255,15,135,244,22,199,131, 794 252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,
791 233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233, 795 252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,
792 141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0 796 131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8,
797 131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,139,189,233,
798 139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,
799 233,255,72,137,252,250,137,252,233,255,15,135,244,22,199,131,233,237,255,
800 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,
801 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
793}; 802};
794 803
795enum { 804enum {
@@ -815,6 +824,7 @@ enum {
815 GLOB_vmeta_call, 824 GLOB_vmeta_call,
816 GLOB_vm_call_dispatch_f, 825 GLOB_vm_call_dispatch_f,
817 GLOB_vm_cpcall, 826 GLOB_vm_cpcall,
827 GLOB_cont_ffi_callback,
818 GLOB_vm_call_tail, 828 GLOB_vm_call_tail,
819 GLOB_cont_cat, 829 GLOB_cont_cat,
820 GLOB_cont_ra, 830 GLOB_cont_ra,
@@ -948,6 +958,7 @@ enum {
948 GLOB_vm_foldarith, 958 GLOB_vm_foldarith,
949 GLOB_vm_cpuid, 959 GLOB_vm_cpuid,
950 GLOB_assert_bad_for_arg_type, 960 GLOB_assert_bad_for_arg_type,
961 GLOB_vm_ffi_callback,
951 GLOB_vm_ffi_call, 962 GLOB_vm_ffi_call,
952 GLOB_BC_MODVN_Z, 963 GLOB_BC_MODVN_Z,
953 GLOB_BC_TGETS_Z, 964 GLOB_BC_TGETS_Z,
@@ -977,6 +988,7 @@ static const char *const globnames[] = {
977 "vmeta_call", 988 "vmeta_call",
978 "vm_call_dispatch_f", 989 "vm_call_dispatch_f",
979 "vm_cpcall", 990 "vm_cpcall",
991 "cont_ffi_callback",
980 "vm_call_tail", 992 "vm_call_tail",
981 "cont_cat", 993 "cont_cat",
982 "cont_ra", 994 "cont_ra",
@@ -1110,6 +1122,7 @@ static const char *const globnames[] = {
1110 "vm_foldarith", 1122 "vm_foldarith",
1111 "vm_cpuid", 1123 "vm_cpuid",
1112 "assert_bad_for_arg_type", 1124 "assert_bad_for_arg_type",
1125 "vm_ffi_callback",
1113 "vm_ffi_call@4", 1126 "vm_ffi_call@4",
1114 "BC_MODVN_Z", 1127 "BC_MODVN_Z",
1115 "BC_TGETS_Z", 1128 "BC_TGETS_Z",
@@ -1144,6 +1157,8 @@ static const char *const extnames[] = {
1144 "lj_dispatch_call@8", 1157 "lj_dispatch_call@8",
1145 "lj_trace_exit@8", 1158 "lj_trace_exit@8",
1146 "lj_err_throw@8", 1159 "lj_err_throw@8",
1160 "lj_ccallback_enter@8",
1161 "lj_ccallback_leave@8",
1147 "lj_meta_cat", 1162 "lj_meta_cat",
1148 "lj_gc_barrieruv@8", 1163 "lj_gc_barrieruv@8",
1149 "lj_func_closeuv@8", 1164 "lj_func_closeuv@8",
@@ -1184,668 +1199,686 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1184 dasm_put(Dst, 356, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); 1199 dasm_put(Dst, 356, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1185 dasm_put(Dst, 511, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1200 dasm_put(Dst, 511, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1186 dasm_put(Dst, 604, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); 1201 dasm_put(Dst, 604, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
1187 dasm_put(Dst, 770, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1202#if LJ_HASFFI
1188 dasm_put(Dst, 894); 1203 dasm_put(Dst, 764);
1204#endif
1205 dasm_put(Dst, 773, 0);
1206#if LJ_HASFFI
1207#endif
1208 dasm_put(Dst, 782, Dt7(->pc), PC2PROTO(k));
1209#if LJ_HASFFI
1210 dasm_put(Dst, 796);
1211#endif
1212 dasm_put(Dst, 817, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1189 if (LJ_DUALNUM) { 1213 if (LJ_DUALNUM) {
1190 dasm_put(Dst, 908, LJ_TISNUM); 1214 dasm_put(Dst, 917, LJ_TISNUM);
1191 } else if (sse) { 1215 } else if (sse) {
1192 dasm_put(Dst, 918); 1216 dasm_put(Dst, 927);
1193 } else { 1217 } else {
1194 } 1218 }
1195 dasm_put(Dst, 931, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1219 dasm_put(Dst, 940, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1196 dasm_put(Dst, 1078, DISPATCH_GL(tmptv), LJ_TTAB); 1220 dasm_put(Dst, 1087, DISPATCH_GL(tmptv), LJ_TTAB);
1197 if (LJ_DUALNUM) { 1221 if (LJ_DUALNUM) {
1198 dasm_put(Dst, 908, LJ_TISNUM); 1222 dasm_put(Dst, 917, LJ_TISNUM);
1199 } else if (sse) { 1223 } else if (sse) {
1200 dasm_put(Dst, 918); 1224 dasm_put(Dst, 927);
1201 } else { 1225 } else {
1202 } 1226 }
1203 dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1227 dasm_put(Dst, 1110, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1204 dasm_put(Dst, 1274, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1228 dasm_put(Dst, 1283, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1205 dasm_put(Dst, 1374); 1229 dasm_put(Dst, 1383);
1206#if LJ_HASFFI 1230#if LJ_HASFFI
1207 dasm_put(Dst, 1394, Dt1(->base)); 1231 dasm_put(Dst, 1403, Dt1(->base));
1208#endif 1232#endif
1209 dasm_put(Dst, 1425); 1233 dasm_put(Dst, 1434);
1210#if LJ_DUALNUM 1234#if LJ_DUALNUM
1211 dasm_put(Dst, 1428); 1235 dasm_put(Dst, 1437);
1212#endif 1236#endif
1213 dasm_put(Dst, 1434); 1237 dasm_put(Dst, 1443);
1214#if LJ_DUALNUM 1238#if LJ_DUALNUM
1215 dasm_put(Dst, 902); 1239 dasm_put(Dst, 911);
1216#endif 1240#endif
1217 dasm_put(Dst, 1446); 1241 dasm_put(Dst, 1455);
1218#if LJ_DUALNUM 1242#if LJ_DUALNUM
1219 dasm_put(Dst, 1428); 1243 dasm_put(Dst, 1437);
1220#endif 1244#endif
1221 dasm_put(Dst, 1474, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); 1245 dasm_put(Dst, 1483, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
1222#ifdef LUAJIT_ENABLE_LUA52COMPAT 1246#ifdef LUAJIT_ENABLE_LUA52COMPAT
1223 dasm_put(Dst, 1580); 1247 dasm_put(Dst, 1589);
1224#else 1248#else
1225 dasm_put(Dst, 1599); 1249 dasm_put(Dst, 1608);
1226#endif 1250#endif
1227 dasm_put(Dst, 1604, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1251 dasm_put(Dst, 1613, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1228 dasm_put(Dst, 1790, 1+1, ~LJ_TNUMX); 1252 dasm_put(Dst, 1799, 1+1, ~LJ_TNUMX);
1229 if (cmov) { 1253 if (cmov) {
1230 dasm_put(Dst, 1859); 1254 dasm_put(Dst, 1868);
1231 } else { 1255 } else {
1232 dasm_put(Dst, 1863); 1256 dasm_put(Dst, 1872);
1233 } 1257 }
1234 dasm_put(Dst, 1872, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); 1258 dasm_put(Dst, 1881, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1235 dasm_put(Dst, 1951, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next)); 1259 dasm_put(Dst, 1960, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1236 dasm_put(Dst, 2008, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD); 1260 dasm_put(Dst, 2017, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
1237 dasm_put(Dst, 2074, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB); 1261 dasm_put(Dst, 2083, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
1238 dasm_put(Dst, 2144, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB); 1262 dasm_put(Dst, 2153, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
1239 dasm_put(Dst, 2233, 1+1, LJ_TISNUM); 1263 dasm_put(Dst, 2242, 1+1, LJ_TISNUM);
1240 if (LJ_DUALNUM) { 1264 if (LJ_DUALNUM) {
1241 dasm_put(Dst, 2247); 1265 dasm_put(Dst, 2256);
1242 } else { 1266 } else {
1243 dasm_put(Dst, 2264); 1267 dasm_put(Dst, 2273);
1244 } 1268 }
1245 if (sse) { 1269 if (sse) {
1246 dasm_put(Dst, 2269); 1270 dasm_put(Dst, 2278);
1247 } else { 1271 } else {
1248 dasm_put(Dst, 2279); 1272 dasm_put(Dst, 2288);
1249 } 1273 }
1250 dasm_put(Dst, 2286, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1274 dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1251 dasm_put(Dst, 2352, Dt1(->base)); 1275 dasm_put(Dst, 2361, Dt1(->base));
1252 if (LJ_DUALNUM) { 1276 if (LJ_DUALNUM) {
1253 dasm_put(Dst, 2376); 1277 dasm_put(Dst, 2385);
1254 } else { 1278 } else {
1255 dasm_put(Dst, 2381); 1279 dasm_put(Dst, 2390);
1256 } 1280 }
1257 dasm_put(Dst, 2386, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); 1281 dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1258 dasm_put(Dst, 2479, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1282 dasm_put(Dst, 2488, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1259#ifdef LUAJIT_ENABLE_LUA52COMPAT 1283#ifdef LUAJIT_ENABLE_LUA52COMPAT
1260 dasm_put(Dst, 2526, Dt6(->metatable)); 1284 dasm_put(Dst, 2535, Dt6(->metatable));
1261#endif 1285#endif
1262 dasm_put(Dst, 2535, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1286 dasm_put(Dst, 2544, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1263 if (LJ_DUALNUM) { 1287 if (LJ_DUALNUM) {
1264 dasm_put(Dst, 2521); 1288 dasm_put(Dst, 2530);
1265 } else { 1289 } else {
1266 dasm_put(Dst, 2264); 1290 dasm_put(Dst, 2273);
1267 } 1291 }
1268 dasm_put(Dst, 2590); 1292 dasm_put(Dst, 2599);
1269 if (LJ_DUALNUM) { 1293 if (LJ_DUALNUM) {
1270 dasm_put(Dst, 2595, LJ_TISNUM); 1294 dasm_put(Dst, 2604, LJ_TISNUM);
1271 } else if (sse) { 1295 } else if (sse) {
1272 dasm_put(Dst, 2611, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1296 dasm_put(Dst, 2620, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1273 } else { 1297 } else {
1274 } 1298 }
1275 dasm_put(Dst, 2644, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1299 dasm_put(Dst, 2653, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1276 dasm_put(Dst, 2506, 1+1, LJ_TTAB); 1300 dasm_put(Dst, 2515, 1+1, LJ_TTAB);
1277#ifdef LUAJIT_ENABLE_LUA52COMPAT 1301#ifdef LUAJIT_ENABLE_LUA52COMPAT
1278 dasm_put(Dst, 2526, Dt6(->metatable)); 1302 dasm_put(Dst, 2535, Dt6(->metatable));
1279#endif 1303#endif
1280 dasm_put(Dst, 2721, Dt8(->upvalue[0]), LJ_TFUNC); 1304 dasm_put(Dst, 2730, Dt8(->upvalue[0]), LJ_TFUNC);
1281 if (LJ_DUALNUM) { 1305 if (LJ_DUALNUM) {
1282 dasm_put(Dst, 2742, LJ_TISNUM); 1306 dasm_put(Dst, 2751, LJ_TISNUM);
1283 } else if (sse) { 1307 } else if (sse) {
1284 dasm_put(Dst, 2754); 1308 dasm_put(Dst, 2763);
1285 } else { 1309 } else {
1286 dasm_put(Dst, 2764); 1310 dasm_put(Dst, 2773);
1287 } 1311 }
1288 dasm_put(Dst, 2771, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1312 dasm_put(Dst, 2780, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1289 dasm_put(Dst, 2835, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1313 dasm_put(Dst, 2844, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1290 dasm_put(Dst, 2925, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1314 dasm_put(Dst, 2934, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1291 dasm_put(Dst, 3013, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1315 dasm_put(Dst, 3022, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1292 dasm_put(Dst, 3126, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1316 dasm_put(Dst, 3135, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1293 dasm_put(Dst, 3224, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1317 dasm_put(Dst, 3233, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1294 dasm_put(Dst, 3291, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1318 dasm_put(Dst, 3300, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1295 dasm_put(Dst, 3379, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1319 dasm_put(Dst, 3388, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1296 dasm_put(Dst, 3491, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1320 dasm_put(Dst, 3500, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1297 if (!LJ_DUALNUM) { 1321 if (!LJ_DUALNUM) {
1298 dasm_put(Dst, 3518); 1322 dasm_put(Dst, 3527);
1299 } 1323 }
1300 if (sse) { 1324 if (sse) {
1301 dasm_put(Dst, 3521); 1325 dasm_put(Dst, 3530);
1302 } 1326 }
1303 dasm_put(Dst, 3536, 1+1); 1327 dasm_put(Dst, 3545, 1+1);
1304 if (LJ_DUALNUM) { 1328 if (LJ_DUALNUM) {
1305 dasm_put(Dst, 3547, LJ_TISNUM, LJ_TISNUM); 1329 dasm_put(Dst, 3556, LJ_TISNUM, LJ_TISNUM);
1306 } else { 1330 } else {
1307 dasm_put(Dst, 3627, LJ_TISNUM); 1331 dasm_put(Dst, 3636, LJ_TISNUM);
1308 } 1332 }
1309 if (sse) { 1333 if (sse) {
1310 dasm_put(Dst, 3637, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1334 dasm_put(Dst, 3646, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1311 } else { 1335 } else {
1312 dasm_put(Dst, 3668); 1336 dasm_put(Dst, 3677);
1313 } 1337 }
1314 dasm_put(Dst, 3685, 1+1, FRAME_TYPE, LJ_TNIL); 1338 dasm_put(Dst, 3694, 1+1, FRAME_TYPE, LJ_TNIL);
1315 if (LJ_DUALNUM) { 1339 if (LJ_DUALNUM) {
1316 dasm_put(Dst, 3781, LJ_TISNUM); 1340 dasm_put(Dst, 3790, LJ_TISNUM);
1317 } else { 1341 } else {
1318 dasm_put(Dst, 3627, LJ_TISNUM); 1342 dasm_put(Dst, 3636, LJ_TISNUM);
1319 } 1343 }
1320 if (sse) { 1344 if (sse) {
1321 dasm_put(Dst, 3803);
1322 if (LJ_DUALNUM) {
1323 dasm_put(Dst, 3812); 1345 dasm_put(Dst, 3812);
1346 if (LJ_DUALNUM) {
1347 dasm_put(Dst, 3821);
1324 } 1348 }
1325 dasm_put(Dst, 2274); 1349 dasm_put(Dst, 2283);
1326 } else { 1350 } else {
1327 dasm_put(Dst, 3846); 1351 dasm_put(Dst, 3855);
1328 if (LJ_DUALNUM) { 1352 if (LJ_DUALNUM) {
1329 } else { 1353 } else {
1330 dasm_put(Dst, 2281); 1354 dasm_put(Dst, 2290);
1331 } 1355 }
1332 } 1356 }
1333 dasm_put(Dst, 3852); 1357 dasm_put(Dst, 3861);
1334 if (LJ_DUALNUM) { 1358 if (LJ_DUALNUM) {
1335 dasm_put(Dst, 3781, LJ_TISNUM); 1359 dasm_put(Dst, 3790, LJ_TISNUM);
1336 } else { 1360 } else {
1337 dasm_put(Dst, 3627, LJ_TISNUM); 1361 dasm_put(Dst, 3636, LJ_TISNUM);
1338 } 1362 }
1339 if (sse) { 1363 if (sse) {
1340 dasm_put(Dst, 3855); 1364 dasm_put(Dst, 3864);
1341 if (LJ_DUALNUM) { 1365 if (LJ_DUALNUM) {
1342 dasm_put(Dst, 3812); 1366 dasm_put(Dst, 3821);
1343 } 1367 }
1344 dasm_put(Dst, 2274); 1368 dasm_put(Dst, 2283);
1345 } else { 1369 } else {
1346 dasm_put(Dst, 3864); 1370 dasm_put(Dst, 3873);
1347 if (LJ_DUALNUM) { 1371 if (LJ_DUALNUM) {
1348 } else { 1372 } else {
1349 dasm_put(Dst, 2281); 1373 dasm_put(Dst, 2290);
1350 } 1374 }
1351 } 1375 }
1352 if (sse) { 1376 if (sse) {
1353 dasm_put(Dst, 3870, 1+1, LJ_TISNUM); 1377 dasm_put(Dst, 3879, 1+1, LJ_TISNUM);
1354 } else { 1378 } else {
1355 dasm_put(Dst, 3899, 1+1, LJ_TISNUM); 1379 dasm_put(Dst, 3908, 1+1, LJ_TISNUM);
1356 } 1380 }
1357 dasm_put(Dst, 3928, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1381 dasm_put(Dst, 3937, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1358 dasm_put(Dst, 3997, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1382 dasm_put(Dst, 4006, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1359 dasm_put(Dst, 4054, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1383 dasm_put(Dst, 4063, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1360 dasm_put(Dst, 4117, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1384 dasm_put(Dst, 4126, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1361 dasm_put(Dst, 4207); 1385 dasm_put(Dst, 4216);
1362 if (sse) { 1386 if (sse) {
1363 dasm_put(Dst, 4219, 1+1, LJ_TISNUM); 1387 dasm_put(Dst, 4228, 1+1, LJ_TISNUM);
1364 } else { 1388 } else {
1365 } 1389 }
1366 dasm_put(Dst, 4244); 1390 dasm_put(Dst, 4253);
1367 if (sse) { 1391 if (sse) {
1368 dasm_put(Dst, 4258, 1+1, LJ_TISNUM); 1392 dasm_put(Dst, 4267, 1+1, LJ_TISNUM);
1369 } else { 1393 } else {
1370 } 1394 }
1371 dasm_put(Dst, 4283); 1395 dasm_put(Dst, 4292);
1372 if (sse) { 1396 if (sse) {
1373 dasm_put(Dst, 4297, 1+1, LJ_TISNUM); 1397 dasm_put(Dst, 4306, 1+1, LJ_TISNUM);
1374 } else { 1398 } else {
1375 } 1399 }
1376 dasm_put(Dst, 4322); 1400 dasm_put(Dst, 4331);
1377 if (sse) { 1401 if (sse) {
1378 dasm_put(Dst, 4338, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1402 dasm_put(Dst, 4347, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1379 } else { 1403 } else {
1380 dasm_put(Dst, 4377, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1404 dasm_put(Dst, 4386, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1381 } 1405 }
1382 dasm_put(Dst, 4410, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1406 dasm_put(Dst, 4419, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1383 dasm_put(Dst, 4475, 1+1, LJ_TISNUM); 1407 dasm_put(Dst, 4484, 1+1, LJ_TISNUM);
1384 if (sse) { 1408 if (sse) {
1385 dasm_put(Dst, 4574); 1409 dasm_put(Dst, 4583);
1386 } else { 1410 } else {
1387 dasm_put(Dst, 4580); 1411 dasm_put(Dst, 4589);
1388 } 1412 }
1389 dasm_put(Dst, 4589); 1413 dasm_put(Dst, 4598);
1390 if (sse) { 1414 if (sse) {
1391 dasm_put(Dst, 4614); 1415 dasm_put(Dst, 4623);
1392 } else { 1416 } else {
1393 dasm_put(Dst, 4620); 1417 dasm_put(Dst, 4629);
1394 } 1418 }
1395 dasm_put(Dst, 4623, 1+2); 1419 dasm_put(Dst, 4632, 1+2);
1396 if (sse) { 1420 if (sse) {
1397 dasm_put(Dst, 4632); 1421 dasm_put(Dst, 4641);
1398 } else { 1422 } else {
1399 dasm_put(Dst, 4640); 1423 dasm_put(Dst, 4649);
1400 } 1424 }
1401 dasm_put(Dst, 4648); 1425 dasm_put(Dst, 4657);
1402 if (sse) { 1426 if (sse) {
1403 dasm_put(Dst, 4651, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1427 dasm_put(Dst, 4660, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1404 } else { 1428 } else {
1405 dasm_put(Dst, 4678); 1429 dasm_put(Dst, 4687);
1406 } 1430 }
1407 dasm_put(Dst, 4697); 1431 dasm_put(Dst, 4706);
1408 if (sse) { 1432 if (sse) {
1409 dasm_put(Dst, 4713, 1+1, LJ_TISNUM); 1433 dasm_put(Dst, 4722, 1+1, LJ_TISNUM);
1410 } else { 1434 } else {
1411 dasm_put(Dst, 4738, 1+1, LJ_TISNUM); 1435 dasm_put(Dst, 4747, 1+1, LJ_TISNUM);
1412 } 1436 }
1413 dasm_put(Dst, 4760); 1437 dasm_put(Dst, 4769);
1414 if (sse) { 1438 if (sse) {
1415 dasm_put(Dst, 4782); 1439 dasm_put(Dst, 4791);
1416 } else { 1440 } else {
1417 dasm_put(Dst, 4808); 1441 dasm_put(Dst, 4817);
1418 } 1442 }
1419 dasm_put(Dst, 4825, 1+2); 1443 dasm_put(Dst, 4834, 1+2);
1420 if (sse) { 1444 if (sse) {
1421 dasm_put(Dst, 4865); 1445 dasm_put(Dst, 4874);
1422 } else { 1446 } else {
1423 dasm_put(Dst, 4873); 1447 dasm_put(Dst, 4882);
1424 } 1448 }
1425 dasm_put(Dst, 4883, 2+1, LJ_TISNUM, LJ_TISNUM); 1449 dasm_put(Dst, 4892, 2+1, LJ_TISNUM, LJ_TISNUM);
1426 if (sse) { 1450 if (sse) {
1427 dasm_put(Dst, 4935, 2+1, LJ_TISNUM, LJ_TISNUM); 1451 dasm_put(Dst, 4944, 2+1, LJ_TISNUM, LJ_TISNUM);
1428 } else { 1452 } else {
1429 dasm_put(Dst, 4982, 2+1, LJ_TISNUM, LJ_TISNUM); 1453 dasm_put(Dst, 4991, 2+1, LJ_TISNUM, LJ_TISNUM);
1430 } 1454 }
1431 dasm_put(Dst, 5023, LJ_TISNUM); 1455 dasm_put(Dst, 5032, LJ_TISNUM);
1432 if (LJ_DUALNUM) { 1456 if (LJ_DUALNUM) {
1433 dasm_put(Dst, 5036, LJ_TISNUM); 1457 dasm_put(Dst, 5045, LJ_TISNUM);
1434 if (sse) { 1458 if (sse) {
1435 dasm_put(Dst, 4574); 1459 dasm_put(Dst, 4583);
1436 } else { 1460 } else {
1437 } 1461 }
1438 dasm_put(Dst, 5086); 1462 dasm_put(Dst, 5095);
1439 } else { 1463 } else {
1440 dasm_put(Dst, 2264); 1464 dasm_put(Dst, 2273);
1441 } 1465 }
1442 if (sse) { 1466 if (sse) {
1443 dasm_put(Dst, 5097, LJ_TISNUM); 1467 dasm_put(Dst, 5106, LJ_TISNUM);
1444 if (LJ_DUALNUM) { 1468 if (LJ_DUALNUM) {
1445 dasm_put(Dst, 5118); 1469 dasm_put(Dst, 5127);
1446 } else { 1470 } else {
1447 dasm_put(Dst, 2264); 1471 dasm_put(Dst, 2273);
1448 } 1472 }
1449 dasm_put(Dst, 5139); 1473 dasm_put(Dst, 5148);
1450 } else { 1474 } else {
1451 } 1475 }
1452 dasm_put(Dst, 5164, LJ_TISNUM); 1476 dasm_put(Dst, 5173, LJ_TISNUM);
1453 if (LJ_DUALNUM) { 1477 if (LJ_DUALNUM) {
1454 dasm_put(Dst, 5177, LJ_TISNUM); 1478 dasm_put(Dst, 5186, LJ_TISNUM);
1455 if (sse) { 1479 if (sse) {
1456 dasm_put(Dst, 4574); 1480 dasm_put(Dst, 4583);
1457 } else { 1481 } else {
1458 } 1482 }
1459 dasm_put(Dst, 5086); 1483 dasm_put(Dst, 5095);
1460 } else { 1484 } else {
1461 dasm_put(Dst, 2264); 1485 dasm_put(Dst, 2273);
1462 } 1486 }
1463 if (sse) { 1487 if (sse) {
1464 dasm_put(Dst, 5097, LJ_TISNUM); 1488 dasm_put(Dst, 5106, LJ_TISNUM);
1465 if (LJ_DUALNUM) { 1489 if (LJ_DUALNUM) {
1466 dasm_put(Dst, 5118); 1490 dasm_put(Dst, 5127);
1467 } else { 1491 } else {
1468 dasm_put(Dst, 2264); 1492 dasm_put(Dst, 2273);
1469 } 1493 }
1470 dasm_put(Dst, 5227); 1494 dasm_put(Dst, 5236);
1471 } else { 1495 } else {
1472 } 1496 }
1473 if (!sse) { 1497 if (!sse) {
1474 dasm_put(Dst, 5252); 1498 dasm_put(Dst, 5261);
1475 } 1499 }
1476 dasm_put(Dst, 5261, 1+1, LJ_TSTR); 1500 dasm_put(Dst, 5270, 1+1, LJ_TSTR);
1477 if (LJ_DUALNUM) { 1501 if (LJ_DUALNUM) {
1478 dasm_put(Dst, 5283, Dt5(->len)); 1502 dasm_put(Dst, 5292, Dt5(->len));
1479 } else if (sse) { 1503 } else if (sse) {
1480 dasm_put(Dst, 5291, Dt5(->len)); 1504 dasm_put(Dst, 5300, Dt5(->len));
1481 } else { 1505 } else {
1482 dasm_put(Dst, 5302, Dt5(->len)); 1506 dasm_put(Dst, 5311, Dt5(->len));
1483 } 1507 }
1484 dasm_put(Dst, 5310, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1508 dasm_put(Dst, 5319, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1485 if (LJ_DUALNUM) { 1509 if (LJ_DUALNUM) {
1486 dasm_put(Dst, 5286); 1510 dasm_put(Dst, 5295);
1487 } else if (sse) { 1511 } else if (sse) {
1488 dasm_put(Dst, 5348); 1512 dasm_put(Dst, 5357);
1489 } else { 1513 } else {
1490 dasm_put(Dst, 5358); 1514 dasm_put(Dst, 5367);
1491 } 1515 }
1492 dasm_put(Dst, 5371, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1516 dasm_put(Dst, 5380, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1493 if (LJ_DUALNUM) { 1517 if (LJ_DUALNUM) {
1494 dasm_put(Dst, 5402); 1518 dasm_put(Dst, 5411);
1495 } else if (sse) { 1519 } else if (sse) {
1496 dasm_put(Dst, 5425); 1520 dasm_put(Dst, 5434);
1497 } else { 1521 } else {
1498 dasm_put(Dst, 5451); 1522 dasm_put(Dst, 5460);
1499 } 1523 }
1500 dasm_put(Dst, 5475, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1524 dasm_put(Dst, 5484, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1501 if (LJ_DUALNUM) { 1525 if (LJ_DUALNUM) {
1502 dasm_put(Dst, 5583); 1526 dasm_put(Dst, 5592);
1503 } else if (sse) { 1527 } else if (sse) {
1504 dasm_put(Dst, 5595); 1528 dasm_put(Dst, 5604);
1505 } else { 1529 } else {
1506 dasm_put(Dst, 5610); 1530 dasm_put(Dst, 5619);
1507 } 1531 }
1508 dasm_put(Dst, 5622, LJ_TSTR, LJ_TISNUM); 1532 dasm_put(Dst, 5631, LJ_TSTR, LJ_TISNUM);
1509 if (LJ_DUALNUM) { 1533 if (LJ_DUALNUM) {
1510 dasm_put(Dst, 2521); 1534 dasm_put(Dst, 2530);
1511 } else { 1535 } else {
1512 dasm_put(Dst, 2264); 1536 dasm_put(Dst, 2273);
1513 } 1537 }
1514 dasm_put(Dst, 5639, Dt5(->len)); 1538 dasm_put(Dst, 5648, Dt5(->len));
1515 if (LJ_DUALNUM) { 1539 if (LJ_DUALNUM) {
1516 dasm_put(Dst, 5649); 1540 dasm_put(Dst, 5658);
1517 } else if (sse) { 1541 } else if (sse) {
1518 dasm_put(Dst, 5653); 1542 dasm_put(Dst, 5662);
1519 } else { 1543 } else {
1520 } 1544 }
1521 dasm_put(Dst, 5660, sizeof(GCstr)-1); 1545 dasm_put(Dst, 5669, sizeof(GCstr)-1);
1522 dasm_put(Dst, 5735, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1546 dasm_put(Dst, 5744, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1523 dasm_put(Dst, 5794, LJ_TSTR, LJ_TISNUM); 1547 dasm_put(Dst, 5803, LJ_TSTR, LJ_TISNUM);
1524 if (LJ_DUALNUM) { 1548 if (LJ_DUALNUM) {
1525 dasm_put(Dst, 5811); 1549 dasm_put(Dst, 5820);
1526 } else if (sse) { 1550 } else if (sse) {
1527 dasm_put(Dst, 5819); 1551 dasm_put(Dst, 5828);
1528 } else { 1552 } else {
1529 dasm_put(Dst, 5830); 1553 dasm_put(Dst, 5839);
1530 } 1554 }
1531 dasm_put(Dst, 5846, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1555 dasm_put(Dst, 5855, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1532 dasm_put(Dst, 5911, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1556 dasm_put(Dst, 5920, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1533 dasm_put(Dst, 5974, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1557 dasm_put(Dst, 5983, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1534 dasm_put(Dst, 6045, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1558 dasm_put(Dst, 6054, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1535 dasm_put(Dst, 6130, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1559 dasm_put(Dst, 6139, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1536 dasm_put(Dst, 6200, 1+1, LJ_TTAB); 1560 dasm_put(Dst, 6209, 1+1, LJ_TTAB);
1537 if (LJ_DUALNUM) { 1561 if (LJ_DUALNUM) {
1538 dasm_put(Dst, 6268); 1562 dasm_put(Dst, 6277);
1539 } else if (sse) { 1563 } else if (sse) {
1540 dasm_put(Dst, 6275); 1564 dasm_put(Dst, 6284);
1541 } else { 1565 } else {
1542 } 1566 }
1543 dasm_put(Dst, 6285, 1+1, LJ_TISNUM); 1567 dasm_put(Dst, 6294, 1+1, LJ_TISNUM);
1544 if (LJ_DUALNUM) { 1568 if (LJ_DUALNUM) {
1545 dasm_put(Dst, 6301); 1569 dasm_put(Dst, 6310);
1546 } else { 1570 } else {
1547 dasm_put(Dst, 2264); 1571 dasm_put(Dst, 2273);
1548 } 1572 }
1549 if (sse) { 1573 if (sse) {
1550 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1574 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1551 } else { 1575 } else {
1552 } 1576 }
1553 dasm_put(Dst, 106); 1577 dasm_put(Dst, 106);
1554 if (LJ_DUALNUM || sse) { 1578 if (LJ_DUALNUM || sse) {
1555 if (!sse) { 1579 if (!sse) {
1556 } 1580 }
1557 dasm_put(Dst, 6342); 1581 dasm_put(Dst, 6351);
1558 } else { 1582 } else {
1559 } 1583 }
1560 dasm_put(Dst, 6347, 1+1); 1584 dasm_put(Dst, 6356, 1+1);
1561 if (sse) { 1585 if (sse) {
1562 dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1586 dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1563 } else { 1587 } else {
1564 dasm_put(Dst, 6368); 1588 dasm_put(Dst, 6377);
1565 } 1589 }
1566 dasm_put(Dst, 2241, LJ_TISNUM); 1590 dasm_put(Dst, 2250, LJ_TISNUM);
1567 if (LJ_DUALNUM) { 1591 if (LJ_DUALNUM) {
1568 dasm_put(Dst, 6377); 1592 dasm_put(Dst, 6386);
1569 } else { 1593 } else {
1570 dasm_put(Dst, 2264); 1594 dasm_put(Dst, 2273);
1571 } 1595 }
1572 if (sse) { 1596 if (sse) {
1573 dasm_put(Dst, 6394); 1597 dasm_put(Dst, 6403);
1574 } else { 1598 } else {
1575 } 1599 }
1576 dasm_put(Dst, 6409, LJ_TISNUM); 1600 dasm_put(Dst, 6418, LJ_TISNUM);
1577 if (LJ_DUALNUM) { 1601 if (LJ_DUALNUM) {
1578 dasm_put(Dst, 6434); 1602 dasm_put(Dst, 6443);
1579 } else { 1603 } else {
1580 dasm_put(Dst, 6454); 1604 dasm_put(Dst, 6463);
1581 } 1605 }
1582 if (sse) { 1606 if (sse) {
1583 dasm_put(Dst, 6459); 1607 dasm_put(Dst, 6468);
1584 } else { 1608 } else {
1585 } 1609 }
1586 dasm_put(Dst, 6476, 1+1); 1610 dasm_put(Dst, 6485, 1+1);
1587 if (sse) { 1611 if (sse) {
1588 dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1612 dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1589 } else { 1613 } else {
1590 dasm_put(Dst, 6368); 1614 dasm_put(Dst, 6377);
1591 } 1615 }
1592 dasm_put(Dst, 2241, LJ_TISNUM); 1616 dasm_put(Dst, 2250, LJ_TISNUM);
1593 if (LJ_DUALNUM) { 1617 if (LJ_DUALNUM) {
1594 dasm_put(Dst, 6377); 1618 dasm_put(Dst, 6386);
1595 } else { 1619 } else {
1596 dasm_put(Dst, 2264); 1620 dasm_put(Dst, 2273);
1597 } 1621 }
1598 if (sse) { 1622 if (sse) {
1599 dasm_put(Dst, 6394); 1623 dasm_put(Dst, 6403);
1600 } else { 1624 } else {
1601 } 1625 }
1602 dasm_put(Dst, 6409, LJ_TISNUM); 1626 dasm_put(Dst, 6418, LJ_TISNUM);
1603 if (LJ_DUALNUM) { 1627 if (LJ_DUALNUM) {
1604 dasm_put(Dst, 6494); 1628 dasm_put(Dst, 6503);
1605 } else { 1629 } else {
1606 dasm_put(Dst, 6454); 1630 dasm_put(Dst, 6463);
1607 } 1631 }
1608 if (sse) { 1632 if (sse) {
1609 dasm_put(Dst, 6514); 1633 dasm_put(Dst, 6523);
1610 } else { 1634 } else {
1611 } 1635 }
1612 dasm_put(Dst, 6531, 1+1); 1636 dasm_put(Dst, 6540, 1+1);
1613 if (sse) { 1637 if (sse) {
1614 dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1638 dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1615 } else { 1639 } else {
1616 dasm_put(Dst, 6368); 1640 dasm_put(Dst, 6377);
1617 } 1641 }
1618 dasm_put(Dst, 2241, LJ_TISNUM); 1642 dasm_put(Dst, 2250, LJ_TISNUM);
1619 if (LJ_DUALNUM) { 1643 if (LJ_DUALNUM) {
1620 dasm_put(Dst, 6377); 1644 dasm_put(Dst, 6386);
1621 } else { 1645 } else {
1622 dasm_put(Dst, 2264); 1646 dasm_put(Dst, 2273);
1623 } 1647 }
1624 if (sse) { 1648 if (sse) {
1625 dasm_put(Dst, 6394); 1649 dasm_put(Dst, 6403);
1626 } else { 1650 } else {
1627 } 1651 }
1628 dasm_put(Dst, 6409, LJ_TISNUM); 1652 dasm_put(Dst, 6418, LJ_TISNUM);
1629 if (LJ_DUALNUM) { 1653 if (LJ_DUALNUM) {
1630 dasm_put(Dst, 6549); 1654 dasm_put(Dst, 6558);
1631 } else { 1655 } else {
1632 dasm_put(Dst, 6454); 1656 dasm_put(Dst, 6463);
1633 } 1657 }
1634 if (sse) { 1658 if (sse) {
1635 dasm_put(Dst, 6569); 1659 dasm_put(Dst, 6578);
1636 } else { 1660 } else {
1637 } 1661 }
1638 dasm_put(Dst, 6586, 1+1, LJ_TISNUM); 1662 dasm_put(Dst, 6595, 1+1, LJ_TISNUM);
1639 if (LJ_DUALNUM) { 1663 if (LJ_DUALNUM) {
1640 dasm_put(Dst, 6377); 1664 dasm_put(Dst, 6386);
1641 } else { 1665 } else {
1642 dasm_put(Dst, 2264); 1666 dasm_put(Dst, 2273);
1643 } 1667 }
1644 if (sse) { 1668 if (sse) {
1645 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1669 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1646 } else { 1670 } else {
1647 } 1671 }
1648 dasm_put(Dst, 6609, 1+1, LJ_TISNUM); 1672 dasm_put(Dst, 6618, 1+1, LJ_TISNUM);
1649 if (LJ_DUALNUM) { 1673 if (LJ_DUALNUM) {
1650 dasm_put(Dst, 6377); 1674 dasm_put(Dst, 6386);
1651 } else { 1675 } else {
1652 dasm_put(Dst, 2264); 1676 dasm_put(Dst, 2273);
1653 } 1677 }
1654 if (sse) { 1678 if (sse) {
1655 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1679 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1656 } else { 1680 } else {
1657 } 1681 }
1658 dasm_put(Dst, 6633); 1682 dasm_put(Dst, 6642);
1659 if (LJ_DUALNUM) { 1683 if (LJ_DUALNUM) {
1660 dasm_put(Dst, 6342); 1684 dasm_put(Dst, 6351);
1661 } else if (sse) { 1685 } else if (sse) {
1662 dasm_put(Dst, 6639); 1686 dasm_put(Dst, 6648);
1663 } else { 1687 } else {
1664 } 1688 }
1665 dasm_put(Dst, 6651); 1689 dasm_put(Dst, 6660);
1666 if (LJ_DUALNUM) { 1690 if (LJ_DUALNUM) {
1667 dasm_put(Dst, 6662, 1+1, LJ_TISNUM); 1691 dasm_put(Dst, 6671, 1+1, LJ_TISNUM);
1668 if (LJ_DUALNUM) { 1692 if (LJ_DUALNUM) {
1669 dasm_put(Dst, 6377); 1693 dasm_put(Dst, 6386);
1670 } else { 1694 } else {
1671 dasm_put(Dst, 2264); 1695 dasm_put(Dst, 2273);
1672 } 1696 }
1673 if (sse) { 1697 if (sse) {
1674 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1698 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1675 } else { 1699 } else {
1676 } 1700 }
1677 dasm_put(Dst, 6678, LJ_TISNUM); 1701 dasm_put(Dst, 6687, LJ_TISNUM);
1678 } else if (sse) { 1702 } else if (sse) {
1679 dasm_put(Dst, 6693, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1703 dasm_put(Dst, 6702, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1680 } else { 1704 } else {
1681 } 1705 }
1682 dasm_put(Dst, 6760); 1706 dasm_put(Dst, 6769);
1683 if (LJ_DUALNUM) { 1707 if (LJ_DUALNUM) {
1684 dasm_put(Dst, 6767, 1+1, LJ_TISNUM); 1708 dasm_put(Dst, 6776, 1+1, LJ_TISNUM);
1685 if (LJ_DUALNUM) { 1709 if (LJ_DUALNUM) {
1686 dasm_put(Dst, 6377); 1710 dasm_put(Dst, 6386);
1687 } else { 1711 } else {
1688 dasm_put(Dst, 2264); 1712 dasm_put(Dst, 2273);
1689 } 1713 }
1690 if (sse) { 1714 if (sse) {
1691 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1715 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1692 } else { 1716 } else {
1693 } 1717 }
1694 dasm_put(Dst, 6678, LJ_TISNUM); 1718 dasm_put(Dst, 6687, LJ_TISNUM);
1695 } else if (sse) { 1719 } else if (sse) {
1696 dasm_put(Dst, 6783, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1720 dasm_put(Dst, 6792, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1697 } else { 1721 } else {
1698 } 1722 }
1699 dasm_put(Dst, 6850); 1723 dasm_put(Dst, 6859);
1700 if (LJ_DUALNUM) { 1724 if (LJ_DUALNUM) {
1701 dasm_put(Dst, 6858, 1+1, LJ_TISNUM); 1725 dasm_put(Dst, 6867, 1+1, LJ_TISNUM);
1702 if (LJ_DUALNUM) { 1726 if (LJ_DUALNUM) {
1703 dasm_put(Dst, 6377); 1727 dasm_put(Dst, 6386);
1704 } else { 1728 } else {
1705 dasm_put(Dst, 2264); 1729 dasm_put(Dst, 2273);
1706 } 1730 }
1707 if (sse) { 1731 if (sse) {
1708 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1732 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1709 } else { 1733 } else {
1710 } 1734 }
1711 dasm_put(Dst, 6678, LJ_TISNUM); 1735 dasm_put(Dst, 6687, LJ_TISNUM);
1712 } else if (sse) { 1736 } else if (sse) {
1713 dasm_put(Dst, 6874, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1737 dasm_put(Dst, 6883, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1714 } else { 1738 } else {
1715 } 1739 }
1716 dasm_put(Dst, 6941); 1740 dasm_put(Dst, 6950);
1717 if (LJ_DUALNUM) { 1741 if (LJ_DUALNUM) {
1718 dasm_put(Dst, 6949, 1+1, LJ_TISNUM); 1742 dasm_put(Dst, 6958, 1+1, LJ_TISNUM);
1719 if (LJ_DUALNUM) { 1743 if (LJ_DUALNUM) {
1720 dasm_put(Dst, 6377); 1744 dasm_put(Dst, 6386);
1721 } else { 1745 } else {
1722 dasm_put(Dst, 2264); 1746 dasm_put(Dst, 2273);
1723 } 1747 }
1724 if (sse) { 1748 if (sse) {
1725 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1749 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1726 } else { 1750 } else {
1727 } 1751 }
1728 dasm_put(Dst, 6678, LJ_TISNUM); 1752 dasm_put(Dst, 6687, LJ_TISNUM);
1729 } else if (sse) { 1753 } else if (sse) {
1730 dasm_put(Dst, 6965, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1754 dasm_put(Dst, 6974, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1731 } else { 1755 } else {
1732 } 1756 }
1733 dasm_put(Dst, 7032); 1757 dasm_put(Dst, 7041);
1734 if (LJ_DUALNUM) { 1758 if (LJ_DUALNUM) {
1735 dasm_put(Dst, 7039, 1+1, LJ_TISNUM); 1759 dasm_put(Dst, 7048, 1+1, LJ_TISNUM);
1736 if (LJ_DUALNUM) { 1760 if (LJ_DUALNUM) {
1737 dasm_put(Dst, 6377); 1761 dasm_put(Dst, 6386);
1738 } else { 1762 } else {
1739 dasm_put(Dst, 2264); 1763 dasm_put(Dst, 2273);
1740 } 1764 }
1741 if (sse) { 1765 if (sse) {
1742 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1766 dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1743 } else { 1767 } else {
1744 } 1768 }
1745 dasm_put(Dst, 6678, LJ_TISNUM); 1769 dasm_put(Dst, 6687, LJ_TISNUM);
1746 } else if (sse) { 1770 } else if (sse) {
1747 dasm_put(Dst, 7055, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1771 dasm_put(Dst, 7064, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1748 } else { 1772 } else {
1749 } 1773 }
1750 dasm_put(Dst, 7122, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1774 dasm_put(Dst, 7131, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1751 dasm_put(Dst, 7198, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1775 dasm_put(Dst, 7207, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1752 dasm_put(Dst, 7325, Dt1(->top), Dt1(->base), Dt1(->top)); 1776 dasm_put(Dst, 7334, Dt1(->top), Dt1(->base), Dt1(->top));
1753#if LJ_HASJIT 1777#if LJ_HASJIT
1754 dasm_put(Dst, 7364, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1778 dasm_put(Dst, 7373, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1755#endif 1779#endif
1756 dasm_put(Dst, 7395, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1780 dasm_put(Dst, 7404, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1757 dasm_put(Dst, 7446, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1781 dasm_put(Dst, 7455, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1758#if LJ_HASJIT 1782#if LJ_HASJIT
1759 dasm_put(Dst, 7513, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1783 dasm_put(Dst, 7522, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1760#endif 1784#endif
1761 dasm_put(Dst, 7560); 1785 dasm_put(Dst, 7569);
1762#if LJ_HASJIT 1786#if LJ_HASJIT
1763 dasm_put(Dst, 7390); 1787 dasm_put(Dst, 7399);
1764#endif 1788#endif
1765 dasm_put(Dst, 7567); 1789 dasm_put(Dst, 7576);
1766#if LJ_HASJIT 1790#if LJ_HASJIT
1767 dasm_put(Dst, 7570); 1791 dasm_put(Dst, 7579);
1768#endif 1792#endif
1769 dasm_put(Dst, 7580, Dt1(->base), Dt1(->top)); 1793 dasm_put(Dst, 7589, Dt1(->base), Dt1(->top));
1770#if LJ_HASJIT 1794#if LJ_HASJIT
1771 dasm_put(Dst, 7614); 1795 dasm_put(Dst, 7623);
1772#endif 1796#endif
1773 dasm_put(Dst, 7619, Dt1(->base), Dt1(->top)); 1797 dasm_put(Dst, 7628, Dt1(->base), Dt1(->top));
1774#if LJ_HASJIT 1798#if LJ_HASJIT
1775 dasm_put(Dst, 7650, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); 1799 dasm_put(Dst, 7659, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
1776#endif 1800#endif
1777 dasm_put(Dst, 7880); 1801 dasm_put(Dst, 7889);
1778#if LJ_HASJIT 1802#if LJ_HASJIT
1779 dasm_put(Dst, 7883, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1803 dasm_put(Dst, 7892, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1780 dasm_put(Dst, 8025); 1804 dasm_put(Dst, 8034);
1781#endif 1805#endif
1782 dasm_put(Dst, 8051); 1806 dasm_put(Dst, 8060);
1783 if (!sse) { 1807 if (!sse) {
1784 dasm_put(Dst, 8054); 1808 dasm_put(Dst, 8063);
1785 } 1809 }
1786 dasm_put(Dst, 8099, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1810 dasm_put(Dst, 8108, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1787 if (!sse) { 1811 if (!sse) {
1788 dasm_put(Dst, 8185); 1812 dasm_put(Dst, 8194);
1789 } 1813 }
1790 dasm_put(Dst, 8230, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); 1814 dasm_put(Dst, 8239, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
1791 if (!sse) { 1815 if (!sse) {
1792 dasm_put(Dst, 8316); 1816 dasm_put(Dst, 8325);
1793 } 1817 }
1794 dasm_put(Dst, 8355, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1818 dasm_put(Dst, 8364, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1795 if (sse) { 1819 if (sse) {
1796 dasm_put(Dst, 8444, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1820 dasm_put(Dst, 8453, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1797 } else { 1821 } else {
1798 dasm_put(Dst, 8558); 1822 dasm_put(Dst, 8567);
1799 } 1823 }
1800 dasm_put(Dst, 8605); 1824 dasm_put(Dst, 8614);
1801 if (!sse) { 1825 if (!sse) {
1802 } else { 1826 } else {
1803 dasm_put(Dst, 8679); 1827 dasm_put(Dst, 8688);
1804 } 1828 }
1805 dasm_put(Dst, 8682); 1829 dasm_put(Dst, 8691);
1806 dasm_put(Dst, 8767, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1830 dasm_put(Dst, 8776, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1807 dasm_put(Dst, 8870, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1831 dasm_put(Dst, 8879, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1808 dasm_put(Dst, 9026); 1832 dasm_put(Dst, 9035);
1809#if LJ_HASJIT 1833#if LJ_HASJIT
1810 if (sse) { 1834 if (sse) {
1811 dasm_put(Dst, 9067); 1835 dasm_put(Dst, 9076);
1812 dasm_put(Dst, 9137); 1836 dasm_put(Dst, 9146);
1813 dasm_put(Dst, 9210); 1837 dasm_put(Dst, 9219);
1814 } else { 1838 } else {
1815 dasm_put(Dst, 9260); 1839 dasm_put(Dst, 9269);
1816 dasm_put(Dst, 9352); 1840 dasm_put(Dst, 9361);
1817 } 1841 }
1818 dasm_put(Dst, 9398); 1842 dasm_put(Dst, 9407);
1819#endif 1843#endif
1820 dasm_put(Dst, 9402); 1844 dasm_put(Dst, 9411);
1821 if (sse) { 1845 if (sse) {
1822 dasm_put(Dst, 9405, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1846 dasm_put(Dst, 9414, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1823 dasm_put(Dst, 9494, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1847 dasm_put(Dst, 9503, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1824 } else { 1848 } else {
1825 dasm_put(Dst, 9618); 1849 dasm_put(Dst, 9627);
1826 dasm_put(Dst, 9701); 1850 dasm_put(Dst, 9710);
1827 if (cmov) { 1851 if (cmov) {
1828 dasm_put(Dst, 9756); 1852 dasm_put(Dst, 9765);
1829 } else { 1853 } else {
1830 dasm_put(Dst, 9775); 1854 dasm_put(Dst, 9784);
1831 } 1855 }
1832 dasm_put(Dst, 9398); 1856 dasm_put(Dst, 9407);
1833 } 1857 }
1834 dasm_put(Dst, 9816); 1858 dasm_put(Dst, 9825);
1835#ifdef LUA_USE_ASSERT 1859#ifdef LUA_USE_ASSERT
1836 dasm_put(Dst, 9400); 1860 dasm_put(Dst, 9409);
1861#endif
1862 dasm_put(Dst, 9853);
1863#if LJ_HASFFI
1864#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
1865 dasm_put(Dst, 9857, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE+4*8, DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc));
1837#endif 1866#endif
1838 dasm_put(Dst, 9844); 1867 dasm_put(Dst, 9984);
1839#if LJ_HASFFI 1868#if LJ_HASFFI
1840#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1869 dasm_put(Dst, 9987, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]));
1841 dasm_put(Dst, 9848, DtE(->spadj)); 1870#endif
1871 dasm_put(Dst, 10028);
1872#if LJ_HASFFI
1873#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1874 dasm_put(Dst, 10031, DtF(->spadj));
1842#if LJ_TARGET_WINDOWS 1875#if LJ_TARGET_WINDOWS
1843#endif 1876#endif
1844 dasm_put(Dst, 9863, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3])); 1877 dasm_put(Dst, 10046, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]));
1845 dasm_put(Dst, 9944, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0])); 1878 dasm_put(Dst, 10127, DtF(->func), DtF(->gpr[0]), DtF(->fpr[0]));
1846#if LJ_TARGET_WINDOWS 1879#if LJ_TARGET_WINDOWS
1847#endif 1880#endif
1848 dasm_put(Dst, 9957); 1881 dasm_put(Dst, 10140);
1849#endif 1882#endif
1850} 1883}
1851 1884
@@ -1853,7 +1886,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1853static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1886static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1854{ 1887{
1855 int vk = 0; 1888 int vk = 0;
1856 dasm_put(Dst, 9965, defop); 1889 dasm_put(Dst, 780, defop);
1857 1890
1858 switch (op) { 1891 switch (op) {
1859 1892
@@ -1864,302 +1897,302 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1864 1897
1865 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1898 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1866 if (LJ_DUALNUM) { 1899 if (LJ_DUALNUM) {
1867 dasm_put(Dst, 9967, LJ_TISNUM, LJ_TISNUM); 1900 dasm_put(Dst, 10148, LJ_TISNUM, LJ_TISNUM);
1868 switch (op) { 1901 switch (op) {
1869 case BC_ISLT: 1902 case BC_ISLT:
1870 dasm_put(Dst, 9997); 1903 dasm_put(Dst, 10178);
1871 break; 1904 break;
1872 case BC_ISGE: 1905 case BC_ISGE:
1873 dasm_put(Dst, 10002); 1906 dasm_put(Dst, 10183);
1874 break; 1907 break;
1875 case BC_ISLE: 1908 case BC_ISLE:
1876 dasm_put(Dst, 10007); 1909 dasm_put(Dst, 10188);
1877 break; 1910 break;
1878 case BC_ISGT: 1911 case BC_ISGT:
1879 dasm_put(Dst, 10012); 1912 dasm_put(Dst, 10193);
1880 break; 1913 break;
1881 default: break; /* Shut up GCC. */ 1914 default: break; /* Shut up GCC. */
1882 } 1915 }
1883 dasm_put(Dst, 10017, -BCBIAS_J*4, LJ_TISNUM); 1916 dasm_put(Dst, 10198, -BCBIAS_J*4, LJ_TISNUM);
1884 if (sse) { 1917 if (sse) {
1885 dasm_put(Dst, 10071); 1918 dasm_put(Dst, 10252);
1886 } else { 1919 } else {
1887 dasm_put(Dst, 10082); 1920 dasm_put(Dst, 10263);
1888 } 1921 }
1889 dasm_put(Dst, 10093); 1922 dasm_put(Dst, 10274);
1890 if (sse) { 1923 if (sse) {
1891 dasm_put(Dst, 10100); 1924 dasm_put(Dst, 10281);
1892 switch (op) { 1925 switch (op) {
1893 case BC_ISLT: 1926 case BC_ISLT:
1894 dasm_put(Dst, 10120); 1927 dasm_put(Dst, 10301);
1895 break; 1928 break;
1896 case BC_ISGE: 1929 case BC_ISGE:
1897 dasm_put(Dst, 10125); 1930 dasm_put(Dst, 10306);
1898 break; 1931 break;
1899 case BC_ISLE: 1932 case BC_ISLE:
1900 dasm_put(Dst, 10130); 1933 dasm_put(Dst, 10311);
1901 break; 1934 break;
1902 case BC_ISGT: 1935 case BC_ISGT:
1903 dasm_put(Dst, 10135); 1936 dasm_put(Dst, 10316);
1904 break; 1937 break;
1905 default: break; /* Shut up GCC. */ 1938 default: break; /* Shut up GCC. */
1906 } 1939 }
1907 dasm_put(Dst, 10140); 1940 dasm_put(Dst, 10321);
1908 } else { 1941 } else {
1909 dasm_put(Dst, 10145); 1942 dasm_put(Dst, 10326);
1910 } 1943 }
1911 } else { 1944 } else {
1912 dasm_put(Dst, 10153, LJ_TISNUM, LJ_TISNUM); 1945 dasm_put(Dst, 10334, LJ_TISNUM, LJ_TISNUM);
1913 } 1946 }
1914 if (sse) { 1947 if (sse) {
1915 dasm_put(Dst, 10174); 1948 dasm_put(Dst, 10355);
1916 } else { 1949 } else {
1917 dasm_put(Dst, 10195); 1950 dasm_put(Dst, 10376);
1918 if (cmov) { 1951 if (cmov) {
1919 dasm_put(Dst, 10211); 1952 dasm_put(Dst, 10392);
1920 } else { 1953 } else {
1921 dasm_put(Dst, 10217); 1954 dasm_put(Dst, 10398);
1922 } 1955 }
1923 } 1956 }
1924 if (LJ_DUALNUM) { 1957 if (LJ_DUALNUM) {
1925 switch (op) { 1958 switch (op) {
1926 case BC_ISLT: 1959 case BC_ISLT:
1927 dasm_put(Dst, 10120); 1960 dasm_put(Dst, 10301);
1928 break; 1961 break;
1929 case BC_ISGE: 1962 case BC_ISGE:
1930 dasm_put(Dst, 10125); 1963 dasm_put(Dst, 10306);
1931 break; 1964 break;
1932 case BC_ISLE: 1965 case BC_ISLE:
1933 dasm_put(Dst, 10130); 1966 dasm_put(Dst, 10311);
1934 break; 1967 break;
1935 case BC_ISGT: 1968 case BC_ISGT:
1936 dasm_put(Dst, 10135); 1969 dasm_put(Dst, 10316);
1937 break; 1970 break;
1938 default: break; /* Shut up GCC. */ 1971 default: break; /* Shut up GCC. */
1939 } 1972 }
1940 dasm_put(Dst, 10140); 1973 dasm_put(Dst, 10321);
1941 } else { 1974 } else {
1942 switch (op) { 1975 switch (op) {
1943 case BC_ISLT: 1976 case BC_ISLT:
1944 dasm_put(Dst, 10224); 1977 dasm_put(Dst, 768);
1945 break; 1978 break;
1946 case BC_ISGE: 1979 case BC_ISGE:
1947 dasm_put(Dst, 10229); 1980 dasm_put(Dst, 10405);
1948 break; 1981 break;
1949 case BC_ISLE: 1982 case BC_ISLE:
1950 dasm_put(Dst, 10234); 1983 dasm_put(Dst, 10410);
1951 break; 1984 break;
1952 case BC_ISGT: 1985 case BC_ISGT:
1953 dasm_put(Dst, 10239); 1986 dasm_put(Dst, 10415);
1954 break; 1987 break;
1955 default: break; /* Shut up GCC. */ 1988 default: break; /* Shut up GCC. */
1956 } 1989 }
1957 dasm_put(Dst, 10244, -BCBIAS_J*4); 1990 dasm_put(Dst, 10420, -BCBIAS_J*4);
1958 } 1991 }
1959 break; 1992 break;
1960 1993
1961 case BC_ISEQV: case BC_ISNEV: 1994 case BC_ISEQV: case BC_ISNEV:
1962 vk = op == BC_ISEQV; 1995 vk = op == BC_ISEQV;
1963 dasm_put(Dst, 10276); 1996 dasm_put(Dst, 10452);
1964 if (LJ_DUALNUM) { 1997 if (LJ_DUALNUM) {
1965 dasm_put(Dst, 10284, LJ_TISNUM, LJ_TISNUM); 1998 dasm_put(Dst, 10460, LJ_TISNUM, LJ_TISNUM);
1966 if (vk) { 1999 if (vk) {
1967 dasm_put(Dst, 10309); 2000 dasm_put(Dst, 10485);
1968 } else { 2001 } else {
1969 dasm_put(Dst, 10314); 2002 dasm_put(Dst, 10490);
1970 } 2003 }
1971 dasm_put(Dst, 10319, -BCBIAS_J*4, LJ_TISNUM); 2004 dasm_put(Dst, 10495, -BCBIAS_J*4, LJ_TISNUM);
1972 if (sse) { 2005 if (sse) {
1973 dasm_put(Dst, 10371); 2006 dasm_put(Dst, 10547);
1974 } else { 2007 } else {
1975 dasm_put(Dst, 10378); 2008 dasm_put(Dst, 10554);
1976 } 2009 }
1977 dasm_put(Dst, 10382); 2010 dasm_put(Dst, 10558);
1978 if (sse) { 2011 if (sse) {
1979 dasm_put(Dst, 10393); 2012 dasm_put(Dst, 10569);
1980 } else { 2013 } else {
1981 dasm_put(Dst, 10405); 2014 dasm_put(Dst, 10581);
1982 } 2015 }
1983 dasm_put(Dst, 10412); 2016 dasm_put(Dst, 10588);
1984 } else { 2017 } else {
1985 dasm_put(Dst, 10417, LJ_TISNUM, LJ_TISNUM); 2018 dasm_put(Dst, 10593, LJ_TISNUM, LJ_TISNUM);
1986 } 2019 }
1987 if (sse) { 2020 if (sse) {
1988 dasm_put(Dst, 10436); 2021 dasm_put(Dst, 10612);
1989 } else { 2022 } else {
1990 dasm_put(Dst, 10454); 2023 dasm_put(Dst, 10630);
1991 if (cmov) { 2024 if (cmov) {
1992 dasm_put(Dst, 10211); 2025 dasm_put(Dst, 10392);
1993 } else { 2026 } else {
1994 dasm_put(Dst, 10217); 2027 dasm_put(Dst, 10398);
1995 } 2028 }
1996 } 2029 }
1997 iseqne_fp: 2030 iseqne_fp:
1998 if (vk) { 2031 if (vk) {
1999 dasm_put(Dst, 10467); 2032 dasm_put(Dst, 10643);
2000 } else { 2033 } else {
2001 dasm_put(Dst, 10476); 2034 dasm_put(Dst, 10652);
2002 } 2035 }
2003 iseqne_end: 2036 iseqne_end:
2004 if (vk) { 2037 if (vk) {
2005 dasm_put(Dst, 10485, -BCBIAS_J*4); 2038 dasm_put(Dst, 10661, -BCBIAS_J*4);
2006 if (!LJ_HASFFI) { 2039 if (!LJ_HASFFI) {
2007 dasm_put(Dst, 4629); 2040 dasm_put(Dst, 4638);
2008 } 2041 }
2009 } else { 2042 } else {
2010 if (!LJ_HASFFI) { 2043 if (!LJ_HASFFI) {
2011 dasm_put(Dst, 4629); 2044 dasm_put(Dst, 4638);
2012 } 2045 }
2013 dasm_put(Dst, 10500, -BCBIAS_J*4); 2046 dasm_put(Dst, 10676, -BCBIAS_J*4);
2014 } 2047 }
2015 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || 2048 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
2016 op == BC_ISEQN || op == BC_ISNEN)) { 2049 op == BC_ISEQN || op == BC_ISNEN)) {
2017 dasm_put(Dst, 10515); 2050 dasm_put(Dst, 10691);
2018 } else { 2051 } else {
2019 dasm_put(Dst, 10256); 2052 dasm_put(Dst, 10432);
2020 } 2053 }
2021 if (op == BC_ISEQV || op == BC_ISNEV) { 2054 if (op == BC_ISEQV || op == BC_ISNEV) {
2022 dasm_put(Dst, 9941); 2055 dasm_put(Dst, 10124);
2023 if (LJ_HASFFI) { 2056 if (LJ_HASFFI) {
2024 dasm_put(Dst, 10520, LJ_TCDATA, LJ_TCDATA); 2057 dasm_put(Dst, 10696, LJ_TCDATA, LJ_TCDATA);
2025 } 2058 }
2026 dasm_put(Dst, 10539, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 2059 dasm_put(Dst, 10715, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
2027 if (vk) { 2060 if (vk) {
2028 dasm_put(Dst, 10603); 2061 dasm_put(Dst, 10779);
2029 } else { 2062 } else {
2030 dasm_put(Dst, 10607); 2063 dasm_put(Dst, 10783);
2031 } 2064 }
2032 dasm_put(Dst, 10613); 2065 dasm_put(Dst, 10789);
2033 } else if (LJ_HASFFI) { 2066 } else if (LJ_HASFFI) {
2034 dasm_put(Dst, 10618, LJ_TCDATA); 2067 dasm_put(Dst, 10794, LJ_TCDATA);
2035 if (LJ_DUALNUM && vk) { 2068 if (LJ_DUALNUM && vk) {
2036 dasm_put(Dst, 10625); 2069 dasm_put(Dst, 10801);
2037 } else { 2070 } else {
2038 dasm_put(Dst, 10598); 2071 dasm_put(Dst, 10774);
2039 } 2072 }
2040 dasm_put(Dst, 10630); 2073 dasm_put(Dst, 10806);
2041 } 2074 }
2042 break; 2075 break;
2043 case BC_ISEQS: case BC_ISNES: 2076 case BC_ISEQS: case BC_ISNES:
2044 vk = op == BC_ISEQS; 2077 vk = op == BC_ISEQS;
2045 dasm_put(Dst, 10635, LJ_TSTR); 2078 dasm_put(Dst, 10811, LJ_TSTR);
2046 iseqne_test: 2079 iseqne_test:
2047 if (vk) { 2080 if (vk) {
2048 dasm_put(Dst, 10471); 2081 dasm_put(Dst, 10647);
2049 } else { 2082 } else {
2050 dasm_put(Dst, 765); 2083 dasm_put(Dst, 2929);
2051 } 2084 }
2052 goto iseqne_end; 2085 goto iseqne_end;
2053 case BC_ISEQN: case BC_ISNEN: 2086 case BC_ISEQN: case BC_ISNEN:
2054 vk = op == BC_ISEQN; 2087 vk = op == BC_ISEQN;
2055 dasm_put(Dst, 10661); 2088 dasm_put(Dst, 10837);
2056 if (LJ_DUALNUM) { 2089 if (LJ_DUALNUM) {
2057 dasm_put(Dst, 10669, LJ_TISNUM, LJ_TISNUM); 2090 dasm_put(Dst, 10845, LJ_TISNUM, LJ_TISNUM);
2058 if (vk) { 2091 if (vk) {
2059 dasm_put(Dst, 10309); 2092 dasm_put(Dst, 10485);
2060 } else { 2093 } else {
2061 dasm_put(Dst, 10314); 2094 dasm_put(Dst, 10490);
2062 } 2095 }
2063 dasm_put(Dst, 10694, -BCBIAS_J*4, LJ_TISNUM); 2096 dasm_put(Dst, 10870, -BCBIAS_J*4, LJ_TISNUM);
2064 if (sse) { 2097 if (sse) {
2065 dasm_put(Dst, 10742); 2098 dasm_put(Dst, 10918);
2066 } else { 2099 } else {
2067 dasm_put(Dst, 10749); 2100 dasm_put(Dst, 10925);
2068 } 2101 }
2069 dasm_put(Dst, 10753); 2102 dasm_put(Dst, 10929);
2070 if (sse) { 2103 if (sse) {
2071 dasm_put(Dst, 10760); 2104 dasm_put(Dst, 10936);
2072 } else { 2105 } else {
2073 dasm_put(Dst, 10772); 2106 dasm_put(Dst, 10948);
2074 } 2107 }
2075 dasm_put(Dst, 10412); 2108 dasm_put(Dst, 10588);
2076 } else { 2109 } else {
2077 dasm_put(Dst, 10779, LJ_TISNUM); 2110 dasm_put(Dst, 10955, LJ_TISNUM);
2078 } 2111 }
2079 if (sse) { 2112 if (sse) {
2080 dasm_put(Dst, 10788); 2113 dasm_put(Dst, 10964);
2081 } else { 2114 } else {
2082 dasm_put(Dst, 10806); 2115 dasm_put(Dst, 10982);
2083 if (cmov) { 2116 if (cmov) {
2084 dasm_put(Dst, 10211); 2117 dasm_put(Dst, 10392);
2085 } else { 2118 } else {
2086 dasm_put(Dst, 10217); 2119 dasm_put(Dst, 10398);
2087 } 2120 }
2088 } 2121 }
2089 goto iseqne_fp; 2122 goto iseqne_fp;
2090 case BC_ISEQP: case BC_ISNEP: 2123 case BC_ISEQP: case BC_ISNEP:
2091 vk = op == BC_ISEQP; 2124 vk = op == BC_ISEQP;
2092 dasm_put(Dst, 10819); 2125 dasm_put(Dst, 10995);
2093 if (!LJ_HASFFI) goto iseqne_test; 2126 if (!LJ_HASFFI) goto iseqne_test;
2094 if (vk) { 2127 if (vk) {
2095 dasm_put(Dst, 10833, -BCBIAS_J*4, LJ_TCDATA); 2128 dasm_put(Dst, 11009, -BCBIAS_J*4, LJ_TCDATA);
2096 } else { 2129 } else {
2097 dasm_put(Dst, 10883, LJ_TCDATA, -BCBIAS_J*4); 2130 dasm_put(Dst, 11059, LJ_TCDATA, -BCBIAS_J*4);
2098 } 2131 }
2099 break; 2132 break;
2100 2133
2101 /* -- Unary test and copy ops ------------------------------------------- */ 2134 /* -- Unary test and copy ops ------------------------------------------- */
2102 2135
2103 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2136 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
2104 dasm_put(Dst, 10927, LJ_TISTRUECOND); 2137 dasm_put(Dst, 11103, LJ_TISTRUECOND);
2105 if (op == BC_IST || op == BC_ISTC) { 2138 if (op == BC_IST || op == BC_ISTC) {
2106 dasm_put(Dst, 10239); 2139 dasm_put(Dst, 10415);
2107 } else { 2140 } else {
2108 dasm_put(Dst, 10234); 2141 dasm_put(Dst, 10410);
2109 } 2142 }
2110 if (op == BC_ISTC || op == BC_ISFC) { 2143 if (op == BC_ISTC || op == BC_ISFC) {
2111 dasm_put(Dst, 10939); 2144 dasm_put(Dst, 11115);
2112 } 2145 }
2113 dasm_put(Dst, 10244, -BCBIAS_J*4); 2146 dasm_put(Dst, 10420, -BCBIAS_J*4);
2114 break; 2147 break;
2115 2148
2116 /* -- Unary ops --------------------------------------------------------- */ 2149 /* -- Unary ops --------------------------------------------------------- */
2117 2150
2118 case BC_MOV: 2151 case BC_MOV:
2119 dasm_put(Dst, 10950); 2152 dasm_put(Dst, 11126);
2120 break; 2153 break;
2121 case BC_NOT: 2154 case BC_NOT:
2122 dasm_put(Dst, 10978, LJ_TISTRUECOND, LJ_TTRUE); 2155 dasm_put(Dst, 11154, LJ_TISTRUECOND, LJ_TTRUE);
2123 break; 2156 break;
2124 case BC_UNM: 2157 case BC_UNM:
2125 if (LJ_DUALNUM) { 2158 if (LJ_DUALNUM) {
2126 dasm_put(Dst, 11014, LJ_TISNUM, LJ_TISNUM); 2159 dasm_put(Dst, 11190, LJ_TISNUM, LJ_TISNUM);
2127 } else { 2160 } else {
2128 dasm_put(Dst, 11091, LJ_TISNUM); 2161 dasm_put(Dst, 11267, LJ_TISNUM);
2129 } 2162 }
2130 if (sse) { 2163 if (sse) {
2131 dasm_put(Dst, 11102, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 2164 dasm_put(Dst, 11278, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
2132 } else { 2165 } else {
2133 dasm_put(Dst, 11127); 2166 dasm_put(Dst, 11303);
2134 } 2167 }
2135 if (LJ_DUALNUM) { 2168 if (LJ_DUALNUM) {
2136 dasm_put(Dst, 10515); 2169 dasm_put(Dst, 10691);
2137 } else { 2170 } else {
2138 dasm_put(Dst, 10256); 2171 dasm_put(Dst, 10432);
2139 } 2172 }
2140 break; 2173 break;
2141 case BC_LEN: 2174 case BC_LEN:
2142 dasm_put(Dst, 11136, LJ_TSTR); 2175 dasm_put(Dst, 11312, LJ_TSTR);
2143 if (LJ_DUALNUM) { 2176 if (LJ_DUALNUM) {
2144 dasm_put(Dst, 11150, Dt5(->len), LJ_TISNUM); 2177 dasm_put(Dst, 11326, Dt5(->len), LJ_TISNUM);
2145 } else if (sse) { 2178 } else if (sse) {
2146 dasm_put(Dst, 11164, Dt5(->len)); 2179 dasm_put(Dst, 11340, Dt5(->len));
2147 } else { 2180 } else {
2148 dasm_put(Dst, 11182, Dt5(->len)); 2181 dasm_put(Dst, 11358, Dt5(->len));
2149 } 2182 }
2150 dasm_put(Dst, 11191, LJ_TTAB); 2183 dasm_put(Dst, 11367, LJ_TTAB);
2151#ifdef LUAJIT_ENABLE_LUA52COMPAT 2184#ifdef LUAJIT_ENABLE_LUA52COMPAT
2152 dasm_put(Dst, 11226, Dt6(->metatable)); 2185 dasm_put(Dst, 11402, Dt6(->metatable));
2153#endif 2186#endif
2154 dasm_put(Dst, 11240); 2187 dasm_put(Dst, 11416);
2155 if (LJ_DUALNUM) { 2188 if (LJ_DUALNUM) {
2156 } else if (sse) { 2189 } else if (sse) {
2157 dasm_put(Dst, 11249); 2190 dasm_put(Dst, 11425);
2158 } else { 2191 } else {
2159 } 2192 }
2160 dasm_put(Dst, 11255); 2193 dasm_put(Dst, 11431);
2161#ifdef LUAJIT_ENABLE_LUA52COMPAT 2194#ifdef LUAJIT_ENABLE_LUA52COMPAT
2162 dasm_put(Dst, 11268, Dt6(->nomm), 1<<MM_len); 2195 dasm_put(Dst, 11444, Dt6(->nomm), 1<<MM_len);
2163#endif 2196#endif
2164 break; 2197 break;
2165 2198
@@ -2168,605 +2201,605 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2168 2201
2169 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2202 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
2170 if (LJ_DUALNUM) { 2203 if (LJ_DUALNUM) {
2171 dasm_put(Dst, 11284); 2204 dasm_put(Dst, 11460);
2172 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2205 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2173 switch (vk) { 2206 switch (vk) {
2174 case 0: 2207 case 0:
2175 dasm_put(Dst, 11292, LJ_TISNUM, LJ_TISNUM); 2208 dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
2176 break; 2209 break;
2177 case 1: 2210 case 1:
2178 dasm_put(Dst, 11325, LJ_TISNUM, LJ_TISNUM); 2211 dasm_put(Dst, 11501, LJ_TISNUM, LJ_TISNUM);
2179 break; 2212 break;
2180 default: 2213 default:
2181 dasm_put(Dst, 11358, LJ_TISNUM, LJ_TISNUM); 2214 dasm_put(Dst, 11534, LJ_TISNUM, LJ_TISNUM);
2182 break; 2215 break;
2183 } 2216 }
2184 dasm_put(Dst, 11391, LJ_TISNUM); 2217 dasm_put(Dst, 11567, LJ_TISNUM);
2185 if (vk == 1) { 2218 if (vk == 1) {
2186 dasm_put(Dst, 11160); 2219 dasm_put(Dst, 11336);
2187 } else { 2220 } else {
2188 dasm_put(Dst, 10946); 2221 dasm_put(Dst, 11122);
2189 } 2222 }
2190 dasm_put(Dst, 10256); 2223 dasm_put(Dst, 10432);
2191 } else { 2224 } else {
2192 dasm_put(Dst, 11284); 2225 dasm_put(Dst, 11460);
2193 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2226 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2194 switch (vk) { 2227 switch (vk) {
2195 case 0: 2228 case 0:
2196 dasm_put(Dst, 11397, LJ_TISNUM); 2229 dasm_put(Dst, 11573, LJ_TISNUM);
2197 if (LJ_DUALNUM) { 2230 if (LJ_DUALNUM) {
2198 dasm_put(Dst, 11409, LJ_TISNUM); 2231 dasm_put(Dst, 11585, LJ_TISNUM);
2199 } 2232 }
2200 if (sse) { 2233 if (sse) {
2201 dasm_put(Dst, 11420); 2234 dasm_put(Dst, 11596);
2202 } else { 2235 } else {
2203 dasm_put(Dst, 11434); 2236 dasm_put(Dst, 11610);
2204 } 2237 }
2205 break; 2238 break;
2206 case 1: 2239 case 1:
2207 dasm_put(Dst, 11442, LJ_TISNUM); 2240 dasm_put(Dst, 11618, LJ_TISNUM);
2208 if (LJ_DUALNUM) { 2241 if (LJ_DUALNUM) {
2209 dasm_put(Dst, 11454, LJ_TISNUM); 2242 dasm_put(Dst, 11630, LJ_TISNUM);
2210 } 2243 }
2211 if (sse) { 2244 if (sse) {
2212 dasm_put(Dst, 11465); 2245 dasm_put(Dst, 11641);
2213 } else { 2246 } else {
2214 dasm_put(Dst, 11479); 2247 dasm_put(Dst, 11655);
2215 } 2248 }
2216 break; 2249 break;
2217 default: 2250 default:
2218 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2251 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2219 if (sse) { 2252 if (sse) {
2220 dasm_put(Dst, 11509); 2253 dasm_put(Dst, 11685);
2221 } else { 2254 } else {
2222 dasm_put(Dst, 11523); 2255 dasm_put(Dst, 11699);
2223 } 2256 }
2224 break; 2257 break;
2225 } 2258 }
2226 if (sse) { 2259 if (sse) {
2227 dasm_put(Dst, 11120); 2260 dasm_put(Dst, 11296);
2228 } else { 2261 } else {
2229 dasm_put(Dst, 11132); 2262 dasm_put(Dst, 11308);
2230 } 2263 }
2231 dasm_put(Dst, 10256); 2264 dasm_put(Dst, 10432);
2232 } 2265 }
2233 break; 2266 break;
2234 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2267 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
2235 if (LJ_DUALNUM) { 2268 if (LJ_DUALNUM) {
2236 dasm_put(Dst, 11284); 2269 dasm_put(Dst, 11460);
2237 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2270 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2238 switch (vk) { 2271 switch (vk) {
2239 case 0: 2272 case 0:
2240 dasm_put(Dst, 11531, LJ_TISNUM, LJ_TISNUM); 2273 dasm_put(Dst, 11707, LJ_TISNUM, LJ_TISNUM);
2241 break; 2274 break;
2242 case 1: 2275 case 1:
2243 dasm_put(Dst, 11564, LJ_TISNUM, LJ_TISNUM); 2276 dasm_put(Dst, 11740, LJ_TISNUM, LJ_TISNUM);
2244 break; 2277 break;
2245 default: 2278 default:
2246 dasm_put(Dst, 11597, LJ_TISNUM, LJ_TISNUM); 2279 dasm_put(Dst, 11773, LJ_TISNUM, LJ_TISNUM);
2247 break; 2280 break;
2248 } 2281 }
2249 dasm_put(Dst, 11391, LJ_TISNUM); 2282 dasm_put(Dst, 11567, LJ_TISNUM);
2250 if (vk == 1) { 2283 if (vk == 1) {
2251 dasm_put(Dst, 11160); 2284 dasm_put(Dst, 11336);
2252 } else { 2285 } else {
2253 dasm_put(Dst, 10946); 2286 dasm_put(Dst, 11122);
2254 } 2287 }
2255 dasm_put(Dst, 10256); 2288 dasm_put(Dst, 10432);
2256 } else { 2289 } else {
2257 dasm_put(Dst, 11284); 2290 dasm_put(Dst, 11460);
2258 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2291 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2259 switch (vk) { 2292 switch (vk) {
2260 case 0: 2293 case 0:
2261 dasm_put(Dst, 11397, LJ_TISNUM); 2294 dasm_put(Dst, 11573, LJ_TISNUM);
2262 if (LJ_DUALNUM) { 2295 if (LJ_DUALNUM) {
2263 dasm_put(Dst, 11409, LJ_TISNUM); 2296 dasm_put(Dst, 11585, LJ_TISNUM);
2264 } 2297 }
2265 if (sse) { 2298 if (sse) {
2266 dasm_put(Dst, 11630); 2299 dasm_put(Dst, 11806);
2267 } else { 2300 } else {
2268 dasm_put(Dst, 11644); 2301 dasm_put(Dst, 11820);
2269 } 2302 }
2270 break; 2303 break;
2271 case 1: 2304 case 1:
2272 dasm_put(Dst, 11442, LJ_TISNUM); 2305 dasm_put(Dst, 11618, LJ_TISNUM);
2273 if (LJ_DUALNUM) { 2306 if (LJ_DUALNUM) {
2274 dasm_put(Dst, 11454, LJ_TISNUM); 2307 dasm_put(Dst, 11630, LJ_TISNUM);
2275 } 2308 }
2276 if (sse) { 2309 if (sse) {
2277 dasm_put(Dst, 11652); 2310 dasm_put(Dst, 11828);
2278 } else { 2311 } else {
2279 dasm_put(Dst, 11666); 2312 dasm_put(Dst, 11842);
2280 } 2313 }
2281 break; 2314 break;
2282 default: 2315 default:
2283 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2316 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2284 if (sse) { 2317 if (sse) {
2285 dasm_put(Dst, 11674); 2318 dasm_put(Dst, 11850);
2286 } else { 2319 } else {
2287 dasm_put(Dst, 11688); 2320 dasm_put(Dst, 11864);
2288 } 2321 }
2289 break; 2322 break;
2290 } 2323 }
2291 if (sse) { 2324 if (sse) {
2292 dasm_put(Dst, 11120); 2325 dasm_put(Dst, 11296);
2293 } else { 2326 } else {
2294 dasm_put(Dst, 11132); 2327 dasm_put(Dst, 11308);
2295 } 2328 }
2296 dasm_put(Dst, 10256); 2329 dasm_put(Dst, 10432);
2297 } 2330 }
2298 break; 2331 break;
2299 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2332 case BC_MULVN: case BC_MULNV: case BC_MULVV:
2300 if (LJ_DUALNUM) { 2333 if (LJ_DUALNUM) {
2301 dasm_put(Dst, 11284); 2334 dasm_put(Dst, 11460);
2302 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2335 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2303 switch (vk) { 2336 switch (vk) {
2304 case 0: 2337 case 0:
2305 dasm_put(Dst, 11696, LJ_TISNUM, LJ_TISNUM); 2338 dasm_put(Dst, 11872, LJ_TISNUM, LJ_TISNUM);
2306 break; 2339 break;
2307 case 1: 2340 case 1:
2308 dasm_put(Dst, 11730, LJ_TISNUM, LJ_TISNUM); 2341 dasm_put(Dst, 11906, LJ_TISNUM, LJ_TISNUM);
2309 break; 2342 break;
2310 default: 2343 default:
2311 dasm_put(Dst, 11764, LJ_TISNUM, LJ_TISNUM); 2344 dasm_put(Dst, 11940, LJ_TISNUM, LJ_TISNUM);
2312 break; 2345 break;
2313 } 2346 }
2314 dasm_put(Dst, 11391, LJ_TISNUM); 2347 dasm_put(Dst, 11567, LJ_TISNUM);
2315 if (vk == 1) { 2348 if (vk == 1) {
2316 dasm_put(Dst, 11160); 2349 dasm_put(Dst, 11336);
2317 } else { 2350 } else {
2318 dasm_put(Dst, 10946); 2351 dasm_put(Dst, 11122);
2319 } 2352 }
2320 dasm_put(Dst, 10256); 2353 dasm_put(Dst, 10432);
2321 } else { 2354 } else {
2322 dasm_put(Dst, 11284); 2355 dasm_put(Dst, 11460);
2323 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2356 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2324 switch (vk) { 2357 switch (vk) {
2325 case 0: 2358 case 0:
2326 dasm_put(Dst, 11397, LJ_TISNUM); 2359 dasm_put(Dst, 11573, LJ_TISNUM);
2327 if (LJ_DUALNUM) { 2360 if (LJ_DUALNUM) {
2328 dasm_put(Dst, 11409, LJ_TISNUM); 2361 dasm_put(Dst, 11585, LJ_TISNUM);
2329 } 2362 }
2330 if (sse) { 2363 if (sse) {
2331 dasm_put(Dst, 11798); 2364 dasm_put(Dst, 11974);
2332 } else { 2365 } else {
2333 dasm_put(Dst, 11812); 2366 dasm_put(Dst, 11988);
2334 } 2367 }
2335 break; 2368 break;
2336 case 1: 2369 case 1:
2337 dasm_put(Dst, 11442, LJ_TISNUM); 2370 dasm_put(Dst, 11618, LJ_TISNUM);
2338 if (LJ_DUALNUM) { 2371 if (LJ_DUALNUM) {
2339 dasm_put(Dst, 11454, LJ_TISNUM); 2372 dasm_put(Dst, 11630, LJ_TISNUM);
2340 } 2373 }
2341 if (sse) { 2374 if (sse) {
2342 dasm_put(Dst, 11820); 2375 dasm_put(Dst, 11996);
2343 } else { 2376 } else {
2344 dasm_put(Dst, 11834); 2377 dasm_put(Dst, 12010);
2345 } 2378 }
2346 break; 2379 break;
2347 default: 2380 default:
2348 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2381 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2349 if (sse) { 2382 if (sse) {
2350 dasm_put(Dst, 11842); 2383 dasm_put(Dst, 12018);
2351 } else { 2384 } else {
2352 dasm_put(Dst, 11856); 2385 dasm_put(Dst, 12032);
2353 } 2386 }
2354 break; 2387 break;
2355 } 2388 }
2356 if (sse) { 2389 if (sse) {
2357 dasm_put(Dst, 11120); 2390 dasm_put(Dst, 11296);
2358 } else { 2391 } else {
2359 dasm_put(Dst, 11132); 2392 dasm_put(Dst, 11308);
2360 } 2393 }
2361 dasm_put(Dst, 10256); 2394 dasm_put(Dst, 10432);
2362 } 2395 }
2363 break; 2396 break;
2364 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2397 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
2365 dasm_put(Dst, 11284); 2398 dasm_put(Dst, 11460);
2366 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2399 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2367 switch (vk) { 2400 switch (vk) {
2368 case 0: 2401 case 0:
2369 dasm_put(Dst, 11397, LJ_TISNUM); 2402 dasm_put(Dst, 11573, LJ_TISNUM);
2370 if (LJ_DUALNUM) { 2403 if (LJ_DUALNUM) {
2371 dasm_put(Dst, 11409, LJ_TISNUM); 2404 dasm_put(Dst, 11585, LJ_TISNUM);
2372 } 2405 }
2373 if (sse) { 2406 if (sse) {
2374 dasm_put(Dst, 11864); 2407 dasm_put(Dst, 12040);
2375 } else { 2408 } else {
2376 dasm_put(Dst, 11878); 2409 dasm_put(Dst, 12054);
2377 } 2410 }
2378 break; 2411 break;
2379 case 1: 2412 case 1:
2380 dasm_put(Dst, 11442, LJ_TISNUM); 2413 dasm_put(Dst, 11618, LJ_TISNUM);
2381 if (LJ_DUALNUM) { 2414 if (LJ_DUALNUM) {
2382 dasm_put(Dst, 11454, LJ_TISNUM); 2415 dasm_put(Dst, 11630, LJ_TISNUM);
2383 } 2416 }
2384 if (sse) { 2417 if (sse) {
2385 dasm_put(Dst, 11886); 2418 dasm_put(Dst, 12062);
2386 } else { 2419 } else {
2387 dasm_put(Dst, 11900); 2420 dasm_put(Dst, 12076);
2388 } 2421 }
2389 break; 2422 break;
2390 default: 2423 default:
2391 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2424 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2392 if (sse) { 2425 if (sse) {
2393 dasm_put(Dst, 11908); 2426 dasm_put(Dst, 12084);
2394 } else { 2427 } else {
2395 dasm_put(Dst, 11922); 2428 dasm_put(Dst, 12098);
2396 } 2429 }
2397 break; 2430 break;
2398 } 2431 }
2399 if (sse) { 2432 if (sse) {
2400 dasm_put(Dst, 11120); 2433 dasm_put(Dst, 11296);
2401 } else { 2434 } else {
2402 dasm_put(Dst, 11132); 2435 dasm_put(Dst, 11308);
2403 } 2436 }
2404 dasm_put(Dst, 10256); 2437 dasm_put(Dst, 10432);
2405 break; 2438 break;
2406 case BC_MODVN: 2439 case BC_MODVN:
2407 dasm_put(Dst, 11284); 2440 dasm_put(Dst, 11460);
2408 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2441 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2409 switch (vk) { 2442 switch (vk) {
2410 case 0: 2443 case 0:
2411 dasm_put(Dst, 11397, LJ_TISNUM); 2444 dasm_put(Dst, 11573, LJ_TISNUM);
2412 if (LJ_DUALNUM) { 2445 if (LJ_DUALNUM) {
2413 dasm_put(Dst, 11409, LJ_TISNUM); 2446 dasm_put(Dst, 11585, LJ_TISNUM);
2414 } 2447 }
2415 if (sse) { 2448 if (sse) {
2416 dasm_put(Dst, 11930); 2449 dasm_put(Dst, 12106);
2417 } else { 2450 } else {
2418 dasm_put(Dst, 11944); 2451 dasm_put(Dst, 12120);
2419 } 2452 }
2420 break; 2453 break;
2421 case 1: 2454 case 1:
2422 dasm_put(Dst, 11442, LJ_TISNUM); 2455 dasm_put(Dst, 11618, LJ_TISNUM);
2423 if (LJ_DUALNUM) { 2456 if (LJ_DUALNUM) {
2424 dasm_put(Dst, 11454, LJ_TISNUM); 2457 dasm_put(Dst, 11630, LJ_TISNUM);
2425 } 2458 }
2426 if (sse) { 2459 if (sse) {
2427 dasm_put(Dst, 11952); 2460 dasm_put(Dst, 12128);
2428 } else { 2461 } else {
2429 dasm_put(Dst, 11966); 2462 dasm_put(Dst, 12142);
2430 } 2463 }
2431 break; 2464 break;
2432 default: 2465 default:
2433 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2466 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2434 if (sse) { 2467 if (sse) {
2435 dasm_put(Dst, 11974); 2468 dasm_put(Dst, 12150);
2436 } else { 2469 } else {
2437 dasm_put(Dst, 11988); 2470 dasm_put(Dst, 12164);
2438 } 2471 }
2439 break; 2472 break;
2440 } 2473 }
2441 dasm_put(Dst, 11996); 2474 dasm_put(Dst, 12172);
2442 if (sse) { 2475 if (sse) {
2443 dasm_put(Dst, 11120); 2476 dasm_put(Dst, 11296);
2444 } else { 2477 } else {
2445 dasm_put(Dst, 11132); 2478 dasm_put(Dst, 11308);
2446 } 2479 }
2447 dasm_put(Dst, 10256); 2480 dasm_put(Dst, 10432);
2448 break; 2481 break;
2449 case BC_MODNV: case BC_MODVV: 2482 case BC_MODNV: case BC_MODVV:
2450 dasm_put(Dst, 11284); 2483 dasm_put(Dst, 11460);
2451 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2484 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2452 switch (vk) { 2485 switch (vk) {
2453 case 0: 2486 case 0:
2454 dasm_put(Dst, 11397, LJ_TISNUM); 2487 dasm_put(Dst, 11573, LJ_TISNUM);
2455 if (LJ_DUALNUM) { 2488 if (LJ_DUALNUM) {
2456 dasm_put(Dst, 11409, LJ_TISNUM); 2489 dasm_put(Dst, 11585, LJ_TISNUM);
2457 } 2490 }
2458 if (sse) { 2491 if (sse) {
2459 dasm_put(Dst, 11930); 2492 dasm_put(Dst, 12106);
2460 } else { 2493 } else {
2461 dasm_put(Dst, 11944); 2494 dasm_put(Dst, 12120);
2462 } 2495 }
2463 break; 2496 break;
2464 case 1: 2497 case 1:
2465 dasm_put(Dst, 11442, LJ_TISNUM); 2498 dasm_put(Dst, 11618, LJ_TISNUM);
2466 if (LJ_DUALNUM) { 2499 if (LJ_DUALNUM) {
2467 dasm_put(Dst, 11454, LJ_TISNUM); 2500 dasm_put(Dst, 11630, LJ_TISNUM);
2468 } 2501 }
2469 if (sse) { 2502 if (sse) {
2470 dasm_put(Dst, 11952); 2503 dasm_put(Dst, 12128);
2471 } else { 2504 } else {
2472 dasm_put(Dst, 11966); 2505 dasm_put(Dst, 12142);
2473 } 2506 }
2474 break; 2507 break;
2475 default: 2508 default:
2476 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2509 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2477 if (sse) { 2510 if (sse) {
2478 dasm_put(Dst, 11974); 2511 dasm_put(Dst, 12150);
2479 } else { 2512 } else {
2480 dasm_put(Dst, 11988); 2513 dasm_put(Dst, 12164);
2481 } 2514 }
2482 break; 2515 break;
2483 } 2516 }
2484 dasm_put(Dst, 12002); 2517 dasm_put(Dst, 12178);
2485 break; 2518 break;
2486 case BC_POW: 2519 case BC_POW:
2487 dasm_put(Dst, 11284); 2520 dasm_put(Dst, 11460);
2488 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2521 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2489 switch (vk) { 2522 switch (vk) {
2490 case 0: 2523 case 0:
2491 dasm_put(Dst, 11397, LJ_TISNUM); 2524 dasm_put(Dst, 11573, LJ_TISNUM);
2492 if (LJ_DUALNUM) { 2525 if (LJ_DUALNUM) {
2493 dasm_put(Dst, 11409, LJ_TISNUM); 2526 dasm_put(Dst, 11585, LJ_TISNUM);
2494 } 2527 }
2495 if (sse) { 2528 if (sse) {
2496 dasm_put(Dst, 11930); 2529 dasm_put(Dst, 12106);
2497 } else { 2530 } else {
2498 dasm_put(Dst, 11944); 2531 dasm_put(Dst, 12120);
2499 } 2532 }
2500 break; 2533 break;
2501 case 1: 2534 case 1:
2502 dasm_put(Dst, 11442, LJ_TISNUM); 2535 dasm_put(Dst, 11618, LJ_TISNUM);
2503 if (LJ_DUALNUM) { 2536 if (LJ_DUALNUM) {
2504 dasm_put(Dst, 11454, LJ_TISNUM); 2537 dasm_put(Dst, 11630, LJ_TISNUM);
2505 } 2538 }
2506 if (sse) { 2539 if (sse) {
2507 dasm_put(Dst, 11952); 2540 dasm_put(Dst, 12128);
2508 } else { 2541 } else {
2509 dasm_put(Dst, 11966); 2542 dasm_put(Dst, 12142);
2510 } 2543 }
2511 break; 2544 break;
2512 default: 2545 default:
2513 dasm_put(Dst, 11487, LJ_TISNUM, LJ_TISNUM); 2546 dasm_put(Dst, 11663, LJ_TISNUM, LJ_TISNUM);
2514 if (sse) { 2547 if (sse) {
2515 dasm_put(Dst, 11974); 2548 dasm_put(Dst, 12150);
2516 } else { 2549 } else {
2517 dasm_put(Dst, 11988); 2550 dasm_put(Dst, 12164);
2518 } 2551 }
2519 break; 2552 break;
2520 } 2553 }
2521 dasm_put(Dst, 12007); 2554 dasm_put(Dst, 12183);
2522 if (sse) { 2555 if (sse) {
2523 dasm_put(Dst, 11120); 2556 dasm_put(Dst, 11296);
2524 } else { 2557 } else {
2525 dasm_put(Dst, 11132); 2558 dasm_put(Dst, 11308);
2526 } 2559 }
2527 dasm_put(Dst, 10256); 2560 dasm_put(Dst, 10432);
2528 break; 2561 break;
2529 2562
2530 case BC_CAT: 2563 case BC_CAT:
2531 dasm_put(Dst, 12011, Dt1(->base), Dt1(->base)); 2564 dasm_put(Dst, 12187, Dt1(->base), Dt1(->base));
2532 break; 2565 break;
2533 2566
2534 /* -- Constant ops ------------------------------------------------------ */ 2567 /* -- Constant ops ------------------------------------------------------ */
2535 2568
2536 case BC_KSTR: 2569 case BC_KSTR:
2537 dasm_put(Dst, 12094, LJ_TSTR); 2570 dasm_put(Dst, 12270, LJ_TSTR);
2538 break; 2571 break;
2539 case BC_KCDATA: 2572 case BC_KCDATA:
2540#if LJ_HASFFI 2573#if LJ_HASFFI
2541 dasm_put(Dst, 12094, LJ_TCDATA); 2574 dasm_put(Dst, 12270, LJ_TCDATA);
2542#endif 2575#endif
2543 break; 2576 break;
2544 case BC_KSHORT: 2577 case BC_KSHORT:
2545 if (LJ_DUALNUM) { 2578 if (LJ_DUALNUM) {
2546 dasm_put(Dst, 12129, LJ_TISNUM); 2579 dasm_put(Dst, 12305, LJ_TISNUM);
2547 } else if (sse) { 2580 } else if (sse) {
2548 dasm_put(Dst, 12141); 2581 dasm_put(Dst, 12317);
2549 } else { 2582 } else {
2550 dasm_put(Dst, 12156); 2583 dasm_put(Dst, 12332);
2551 } 2584 }
2552 dasm_put(Dst, 10256); 2585 dasm_put(Dst, 10432);
2553 break; 2586 break;
2554 case BC_KNUM: 2587 case BC_KNUM:
2555 if (sse) { 2588 if (sse) {
2556 dasm_put(Dst, 12164); 2589 dasm_put(Dst, 12340);
2557 } else { 2590 } else {
2558 dasm_put(Dst, 12177); 2591 dasm_put(Dst, 12353);
2559 } 2592 }
2560 dasm_put(Dst, 10256); 2593 dasm_put(Dst, 10432);
2561 break; 2594 break;
2562 case BC_KPRI: 2595 case BC_KPRI:
2563 dasm_put(Dst, 12184); 2596 dasm_put(Dst, 12360);
2564 break; 2597 break;
2565 case BC_KNIL: 2598 case BC_KNIL:
2566 dasm_put(Dst, 12212, LJ_TNIL); 2599 dasm_put(Dst, 12388, LJ_TNIL);
2567 break; 2600 break;
2568 2601
2569 /* -- Upvalue and function ops ------------------------------------------ */ 2602 /* -- Upvalue and function ops ------------------------------------------ */
2570 2603
2571 case BC_UGET: 2604 case BC_UGET:
2572 dasm_put(Dst, 12259, offsetof(GCfuncL, uvptr), DtA(->v)); 2605 dasm_put(Dst, 12435, offsetof(GCfuncL, uvptr), DtA(->v));
2573 break; 2606 break;
2574 case BC_USETV: 2607 case BC_USETV:
2575#define TV2MARKOFS \ 2608#define TV2MARKOFS \
2576 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2609 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2577 dasm_put(Dst, 12299, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 2610 dasm_put(Dst, 12475, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
2578 dasm_put(Dst, 12390); 2611 dasm_put(Dst, 12566);
2579 break; 2612 break;
2580#undef TV2MARKOFS 2613#undef TV2MARKOFS
2581 case BC_USETS: 2614 case BC_USETS:
2582 dasm_put(Dst, 12402, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2615 dasm_put(Dst, 12578, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2583 break; 2616 break;
2584 case BC_USETN: 2617 case BC_USETN:
2585 dasm_put(Dst, 12495); 2618 dasm_put(Dst, 12671);
2586 if (sse) { 2619 if (sse) {
2587 dasm_put(Dst, 12500); 2620 dasm_put(Dst, 12676);
2588 } else { 2621 } else {
2589 dasm_put(Dst, 10775); 2622 dasm_put(Dst, 10951);
2590 } 2623 }
2591 dasm_put(Dst, 12507, offsetof(GCfuncL, uvptr), DtA(->v)); 2624 dasm_put(Dst, 12683, offsetof(GCfuncL, uvptr), DtA(->v));
2592 if (sse) { 2625 if (sse) {
2593 dasm_put(Dst, 12516); 2626 dasm_put(Dst, 12692);
2594 } else { 2627 } else {
2595 dasm_put(Dst, 12522); 2628 dasm_put(Dst, 12698);
2596 } 2629 }
2597 dasm_put(Dst, 10256); 2630 dasm_put(Dst, 10432);
2598 break; 2631 break;
2599 case BC_USETP: 2632 case BC_USETP:
2600 dasm_put(Dst, 12525, offsetof(GCfuncL, uvptr), DtA(->v)); 2633 dasm_put(Dst, 12701, offsetof(GCfuncL, uvptr), DtA(->v));
2601 break; 2634 break;
2602 case BC_UCLO: 2635 case BC_UCLO:
2603 dasm_put(Dst, 12564, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2636 dasm_put(Dst, 12740, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2604 break; 2637 break;
2605 2638
2606 case BC_FNEW: 2639 case BC_FNEW:
2607 dasm_put(Dst, 12619, Dt1(->base), Dt1(->base), LJ_TFUNC); 2640 dasm_put(Dst, 12795, Dt1(->base), Dt1(->base), LJ_TFUNC);
2608 break; 2641 break;
2609 2642
2610 /* -- Table ops --------------------------------------------------------- */ 2643 /* -- Table ops --------------------------------------------------------- */
2611 2644
2612 case BC_TNEW: 2645 case BC_TNEW:
2613 dasm_put(Dst, 12685, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2646 dasm_put(Dst, 12861, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2614 break; 2647 break;
2615 case BC_TDUP: 2648 case BC_TDUP:
2616 dasm_put(Dst, 12807, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2649 dasm_put(Dst, 12983, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2617 break; 2650 break;
2618 2651
2619 case BC_GGET: 2652 case BC_GGET:
2620 dasm_put(Dst, 12902, Dt7(->env)); 2653 dasm_put(Dst, 13078, Dt7(->env));
2621 break; 2654 break;
2622 case BC_GSET: 2655 case BC_GSET:
2623 dasm_put(Dst, 12921, Dt7(->env)); 2656 dasm_put(Dst, 13097, Dt7(->env));
2624 break; 2657 break;
2625 2658
2626 case BC_TGETV: 2659 case BC_TGETV:
2627 dasm_put(Dst, 12940, LJ_TTAB); 2660 dasm_put(Dst, 13116, LJ_TTAB);
2628 if (LJ_DUALNUM) { 2661 if (LJ_DUALNUM) {
2629 dasm_put(Dst, 12963, LJ_TISNUM); 2662 dasm_put(Dst, 13139, LJ_TISNUM);
2630 } else { 2663 } else {
2631 dasm_put(Dst, 12977, LJ_TISNUM); 2664 dasm_put(Dst, 13153, LJ_TISNUM);
2632 if (sse) { 2665 if (sse) {
2633 dasm_put(Dst, 12988); 2666 dasm_put(Dst, 13164);
2634 } else { 2667 } else {
2635 } 2668 }
2636 dasm_put(Dst, 13009); 2669 dasm_put(Dst, 13185);
2637 } 2670 }
2638 dasm_put(Dst, 13014, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL); 2671 dasm_put(Dst, 13190, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2639 dasm_put(Dst, 13105, LJ_TSTR); 2672 dasm_put(Dst, 13281, LJ_TSTR);
2640 break; 2673 break;
2641 case BC_TGETS: 2674 case BC_TGETS:
2642 dasm_put(Dst, 13123, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2675 dasm_put(Dst, 13299, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2643 dasm_put(Dst, 13207, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2676 dasm_put(Dst, 13383, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2644 break; 2677 break;
2645 case BC_TGETB: 2678 case BC_TGETB:
2646 dasm_put(Dst, 13278, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2679 dasm_put(Dst, 13454, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2647 dasm_put(Dst, 13373, LJ_TNIL); 2680 dasm_put(Dst, 13549, LJ_TNIL);
2648 break; 2681 break;
2649 2682
2650 case BC_TSETV: 2683 case BC_TSETV:
2651 dasm_put(Dst, 13390, LJ_TTAB); 2684 dasm_put(Dst, 13566, LJ_TTAB);
2652 if (LJ_DUALNUM) { 2685 if (LJ_DUALNUM) {
2653 dasm_put(Dst, 12963, LJ_TISNUM); 2686 dasm_put(Dst, 13139, LJ_TISNUM);
2654 } else { 2687 } else {
2655 dasm_put(Dst, 12977, LJ_TISNUM); 2688 dasm_put(Dst, 13153, LJ_TISNUM);
2656 if (sse) { 2689 if (sse) {
2657 dasm_put(Dst, 12988); 2690 dasm_put(Dst, 13164);
2658 } else { 2691 } else {
2659 } 2692 }
2660 dasm_put(Dst, 13413); 2693 dasm_put(Dst, 13589);
2661 } 2694 }
2662 dasm_put(Dst, 13418, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 2695 dasm_put(Dst, 13594, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2663 dasm_put(Dst, 13498, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2696 dasm_put(Dst, 13674, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2664 break; 2697 break;
2665 case BC_TSETS: 2698 case BC_TSETS:
2666 dasm_put(Dst, 13555, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2699 dasm_put(Dst, 13731, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2667 dasm_put(Dst, 13631, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2700 dasm_put(Dst, 13807, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2668 dasm_put(Dst, 13719, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2701 dasm_put(Dst, 13895, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2669 break; 2702 break;
2670 case BC_TSETB: 2703 case BC_TSETB:
2671 dasm_put(Dst, 13810, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2704 dasm_put(Dst, 13986, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2672 dasm_put(Dst, 13904, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2705 dasm_put(Dst, 14080, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2673 break; 2706 break;
2674 2707
2675 case BC_TSETM: 2708 case BC_TSETM:
2676 dasm_put(Dst, 13950, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2709 dasm_put(Dst, 14126, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2677 dasm_put(Dst, 14093, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2710 dasm_put(Dst, 14269, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2678 break; 2711 break;
2679 2712
2680 /* -- Calls and vararg handling ----------------------------------------- */ 2713 /* -- Calls and vararg handling ----------------------------------------- */
2681 2714
2682 case BC_CALL: case BC_CALLM: 2715 case BC_CALL: case BC_CALLM:
2683 dasm_put(Dst, 11288); 2716 dasm_put(Dst, 11464);
2684 if (op == BC_CALLM) { 2717 if (op == BC_CALLM) {
2685 dasm_put(Dst, 14111); 2718 dasm_put(Dst, 14287);
2686 } 2719 }
2687 dasm_put(Dst, 14116, LJ_TFUNC, Dt7(->pc)); 2720 dasm_put(Dst, 14292, LJ_TFUNC, Dt7(->pc));
2688 break; 2721 break;
2689 2722
2690 case BC_CALLMT: 2723 case BC_CALLMT:
2691 dasm_put(Dst, 14111); 2724 dasm_put(Dst, 14287);
2692 break; 2725 break;
2693 case BC_CALLT: 2726 case BC_CALLT:
2694 dasm_put(Dst, 14158, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2727 dasm_put(Dst, 14334, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2695 dasm_put(Dst, 14273, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2728 dasm_put(Dst, 14449, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2696 break; 2729 break;
2697 2730
2698 case BC_ITERC: 2731 case BC_ITERC:
2699 dasm_put(Dst, 14344, LJ_TFUNC, 2+1, Dt7(->pc)); 2732 dasm_put(Dst, 14520, LJ_TFUNC, 2+1, Dt7(->pc));
2700 break; 2733 break;
2701 2734
2702 case BC_ITERN: 2735 case BC_ITERN:
2703#if LJ_HASJIT 2736#if LJ_HASJIT
2704#endif 2737#endif
2705 dasm_put(Dst, 14415, Dt6(->asize), Dt6(->array), LJ_TNIL); 2738 dasm_put(Dst, 14591, Dt6(->asize), Dt6(->array), LJ_TNIL);
2706 if (LJ_DUALNUM) { 2739 if (LJ_DUALNUM) {
2707 dasm_put(Dst, 11155, LJ_TISNUM); 2740 dasm_put(Dst, 11331, LJ_TISNUM);
2708 } else if (sse) { 2741 } else if (sse) {
2709 dasm_put(Dst, 11249); 2742 dasm_put(Dst, 11425);
2710 } else { 2743 } else {
2711 dasm_put(Dst, 14461); 2744 dasm_put(Dst, 14637);
2712 } 2745 }
2713 dasm_put(Dst, 14467); 2746 dasm_put(Dst, 14643);
2714 if (LJ_DUALNUM) { 2747 if (LJ_DUALNUM) {
2715 } else if (sse) { 2748 } else if (sse) {
2716 dasm_put(Dst, 11120); 2749 dasm_put(Dst, 11296);
2717 } else { 2750 } else {
2718 dasm_put(Dst, 11132); 2751 dasm_put(Dst, 11308);
2719 } 2752 }
2720 dasm_put(Dst, 14480, -BCBIAS_J*4); 2753 dasm_put(Dst, 14656, -BCBIAS_J*4);
2721 if (!LJ_DUALNUM && !sse) { 2754 if (!LJ_DUALNUM && !sse) {
2722 dasm_put(Dst, 14532); 2755 dasm_put(Dst, 14708);
2723 } 2756 }
2724 dasm_put(Dst, 14538, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2757 dasm_put(Dst, 14714, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2725 break; 2758 break;
2726 2759
2727 case BC_ISNEXT: 2760 case BC_ISNEXT:
2728 dasm_put(Dst, 14610, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2761 dasm_put(Dst, 14786, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2729 break; 2762 break;
2730 2763
2731 case BC_VARG: 2764 case BC_VARG:
2732 dasm_put(Dst, 14710, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2765 dasm_put(Dst, 14886, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2733 dasm_put(Dst, 14870, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2766 dasm_put(Dst, 15046, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2734 break; 2767 break;
2735 2768
2736 /* -- Returns ----------------------------------------------------------- */ 2769 /* -- Returns ----------------------------------------------------------- */
2737 2770
2738 case BC_RETM: 2771 case BC_RETM:
2739 dasm_put(Dst, 14111); 2772 dasm_put(Dst, 14287);
2740 break; 2773 break;
2741 2774
2742 case BC_RET: case BC_RET0: case BC_RET1: 2775 case BC_RET: case BC_RET0: case BC_RET1:
2743 if (op != BC_RET0) { 2776 if (op != BC_RET0) {
2744 dasm_put(Dst, 14936); 2777 dasm_put(Dst, 15112);
2745 } 2778 }
2746 dasm_put(Dst, 14940, FRAME_TYPE); 2779 dasm_put(Dst, 15116, FRAME_TYPE);
2747 switch (op) { 2780 switch (op) {
2748 case BC_RET: 2781 case BC_RET:
2749 dasm_put(Dst, 14959); 2782 dasm_put(Dst, 15135);
2750 break; 2783 break;
2751 case BC_RET1: 2784 case BC_RET1:
2752 dasm_put(Dst, 15011); 2785 dasm_put(Dst, 15187);
2753 /* fallthrough */ 2786 /* fallthrough */
2754 case BC_RET0: 2787 case BC_RET0:
2755 dasm_put(Dst, 15021); 2788 dasm_put(Dst, 15197);
2756 default: 2789 default:
2757 break; 2790 break;
2758 } 2791 }
2759 dasm_put(Dst, 15032, Dt7(->pc), PC2PROTO(k)); 2792 dasm_put(Dst, 15208, Dt7(->pc), PC2PROTO(k));
2760 if (op == BC_RET) { 2793 if (op == BC_RET) {
2761 dasm_put(Dst, 15076, LJ_TNIL); 2794 dasm_put(Dst, 15252, LJ_TNIL);
2762 } else { 2795 } else {
2763 dasm_put(Dst, 15085, LJ_TNIL); 2796 dasm_put(Dst, 15261, LJ_TNIL);
2764 } 2797 }
2765 dasm_put(Dst, 15092, -FRAME_VARG, FRAME_TYPEP); 2798 dasm_put(Dst, 15268, -FRAME_VARG, FRAME_TYPEP);
2766 if (op != BC_RET0) { 2799 if (op != BC_RET0) {
2767 dasm_put(Dst, 15116); 2800 dasm_put(Dst, 15292);
2768 } 2801 }
2769 dasm_put(Dst, 4708); 2802 dasm_put(Dst, 4717);
2770 break; 2803 break;
2771 2804
2772 /* -- Loops and branches ------------------------------------------------ */ 2805 /* -- Loops and branches ------------------------------------------------ */
@@ -2774,7 +2807,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2774 2807
2775 case BC_FORL: 2808 case BC_FORL:
2776#if LJ_HASJIT 2809#if LJ_HASJIT
2777 dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2810 dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2778#endif 2811#endif
2779 break; 2812 break;
2780 2813
@@ -2786,111 +2819,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2786 case BC_FORI: 2819 case BC_FORI:
2787 case BC_IFORL: 2820 case BC_IFORL:
2788 vk = (op == BC_IFORL || op == BC_JFORL); 2821 vk = (op == BC_IFORL || op == BC_JFORL);
2789 dasm_put(Dst, 15141); 2822 dasm_put(Dst, 15317);
2790 if (LJ_DUALNUM) { 2823 if (LJ_DUALNUM) {
2791 dasm_put(Dst, 15145, LJ_TISNUM); 2824 dasm_put(Dst, 15321, LJ_TISNUM);
2792 if (!vk) { 2825 if (!vk) {
2793 dasm_put(Dst, 15155, LJ_TISNUM, LJ_TISNUM); 2826 dasm_put(Dst, 15331, LJ_TISNUM, LJ_TISNUM);
2794 } else { 2827 } else {
2795#ifdef LUA_USE_ASSERT 2828#ifdef LUA_USE_ASSERT
2796 dasm_put(Dst, 15184, LJ_TISNUM, LJ_TISNUM); 2829 dasm_put(Dst, 15360, LJ_TISNUM, LJ_TISNUM);
2797#endif 2830#endif
2798 dasm_put(Dst, 15203); 2831 dasm_put(Dst, 15379);
2799 } 2832 }
2800 dasm_put(Dst, 15222, LJ_TISNUM); 2833 dasm_put(Dst, 15398, LJ_TISNUM);
2801 if (op == BC_FORI) { 2834 if (op == BC_FORI) {
2802 dasm_put(Dst, 15233, -BCBIAS_J*4); 2835 dasm_put(Dst, 15409, -BCBIAS_J*4);
2803 } else if (op == BC_JFORI) { 2836 } else if (op == BC_JFORI) {
2804 dasm_put(Dst, 15247, -BCBIAS_J*4, BC_JLOOP); 2837 dasm_put(Dst, 15423, -BCBIAS_J*4, BC_JLOOP);
2805 } else if (op == BC_IFORL) { 2838 } else if (op == BC_IFORL) {
2806 dasm_put(Dst, 15265, -BCBIAS_J*4); 2839 dasm_put(Dst, 15441, -BCBIAS_J*4);
2807 } else { 2840 } else {
2808 dasm_put(Dst, 15257, BC_JLOOP); 2841 dasm_put(Dst, 15433, BC_JLOOP);
2809 } 2842 }
2810 dasm_put(Dst, 15279); 2843 dasm_put(Dst, 15455);
2811 if (vk) { 2844 if (vk) {
2812 dasm_put(Dst, 15303); 2845 dasm_put(Dst, 15479);
2813 } 2846 }
2814 dasm_put(Dst, 15222, LJ_TISNUM); 2847 dasm_put(Dst, 15398, LJ_TISNUM);
2815 if (op == BC_FORI) { 2848 if (op == BC_FORI) {
2816 dasm_put(Dst, 15312); 2849 dasm_put(Dst, 15488);
2817 } else if (op == BC_JFORI) { 2850 } else if (op == BC_JFORI) {
2818 dasm_put(Dst, 15317, -BCBIAS_J*4, BC_JLOOP); 2851 dasm_put(Dst, 15493, -BCBIAS_J*4, BC_JLOOP);
2819 } else if (op == BC_IFORL) { 2852 } else if (op == BC_IFORL) {
2820 dasm_put(Dst, 15331); 2853 dasm_put(Dst, 15507);
2821 } else { 2854 } else {
2822 dasm_put(Dst, 15327, BC_JLOOP); 2855 dasm_put(Dst, 15503, BC_JLOOP);
2823 } 2856 }
2824 dasm_put(Dst, 15336); 2857 dasm_put(Dst, 15512);
2825 } else if (!vk) { 2858 } else if (!vk) {
2826 dasm_put(Dst, 15343, LJ_TISNUM); 2859 dasm_put(Dst, 15519, LJ_TISNUM);
2827 } 2860 }
2828 if (!vk) { 2861 if (!vk) {
2829 dasm_put(Dst, 15349, LJ_TISNUM); 2862 dasm_put(Dst, 15525, LJ_TISNUM);
2830 } else { 2863 } else {
2831#ifdef LUA_USE_ASSERT 2864#ifdef LUA_USE_ASSERT
2832 dasm_put(Dst, 15363, LJ_TISNUM, LJ_TISNUM); 2865 dasm_put(Dst, 15539, LJ_TISNUM, LJ_TISNUM);
2833#endif 2866#endif
2834 } 2867 }
2835 dasm_put(Dst, 15382); 2868 dasm_put(Dst, 15558);
2836 if (!vk) { 2869 if (!vk) {
2837 dasm_put(Dst, 15386, LJ_TISNUM); 2870 dasm_put(Dst, 15562, LJ_TISNUM);
2838 } 2871 }
2839 if (sse) { 2872 if (sse) {
2840 dasm_put(Dst, 15395); 2873 dasm_put(Dst, 15571);
2841 if (vk) { 2874 if (vk) {
2842 dasm_put(Dst, 15407); 2875 dasm_put(Dst, 15583);
2843 } else { 2876 } else {
2844 dasm_put(Dst, 15426); 2877 dasm_put(Dst, 15602);
2845 } 2878 }
2846 dasm_put(Dst, 15431); 2879 dasm_put(Dst, 15607);
2847 } else { 2880 } else {
2848 dasm_put(Dst, 15444); 2881 dasm_put(Dst, 15620);
2849 if (vk) { 2882 if (vk) {
2850 dasm_put(Dst, 15450); 2883 dasm_put(Dst, 15626);
2851 } else { 2884 } else {
2852 dasm_put(Dst, 15466); 2885 dasm_put(Dst, 15642);
2853 } 2886 }
2854 dasm_put(Dst, 15474); 2887 dasm_put(Dst, 15650);
2855 if (cmov) { 2888 if (cmov) {
2856 dasm_put(Dst, 10211); 2889 dasm_put(Dst, 10392);
2857 } else { 2890 } else {
2858 dasm_put(Dst, 10217); 2891 dasm_put(Dst, 10398);
2859 } 2892 }
2860 if (!cmov) { 2893 if (!cmov) {
2861 dasm_put(Dst, 15479); 2894 dasm_put(Dst, 15655);
2862 } 2895 }
2863 } 2896 }
2864 if (op == BC_FORI) { 2897 if (op == BC_FORI) {
2865 if (LJ_DUALNUM) { 2898 if (LJ_DUALNUM) {
2866 dasm_put(Dst, 15485); 2899 dasm_put(Dst, 15661);
2867 } else { 2900 } else {
2868 dasm_put(Dst, 15490, -BCBIAS_J*4); 2901 dasm_put(Dst, 15666, -BCBIAS_J*4);
2869 } 2902 }
2870 } else if (op == BC_JFORI) { 2903 } else if (op == BC_JFORI) {
2871 dasm_put(Dst, 15500, -BCBIAS_J*4, BC_JLOOP); 2904 dasm_put(Dst, 15676, -BCBIAS_J*4, BC_JLOOP);
2872 } else if (op == BC_IFORL) { 2905 } else if (op == BC_IFORL) {
2873 if (LJ_DUALNUM) { 2906 if (LJ_DUALNUM) {
2874 dasm_put(Dst, 15514); 2907 dasm_put(Dst, 15690);
2875 } else { 2908 } else {
2876 dasm_put(Dst, 15519, -BCBIAS_J*4); 2909 dasm_put(Dst, 15695, -BCBIAS_J*4);
2877 } 2910 }
2878 } else { 2911 } else {
2879 dasm_put(Dst, 15510, BC_JLOOP); 2912 dasm_put(Dst, 15686, BC_JLOOP);
2880 } 2913 }
2881 if (LJ_DUALNUM) { 2914 if (LJ_DUALNUM) {
2882 dasm_put(Dst, 10140); 2915 dasm_put(Dst, 10321);
2883 } else { 2916 } else {
2884 dasm_put(Dst, 10905); 2917 dasm_put(Dst, 11081);
2885 } 2918 }
2886 if (sse) { 2919 if (sse) {
2887 dasm_put(Dst, 15529); 2920 dasm_put(Dst, 15705);
2888 } 2921 }
2889 break; 2922 break;
2890 2923
2891 case BC_ITERL: 2924 case BC_ITERL:
2892#if LJ_HASJIT 2925#if LJ_HASJIT
2893 dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2926 dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2894#endif 2927#endif
2895 break; 2928 break;
2896 2929
@@ -2899,33 +2932,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2899 break; 2932 break;
2900#endif 2933#endif
2901 case BC_IITERL: 2934 case BC_IITERL:
2902 dasm_put(Dst, 15540, LJ_TNIL); 2935 dasm_put(Dst, 15716, LJ_TNIL);
2903 if (op == BC_JITERL) { 2936 if (op == BC_JITERL) {
2904 dasm_put(Dst, 15555, BC_JLOOP); 2937 dasm_put(Dst, 15731, BC_JLOOP);
2905 } else { 2938 } else {
2906 dasm_put(Dst, 15569, -BCBIAS_J*4); 2939 dasm_put(Dst, 15745, -BCBIAS_J*4);
2907 } 2940 }
2908 dasm_put(Dst, 10254); 2941 dasm_put(Dst, 10430);
2909 break; 2942 break;
2910 2943
2911 case BC_LOOP: 2944 case BC_LOOP:
2912#if LJ_HASJIT 2945#if LJ_HASJIT
2913 dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2946 dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2914#endif 2947#endif
2915 break; 2948 break;
2916 2949
2917 case BC_ILOOP: 2950 case BC_ILOOP:
2918 dasm_put(Dst, 10256); 2951 dasm_put(Dst, 10432);
2919 break; 2952 break;
2920 2953
2921 case BC_JLOOP: 2954 case BC_JLOOP:
2922#if LJ_HASJIT 2955#if LJ_HASJIT
2923 dasm_put(Dst, 15585, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16); 2956 dasm_put(Dst, 15761, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
2924#endif 2957#endif
2925 break; 2958 break;
2926 2959
2927 case BC_JMP: 2960 case BC_JMP:
2928 dasm_put(Dst, 15694, -BCBIAS_J*4); 2961 dasm_put(Dst, 15870, -BCBIAS_J*4);
2929 break; 2962 break;
2930 2963
2931 /* -- Function headers -------------------------------------------------- */ 2964 /* -- Function headers -------------------------------------------------- */
@@ -2939,7 +2972,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2939 2972
2940 case BC_FUNCF: 2973 case BC_FUNCF:
2941#if LJ_HASJIT 2974#if LJ_HASJIT
2942 dasm_put(Dst, 15719, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); 2975 dasm_put(Dst, 15895, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
2943#endif 2976#endif
2944 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2977 case BC_FUNCV: /* NYI: compiled vararg functions. */
2945 break; 2978 break;
@@ -2949,47 +2982,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2949 break; 2982 break;
2950#endif 2983#endif
2951 case BC_IFUNCF: 2984 case BC_IFUNCF:
2952 dasm_put(Dst, 15740, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2985 dasm_put(Dst, 15916, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2953 if (op == BC_JFUNCF) { 2986 if (op == BC_JFUNCF) {
2954 dasm_put(Dst, 15770, BC_JLOOP); 2987 dasm_put(Dst, 15946, BC_JLOOP);
2955 } else { 2988 } else {
2956 dasm_put(Dst, 10256); 2989 dasm_put(Dst, 10432);
2957 } 2990 }
2958 dasm_put(Dst, 15779, LJ_TNIL); 2991 dasm_put(Dst, 15955, LJ_TNIL);
2959 break; 2992 break;
2960 2993
2961 case BC_JFUNCV: 2994 case BC_JFUNCV:
2962#if !LJ_HASJIT 2995#if !LJ_HASJIT
2963 break; 2996 break;
2964#endif 2997#endif
2965 dasm_put(Dst, 9400); 2998 dasm_put(Dst, 9409);
2966 break; /* NYI: compiled vararg functions. */ 2999 break; /* NYI: compiled vararg functions. */
2967 3000
2968 case BC_IFUNCV: 3001 case BC_IFUNCV:
2969 dasm_put(Dst, 15801, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 3002 dasm_put(Dst, 15977, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2970 if (op == BC_JFUNCV) { 3003 if (op == BC_JFUNCV) {
2971 dasm_put(Dst, 15770, BC_JLOOP); 3004 dasm_put(Dst, 15946, BC_JLOOP);
2972 } else { 3005 } else {
2973 dasm_put(Dst, 15892, -4+PC2PROTO(k)); 3006 dasm_put(Dst, 16068, -4+PC2PROTO(k));
2974 } 3007 }
2975 dasm_put(Dst, 15915, LJ_TNIL); 3008 dasm_put(Dst, 16091, LJ_TNIL);
2976 break; 3009 break;
2977 3010
2978 case BC_FUNCC: 3011 case BC_FUNCC:
2979 case BC_FUNCCW: 3012 case BC_FUNCCW:
2980 dasm_put(Dst, 15937, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 3013 dasm_put(Dst, 16113, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2981 if (op == BC_FUNCC) { 3014 if (op == BC_FUNCC) {
2982 dasm_put(Dst, 2372); 3015 dasm_put(Dst, 2381);
2983 } else { 3016 } else {
2984 dasm_put(Dst, 15967); 3017 dasm_put(Dst, 16143);
2985 } 3018 }
2986 dasm_put(Dst, 15975, DISPATCH_GL(vmstate), ~LJ_VMST_C); 3019 dasm_put(Dst, 16151, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2987 if (op == BC_FUNCC) { 3020 if (op == BC_FUNCC) {
2988 dasm_put(Dst, 15984); 3021 dasm_put(Dst, 16160);
2989 } else { 3022 } else {
2990 dasm_put(Dst, 15988, DISPATCH_GL(wrapf)); 3023 dasm_put(Dst, 16164, DISPATCH_GL(wrapf));
2991 } 3024 }
2992 dasm_put(Dst, 15993, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 3025 dasm_put(Dst, 16169, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2993 break; 3026 break;
2994 3027
2995 /* ---------------------------------------------------------------------- */ 3028 /* ---------------------------------------------------------------------- */
@@ -3017,7 +3050,7 @@ static int build_backend(BuildCtx *ctx)
3017 3050
3018 build_subroutines(ctx, cmov, sse); 3051 build_subroutines(ctx, cmov, sse);
3019 3052
3020 dasm_put(Dst, 16018); 3053 dasm_put(Dst, 16194);
3021 for (op = 0; op < BC__MAX; op++) 3054 for (op = 0; op < BC__MAX; op++)
3022 build_ins(ctx, (BCOp)op, op, cmov, sse); 3055 build_ins(ctx, (BCOp)op, op, cmov, sse);
3023 3056
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index dd409c5c..d6dfde88 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -114,10 +114,13 @@
114|.if not X64 // x86 stack layout. 114|.if not X64 // x86 stack layout.
115| 115|
116|.define CFRAME_SPACE, aword*7 // Delta for esp (see <--). 116|.define CFRAME_SPACE, aword*7 // Delta for esp (see <--).
117|.macro saveregs 117|.macro saveregs_
118| push ebp; push edi; push esi; push ebx 118| push edi; push esi; push ebx
119| sub esp, CFRAME_SPACE 119| sub esp, CFRAME_SPACE
120|.endmacro 120|.endmacro
121|.macro saveregs
122| push ebp; saveregs_
123|.endmacro
121|.macro restoreregs 124|.macro restoreregs
122| add esp, CFRAME_SPACE 125| add esp, CFRAME_SPACE
123| pop ebx; pop esi; pop edi; pop ebp 126| pop ebx; pop esi; pop edi; pop ebp
@@ -166,10 +169,13 @@
166|.elif X64WIN // x64/Windows stack layout 169|.elif X64WIN // x64/Windows stack layout
167| 170|
168|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--). 171|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--).
169|.macro saveregs 172|.macro saveregs_
170| push rbp; push rdi; push rsi; push rbx 173| push rdi; push rsi; push rbx
171| sub rsp, CFRAME_SPACE 174| sub rsp, CFRAME_SPACE
172|.endmacro 175|.endmacro
176|.macro saveregs
177| push rbp; saveregs_
178|.endmacro
173|.macro restoreregs 179|.macro restoreregs
174| add rsp, CFRAME_SPACE 180| add rsp, CFRAME_SPACE
175| pop rbx; pop rsi; pop rdi; pop rbp 181| pop rbx; pop rsi; pop rdi; pop rbp
@@ -206,10 +212,13 @@
206|.else // x64/POSIX stack layout 212|.else // x64/POSIX stack layout
207| 213|
208|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--). 214|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--).
209|.macro saveregs 215|.macro saveregs_
210| push rbp; push rbx; push r15; push r14 216| push rbx; push r15; push r14
211| sub rsp, CFRAME_SPACE 217| sub rsp, CFRAME_SPACE
212|.endmacro 218|.endmacro
219|.macro saveregs
220| push rbp; saveregs_
221|.endmacro
213|.macro restoreregs 222|.macro restoreregs
214| add rsp, CFRAME_SPACE 223| add rsp, CFRAME_SPACE
215| pop r14; pop r15; pop rbx; pop rbp 224| pop r14; pop r15; pop rbx; pop rbp
@@ -760,14 +769,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
760 | mov PC, [RB-12] // Restore PC from [cont|PC]. 769 | mov PC, [RB-12] // Restore PC from [cont|PC].
761 |.if X64 770 |.if X64
762 | movsxd RAa, dword [RB-16] // May be negative on WIN64 with debug. 771 | movsxd RAa, dword [RB-16] // May be negative on WIN64 with debug.
763 | test RA, RA 772#if LJ_HASFFI
764 | jz >1 773 | cmp RA, 1
774 | jbe >1
775#endif
765 | lea KBASEa, qword [=>0] 776 | lea KBASEa, qword [=>0]
766 | add RAa, KBASEa 777 | add RAa, KBASEa
767 |.else 778 |.else
768 | mov RA, dword [RB-16] 779 | mov RA, dword [RB-16]
769 | test RA, RA 780#if LJ_HASFFI
770 | jz >1 781 | cmp RA, 1
782 | jbe >1
783#endif
771 |.endif 784 |.endif
772 | mov LFUNC:KBASE, [BASE-8] 785 | mov LFUNC:KBASE, [BASE-8]
773 | mov KBASE, LFUNC:KBASE->pc 786 | mov KBASE, LFUNC:KBASE->pc
@@ -775,11 +788,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
775 | // BASE = base, RC = result, RB = meta base 788 | // BASE = base, RC = result, RB = meta base
776 | jmp RAa // Jump to continuation. 789 | jmp RAa // Jump to continuation.
777 | 790 |
778 |1: // Tail call from C function. 791#if LJ_HASFFI
792 |1:
793 | je ->cont_ffi_callback // cont = 1: return from FFI callback.
794 | // cont = 0: Tail call from C function.
779 | sub RB, BASE 795 | sub RB, BASE
780 | shr RB, 3 796 | shr RB, 3
781 | lea RD, [RB-1] 797 | lea RD, [RB-1]
782 | jmp ->vm_call_tail 798 | jmp ->vm_call_tail
799#endif
783 | 800 |
784 |->cont_cat: // BASE = base, RC = result, RB = mbase 801 |->cont_cat: // BASE = base, RC = result, RB = mbase
785 | movzx RA, PC_RB 802 | movzx RA, PC_RB
@@ -3700,6 +3717,103 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
3700 |//-- FFI helper functions ----------------------------------------------- 3717 |//-- FFI helper functions -----------------------------------------------
3701 |//----------------------------------------------------------------------- 3718 |//-----------------------------------------------------------------------
3702 | 3719 |
3720 |// Handler for callback functions. Callback slot number in ah/al.
3721 |->vm_ffi_callback:
3722#if LJ_HASFFI
3723 |.type CTSTATE, CTState, PC
3724 |.if not X64
3725 | sub esp, 16 // Leave room for SAVE_ERRF etc.
3726 |.endif
3727 | saveregs_ // ebp/rbp already saved. ebp now holds global_State *.
3728 | lea DISPATCH, [ebp+GG_G2DISP]
3729 | mov CTSTATE, GL:ebp->ctype_state
3730 | movzx eax, ax
3731 | mov CTSTATE->cb.slot, eax
3732 |.if X64
3733 | mov CTSTATE->cb.gpr[0], CARG1
3734 | mov CTSTATE->cb.gpr[1], CARG2
3735 | mov CTSTATE->cb.gpr[2], CARG3
3736 | mov CTSTATE->cb.gpr[3], CARG4
3737 | movsd qword CTSTATE->cb.fpr[0], xmm0
3738 | movsd qword CTSTATE->cb.fpr[1], xmm1
3739 | movsd qword CTSTATE->cb.fpr[2], xmm2
3740 | movsd qword CTSTATE->cb.fpr[3], xmm3
3741 |.if X64WIN
3742 | lea rax, [rsp+CFRAME_SIZE+4*8]
3743 |.else
3744 | lea rax, [rsp+CFRAME_SIZE]
3745 | mov CTSTATE->cb.gpr[4], CARG5
3746 | mov CTSTATE->cb.gpr[5], CARG6
3747 | movsd qword CTSTATE->cb.fpr[4], xmm4
3748 | movsd qword CTSTATE->cb.fpr[5], xmm5
3749 | movsd qword CTSTATE->cb.fpr[6], xmm6
3750 | movsd qword CTSTATE->cb.fpr[7], xmm7
3751 |.endif
3752 | mov CTSTATE->cb.stack, rax
3753 | mov CARG2, rsp
3754 |.else
3755 | lea eax, [esp+CFRAME_SIZE+16]
3756 | mov CTSTATE->cb.gpr[0], FCARG1
3757 | mov CTSTATE->cb.gpr[1], FCARG2
3758 | mov CTSTATE->cb.stack, eax
3759 | mov FCARG1, [esp+CFRAME_SIZE+12] // Move around misplaced retaddr/ebp.
3760 | mov FCARG2, [esp+CFRAME_SIZE+8]
3761 | mov SAVE_RET, FCARG1
3762 | mov SAVE_R4, FCARG2
3763 | mov FCARG2, esp
3764 |.endif
3765 | mov SAVE_PC, CTSTATE // Any value outside of bytecode is ok.
3766 | mov FCARG1, CTSTATE
3767 | call extern lj_ccallback_enter@8 // (CTState *cts, void *cf)
3768 | // lua_State * returned in eax (RD).
3769 | set_vmstate INTERP
3770 | mov BASE, L:RD->base
3771 | mov RD, L:RD->top
3772 | sub RD, BASE
3773 | mov LFUNC:RB, [BASE-8]
3774 | shr RD, 3
3775 | add RD, 1
3776 | ins_callt
3777#endif
3778 |
3779 |->cont_ffi_callback: // Return from FFI callback.
3780#if LJ_HASFFI
3781 | mov L:RA, SAVE_L
3782 | mov CTSTATE, [DISPATCH+DISPATCH_GL(ctype_state)]
3783 | mov aword CTSTATE->L, L:RAa
3784 | mov L:RA->base, BASE
3785 | mov L:RA->top, RB
3786 | mov FCARG1, CTSTATE
3787 | mov FCARG2, RC
3788 | call extern lj_ccallback_leave@8 // (CTState *cts, TValue *o)
3789 |.if X64
3790 | mov rax, CTSTATE->cb.gpr[0]
3791 | movsd xmm0, qword CTSTATE->cb.fpr[0]
3792 | jmp ->vm_leave_unw
3793 |.else
3794 | mov L:RB, SAVE_L
3795 | mov eax, CTSTATE->cb.gpr[0]
3796 | mov edx, CTSTATE->cb.gpr[1]
3797 | cmp dword CTSTATE->cb.gpr[2], 1
3798 | jb >7
3799 | je >6
3800 | fld qword CTSTATE->cb.fpr[0].d
3801 | jmp >7
3802 |6:
3803 | fld dword CTSTATE->cb.fpr[0].f
3804 |7:
3805 | mov ecx, L:RB->top
3806 | movzx ecx, word [ecx+6] // Get stack adjustment and copy up.
3807 | mov SAVE_L, ecx // Must be one slot above SAVE_RET
3808 | restoreregs
3809 | pop ecx // Move return addr from SAVE_RET.
3810 | add esp, [esp] // Adjust stack.
3811 | add esp, 16
3812 | push ecx
3813 | ret
3814 |.endif
3815#endif
3816 |
3703 |->vm_ffi_call@4: // Call C function via FFI. 3817 |->vm_ffi_call@4: // Call C function via FFI.
3704 | // Caveat: needs special frame unwinding, see below. 3818 | // Caveat: needs special frame unwinding, see below.
3705#if LJ_HASFFI 3819#if LJ_HASFFI
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 8add07c5..cd33cf87 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[17112] = { 15static const unsigned char build_actionlist[17321] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36, 17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15, 18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15,
@@ -49,795 +49,806 @@ static const unsigned char build_actionlist[17112] = {
49 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233, 49 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,
50 252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1, 50 252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,
51 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139, 51 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,
52 117,252,244,139,77,252,240,133,201,15,132,244,247,255,139,122,252,248,139, 52 117,252,244,255,139,77,252,240,255,131,252,249,1,15,134,244,247,255,139,122,
53 191,233,139,191,233,252,255,225,248,1,41,213,193,252,237,3,141,69,252,255, 53 252,248,139,191,233,139,191,233,252,255,225,255,248,1,15,132,244,32,41,213,
54 252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41,252, 54 193,252,237,3,141,69,252,255,252,233,244,33,255,248,34,15,182,78,252,255,
55 233,15,132,244,34,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137, 55 131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,247,217,193,252,233,
56 77,4,137,69,0,137,108,36,4,252,233,244,35,248,36,137,68,36,16,199,68,36,20, 56 3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,233,244,36,
57 237,141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199, 57 248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,
58 65,4,237,137,205,252,233,244,248,248,37,255,15,182,70,252,254,255,199,68, 58 133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,38,
59 36,20,237,137,68,36,16,255,252,242,15,42,192,252,242,15,17,68,36,16,255,137, 59 15,182,70,252,254,255,199,68,36,20,237,137,68,36,16,255,252,242,15,42,192,
60 68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244,247,248,38, 60 252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,
61 15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2, 61 68,36,16,252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,
62 137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,
63 232,251,1,1,139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,139,
64 104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,
65 193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141,177,233,41,
66 214,139,105,252,248,184,237,252,233,244,30,248,39,137,68,36,16,199,68,36,
67 20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,255,141,139,233,137,
68 41,199,65,4,237,137,205,252,233,244,248,248,40,15,182,70,252,254,255,141,
69 68,36,16,252,233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,
70 110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137, 62 110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,
71 44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133,192,15,132,244, 63 44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,
72 249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137,8,248,42,139, 64 249,248,35,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,
73 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141, 65 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141,
74 233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194,137,105,20, 66 233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252,233,244,
75 137,65,16,141,177,233,41,214,139,105,252,248,184,237,252,233,244,30,248,43, 67 30,248,40,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,
76 15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139,108,36,48,137,68, 68 15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,
77 36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139, 69 248,41,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,42,15,182,70,
78 149,233,255,131,252,248,1,15,135,244,44,248,4,141,118,4,15,130,244,252,248, 70 252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,
79 5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232, 71 4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,
80 131,198,4,193,232,16,252,255,36,171,248,45,131,198,4,129,120,253,4,239,15, 72 2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,
81 130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131, 73 12,202,137,104,4,137,8,248,43,139,6,15,182,204,15,182,232,131,198,4,193,232,
82 252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137, 74 16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,
83 149,233,255,137,116,36,24,232,251,1,4,252,233,244,3,248,48,255,131,252,238, 75 108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,
84 4,139,108,36,48,137,149,233,137,252,233,139,86,252,252,137,116,36,24,232, 76 184,237,252,233,244,30,248,44,15,182,110,252,252,141,4,194,141,12,202,137,
85 251,1,5,252,233,244,3,255,248,49,255,15,182,110,252,255,255,248,50,141,4, 77 108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,
86 199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233, 78 116,36,24,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248,
87 244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,141,4, 79 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,
88 194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137, 80 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,46,
89 68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233, 81 131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120,253,
90 137,116,36,24,232,251,1,6,139,149,233,133,192,15,132,244,42,248,44,137,193, 82 4,239,252,233,244,4,248,48,131,252,238,4,137,108,36,12,139,108,36,48,137,
91 41,208,137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108, 83 68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,251,1,4,252,
92 36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,1,7,139,149, 84 233,244,3,248,49,255,131,252,238,4,139,108,36,48,137,149,233,137,252,233,
93 233,255,133,192,15,133,244,44,15,183,70,252,254,139,12,194,252,233,244,57, 85 139,86,252,252,137,116,36,24,232,251,1,5,252,233,244,3,255,248,50,255,15,
94 255,252,233,244,44,255,248,58,141,76,202,8,248,29,137,76,36,20,137,68,36, 86 182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53,141,
95 16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36, 87 4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252,233,
96 137,149,233,137,116,36,24,232,251,1,8,139,149,233,139,76,36,20,139,68,36, 88 244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12,202,
97 16,139,105,252,248,131,192,1,57,215,15,132,244,59,137,202,137,114,252,252, 89 137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,
98 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248, 90 68,36,16,137,44,36,137,149,233,137,116,36,24,232,251,1,6,139,149,233,133,
99 60,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,1, 91 192,15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237,
100 9,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164, 92 252,233,244,28,248,57,139,108,36,48,137,149,233,141,20,194,137,252,233,137,
101 253,171,233,248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253,239, 93 116,36,24,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252,
102 15,131,244,62,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137,106, 94 254,139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8,
103 252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,193,8,139,105,4,137, 95 248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,
104 105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36, 96 76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,8,139,149,
105 20,252,233,244,63,248,64,129,252,248,239,15,130,244,62,139,106,4,184,237, 97 233,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,
106 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248, 98 60,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,
107 2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237, 99 198,4,252,255,36,171,248,61,139,108,36,48,137,149,233,137,202,137,252,233,
108 137,66,252,248,252,233,244,65,248,66,129,252,248,239,15,130,244,62,139,106, 100 137,116,36,24,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232,
109 4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233, 101 193,232,16,252,255,164,253,171,233,248,62,129,252,248,239,15,130,244,63,139,
110 248,2,133,252,237,199,66,252,252,237,15,132,244,65,139,131,233,199,66,252, 102 106,4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,20,137,106,
111 252,237,255,137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233, 103 252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1,
112 248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139, 104 131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,
113 137,233,133,201,15,133,244,3,252,233,244,65,248,5,139,105,4,129,252,253,239, 105 244,1,248,2,139,68,36,20,252,233,244,64,248,65,129,252,248,239,15,130,244,
114 255,15,132,244,65,139,1,137,106,252,252,137,66,252,248,252,233,244,65,248, 106 63,139,106,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,
115 6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,254,189,237,248, 107 137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252,
116 8,252,247,213,139,172,253,171,233,252,233,244,2,248,67,129,252,248,239,15, 108 199,66,252,252,237,137,66,252,248,252,233,244,66,248,67,129,252,248,239,15,
117 130,244,62,255,129,122,253,4,239,15,133,244,62,139,42,131,189,233,0,15,133, 109 130,244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,
118 244,62,129,122,253,12,239,15,133,244,62,139,66,8,137,133,233,139,114,252, 110 139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,15,132,244,66,139,
119 252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247, 111 131,233,199,66,252,252,237,255,137,106,252,248,139,141,233,35,136,233,105,
120 128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,255,252,233,244, 112 201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,
121 65,248,68,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244,62,139, 113 244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,66,248,5,139,105,
122 2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251, 114 4,129,252,253,239,255,15,132,244,66,139,1,137,106,252,252,137,66,252,248,
123 1,10,137,252,234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252, 115 252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,
124 252,252,233,244,65,248,69,129,252,248,239,15,133,244,62,129,122,253,4,239, 116 244,254,189,237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68,
125 255,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255,15,131,244, 117 129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,63,139,42,
126 62,255,252,242,15,16,2,252,233,244,71,255,221,2,252,233,244,72,255,248,73, 118 131,189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,
127 129,252,248,239,15,130,244,62,139,114,252,252,129,122,253,4,239,15,133,244, 119 133,233,139,114,252,252,199,66,252,252,237,137,106,252,248,252,246,133,233,
128 249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,129, 120 235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,
129 122,253,4,239,15,135,244,62,131,187,233,0,15,133,244,62,139,171,233,59,171, 121 1,255,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239,
130 233,255,15,130,244,247,232,244,74,248,1,139,108,36,48,137,149,233,137,116, 122 15,133,244,63,139,2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,
131 36,24,137,252,233,255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233, 123 137,84,36,8,232,251,1,10,137,252,234,139,40,139,64,4,139,114,252,252,137,
132 244,2,248,75,129,252,248,239,15,130,244,62,15,132,244,248,248,1,129,122,253, 124 106,252,248,137,66,252,252,252,233,244,66,248,70,129,252,248,239,15,133,244,
133 4,239,15,133,244,62,139,108,36,48,137,149,233,137,149,233,139,114,252,252, 125 63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,71,248,1,15,135,
134 139,2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,137,116,36,24,232,251,1, 126 244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244,72,255,221,2,252,
135 13,139,149,233,133,192,15,132,244,249,139,106,8,139,66,12,137,106,252,248, 127 233,244,73,255,248,74,129,252,248,239,15,130,244,63,139,114,252,252,129,122,
136 137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,248,76,184,237,255,252, 128 253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,
137 233,244,77,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252, 129 233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187,233,0,15,133,244,
138 233,244,65,248,78,129,252,248,239,15,130,244,62,139,42,129,122,253,4,239, 130 63,139,171,233,59,171,233,255,15,130,244,247,232,244,75,248,1,139,108,36,
139 15,133,244,62,255,131,189,233,0,15,133,244,62,255,139,106,252,248,139,133, 131 48,137,149,233,137,116,36,24,137,252,233,255,232,251,1,11,255,232,251,1,12,
140 233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237, 132 255,139,149,233,252,233,244,2,248,76,129,252,248,239,15,130,244,63,15,132,
141 252,233,244,77,248,79,129,252,248,239,15,130,244,62,129,122,253,4,239,15, 133 244,248,248,1,129,122,253,4,239,15,133,244,63,139,108,36,48,137,149,233,137,
142 133,244,62,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,192,1, 134 149,233,139,114,252,252,139,2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,
143 199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,189,0,0,252,240, 135 137,116,36,24,232,251,1,13,139,149,233,133,192,15,132,244,249,139,106,8,139,
144 63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252, 136 66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,
145 242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,36,221,90,252,248, 137 248,77,184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3,
146 139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129, 138 199,66,252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139,
147 120,253,4,239,15,132,244,80,139,40,139,64,4,137,42,137,66,4,252,233,244,76, 139 42,129,122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139,
148 248,2,131,189,233,0,15,132,244,80,137,252,233,137,213,137,194,232,251,1,14, 140 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
149 137,252,234,133,192,15,133,244,1,248,80,184,237,252,233,244,77,248,81,255, 141 199,66,12,237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63,
150 139,106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252, 142 129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,114,252,252,255,
151 248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255, 143 139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,
152 217,252,238,221,90,8,255,184,237,252,233,244,77,248,82,129,252,248,239,15, 144 8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,
153 130,244,62,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235, 145 242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,
154 131,229,1,1,252,238,252,233,244,28,248,83,129,252,248,239,15,130,244,62,129, 146 36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,
155 122,253,12,239,15,133,244,62,255,139,106,4,137,106,12,199,66,4,237,139,42, 147 3,133,233,248,1,129,120,253,4,239,15,132,244,81,139,40,139,64,4,137,42,137,
156 139,114,8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248, 148 66,4,252,233,244,77,248,2,131,189,233,0,15,132,244,81,137,252,233,137,213,
157 84,129,252,248,239,15,130,244,62,139,42,139,114,252,252,137,116,36,24,137, 149 137,194,232,251,1,14,137,252,234,133,192,15,133,244,1,248,81,184,237,252,
158 44,36,129,122,253,4,239,15,133,244,62,131,189,233,0,15,133,244,62,128,189, 150 233,244,78,248,82,255,139,106,252,248,139,133,233,139,114,252,252,199,66,
159 233,235,15,135,244,62,139,141,233,15,132,244,247,255,59,141,233,15,132,244, 151 252,252,237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,
160 62,248,1,141,116,193,252,240,59,181,233,15,135,244,62,137,181,233,139,108, 152 252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,78,248,
161 36,48,137,149,233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206, 153 83,129,252,248,239,15,130,244,63,141,74,8,131,232,1,190,237,248,1,15,182,
162 15,132,244,249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131, 154 171,233,193,252,237,235,131,229,1,1,252,238,252,233,244,28,248,84,129,252,
163 252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76, 155 248,239,15,130,244,63,129,122,253,12,239,15,133,244,63,255,139,106,4,137,
164 36,8,232,244,25,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129, 156 106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,141,74,16,131,232,2,
165 252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137, 157 190,237,252,233,244,1,248,85,129,252,248,239,15,130,244,63,139,42,139,114,
166 252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244, 158 252,252,137,116,36,24,137,44,36,129,122,253,4,239,15,133,244,63,131,189,233,
167 255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57, 159 0,15,133,244,63,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247,
168 252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24, 160 255,59,141,233,15,132,244,63,248,1,141,116,193,252,240,59,181,233,15,135,
169 137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132, 161 244,63,137,181,233,139,108,36,48,137,149,233,131,194,8,137,149,233,141,108,
170 244,13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8, 162 194,232,41,252,245,57,206,15,132,244,249,248,2,139,68,46,4,137,70,252,252,
171 137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139, 163 139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,
172 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233, 164 4,49,201,137,76,36,12,137,76,36,8,232,244,25,199,131,233,237,255,139,108,
173 252,233,244,4,248,85,139,106,252,248,139,173,233,139,114,252,252,137,116, 165 36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,
174 36,24,137,44,36,131,189,233,0,15,133,244,62,255,128,189,233,235,15,135,244, 166 233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,
175 62,139,141,233,15,132,244,247,59,141,233,15,132,244,62,248,1,141,116,193, 167 252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,
176 252,248,59,181,233,15,135,244,62,137,181,233,139,108,36,48,137,149,233,137, 168 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,
177 149,233,141,108,194,252,240,41,252,245,57,206,15,132,244,249,248,2,255,139, 169 252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,252,255,
178 68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133, 170 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,
179 244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,25,199,131, 171 252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,66,
180 233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254, 172 4,184,237,252,233,244,7,248,9,139,12,36,137,185,233,137,252,242,137,252,233,
181 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252, 173 232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,86,139,106,252,248,139,
182 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5, 174 173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,
183 139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248, 175 63,255,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247,59,141,233,
184 6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132, 176 15,132,244,63,248,1,141,116,193,252,248,59,181,233,15,135,244,63,137,181,
185 244,13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,15,248,9,139, 177 233,139,108,36,48,137,149,233,137,149,233,141,108,194,252,240,41,252,245,
186 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233, 178 57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,252,139,4,46,137,70,
187 252,233,244,4,248,86,139,108,36,48,252,247,133,233,237,15,132,244,62,255, 179 252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,
188 137,149,233,141,68,194,252,248,137,133,233,49,192,137,133,233,176,235,136, 180 36,12,137,76,36,8,232,244,25,199,131,233,237,139,108,36,48,139,52,36,139,
189 133,233,252,233,244,16,255,248,70,255,248,72,139,114,252,252,221,90,252,248, 181 149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,
190 252,233,244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4, 182 142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,
191 239,15,133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136, 183 15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,
192 244,247,248,88,248,70,139,114,252,252,199,66,252,252,237,137,106,252,248, 184 4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137,
193 252,233,244,65,248,1,139,114,252,252,199,66,252,252,0,0,224,65,199,66,252, 185 68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252,
194 248,0,0,0,0,252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131, 186 242,137,252,233,232,251,1,15,248,9,139,12,36,137,185,233,137,252,242,137,
195 244,62,255,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209, 187 252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,87,139,108,36,
196 1,15,84,193,248,71,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217, 188 48,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,
197 225,248,71,248,72,139,114,252,252,221,90,252,248,255,248,65,184,237,248,77, 189 133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71,
198 137,68,36,20,248,63,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15, 190 255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252,
199 135,244,252,15,182,78,252,253,252,247,209,141,20,202,139,6,15,182,204,15, 191 248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252,
200 182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,194,252,244,237, 192 253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114,252,
201 131,192,1,252,233,244,5,248,7,185,252,248,252,255,252,255,252,255,252,233, 193 252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252,252,
202 244,14,248,89,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,70, 194 199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15,
203 248,1,15,135,244,62,255,252,242,15,16,2,232,244,90,255,252,242,15,45,232, 195 135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,102,15,
204 129,252,253,0,0,0,128,15,133,244,70,252,242,15,42,205,102,15,46,193,15,138, 196 252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,72,139,114,252,
205 244,71,15,132,244,70,255,221,2,232,244,90,255,219,20,36,139,44,36,129,252, 197 252,252,242,15,17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252,
206 253,0,0,0,128,15,133,244,248,217,192,219,4,36,255,223,252,233,221,216,255, 198 252,221,90,252,248,255,248,66,184,237,248,78,137,68,36,20,248,64,252,247,
207 218,252,233,223,224,158,255,15,138,244,72,15,133,244,72,248,2,221,216,252, 199 198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,
208 233,244,70,255,248,91,255,252,242,15,16,2,232,244,92,255,221,2,232,244,92, 200 252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
209 255,248,93,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 201 255,36,171,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,
210 252,242,15,81,2,252,233,244,71,255,248,93,129,252,248,239,15,130,244,62,129, 202 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,
211 122,253,4,239,15,131,244,62,221,2,217,252,250,252,233,244,72,255,248,94,129, 203 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,
212 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252,237,221, 204 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,
213 2,217,252,241,252,233,244,72,248,95,129,252,248,239,15,130,244,62,129,122, 205 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,
214 253,4,239,15,131,244,62,217,252,236,221,2,217,252,241,252,233,244,72,248, 206 91,255,219,20,36,139,44,36,129,252,253,0,0,0,128,15,133,244,248,217,192,219,
215 96,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221, 207 4,36,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,138,244,73,
216 2,232,244,97,252,233,244,72,248,98,129,252,248,239,15,130,244,62,129,122, 208 15,133,244,73,248,2,221,216,252,233,244,71,255,248,92,255,252,242,15,16,2,
217 253,4,239,15,131,244,62,221,2,217,252,254,252,233,244,72,248,99,129,252,248, 209 232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239,15,130,244,63,
218 239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,255,252, 210 129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244,72,255,248,94,
219 233,244,72,248,100,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 211 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,
220 244,62,221,2,217,252,242,221,216,252,233,244,72,248,101,129,252,248,239,15, 212 250,252,233,244,73,255,248,95,129,252,248,239,15,130,244,63,129,122,253,4,
221 130,244,62,255,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217, 213 239,15,131,244,63,217,252,237,221,2,217,252,241,252,233,244,73,248,96,129,
222 232,222,225,217,252,250,217,252,243,252,233,244,72,248,102,129,252,248,239, 214 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,236,221,
223 15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,232, 215 2,217,252,241,252,233,244,73,248,97,129,252,248,239,255,15,130,244,63,129,
224 222,225,217,252,250,217,201,217,252,243,252,233,244,72,248,103,129,252,248, 216 122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244,73,248,99,129,252,
225 239,15,130,244,62,129,122,253,4,239,15,131,244,62,255,221,2,217,232,217,252, 217 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,254,252,
226 243,252,233,244,72,255,248,104,129,252,248,239,15,130,244,62,129,122,253, 218 233,244,73,248,100,129,252,248,239,255,15,130,244,63,129,122,253,4,239,15,
227 4,239,15,131,244,62,252,242,15,16,2,252,242,15,17,4,36,255,248,104,129,252, 219 131,244,63,221,2,217,252,255,252,233,244,73,248,101,129,252,248,239,15,130,
228 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,221,28,36,255, 220 244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242,221,216,252,233,
229 137,213,232,251,1,16,137,252,234,252,233,244,72,255,248,105,129,252,248,239, 221 244,73,248,102,129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,131,
230 15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,252,242,15, 222 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
231 17,4,36,255,248,105,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 223 233,244,73,248,103,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
232 244,62,221,2,221,28,36,255,137,213,232,251,1,17,137,252,234,252,233,244,72, 224 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
233 255,248,106,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 225 243,252,233,244,73,248,104,129,252,248,239,15,130,244,63,129,122,253,4,239,
234 252,242,15,16,2,252,242,15,17,4,36,255,248,106,129,252,248,239,15,130,244, 226 15,131,244,63,255,221,2,217,232,217,252,243,252,233,244,73,255,248,105,129,
235 62,129,122,253,4,239,15,131,244,62,221,2,221,28,36,255,137,213,232,251,1, 227 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2,
236 18,137,252,234,252,233,244,72,248,107,255,248,108,129,252,248,239,15,130, 228 252,242,15,17,4,36,255,248,105,129,252,248,239,15,130,244,63,129,122,253,
237 244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,139,106,252,248,252, 229 4,239,15,131,244,63,221,2,221,28,36,255,137,213,232,251,1,16,137,252,234,
238 242,15,89,133,233,252,233,244,71,255,248,108,129,252,248,239,15,130,244,62, 230 252,233,244,73,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,
239 129,122,253,4,239,15,131,244,62,221,2,139,106,252,248,220,141,233,252,233, 231 15,131,244,63,252,242,15,16,2,252,242,15,17,4,36,255,248,106,129,252,248,
240 244,72,255,248,109,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131, 232 239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,221,28,36,255,137,
241 244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,217,252,243,252,233, 233 213,232,251,1,17,137,252,234,252,233,244,73,255,248,107,129,252,248,239,15,
242 244,72,248,110,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 234 130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2,252,242,15,17,
243 62,129,122,253,12,239,255,15,131,244,62,221,66,8,221,2,217,252,253,221,217, 235 4,36,255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
244 252,233,244,72,248,111,129,252,248,239,15,130,244,62,139,106,4,129,252,253, 236 63,221,2,221,28,36,255,137,213,232,251,1,18,137,252,234,252,233,244,73,248,
245 239,15,131,244,62,139,114,252,252,139,2,137,106,252,252,137,66,252,248,209, 237 108,255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
246 229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252, 238 63,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,
247 254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197, 239 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
248 255,252,242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,106,252,252, 240 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,
249 129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255, 241 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
250 252,242,15,17,2,255,221,26,255,184,237,252,233,244,77,248,3,255,15,87,192, 242 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,
251 252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2, 243 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,
252 189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15,89,193,252,242, 244 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,
253 15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,90,216,76,36,16,221,90,252, 245 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252,
254 248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,112,129, 246 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,
255 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2, 247 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,
256 255,248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 248 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,
257 221,2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15, 249 108,36,16,219,68,36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,
258 132,244,250,255,15,40,224,232,244,113,252,242,15,92,224,248,1,252,242,15, 250 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,
259 17,66,252,248,252,242,15,17,34,255,217,192,232,244,113,220,252,233,248,1, 251 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,
260 221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249, 252 252,233,244,2,255,248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,
261 248,2,184,237,252,233,244,77,248,3,129,252,245,0,0,0,128,137,106,4,252,233, 253 102,15,112,201,81,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,
262 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 254 68,36,16,0,0,128,90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,
263 1,255,248,114,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244, 255 4,0,0,209,229,252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129,
264 62,129,122,253,12,239,15,131,244,62,221,66,8,221,2,248,1,217,252,248,223, 256 122,253,4,239,15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15,
265 224,158,15,138,244,1,221,217,252,233,244,72,255,248,115,129,252,248,239,15, 257 130,244,63,129,122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252,
266 130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244, 258 252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,
267 62,252,242,15,16,2,252,242,15,16,74,8,232,244,116,252,233,244,71,255,248, 259 244,114,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,
268 115,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 260 255,217,192,232,244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66,
269 253,12,239,15,131,244,62,221,2,221,66,8,232,244,116,252,233,244,72,255,248, 261 252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248,
270 117,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193, 262 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
271 15,131,244,70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248, 263 244,1,255,217,252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15,
272 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,252, 264 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
273 233,244,252,248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193,15,131,244, 265 63,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
274 71,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,62,252,242,15, 266 233,244,73,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
275 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248, 267 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,
276 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,221,2,248,5,57,193,15, 268 74,8,232,244,117,252,233,244,72,255,248,116,129,252,248,239,15,130,244,63,
277 131,244,72,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,255, 269 129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,
278 219,68,202,252,248,252,233,244,253,255,15,131,244,255,255,248,6,221,68,202, 270 66,8,232,244,117,252,233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239,
279 252,248,248,7,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252, 271 255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252,
280 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,118,185,2,0,0,0, 272 252,239,15,133,244,249,59,108,202,252,248,15,79,108,202,252,248,131,193,1,
281 129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,70,129, 273 252,233,244,1,248,3,15,135,244,63,255,252,233,244,252,248,4,15,135,244,63,
282 124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252, 274 255,252,242,15,16,2,248,5,57,193,15,131,244,72,129,124,253,202,252,252,239,
283 248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242,15,16,76, 275 255,15,130,244,252,15,135,244,63,252,242,15,42,76,202,252,248,252,233,244,
284 202,252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,219,252,233, 276 253,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,
285 218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201, 277 1,252,233,244,5,255,221,2,248,5,57,193,15,131,244,73,129,124,253,202,252,
286 248,2,221,216,88,255,248,9,221,216,252,233,244,62,255,248,119,129,252,248, 278 252,239,255,15,130,244,252,15,135,244,255,219,68,202,252,248,252,233,244,
287 239,15,130,244,62,129,122,253,4,239,15,133,244,62,139,42,255,139,173,233, 279 253,255,15,131,244,255,255,248,6,221,68,202,252,248,248,7,255,219,252,233,
288 252,233,244,70,255,252,242,15,42,133,233,252,233,244,71,255,219,133,233,252, 280 219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,
289 233,244,72,255,248,120,129,252,248,239,15,133,244,62,129,122,253,4,239,15, 281 248,2,221,216,88,255,248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244,
290 133,244,62,139,42,139,114,252,252,131,189,233,1,15,130,244,80,15,182,173, 282 250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133,
291 233,255,252,242,15,42,197,252,233,244,71,255,137,108,36,16,219,68,36,16,252, 283 244,249,59,108,202,252,248,15,76,108,202,252,248,131,193,1,252,233,244,1,
292 233,244,72,255,248,121,139,171,233,59,171,233,15,130,244,247,232,244,74,248, 284 248,3,15,135,244,63,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,
293 1,129,252,248,239,15,133,244,62,129,122,253,4,239,255,15,133,244,62,139,42, 285 15,95,193,131,193,1,252,233,244,5,255,219,252,233,218,209,221,217,255,80,
294 129,252,253,252,255,0,0,0,15,135,244,62,137,108,36,20,255,15,131,244,62,252, 286 221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,255,
295 242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,62,137,108,36,20,255,15, 287 248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129,
296 131,244,62,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,62,255, 288 122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252,
297 199,68,36,8,1,0,0,0,141,68,36,20,248,122,139,108,36,48,137,149,233,137,68, 289 242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121,
298 36,4,137,44,36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199, 290 129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139,
299 66,252,252,237,137,66,252,248,252,233,244,65,248,123,139,171,233,59,171,233, 291 114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42,
300 15,130,244,247,232,244,74,248,1,199,68,36,20,252,255,252,255,252,255,252, 292 197,252,233,244,72,255,137,108,36,16,219,68,36,16,252,233,244,73,255,248,
301 255,129,252,248,239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15, 293 122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,252,248,239,
302 133,244,62,139,106,16,137,108,36,20,255,15,131,244,62,252,242,15,44,106,16, 294 15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129,252,253,252,
303 137,108,36,20,255,15,131,244,62,221,66,16,219,92,36,20,255,248,1,129,122, 295 255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,252,242,15,44,42,
304 253,4,239,15,133,244,62,129,122,253,12,239,255,139,42,137,108,36,12,139,173, 296 129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,221,
305 233,255,139,74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36, 297 2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,63,255,199,68,36,8,
306 8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248, 298 1,0,0,0,141,68,36,20,248,123,139,108,36,48,137,149,233,137,68,36,4,137,44,
307 3,139,108,36,12,41,200,15,140,244,124,141,172,253,13,233,131,192,1,248,4, 299 36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252,
308 137,68,36,8,137,232,252,233,244,122,248,5,15,140,244,252,141,68,40,1,252, 300 237,137,66,252,248,252,233,244,66,248,124,139,171,233,59,171,233,15,130,244,
309 233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233, 301 247,232,244,75,248,1,199,68,36,20,252,255,252,255,252,255,252,255,129,252,
310 131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,124,49,192,252, 302 248,239,15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63,
311 233,244,4,248,125,129,252,248,239,15,130,244,62,139,171,233,59,171,233,15, 303 139,106,16,137,108,36,20,255,15,131,244,63,252,242,15,44,106,16,137,108,36,
312 130,244,247,232,244,74,248,1,255,129,122,253,4,239,15,133,244,62,129,122, 304 20,255,15,131,244,63,221,66,16,219,92,36,20,255,248,1,129,122,253,4,239,15,
313 253,12,239,139,42,255,15,133,244,62,139,66,8,255,15,131,244,62,252,242,15, 305 133,244,63,129,122,253,12,239,255,139,42,137,108,36,12,139,173,233,255,139,
314 44,66,8,255,15,131,244,62,221,66,8,219,92,36,20,139,68,36,20,255,133,192, 306 74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,8,255,139,
315 15,142,244,124,131,189,233,1,15,130,244,124,15,133,244,126,57,131,233,15, 307 68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,
316 130,244,126,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197, 308 36,12,41,200,15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36,
317 1,131,232,1,15,133,244,1,139,131,233,252,233,244,122,248,127,129,252,248, 309 8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2,
318 239,255,15,130,244,62,139,171,233,59,171,233,15,130,244,247,232,244,74,248, 310 248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,
319 1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,133,192,15,132,244,124, 311 15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4,
320 57,131,233,15,130,244,128,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 312 248,126,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,
321 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240, 313 232,244,75,248,1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139,
322 139,116,36,20,252,233,244,122,248,129,129,252,248,239,15,130,244,62,139,171, 314 42,255,15,133,244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15,
323 233,59,171,233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244, 315 131,244,63,221,66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,125,
324 62,139,42,139,133,233,57,131,233,255,15,130,244,128,129,197,239,137,116,36, 316 131,189,233,1,15,130,244,125,15,133,244,127,57,131,233,15,130,244,127,15,
325 20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249, 317 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,
326 65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136, 318 133,244,1,139,131,233,252,233,244,123,248,128,129,252,248,239,255,15,130,
327 12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,122, 319 244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,122,253,
328 248,130,129,252,248,239,15,130,244,62,255,139,171,233,59,171,233,15,130,244, 320 4,239,15,133,244,63,139,42,139,133,233,133,192,15,132,244,125,57,131,233,
329 247,232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,57, 321 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,248,1,255,
330 131,233,15,130,244,128,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 322 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,
331 252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131, 323 36,20,252,233,244,123,248,130,129,252,248,239,15,130,244,63,139,171,233,59,
332 252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1, 324 171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,
333 15,137,244,1,137,252,240,139,116,36,20,252,233,244,122,248,131,129,252,248, 325 42,139,133,233,57,131,233,255,15,130,244,129,129,197,239,137,116,36,20,137,
334 239,15,130,244,62,129,122,253,4,239,15,133,244,62,137,213,139,10,232,251, 326 68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,
335 1,20,137,252,234,255,137,197,252,233,244,70,255,252,242,15,42,192,252,233, 327 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,
336 244,71,255,137,4,36,219,4,36,252,233,244,72,255,248,132,129,252,248,239,15, 328 3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,123,248,131,
337 130,244,62,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,88,248, 329 129,252,248,239,15,130,244,63,255,139,171,233,59,171,233,15,130,244,247,232,
338 1,15,135,244,62,255,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112, 330 244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233,
339 201,81,252,242,15,88,193,102,15,126,197,255,221,2,199,68,36,16,0,0,192,89, 331 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,
340 216,68,36,16,221,28,36,255,139,44,36,255,252,233,244,88,255,248,133,129,252, 332 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,
341 248,239,15,130,244,62,255,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 333 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,
342 255,199,68,36,16,0,0,192,89,255,15,133,244,247,139,42,252,233,244,248,248, 334 1,137,252,240,139,116,36,20,252,233,244,123,248,132,129,252,248,239,15,130,
343 1,15,135,244,62,255,252,242,15,16,2,252,242,15,88,193,102,15,126,197,255, 335 244,63,129,122,253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252,
344 221,2,216,68,36,16,221,28,36,139,44,36,255,248,2,137,68,36,20,141,68,194, 336 234,255,137,197,252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,137,
345 252,240,248,1,57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248,35, 337 4,36,219,4,36,252,233,244,73,255,248,133,129,252,248,239,15,130,244,63,129,
346 40,131,232,8,252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255,252, 338 122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248,1,15,135,244,63,
347 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16, 339 255,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,
348 221,28,36,35,44,36,255,131,232,8,252,233,244,1,248,135,129,252,248,239,15, 340 15,88,193,102,15,126,197,255,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,
349 130,244,62,255,15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135, 341 28,36,255,139,44,36,255,252,233,244,89,255,248,134,129,252,248,239,15,130,
350 244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221, 342 244,63,255,189,0,0,56,67,102,15,110,205,102,15,112,201,81,255,199,68,36,16,
351 0,216,68,36,16,221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,136,129, 343 0,0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,
352 252,248,239,15,130,244,62,255,15,133,244,248,51,40,131,232,8,252,233,244, 344 255,252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,221,2,216,68,36,
353 1,248,2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193, 345 16,221,28,36,139,44,36,255,248,2,137,68,36,20,141,68,194,252,240,248,1,57,
354 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,131,232,8,252,233,244, 346 208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8,252,
355 1,248,137,129,252,248,239,15,130,244,62,129,122,253,4,239,255,221,2,199,68, 347 233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252,242,15,16,0,252,
356 36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233, 348 242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,221,28,36,35,44,
357 244,88,248,138,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2, 349 36,255,131,232,8,252,233,244,1,248,136,129,252,248,239,15,130,244,63,255,
358 252,247,213,255,248,88,252,242,15,42,197,252,233,244,71,255,248,88,137,44, 350 15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252,
359 36,219,4,36,252,233,244,72,255,248,134,139,68,36,20,252,233,244,62,255,248, 351 242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,
360 139,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2,129,122,253, 352 221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,137,129,252,248,239,15,
361 12,239,15,133,244,62,139,74,8,255,248,139,129,252,248,239,15,130,244,62,129, 353 130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135,
362 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16, 354 244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,221,
363 2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, 355 0,216,68,36,16,221,28,36,51,44,36,255,131,232,8,252,233,244,1,248,138,129,
364 15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,139,129, 356 252,248,239,15,130,244,63,129,122,253,4,239,255,221,2,199,68,36,16,0,0,192,
365 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12, 357 89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233,244,89,248,139,
366 239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221, 358 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,252,247,213,255,
367 92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,229,252,233, 359 248,89,252,242,15,42,197,252,233,244,72,255,248,89,137,44,36,219,4,36,252,
368 244,88,255,248,140,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248, 360 233,244,73,255,248,135,139,68,36,20,252,233,244,63,255,248,140,129,252,248,
369 140,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 361 239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,244,
370 253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67, 362 63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
371 102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102, 363 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,
372 15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,130,244,62,129,122, 364 74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
373 253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,199, 365 242,15,88,202,102,15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,
374 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76, 366 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
375 36,8,139,44,36,255,211,252,237,252,233,244,88,255,248,141,129,252,248,239, 367 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
376 15,130,244,62,129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,62, 368 36,16,221,28,36,139,76,36,8,139,44,36,255,211,229,252,233,244,89,255,248,
377 129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242, 369 141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248,
378 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81, 370 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,
379 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,248, 371 244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,
380 141,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122, 372 15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,
381 253,12,239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36, 373 201,255,248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
382 16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,252,253, 374 63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16,0,0,192,89,
383 252,233,244,88,255,248,142,129,252,248,239,15,130,244,62,129,122,253,4,239, 375 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,
384 255,248,142,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62, 376 211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129,
385 129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,189,0, 377 122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239,
386 0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88, 378 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,
387 202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239,15,130,244, 379 16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
388 62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,2, 380 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239,
389 221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221, 381 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
390 28,36,139,76,36,8,139,44,36,255,211,197,252,233,244,88,255,248,143,129,252, 382 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
391 248,239,15,130,244,62,129,122,253,4,239,255,248,143,129,252,248,239,15,130, 383 36,16,221,28,36,139,76,36,8,139,44,36,255,211,252,253,252,233,244,89,255,
392 244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252, 384 248,143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,
393 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 385 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,
394 81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255, 386 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,
395 248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129, 387 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,
396 122,253,12,239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68, 388 102,15,126,201,255,248,143,129,252,248,239,15,130,244,63,129,122,253,4,239,
397 36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,205, 389 15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16,
398 252,233,244,88,248,126,184,237,252,233,244,62,248,128,184,237,248,62,139, 390 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,
399 108,36,48,139,114,252,252,137,116,36,24,137,149,233,141,68,194,252,248,141, 391 44,36,255,211,197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,
400 136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251,137,44,36,252, 392 129,122,253,4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,
401 255,144,233,139,149,233,133,192,15,143,244,77,248,1,255,139,141,233,41,209, 393 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,
402 193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,32,139,181,233, 394 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
403 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,32,137,209, 395 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,144,129,252,248,239,
404 252,247,198,237,15,133,244,249,15,182,110,252,253,252,247,213,141,20,252, 396 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
405 234,252,233,244,28,248,3,137,252,245,131,229,252,248,41,252,234,252,233,244, 397 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
406 28,248,5,186,237,137,252,233,232,251,1,0,139,149,233,49,192,252,233,244,1, 398 36,16,221,28,36,139,76,36,8,139,44,36,255,211,205,252,233,244,89,248,127,
407 248,74,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,233,255,141,68, 399 184,237,252,233,244,63,248,129,184,237,248,63,139,108,36,48,139,114,252,252,
408 194,252,248,137,252,233,137,133,233,232,251,1,21,139,149,233,139,133,233, 400 137,116,36,24,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,
409 41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,144,255,15,182,131,233, 401 66,252,248,59,141,233,15,135,244,251,137,44,36,252,255,144,233,139,149,233,
410 168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,252, 402 133,192,15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
411 255,139,233,252,233,244,247,255,248,145,15,182,131,233,168,235,15,133,244, 403 141,65,1,139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233,
412 251,252,233,244,247,248,146,15,182,131,233,168,235,15,133,244,251,168,235, 404 15,182,205,131,198,4,252,255,36,171,248,33,137,209,252,247,198,237,15,133,
413 15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244,251,248, 405 244,249,15,182,110,252,253,252,247,213,141,20,252,234,252,233,244,28,248,
414 1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,232,251,1,22,248, 406 3,137,252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137,
415 3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,252,15,183,70, 407 252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,137,108,36,
416 252,254,252,255,164,253,171,233,248,147,131,198,4,139,77,232,137,76,36,20, 408 16,139,108,36,48,137,116,36,24,137,149,233,255,141,68,194,252,248,137,252,
417 252,233,244,4,248,148,255,139,106,252,248,139,173,233,15,182,133,233,141, 409 233,137,133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,
418 4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,233,137,171, 410 192,1,139,108,36,16,85,195,248,145,255,15,182,131,233,168,235,15,133,244,
419 233,137,116,36,24,232,251,1,23,252,233,244,3,255,248,149,137,116,36,24,255, 411 251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,
420 248,150,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,248,139,108, 412 244,247,255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247,
421 36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,1,24,199,68, 413 248,147,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,
422 36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,133,233,41, 414 255,139,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,48,
423 208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,248,151,255, 415 137,149,233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,
424 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125, 416 15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,
425 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233, 417 253,171,233,248,148,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,149,
426 137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15,17,117,208,252, 418 255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,48,137,
427 242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242,15,17, 419 149,233,137,133,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,
428 85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,139,147,233, 420 251,1,23,252,233,244,3,255,248,150,137,116,36,24,255,248,151,255,137,116,
429 137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,139,233,232, 421 36,24,131,206,1,248,1,255,141,68,194,252,248,139,108,36,48,137,149,233,137,
430 251,1,25,139,141,233,129,225,239,137,204,137,169,233,139,149,233,139,177, 422 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,24,0,0,0,0,255,131,
431 233,255,248,152,255,133,192,15,136,244,249,137,68,36,20,139,122,252,248,139, 423 230,252,254,255,139,149,233,137,193,139,133,233,41,208,137,205,15,182,78,
432 191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204, 424 252,253,193,232,3,131,192,1,252,255,229,248,152,255,85,141,108,36,12,85,83,
433 15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36, 425 82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,252,248,
434 20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,251,1,26, 426 139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,252,236,
435 255,248,90,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37, 427 239,252,242,15,17,125,216,252,242,15,17,117,208,252,242,15,17,109,200,252,
436 252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, 428 242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,
437 68,36,8,195,255,248,153,102,15,252,239,210,102,15,118,210,102,15,115,210, 429 77,168,252,242,15,17,69,160,139,171,233,139,147,233,137,171,233,199,131,233,
430 0,0,0,0,137,149,233,141,84,36,16,141,139,233,232,251,1,25,139,141,233,129,
431 225,239,137,204,137,169,233,139,149,233,139,177,233,255,248,153,255,133,192,
432 15,136,244,249,137,68,36,20,139,122,252,248,139,191,233,139,191,233,199,131,
433 233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
434 16,129,252,253,239,15,130,244,248,139,68,36,20,248,2,252,255,36,171,248,3,
435 252,247,216,137,252,233,137,194,232,251,1,26,255,248,91,255,217,124,36,4,
436 137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,
437 36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,154,102,
438 15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,
439 102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
440 15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,
441 63,102,15,110,208,102,15,112,210,81,252,242,15,194,193,1,102,15,84,194,252,
442 242,15,92,200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,
443 184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,
444 6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,155,102,15,252,239,210,
445 102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,
446 81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,
447 242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,
448 110,208,102,15,112,210,81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
449 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12,
450 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
451 68,36,8,195,255,248,156,102,15,252,239,210,102,15,118,210,102,15,115,210,
438 1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202, 452 1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,
439 102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92, 453 102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,
440 203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252, 454 242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,15,112,219,81,252,242,
441 242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248, 455 15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,
442 92,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255, 456 1,195,248,157,255,15,40,232,252,242,15,94,193,102,15,252,239,210,102,15,118,
443 252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8, 457 210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,
444 195,255,248,154,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0, 458 224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,
445 0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46, 459 227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,63,102,15,110,208,102,
446 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 460 15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,
447 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15, 461 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,
448 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,113,255, 462 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,
449 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217, 463 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
450 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,155,102,15,252, 464 252,252,217,108,36,4,222,201,222,252,233,195,255,248,98,217,252,234,222,201,
451 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102, 465 248,158,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4,
452 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 466 0,0,128,252,255,15,132,244,248,248,159,217,192,217,252,252,220,252,233,217,
453 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102, 467 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
454 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15, 468 217,252,238,195,255,248,117,219,84,36,4,219,68,36,4,255,223,252,233,255,221,
455 92,200,102,15,86,202,15,40,193,248,1,195,248,156,255,15,40,232,252,242,15, 469 252,233,223,224,158,255,15,133,244,254,15,138,244,255,221,216,139,68,36,4,
456 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102, 470 131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209,
457 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134, 471 232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209,
458 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184, 472 232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,4,255,222,201,248,
459 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102, 473 5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,241,252,247,216,131,
460 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193, 474 252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,232,195,248,8,217,
461 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216, 475 84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0,0,252,255,15,132,244,
462 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 476 248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252,255,15,132,244,250,217,
463 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195, 477 252,241,252,233,244,159,248,9,255,217,232,255,223,252,234,255,221,252,234,
464 255,248,97,217,252,234,222,201,248,157,217,84,36,4,129,124,36,4,0,0,128,127, 478 223,224,158,255,15,132,244,247,217,201,248,1,221,216,195,248,2,217,225,217,
465 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,158,217,192, 479 232,255,15,132,244,249,221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,
466 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 480 209,200,51,68,36,4,15,137,244,249,217,201,248,3,221,217,217,225,195,248,4,
467 217,248,1,195,248,2,221,216,217,252,238,195,255,248,116,219,84,36,4,219,68, 481 131,124,36,4,0,15,141,244,3,221,216,221,216,133,192,15,132,244,251,217,252,
468 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138, 482 238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,4,195,255,248,117,255,248,
469 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0, 483 160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,
470 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 484 244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,
471 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233, 485 248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
472 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232, 486 15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,
473 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221, 487 252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,
474 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224, 488 132,244,5,15,130,244,253,252,247,216,232,244,1,184,0,0,252,240,63,102,15,
475 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0, 489 110,200,102,15,112,201,81,252,242,15,94,200,15,40,193,195,248,7,184,0,0,252,
476 0,252,255,15,132,244,250,217,252,241,252,233,244,158,248,9,255,217,232,255, 490 240,63,102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,
477 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1, 491 252,242,15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,
478 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217, 492 61,0,0,224,252,255,15,132,244,248,248,1,131,124,36,4,0,15,133,244,247,255,
479 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201, 493 139,68,36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,
480 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216, 494 1,221,68,36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,
481 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217, 495 201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,
482 68,36,4,195,255,248,116,255,248,159,252,242,15,45,193,252,242,15,42,208,102, 496 16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,
483 15,46,202,15,133,244,254,15,138,244,255,248,160,131,252,248,1,15,142,244, 497 102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,
484 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244, 498 102,15,118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,
485 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232, 499 208,102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,
486 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252, 500 136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,
487 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232, 501 192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,
488 244,1,184,0,0,252,240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200, 502 192,195,248,5,102,15,80,193,133,192,15,132,244,3,255,15,87,192,195,248,162,
489 15,40,193,195,248,7,184,0,0,252,240,63,102,15,110,192,102,15,112,192,81,195, 503 255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,
490 248,8,252,242,15,17,76,36,12,252,242,15,17,68,36,4,131,124,36,12,0,15,133, 504 244,248,232,244,91,252,233,244,253,248,1,232,244,93,252,233,244,253,248,2,
491 244,247,139,68,36,16,209,224,61,0,0,224,252,255,15,132,244,248,248,1,131, 505 131,252,248,3,15,132,244,247,15,135,244,248,232,244,114,255,252,233,244,253,
492 124,36,4,0,15,133,244,247,255,139,68,36,8,209,224,15,132,244,250,61,0,0,224, 506 248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,
493 252,255,15,132,244,251,248,1,221,68,36,12,221,68,36,4,217,252,241,217,192, 507 221,68,36,4,131,252,248,5,15,130,244,98,15,132,244,158,248,2,131,252,248,
494 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 508 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,
495 217,221,92,36,4,252,242,15,16,68,36,4,195,248,9,184,0,0,252,240,63,102,15, 509 217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
496 110,208,102,15,112,210,81,102,15,46,194,15,132,244,247,15,40,193,248,1,195, 510 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
497 248,2,102,15,252,239,210,102,15,118,210,102,15,115,210,1,102,15,84,194,184, 511 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
498 0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194,15,132,244, 512 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,
499 1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184, 513 91,15,132,244,93,131,252,248,3,15,130,244,114,15,135,244,248,217,252,250,
500 0,0,252,240,127,102,15,110,192,102,15,112,192,81,195,248,4,102,15,80,193, 514 195,248,2,131,252,248,5,15,130,244,98,15,132,244,158,131,252,248,7,15,132,
501 133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244, 515 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,
502 3,255,15,87,192,195,248,161,255,139,68,36,12,252,242,15,16,68,36,4,131,252, 516 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,
503 248,1,15,132,244,247,15,135,244,248,232,244,90,252,233,244,253,248,1,232, 517 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,
504 244,92,252,233,244,253,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 518 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,
505 232,244,113,255,252,233,244,253,248,1,252,242,15,81,192,248,7,252,242,15, 519 216,195,255,248,9,204,255,248,163,255,139,68,36,20,252,242,15,16,68,36,4,
506 17,68,36,4,221,68,36,4,195,248,2,221,68,36,4,131,252,248,5,15,130,244,97, 520 252,242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,
507 15,132,244,157,248,2,131,252,248,7,15,132,244,247,15,135,244,248,217,252, 521 15,88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,
508 237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131, 522 193,252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,
509 252,248,9,15,132,244,247,15,135,244,248,255,217,252,236,217,201,217,252,241, 523 15,89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,
510 195,248,1,217,252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244, 524 248,5,15,132,244,247,255,15,135,244,248,232,244,157,252,233,244,7,248,1,90,
511 255,217,252,255,195,248,1,217,252,242,221,216,195,255,139,68,36,12,221,68, 525 232,244,117,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
512 36,4,131,252,248,1,15,130,244,90,15,132,244,92,131,252,248,3,15,130,244,113, 526 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,
513 15,135,244,248,217,252,250,195,248,2,131,252,248,5,15,130,244,97,15,132,244, 527 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,
514 157,131,252,248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252, 528 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,
515 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132, 529 15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
516 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 530 2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,252,233,
517 252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255, 531 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,
518 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,162,255,139,68,36, 532 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
519 20,252,242,15,16,68,36,4,252,242,15,16,76,36,12,131,252,248,1,15,132,244, 533 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
520 247,15,135,244,248,252,242,15,88,193,248,7,252,242,15,17,68,36,4,221,68,36, 534 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,157,15,132,
521 4,195,248,1,252,242,15,92,193,252,233,244,7,248,2,131,252,248,3,15,132,244, 535 244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
522 247,15,135,244,248,252,242,15,89,193,252,233,244,7,248,1,252,242,15,94,193, 536 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
523 252,233,244,7,248,2,131,252,248,5,15,132,244,247,255,15,135,244,248,232,244, 537 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
524 156,252,233,244,7,248,1,90,232,244,116,82,252,233,244,7,248,2,131,252,248, 538 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
525 7,15,132,244,247,15,135,244,248,184,0,0,0,128,102,15,110,200,102,15,112,201, 539 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
526 81,15,87,193,252,233,244,7,248,1,102,15,252,239,201,102,15,118,201,102,15, 540 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
527 115,209,1,15,84,193,252,233,244,7,248,2,255,131,252,248,9,15,135,244,248, 541 244,248,217,201,248,2,221,216,195,255,248,164,156,90,137,209,129,252,242,
528 221,68,36,4,221,68,36,12,15,132,244,247,217,252,243,195,248,1,217,201,217, 542 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
529 252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,252, 543 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,165,
530 242,15,93,193,252,233,244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204, 544 255,204,248,166,255,131,252,236,16,87,86,83,131,252,236,28,141,157,233,139,
531 255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15, 545 181,233,15,183,192,137,134,233,141,132,253,36,233,137,142,233,137,150,233,
532 135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132, 546 137,134,233,139,140,253,36,233,139,148,253,36,233,137,76,36,44,137,84,36,
533 244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248, 547 40,137,226,137,116,36,24,137,252,241,232,251,1,27,199,131,233,237,139,144,
534 5,15,130,244,156,15,132,244,116,131,252,248,7,15,132,244,247,15,135,244,248, 548 233,139,128,233,41,208,139,106,252,248,193,232,3,131,192,1,139,181,233,139,
535 255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15, 549 14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,248,32,255,139,
536 132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221, 550 76,36,48,139,179,233,137,142,233,137,145,233,137,169,233,137,252,241,137,
537 217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233, 551 194,232,251,1,28,139,108,36,48,139,134,233,139,150,233,131,190,233,1,15,130,
538 219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223, 552 244,253,15,132,244,252,221,134,233,252,233,244,253,248,6,217,134,233,248,
539 224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225, 553 7,139,141,233,15,183,73,6,137,76,36,48,131,196,28,91,94,95,93,89,3,36,36,
540 223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,163, 554 131,196,16,81,195,255,248,167,255,85,137,229,83,137,203,43,163,233,255,137,
541 156,90,137,209,129,252,242,0,0,32,0,82,157,156,90,49,192,57,209,15,132,244, 555 163,233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,139,132,253,
542 247,139,68,36,4,87,83,15,162,139,124,36,16,137,7,137,95,4,137,79,8,137,87, 556 139,233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233,139,147,233,
543 12,91,95,248,1,195,248,164,255,204,248,165,255,85,137,229,83,137,203,43,163, 557 252,255,147,233,137,131,233,137,147,233,128,187,233,1,15,130,244,253,15,132,
544 233,255,137,163,233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1, 558 244,252,221,155,233,252,233,244,253,248,6,255,217,155,233,248,7,255,41,163,
545 139,132,253,139,233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233, 559 233,255,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239,15,133,244,
546 139,147,233,252,255,147,233,137,131,233,137,147,233,128,187,233,1,15,130, 560 253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4,59,44,194,255,
547 244,253,15,132,244,252,221,155,233,252,233,244,253,248,6,255,217,155,233, 561 15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,
548 248,7,255,41,163,233,255,139,93,252,252,201,195,255,249,255,129,124,253,202, 562 248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,
549 4,239,15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,131, 563 232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,44,129,124,253,194,
550 198,4,59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,255, 564 4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244,248,
551 255,15,142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,9, 565 255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252,242,
552 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15, 566 15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,46,193,255,15,134,244,9,
553 135,244,43,129,124,253,194,4,239,15,130,244,247,15,133,244,43,255,252,242, 567 255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,
554 15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,248, 568 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124,
555 8,15,135,244,43,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,4,102, 569 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,198,4,
556 15,46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,131,244, 570 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,198,4,
557 9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,202,4,239, 571 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,
558 15,131,244,43,129,124,253,194,4,239,15,131,244,43,255,248,1,252,242,15,16, 572 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
559 4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221, 573 16,252,255,36,171,255,139,108,194,4,131,198,4,255,129,252,253,239,15,133,
560 4,194,248,3,131,198,4,255,15,134,244,247,255,15,135,244,247,255,15,130,244, 574 244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,
561 247,255,15,131,244,247,255,15,183,70,252,254,141,180,253,134,233,248,1,139, 575 133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
562 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194, 576 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
563 4,131,198,4,255,129,252,253,239,15,133,244,253,129,124,253,202,4,239,15,133, 577 7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,
564 244,254,139,44,194,59,44,202,255,15,133,244,255,255,15,132,244,255,255,15, 578 252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,
565 183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131, 579 255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,
566 198,4,193,232,16,252,255,36,171,248,7,15,135,244,251,129,124,253,202,4,239, 580 244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,
567 15,130,244,247,15,133,244,251,255,252,242,15,42,4,202,255,219,4,202,255,252, 581 251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,
568 233,244,248,248,8,15,135,244,251,255,252,242,15,42,4,194,102,15,46,4,202, 582 4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,
569 255,219,4,194,221,4,202,255,252,233,244,250,255,129,252,253,239,15,131,244, 583 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,
570 251,129,124,253,202,4,239,15,131,244,251,255,248,1,252,242,15,16,4,202,248, 584 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,9,
571 2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,2,221,4,194,248,4,255,15, 585 255,248,5,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,
572 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15, 586 244,49,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,
573 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141, 587 202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,
574 180,253,134,233,248,1,255,252,233,244,9,255,248,5,255,129,252,253,239,15, 588 133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,
575 132,244,48,129,124,253,202,4,239,15,132,244,48,255,57,108,202,4,15,133,244, 589 255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,15,133,244,
576 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 590 9,255,252,233,244,49,255,252,247,208,139,108,202,4,131,198,4,129,252,253,
577 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 591 239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,
578 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, 592 252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,
579 248,3,129,252,253,239,255,15,133,244,9,255,252,233,244,48,255,252,247,208, 593 59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,
580 139,108,202,4,131,198,4,129,252,253,239,15,133,244,249,139,12,202,59,12,135, 594 15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,249,129,124,
581 255,139,108,202,4,131,198,4,255,129,252,253,239,15,133,244,253,129,124,253, 595 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252,
582 199,4,239,15,133,244,254,139,44,199,59,44,202,255,15,183,70,252,254,141,180, 596 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221,
583 253,134,233,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 597 4,199,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248,
584 36,171,248,7,15,135,244,249,129,124,253,199,4,239,15,130,244,247,255,252, 598 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,248,4,255,252,
585 242,15,42,4,199,255,219,4,199,255,252,233,244,248,248,8,255,252,242,15,42, 599 247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,
586 4,202,102,15,46,4,199,255,219,4,202,221,4,199,255,129,252,253,239,15,131, 600 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
587 244,249,255,248,1,252,242,15,16,4,199,248,2,102,15,46,4,202,248,4,255,248, 601 252,255,36,171,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132,
588 1,221,4,199,248,2,221,4,202,248,4,255,252,247,208,139,108,202,4,131,198,4, 602 244,248,129,252,253,239,15,132,244,49,15,183,70,252,254,141,180,253,134,233,
589 57,197,255,15,133,244,249,15,183,70,252,254,141,180,253,134,233,248,2,139, 603 248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
590 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,129,252, 604 139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139,44,194,137,
591 253,239,15,133,244,2,252,233,244,48,255,15,132,244,248,129,252,253,239,15, 605 44,202,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,
592 132,244,48,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15, 606 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,
593 182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129, 607 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
594 252,253,239,255,137,108,202,4,139,44,194,137,44,202,255,139,108,194,4,139, 608 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,133,244,251,139,44,
595 4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232, 609 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15,
596 16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108, 610 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,199,68,202,4,
597 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 611 0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255,129,124,
598 129,124,253,194,4,239,15,133,244,251,139,44,194,252,247,221,15,128,244,250, 612 253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,184,0,0,0,128,102,15,
599 199,68,202,4,237,137,44,202,248,9,139,6,15,182,204,15,182,232,131,198,4,193, 613 110,200,102,15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,
600 232,16,252,255,36,171,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252, 614 224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,
601 233,244,9,248,5,15,135,244,53,255,129,124,253,194,4,239,15,131,244,53,255, 615 128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,
602 252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87, 616 233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,
603 193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253, 617 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,
604 194,4,239,15,133,244,248,139,4,194,255,139,128,233,248,1,199,68,202,4,237, 618 194,4,239,15,133,244,57,139,12,194,255,139,169,233,131,252,253,0,15,133,244,
605 137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255, 619 255,248,3,255,248,58,137,213,232,251,1,20,255,252,242,15,42,192,255,137,4,
606 219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,198,4,193, 620 36,219,4,36,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252,
607 232,16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,56,139,12,194, 621 246,133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192,
608 255,139,169,233,131,252,253,0,15,133,244,255,248,3,255,248,57,137,213,232, 622 255,129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,
609 251,1,20,255,252,242,15,42,192,255,137,4,36,219,4,36,255,137,252,234,15,182, 623 244,51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,
610 78,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,3,252,233, 624 15,133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15,
611 244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,133, 625 128,244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,
612 244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,3,44,199,15,128, 626 239,15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,
613 244,49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4,239, 627 237,255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239,
614 15,133,244,52,139,4,199,3,4,252,234,15,128,244,51,255,129,124,253,252,234, 628 15,131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,
615 4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234,3, 629 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253,
616 44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,234,4,239,15, 630 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,
617 131,244,50,255,129,124,253,199,4,239,15,131,244,50,255,252,242,15,16,4,252, 631 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124,
618 234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234, 632 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194,
619 4,239,15,131,244,52,255,129,124,253,199,4,239,15,131,244,52,255,252,242,15, 633 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129,
620 16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, 634 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255,
621 253,252,234,4,239,15,131,244,55,129,124,253,194,4,239,15,131,244,55,255,252, 635 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
622 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,129, 636 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15,
623 124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139, 637 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15,
624 44,252,234,43,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 638 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
625 52,129,124,253,199,4,239,15,133,244,52,139,4,199,43,4,252,234,15,128,244, 639 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
626 51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133, 640 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
627 244,55,139,44,252,234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234, 641 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124,
628 252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199, 642 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255,
629 252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4, 643 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
630 252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253, 644 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,
631 252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252, 645 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44,
632 234,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244, 646 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
633 52,129,124,253,199,4,239,15,133,244,52,139,4,199,15,175,4,252,234,15,128, 647 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,
634 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239, 648 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
635 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16, 649 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,
636 4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15, 650 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,
637 16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242, 651 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
638 15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252, 652 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
639 242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255, 653 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
640 252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234, 654 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
641 255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52, 655 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,
642 194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221, 656 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,141,
643 4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221, 657 12,194,41,232,137,76,36,4,137,68,36,8,248,36,139,108,36,48,137,44,36,137,
644 4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252, 658 149,233,137,116,36,24,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,
645 234,221,4,194,255,248,166,232,244,156,255,252,233,244,166,255,232,244,116, 659 110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,
646 255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,8,248, 660 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
647 35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,27,139,149, 661 171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,
648 233,133,192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68,252, 662 15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,199,68,202,
649 234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232, 663 4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,
650 131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,202, 664 223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,
651 4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 665 221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,
652 36,171,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252,242,15, 666 232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,
653 42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16, 667 237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,
654 4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,252,247,208,137,68, 668 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,
655 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 669 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,
656 141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8, 670 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,
657 57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 671 248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,
658 255,36,171,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139, 672 137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,
659 109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232, 673 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,
660 16,252,255,36,171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139, 674 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,
661 173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246, 675 213,141,139,233,255,232,251,1,30,137,252,234,252,233,244,1,255,252,247,208,
662 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193, 676 139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,
663 232,16,252,255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252, 677 237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,
664 246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,28,137,252, 678 131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,
665 234,252,233,244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139, 679 1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,30,137,
666 12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248, 680 252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,
667 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 681 172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,
668 2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137, 682 139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,
669 194,141,139,233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248, 683 15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,
670 255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15, 684 108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,
671 17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141, 685 232,251,1,31,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
672 233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 686 232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,
673 171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137, 687 48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,
674 149,233,141,20,202,137,252,233,232,251,1,29,139,149,233,248,1,139,6,15,182, 688 32,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
675 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74, 689 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,36,48,137,
676 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149, 690 149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248,1,137,193,
677 233,137,116,36,24,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199, 691 37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,132,244,249,
678 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 692 248,2,137,44,36,137,68,36,4,232,251,1,33,139,149,233,15,182,78,252,253,137,
679 171,255,139,108,36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15, 693 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
680 131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61, 694 255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,34,
681 252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,31,139, 695 15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,139,139,233,
682 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15, 696 137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,
683 182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244, 697 252,233,232,251,1,35,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,
684 2,248,5,137,252,233,232,251,1,32,15,183,70,252,254,252,233,244,1,255,252, 698 237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,
685 247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,233,15, 699 137,252,233,232,251,1,34,15,183,70,252,254,252,247,208,252,233,244,2,255,
686 131,244,249,248,2,139,20,135,137,252,233,232,251,1,33,139,149,233,15,182, 700 252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,169,255,252,
687 78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198, 701 247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,170,255,15,182,
688 4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,32,15,183,70,252, 702 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,
689 254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,139,173,233, 703 255,129,124,253,194,4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,
690 139,4,135,252,233,244,167,255,252,247,208,139,106,252,248,139,173,233,139, 704 239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,
691 4,135,252,233,244,168,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 705 200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,39,255,
692 239,15,133,244,38,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251, 706 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
693 139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,252,242,15,16,4,194, 707 248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182,
694 252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36, 708 232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249,
695 219,4,36,255,15,133,244,38,255,59,133,233,15,131,244,38,193,224,3,3,133,233, 709 139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3,199,
696 129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4, 710 68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,39,
697 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 711 139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,252,247,208,139,4,
698 2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244, 712 135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,139,141,
699 38,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,248,5,255,129,124, 713 233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,
700 253,194,4,239,15,133,244,38,139,4,194,252,233,244,167,255,15,182,252,236, 714 57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,
701 15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36, 715 253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204,15,
702 139,44,252,234,248,167,139,141,233,35,136,233,105,201,239,3,141,233,248,1, 716 182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,199,68,
703 129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239, 717 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
704 15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,76,194,4, 718 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
705 248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 719 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,
706 248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233, 720 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,
707 133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233, 721 239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,
708 235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,253, 722 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,
709 252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224, 723 0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,
710 3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137, 724 78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,
711 68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 725 192,129,124,253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,
712 171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15, 726 42,255,59,133,233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,
713 132,244,37,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255, 727 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,
714 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44, 728 139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,
715 252,234,255,15,133,244,41,255,59,133,233,15,131,244,41,193,224,3,3,133,233, 729 16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
716 129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253, 730 233,235,255,15,132,244,42,15,182,78,252,253,252,233,244,1,248,5,129,124,253,
717 248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232, 731 194,4,239,15,133,244,42,139,4,194,252,233,244,170,248,7,128,165,233,235,139,
718 131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139, 732 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,
719 141,233,252,246,129,233,235,255,15,132,244,41,15,182,78,252,253,252,233,244, 733 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
720 1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,168,248, 734 244,40,139,44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133,
721 7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252, 735 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
722 233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,253, 736 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
723 252,234,4,239,15,133,244,39,139,44,252,234,248,168,139,141,233,35,136,233, 737 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,
724 105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251, 738 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,
725 57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252, 739 233,0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,
726 246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4,139, 740 40,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,
727 4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 741 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,40,248,
728 255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233,252, 742 6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,
729 246,129,233,235,15,132,244,39,139,76,36,16,252,233,244,2,248,5,139,137,233, 743 108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,36,139,
730 133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,233, 744 149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,
731 235,15,132,244,39,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68, 745 233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,
732 36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116, 746 124,253,252,234,4,239,15,133,244,41,139,44,252,234,59,133,233,15,131,244,
733 36,24,232,251,1,34,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7, 747 41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,
734 128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15, 748 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,
735 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252, 749 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,
736 234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132, 750 233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,41,15,182,
737 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139, 751 78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,
738 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 752 141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,139,60,199,248,
739 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233, 753 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
740 235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, 754 68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,233,15,135,244,251,41,
741 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124, 755 252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,
742 36,16,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15, 756 4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,
743 133,244,253,248,2,139,68,36,20,131,232,1,15,132,244,250,1,252,248,59,133, 757 182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,
744 233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139, 758 48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,1,37,139,149,233,
745 105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 759 15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,137,
746 36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 760 171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,
747 5,137,108,36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36, 761 139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233,139,14,
748 24,232,251,1,35,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 762 15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,
749 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 763 139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60,139,114,252,
750 20,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8,137,114, 764 252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,
751 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 765 232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,131,193,8,137,111,4,131,
752 171,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133, 766 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,
753 244,29,248,59,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106, 767 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
754 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105, 768 4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,
755 4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248, 769 252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,
756 3,139,68,36,20,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182, 770 4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,137,215,
757 252,233,15,182,205,131,198,4,252,255,36,171,248,5,255,252,247,198,237,15, 771 139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,141,76,
758 133,244,4,15,182,78,252,253,252,247,209,141,12,202,139,121,252,248,139,191, 772 202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,
759 233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15,133, 773 244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,
760 244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198,239, 774 252,129,252,248,239,184,237,15,133,244,29,137,202,137,114,252,252,139,181,
761 252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4, 775 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,137,124,
762 139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,228, 776 36,16,137,92,36,20,139,108,202,252,240,139,68,202,252,248,139,157,233,131,
763 137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,29,137, 777 198,4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,
764 202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198, 778 244,250,255,219,68,202,252,248,255,139,108,199,4,137,108,202,12,139,44,199,
765 4,252,255,36,171,255,137,124,36,16,137,92,36,20,139,108,202,252,240,139,68, 779 137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,
766 202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,15,131,244,251, 780 180,253,134,233,248,3,139,92,36,20,139,124,36,16,139,6,15,182,204,15,182,
767 129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,255,139,108,199, 781 232,131,198,4,193,232,16,252,255,36,171,248,4,131,192,1,255,137,68,202,252,
768 4,137,108,202,12,139,44,199,137,108,202,8,131,192,1,255,137,68,202,252,248, 782 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252,
769 248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,20,139,124,36, 783 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,139,175,233,
770 16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4, 784 139,135,233,137,44,202,137,68,202,4,139,175,233,139,135,233,137,108,202,8,
771 131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59, 785 137,68,202,12,137,92,202,252,248,252,233,244,2,248,7,255,131,192,1,252,233,
772 133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244, 786 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
773 253,141,92,24,1,139,175,233,139,135,233,137,44,202,137,68,202,4,139,175,233, 787 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
774 139,135,233,137,108,202,8,137,68,202,12,137,92,202,252,248,252,233,244,2, 788 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
775 248,7,255,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133, 789 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
776 244,251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124, 790 36,171,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,244,
777 253,202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180, 791 1,255,15,182,252,236,15,182,192,137,124,36,16,141,188,253,194,233,141,12,
778 253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232, 792 202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,
779 131,198,4,193,232,16,252,255,36,171,248,5,198,70,252,252,235,141,180,253, 793 215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,
780 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36, 794 65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,
781 16,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251, 795 4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182,
782 141,108,252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1, 796 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,
783 139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57, 797 0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,
784 215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248, 798 36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,255,139,71,252,
785 3,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 799 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
786 36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197, 800 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,139,84,36,
787 193,252,237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135, 801 20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,
788 244,253,248,6,255,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4, 802 233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,
789 131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233, 803 237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,139,
790 137,116,36,24,41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139, 804 44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15,
791 149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252, 805 133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252,
792 252,137,68,36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232, 806 255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,70,
793 1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252, 807 252,255,15,135,244,252,255,15,182,78,252,253,252,247,209,141,20,202,139,122,
794 252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255, 808 252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,
795 248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137, 809 232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,
796 106,252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253, 810 252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,
797 252,247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182, 811 15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,
798 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252, 812 239,102,129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121,
799 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 813 253,4,239,15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253,
800 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255, 814 20,239,15,133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,
801 137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244, 815 239,15,133,244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252,
802 148,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12, 816 237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,
803 239,15,133,244,60,129,121,253,20,239,15,133,244,60,139,41,131,121,16,0,15, 817 137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,
804 140,244,251,255,129,121,253,12,239,15,133,244,164,129,121,253,20,239,15,133, 818 253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,
805 244,164,255,139,105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,137, 819 6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,
806 41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244,253,248,1,248,6,141, 820 4,193,232,16,252,255,36,171,248,5,255,3,41,15,128,244,1,137,41,255,15,141,
807 180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,142,245,248, 821 244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,
808 1,248,6,255,15,143,244,253,248,6,141,180,253,134,233,248,1,255,248,7,139, 822 7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121,
809 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,255,3,41, 823 253,12,239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253,
810 15,128,244,1,137,41,255,15,141,244,7,255,141,180,253,134,233,15,183,70,252, 824 20,239,15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255,
811 254,15,141,245,255,15,140,244,7,255,252,233,244,6,248,9,255,129,121,253,4, 825 252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,
812 239,255,15,131,244,60,129,121,253,12,239,15,131,244,60,255,129,121,253,12, 826 1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,
813 239,15,131,244,164,129,121,253,20,239,15,131,244,164,255,139,105,20,255,129, 827 242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,
814 252,253,239,15,131,244,60,255,252,242,15,16,1,252,242,15,16,73,8,255,252, 828 237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,
815 242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244, 829 183,70,252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255,
816 249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220, 830 141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15,
817 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244, 831 130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,
818 247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,7,255,15,131,244, 832 141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,
819 248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131, 833 41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,
820 245,255,15,130,244,7,255,15,130,244,248,141,180,253,134,233,255,248,3,102, 834 252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,137,
821 15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, 835 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,
822 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253, 836 15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,252,245,209,252,237,
823 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,139, 837 129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139,190,233,139,
824 128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141,180,253, 838 108,36,48,141,12,202,59,141,233,15,135,244,24,15,182,142,233,57,200,15,134,
825 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 839 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,
826 137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244, 840 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,
827 150,255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,244,24,15, 841 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,
828 182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245, 842 200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233,133,252,237,15,
829 255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244, 843 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
830 2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252, 844 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
831 248,139,108,36,48,141,12,200,59,141,233,15,135,244,23,137,209,137,194,15, 845 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
832 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244, 846 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,
833 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252, 847 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,
834 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204, 848 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,
835 15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3,199,64,4,237,131, 849 137,124,36,4,137,44,36,255,15,135,244,22,199,131,233,237,255,252,255,215,
836 192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,139,189, 850 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,
837 233,139,108,36,48,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137, 851 3,141,233,139,114,252,252,252,233,244,12,255,254,0
838 133,233,255,137,44,36,255,137,124,36,4,137,44,36,255,15,135,244,22,199,131,
839 233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,
840 141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
841}; 852};
842 853
843enum { 854enum {
@@ -863,6 +874,7 @@ enum {
863 GLOB_vmeta_call, 874 GLOB_vmeta_call,
864 GLOB_vm_call_dispatch_f, 875 GLOB_vm_call_dispatch_f,
865 GLOB_vm_cpcall, 876 GLOB_vm_cpcall,
877 GLOB_cont_ffi_callback,
866 GLOB_vm_call_tail, 878 GLOB_vm_call_tail,
867 GLOB_cont_cat, 879 GLOB_cont_cat,
868 GLOB_cont_ra, 880 GLOB_cont_ra,
@@ -996,6 +1008,7 @@ enum {
996 GLOB_vm_foldarith, 1008 GLOB_vm_foldarith,
997 GLOB_vm_cpuid, 1009 GLOB_vm_cpuid,
998 GLOB_assert_bad_for_arg_type, 1010 GLOB_assert_bad_for_arg_type,
1011 GLOB_vm_ffi_callback,
999 GLOB_vm_ffi_call, 1012 GLOB_vm_ffi_call,
1000 GLOB_BC_MODVN_Z, 1013 GLOB_BC_MODVN_Z,
1001 GLOB_BC_TGETS_Z, 1014 GLOB_BC_TGETS_Z,
@@ -1025,6 +1038,7 @@ static const char *const globnames[] = {
1025 "vmeta_call", 1038 "vmeta_call",
1026 "vm_call_dispatch_f", 1039 "vm_call_dispatch_f",
1027 "vm_cpcall", 1040 "vm_cpcall",
1041 "cont_ffi_callback",
1028 "vm_call_tail", 1042 "vm_call_tail",
1029 "cont_cat", 1043 "cont_cat",
1030 "cont_ra", 1044 "cont_ra",
@@ -1158,6 +1172,7 @@ static const char *const globnames[] = {
1158 "vm_foldarith", 1172 "vm_foldarith",
1159 "vm_cpuid", 1173 "vm_cpuid",
1160 "assert_bad_for_arg_type", 1174 "assert_bad_for_arg_type",
1175 "vm_ffi_callback",
1161 "vm_ffi_call@4", 1176 "vm_ffi_call@4",
1162 "BC_MODVN_Z", 1177 "BC_MODVN_Z",
1163 "BC_TGETS_Z", 1178 "BC_TGETS_Z",
@@ -1192,6 +1207,8 @@ static const char *const extnames[] = {
1192 "lj_dispatch_call@8", 1207 "lj_dispatch_call@8",
1193 "lj_trace_exit@8", 1208 "lj_trace_exit@8",
1194 "lj_err_throw@8", 1209 "lj_err_throw@8",
1210 "lj_ccallback_enter@8",
1211 "lj_ccallback_leave@8",
1195 "lj_meta_cat", 1212 "lj_meta_cat",
1196 "lj_gc_barrieruv@8", 1213 "lj_gc_barrieruv@8",
1197 "lj_func_closeuv@8", 1214 "lj_func_closeuv@8",
@@ -1232,762 +1249,780 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1232 dasm_put(Dst, 353, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); 1249 dasm_put(Dst, 353, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1233 dasm_put(Dst, 495, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1250 dasm_put(Dst, 495, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1234 dasm_put(Dst, 573, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); 1251 dasm_put(Dst, 573, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
1235 dasm_put(Dst, 753, Dt7(->pc), PC2PROTO(k), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1252#if LJ_HASFFI
1236 dasm_put(Dst, 875); 1253#endif
1254 dasm_put(Dst, 743);
1255#if LJ_HASFFI
1256 dasm_put(Dst, 748);
1257#endif
1258 dasm_put(Dst, 757, Dt7(->pc), PC2PROTO(k));
1259#if LJ_HASFFI
1260 dasm_put(Dst, 771);
1261#endif
1262 dasm_put(Dst, 792, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1237 if (LJ_DUALNUM) { 1263 if (LJ_DUALNUM) {
1238 dasm_put(Dst, 881, LJ_TISNUM); 1264 dasm_put(Dst, 890, LJ_TISNUM);
1239 } else if (sse) { 1265 } else if (sse) {
1240 dasm_put(Dst, 891); 1266 dasm_put(Dst, 900);
1241 } else { 1267 } else {
1242 dasm_put(Dst, 904); 1268 dasm_put(Dst, 913);
1243 } 1269 }
1244 dasm_put(Dst, 917, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1270 dasm_put(Dst, 926, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1245 dasm_put(Dst, 1069, DISPATCH_GL(tmptv), LJ_TTAB); 1271 dasm_put(Dst, 1078, DISPATCH_GL(tmptv), LJ_TTAB);
1246 if (LJ_DUALNUM) { 1272 if (LJ_DUALNUM) {
1247 dasm_put(Dst, 881, LJ_TISNUM); 1273 dasm_put(Dst, 890, LJ_TISNUM);
1248 } else if (sse) { 1274 } else if (sse) {
1249 dasm_put(Dst, 891); 1275 dasm_put(Dst, 900);
1250 } else { 1276 } else {
1251 dasm_put(Dst, 904); 1277 dasm_put(Dst, 913);
1252 } 1278 }
1253 dasm_put(Dst, 1092, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1279 dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1254 dasm_put(Dst, 1286, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1280 dasm_put(Dst, 1295, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1255 dasm_put(Dst, 1393); 1281 dasm_put(Dst, 1402);
1256#if LJ_HASFFI 1282#if LJ_HASFFI
1257 dasm_put(Dst, 1408, Dt1(->base)); 1283 dasm_put(Dst, 1417, Dt1(->base));
1258#endif 1284#endif
1259 dasm_put(Dst, 1439); 1285 dasm_put(Dst, 1448);
1260#if LJ_DUALNUM 1286#if LJ_DUALNUM
1261 dasm_put(Dst, 1442); 1287 dasm_put(Dst, 1451);
1262#endif 1288#endif
1263 dasm_put(Dst, 1448); 1289 dasm_put(Dst, 1457);
1264#if LJ_DUALNUM 1290#if LJ_DUALNUM
1265 dasm_put(Dst, 875); 1291 dasm_put(Dst, 884);
1266#endif 1292#endif
1267 dasm_put(Dst, 1460); 1293 dasm_put(Dst, 1469);
1268#if LJ_DUALNUM 1294#if LJ_DUALNUM
1269 dasm_put(Dst, 1442); 1295 dasm_put(Dst, 1451);
1270#endif 1296#endif
1271 dasm_put(Dst, 1488, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); 1297 dasm_put(Dst, 1497, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
1272#ifdef LUAJIT_ENABLE_LUA52COMPAT 1298#ifdef LUAJIT_ENABLE_LUA52COMPAT
1273 dasm_put(Dst, 1598); 1299 dasm_put(Dst, 1607);
1274#else 1300#else
1275 dasm_put(Dst, 1617); 1301 dasm_put(Dst, 1626);
1276#endif 1302#endif
1277 dasm_put(Dst, 1622, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1303 dasm_put(Dst, 1631, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1278 dasm_put(Dst, 1811, 1+1, ~LJ_TNUMX); 1304 dasm_put(Dst, 1820, 1+1, ~LJ_TNUMX);
1279 if (cmov) { 1305 if (cmov) {
1280 dasm_put(Dst, 1869); 1306 dasm_put(Dst, 1878);
1281 } else { 1307 } else {
1282 dasm_put(Dst, 1873); 1308 dasm_put(Dst, 1882);
1283 } 1309 }
1284 dasm_put(Dst, 1882, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB); 1310 dasm_put(Dst, 1891, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
1285 dasm_put(Dst, 1965, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1311 dasm_put(Dst, 1974, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1286 dasm_put(Dst, 2023, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1); 1312 dasm_put(Dst, 2032, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
1287 dasm_put(Dst, 2086, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1313 dasm_put(Dst, 2095, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1288 dasm_put(Dst, 2158, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1314 dasm_put(Dst, 2167, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1289 if (LJ_DUALNUM) { 1315 if (LJ_DUALNUM) {
1290 dasm_put(Dst, 2247); 1316 dasm_put(Dst, 2256);
1291 } else { 1317 } else {
1292 dasm_put(Dst, 2264); 1318 dasm_put(Dst, 2273);
1293 } 1319 }
1294 if (sse) { 1320 if (sse) {
1295 dasm_put(Dst, 2269); 1321 dasm_put(Dst, 2278);
1296 } else { 1322 } else {
1297 dasm_put(Dst, 2279); 1323 dasm_put(Dst, 2288);
1298 } 1324 }
1299 dasm_put(Dst, 2286, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1325 dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1300 dasm_put(Dst, 2352, Dt1(->base)); 1326 dasm_put(Dst, 2361, Dt1(->base));
1301 if (LJ_DUALNUM) { 1327 if (LJ_DUALNUM) {
1302 dasm_put(Dst, 2376); 1328 dasm_put(Dst, 2385);
1303 } else { 1329 } else {
1304 dasm_put(Dst, 2381); 1330 dasm_put(Dst, 2390);
1305 } 1331 }
1306 dasm_put(Dst, 2386, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); 1332 dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1307 dasm_put(Dst, 2495, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1333 dasm_put(Dst, 2504, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1308#ifdef LUAJIT_ENABLE_LUA52COMPAT 1334#ifdef LUAJIT_ENABLE_LUA52COMPAT
1309 dasm_put(Dst, 2542, Dt6(->metatable)); 1335 dasm_put(Dst, 2551, Dt6(->metatable));
1310#endif 1336#endif
1311 dasm_put(Dst, 2551, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1337 dasm_put(Dst, 2560, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1312 if (LJ_DUALNUM) { 1338 if (LJ_DUALNUM) {
1313 dasm_put(Dst, 2537); 1339 dasm_put(Dst, 2546);
1314 } else { 1340 } else {
1315 dasm_put(Dst, 2264); 1341 dasm_put(Dst, 2273);
1316 } 1342 }
1317 dasm_put(Dst, 2606); 1343 dasm_put(Dst, 2615);
1318 if (LJ_DUALNUM) { 1344 if (LJ_DUALNUM) {
1319 dasm_put(Dst, 2611, LJ_TISNUM); 1345 dasm_put(Dst, 2620, LJ_TISNUM);
1320 } else if (sse) { 1346 } else if (sse) {
1321 dasm_put(Dst, 2627); 1347 dasm_put(Dst, 2636);
1322 } else { 1348 } else {
1323 dasm_put(Dst, 2666); 1349 dasm_put(Dst, 2675);
1324 } 1350 }
1325 dasm_put(Dst, 2684, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1351 dasm_put(Dst, 2693, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1326 dasm_put(Dst, 2522, 1+1, LJ_TTAB); 1352 dasm_put(Dst, 2531, 1+1, LJ_TTAB);
1327#ifdef LUAJIT_ENABLE_LUA52COMPAT 1353#ifdef LUAJIT_ENABLE_LUA52COMPAT
1328 dasm_put(Dst, 2542, Dt6(->metatable)); 1354 dasm_put(Dst, 2551, Dt6(->metatable));
1329#endif 1355#endif
1330 dasm_put(Dst, 2765, Dt8(->upvalue[0]), LJ_TFUNC); 1356 dasm_put(Dst, 2774, Dt8(->upvalue[0]), LJ_TFUNC);
1331 if (LJ_DUALNUM) { 1357 if (LJ_DUALNUM) {
1332 dasm_put(Dst, 2786, LJ_TISNUM); 1358 dasm_put(Dst, 2795, LJ_TISNUM);
1333 } else if (sse) { 1359 } else if (sse) {
1334 dasm_put(Dst, 2798); 1360 dasm_put(Dst, 2807);
1335 } else { 1361 } else {
1336 dasm_put(Dst, 2808); 1362 dasm_put(Dst, 2817);
1337 } 1363 }
1338 dasm_put(Dst, 2815, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1364 dasm_put(Dst, 2824, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1339 dasm_put(Dst, 2879, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1365 dasm_put(Dst, 2888, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1340 dasm_put(Dst, 2967, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1366 dasm_put(Dst, 2976, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1341 dasm_put(Dst, 3068, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1367 dasm_put(Dst, 3077, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1342 dasm_put(Dst, 3182, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1368 dasm_put(Dst, 3191, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1343 dasm_put(Dst, 3280, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1369 dasm_put(Dst, 3289, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1344 dasm_put(Dst, 3346, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1370 dasm_put(Dst, 3355, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1345 dasm_put(Dst, 3447, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1371 dasm_put(Dst, 3456, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1346 dasm_put(Dst, 3560, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1372 dasm_put(Dst, 3569, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1347 if (!LJ_DUALNUM) { 1373 if (!LJ_DUALNUM) {
1348 dasm_put(Dst, 3586); 1374 dasm_put(Dst, 3595);
1349 } 1375 }
1350 if (sse) { 1376 if (sse) {
1351 dasm_put(Dst, 3589); 1377 dasm_put(Dst, 3598);
1352 } 1378 }
1353 dasm_put(Dst, 3604, 1+1); 1379 dasm_put(Dst, 3613, 1+1);
1354 if (LJ_DUALNUM) { 1380 if (LJ_DUALNUM) {
1355 dasm_put(Dst, 3615, LJ_TISNUM, LJ_TISNUM); 1381 dasm_put(Dst, 3624, LJ_TISNUM, LJ_TISNUM);
1356 } else { 1382 } else {
1357 dasm_put(Dst, 3695, LJ_TISNUM); 1383 dasm_put(Dst, 3704, LJ_TISNUM);
1358 } 1384 }
1359 if (sse) { 1385 if (sse) {
1360 dasm_put(Dst, 3705); 1386 dasm_put(Dst, 3714);
1361 } else { 1387 } else {
1362 dasm_put(Dst, 3741); 1388 dasm_put(Dst, 3750);
1363 } 1389 }
1364 dasm_put(Dst, 3758, 1+1, FRAME_TYPE, LJ_TNIL); 1390 dasm_put(Dst, 3767, 1+1, FRAME_TYPE, LJ_TNIL);
1365 if (LJ_DUALNUM) { 1391 if (LJ_DUALNUM) {
1366 dasm_put(Dst, 3850, LJ_TISNUM); 1392 dasm_put(Dst, 3859, LJ_TISNUM);
1367 } else { 1393 } else {
1368 dasm_put(Dst, 3695, LJ_TISNUM); 1394 dasm_put(Dst, 3704, LJ_TISNUM);
1369 } 1395 }
1370 if (sse) { 1396 if (sse) {
1371 dasm_put(Dst, 3872);
1372 if (LJ_DUALNUM) {
1373 dasm_put(Dst, 3881); 1397 dasm_put(Dst, 3881);
1398 if (LJ_DUALNUM) {
1399 dasm_put(Dst, 3890);
1374 } 1400 }
1375 dasm_put(Dst, 2274); 1401 dasm_put(Dst, 2283);
1376 } else { 1402 } else {
1377 dasm_put(Dst, 3915); 1403 dasm_put(Dst, 3924);
1378 if (LJ_DUALNUM) { 1404 if (LJ_DUALNUM) {
1379 dasm_put(Dst, 3921); 1405 dasm_put(Dst, 3930);
1380 if (cmov) { 1406 if (cmov) {
1381 dasm_put(Dst, 3944); 1407 dasm_put(Dst, 3953);
1382 } else { 1408 } else {
1383 dasm_put(Dst, 3950); 1409 dasm_put(Dst, 3959);
1384 } 1410 }
1385 dasm_put(Dst, 3957); 1411 dasm_put(Dst, 3966);
1386 } else { 1412 } else {
1387 dasm_put(Dst, 2281); 1413 dasm_put(Dst, 2290);
1388 } 1414 }
1389 } 1415 }
1390 dasm_put(Dst, 3974); 1416 dasm_put(Dst, 3983);
1391 if (LJ_DUALNUM) { 1417 if (LJ_DUALNUM) {
1392 dasm_put(Dst, 3850, LJ_TISNUM); 1418 dasm_put(Dst, 3859, LJ_TISNUM);
1393 } else { 1419 } else {
1394 dasm_put(Dst, 3695, LJ_TISNUM); 1420 dasm_put(Dst, 3704, LJ_TISNUM);
1395 } 1421 }
1396 if (sse) { 1422 if (sse) {
1397 dasm_put(Dst, 3977); 1423 dasm_put(Dst, 3986);
1398 if (LJ_DUALNUM) { 1424 if (LJ_DUALNUM) {
1399 dasm_put(Dst, 3881); 1425 dasm_put(Dst, 3890);
1400 } 1426 }
1401 dasm_put(Dst, 2274); 1427 dasm_put(Dst, 2283);
1402 } else { 1428 } else {
1403 dasm_put(Dst, 3986); 1429 dasm_put(Dst, 3995);
1404 if (LJ_DUALNUM) { 1430 if (LJ_DUALNUM) {
1405 dasm_put(Dst, 3921); 1431 dasm_put(Dst, 3930);
1406 if (cmov) { 1432 if (cmov) {
1407 dasm_put(Dst, 3944); 1433 dasm_put(Dst, 3953);
1408 } else { 1434 } else {
1409 dasm_put(Dst, 3950); 1435 dasm_put(Dst, 3959);
1410 } 1436 }
1411 dasm_put(Dst, 3957); 1437 dasm_put(Dst, 3966);
1412 } else { 1438 } else {
1413 dasm_put(Dst, 2281); 1439 dasm_put(Dst, 2290);
1414 } 1440 }
1415 } 1441 }
1416 if (sse) { 1442 if (sse) {
1417 dasm_put(Dst, 3992, 1+1, LJ_TISNUM); 1443 dasm_put(Dst, 4001, 1+1, LJ_TISNUM);
1418 } else { 1444 } else {
1419 dasm_put(Dst, 4021, 1+1, LJ_TISNUM); 1445 dasm_put(Dst, 4030, 1+1, LJ_TISNUM);
1420 } 1446 }
1421 dasm_put(Dst, 4050, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1447 dasm_put(Dst, 4059, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1422 dasm_put(Dst, 4119, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1448 dasm_put(Dst, 4128, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1423 dasm_put(Dst, 4176, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1449 dasm_put(Dst, 4185, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1424 dasm_put(Dst, 4239, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1450 dasm_put(Dst, 4248, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1425 dasm_put(Dst, 4329); 1451 dasm_put(Dst, 4338);
1426 if (sse) { 1452 if (sse) {
1427 dasm_put(Dst, 4341, 1+1, LJ_TISNUM); 1453 dasm_put(Dst, 4350, 1+1, LJ_TISNUM);
1428 } else { 1454 } else {
1429 dasm_put(Dst, 4372, 1+1, LJ_TISNUM); 1455 dasm_put(Dst, 4381, 1+1, LJ_TISNUM);
1430 } 1456 }
1431 dasm_put(Dst, 4397); 1457 dasm_put(Dst, 4406);
1432 if (sse) { 1458 if (sse) {
1433 dasm_put(Dst, 4411, 1+1, LJ_TISNUM); 1459 dasm_put(Dst, 4420, 1+1, LJ_TISNUM);
1434 } else { 1460 } else {
1435 dasm_put(Dst, 4442, 1+1, LJ_TISNUM); 1461 dasm_put(Dst, 4451, 1+1, LJ_TISNUM);
1436 } 1462 }
1437 dasm_put(Dst, 4467); 1463 dasm_put(Dst, 4476);
1438 if (sse) { 1464 if (sse) {
1439 dasm_put(Dst, 4481, 1+1, LJ_TISNUM); 1465 dasm_put(Dst, 4490, 1+1, LJ_TISNUM);
1440 } else { 1466 } else {
1441 dasm_put(Dst, 4512, 1+1, LJ_TISNUM); 1467 dasm_put(Dst, 4521, 1+1, LJ_TISNUM);
1442 } 1468 }
1443 dasm_put(Dst, 4537); 1469 dasm_put(Dst, 4546);
1444 if (sse) { 1470 if (sse) {
1445 dasm_put(Dst, 4553, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1471 dasm_put(Dst, 4562, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1446 } else { 1472 } else {
1447 dasm_put(Dst, 4592, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1473 dasm_put(Dst, 4601, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1448 } 1474 }
1449 dasm_put(Dst, 4625, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1475 dasm_put(Dst, 4634, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1450 dasm_put(Dst, 4690, 1+1, LJ_TISNUM); 1476 dasm_put(Dst, 4699, 1+1, LJ_TISNUM);
1451 if (sse) { 1477 if (sse) {
1452 dasm_put(Dst, 4789); 1478 dasm_put(Dst, 4798);
1453 } else { 1479 } else {
1454 dasm_put(Dst, 4795); 1480 dasm_put(Dst, 4804);
1455 } 1481 }
1456 dasm_put(Dst, 4804); 1482 dasm_put(Dst, 4813);
1457 if (sse) { 1483 if (sse) {
1458 dasm_put(Dst, 4829); 1484 dasm_put(Dst, 4838);
1459 } else { 1485 } else {
1460 dasm_put(Dst, 4835); 1486 dasm_put(Dst, 4844);
1461 } 1487 }
1462 dasm_put(Dst, 4838, 1+2); 1488 dasm_put(Dst, 4847, 1+2);
1463 if (sse) { 1489 if (sse) {
1464 dasm_put(Dst, 4847); 1490 dasm_put(Dst, 4856);
1465 } else { 1491 } else {
1466 dasm_put(Dst, 4855); 1492 dasm_put(Dst, 4864);
1467 } 1493 }
1468 dasm_put(Dst, 4863); 1494 dasm_put(Dst, 4872);
1469 if (sse) { 1495 if (sse) {
1470 dasm_put(Dst, 4866); 1496 dasm_put(Dst, 4875);
1471 } else { 1497 } else {
1472 dasm_put(Dst, 4898); 1498 dasm_put(Dst, 4907);
1473 } 1499 }
1474 dasm_put(Dst, 4917); 1500 dasm_put(Dst, 4926);
1475 if (sse) { 1501 if (sse) {
1476 dasm_put(Dst, 4933, 1+1, LJ_TISNUM); 1502 dasm_put(Dst, 4942, 1+1, LJ_TISNUM);
1477 } else { 1503 } else {
1478 dasm_put(Dst, 4958, 1+1, LJ_TISNUM); 1504 dasm_put(Dst, 4967, 1+1, LJ_TISNUM);
1479 } 1505 }
1480 dasm_put(Dst, 4980); 1506 dasm_put(Dst, 4989);
1481 if (sse) { 1507 if (sse) {
1482 dasm_put(Dst, 5002); 1508 dasm_put(Dst, 5011);
1483 } else { 1509 } else {
1484 dasm_put(Dst, 5028); 1510 dasm_put(Dst, 5037);
1485 } 1511 }
1486 dasm_put(Dst, 5045, 1+2); 1512 dasm_put(Dst, 5054, 1+2);
1487 if (sse) { 1513 if (sse) {
1488 dasm_put(Dst, 5085); 1514 dasm_put(Dst, 5094);
1489 } else { 1515 } else {
1490 dasm_put(Dst, 5093); 1516 dasm_put(Dst, 5102);
1491 } 1517 }
1492 dasm_put(Dst, 5103, 2+1, LJ_TISNUM, LJ_TISNUM); 1518 dasm_put(Dst, 5112, 2+1, LJ_TISNUM, LJ_TISNUM);
1493 if (sse) { 1519 if (sse) {
1494 dasm_put(Dst, 5155, 2+1, LJ_TISNUM, LJ_TISNUM); 1520 dasm_put(Dst, 5164, 2+1, LJ_TISNUM, LJ_TISNUM);
1495 } else { 1521 } else {
1496 dasm_put(Dst, 5202, 2+1, LJ_TISNUM, LJ_TISNUM); 1522 dasm_put(Dst, 5211, 2+1, LJ_TISNUM, LJ_TISNUM);
1497 } 1523 }
1498 dasm_put(Dst, 5243, LJ_TISNUM); 1524 dasm_put(Dst, 5252, LJ_TISNUM);
1499 if (LJ_DUALNUM) { 1525 if (LJ_DUALNUM) {
1500 dasm_put(Dst, 5256, LJ_TISNUM); 1526 dasm_put(Dst, 5265, LJ_TISNUM);
1501 if (sse) { 1527 if (sse) {
1502 dasm_put(Dst, 4789); 1528 dasm_put(Dst, 4798);
1503 } else { 1529 } else {
1504 dasm_put(Dst, 4795); 1530 dasm_put(Dst, 4804);
1505 } 1531 }
1506 dasm_put(Dst, 5306); 1532 dasm_put(Dst, 5315);
1507 } else { 1533 } else {
1508 dasm_put(Dst, 2264); 1534 dasm_put(Dst, 2273);
1509 } 1535 }
1510 if (sse) { 1536 if (sse) {
1511 dasm_put(Dst, 5317, LJ_TISNUM); 1537 dasm_put(Dst, 5326, LJ_TISNUM);
1512 if (LJ_DUALNUM) { 1538 if (LJ_DUALNUM) {
1513 dasm_put(Dst, 5338); 1539 dasm_put(Dst, 5347);
1514 } else { 1540 } else {
1515 dasm_put(Dst, 2264); 1541 dasm_put(Dst, 2273);
1516 } 1542 }
1517 dasm_put(Dst, 5359); 1543 dasm_put(Dst, 5368);
1518 } else { 1544 } else {
1519 dasm_put(Dst, 5384, LJ_TISNUM); 1545 dasm_put(Dst, 5393, LJ_TISNUM);
1520 if (LJ_DUALNUM) { 1546 if (LJ_DUALNUM) {
1521 dasm_put(Dst, 5402); 1547 dasm_put(Dst, 5411);
1522 } else { 1548 } else {
1523 dasm_put(Dst, 5420); 1549 dasm_put(Dst, 5429);
1524 } 1550 }
1525 dasm_put(Dst, 5425); 1551 dasm_put(Dst, 5434);
1526 if (cmov) { 1552 if (cmov) {
1527 dasm_put(Dst, 5435); 1553 dasm_put(Dst, 5444);
1528 } else { 1554 } else {
1529 dasm_put(Dst, 5443); 1555 dasm_put(Dst, 5452);
1530 } 1556 }
1531 dasm_put(Dst, 5376); 1557 dasm_put(Dst, 5385);
1532 } 1558 }
1533 dasm_put(Dst, 5464, LJ_TISNUM); 1559 dasm_put(Dst, 5473, LJ_TISNUM);
1534 if (LJ_DUALNUM) { 1560 if (LJ_DUALNUM) {
1535 dasm_put(Dst, 5477, LJ_TISNUM); 1561 dasm_put(Dst, 5486, LJ_TISNUM);
1536 if (sse) { 1562 if (sse) {
1537 dasm_put(Dst, 4789); 1563 dasm_put(Dst, 4798);
1538 } else { 1564 } else {
1539 dasm_put(Dst, 4795); 1565 dasm_put(Dst, 4804);
1540 } 1566 }
1541 dasm_put(Dst, 5306); 1567 dasm_put(Dst, 5315);
1542 } else { 1568 } else {
1543 dasm_put(Dst, 2264); 1569 dasm_put(Dst, 2273);
1544 } 1570 }
1545 if (sse) { 1571 if (sse) {
1546 dasm_put(Dst, 5317, LJ_TISNUM); 1572 dasm_put(Dst, 5326, LJ_TISNUM);
1547 if (LJ_DUALNUM) { 1573 if (LJ_DUALNUM) {
1548 dasm_put(Dst, 5338); 1574 dasm_put(Dst, 5347);
1549 } else { 1575 } else {
1550 dasm_put(Dst, 2264); 1576 dasm_put(Dst, 2273);
1551 } 1577 }
1552 dasm_put(Dst, 5527); 1578 dasm_put(Dst, 5536);
1553 } else { 1579 } else {
1554 dasm_put(Dst, 5384, LJ_TISNUM); 1580 dasm_put(Dst, 5393, LJ_TISNUM);
1555 if (LJ_DUALNUM) { 1581 if (LJ_DUALNUM) {
1556 dasm_put(Dst, 5402); 1582 dasm_put(Dst, 5411);
1557 } else { 1583 } else {
1558 dasm_put(Dst, 5420); 1584 dasm_put(Dst, 5429);
1559 } 1585 }
1560 dasm_put(Dst, 5425); 1586 dasm_put(Dst, 5434);
1561 if (cmov) { 1587 if (cmov) {
1562 dasm_put(Dst, 5552); 1588 dasm_put(Dst, 5561);
1563 } else { 1589 } else {
1564 dasm_put(Dst, 5560); 1590 dasm_put(Dst, 5569);
1565 } 1591 }
1566 dasm_put(Dst, 5376); 1592 dasm_put(Dst, 5385);
1567 } 1593 }
1568 if (!sse) { 1594 if (!sse) {
1569 dasm_put(Dst, 5581); 1595 dasm_put(Dst, 5590);
1570 } 1596 }
1571 dasm_put(Dst, 5590, 1+1, LJ_TSTR); 1597 dasm_put(Dst, 5599, 1+1, LJ_TSTR);
1572 if (LJ_DUALNUM) { 1598 if (LJ_DUALNUM) {
1573 dasm_put(Dst, 5612, Dt5(->len)); 1599 dasm_put(Dst, 5621, Dt5(->len));
1574 } else if (sse) { 1600 } else if (sse) {
1575 dasm_put(Dst, 5620, Dt5(->len)); 1601 dasm_put(Dst, 5629, Dt5(->len));
1576 } else { 1602 } else {
1577 dasm_put(Dst, 5631, Dt5(->len)); 1603 dasm_put(Dst, 5640, Dt5(->len));
1578 } 1604 }
1579 dasm_put(Dst, 5639, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1605 dasm_put(Dst, 5648, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1580 if (LJ_DUALNUM) { 1606 if (LJ_DUALNUM) {
1581 dasm_put(Dst, 3969); 1607 dasm_put(Dst, 3978);
1582 } else if (sse) { 1608 } else if (sse) {
1583 dasm_put(Dst, 5677); 1609 dasm_put(Dst, 5686);
1584 } else { 1610 } else {
1585 dasm_put(Dst, 5687); 1611 dasm_put(Dst, 5696);
1586 } 1612 }
1587 dasm_put(Dst, 5700, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1613 dasm_put(Dst, 5709, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1588 if (LJ_DUALNUM) { 1614 if (LJ_DUALNUM) {
1589 dasm_put(Dst, 5731); 1615 dasm_put(Dst, 5740);
1590 } else if (sse) { 1616 } else if (sse) {
1591 dasm_put(Dst, 5754); 1617 dasm_put(Dst, 5763);
1592 } else { 1618 } else {
1593 dasm_put(Dst, 5780); 1619 dasm_put(Dst, 5789);
1594 } 1620 }
1595 dasm_put(Dst, 5804, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1621 dasm_put(Dst, 5813, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1596 if (LJ_DUALNUM) { 1622 if (LJ_DUALNUM) {
1597 dasm_put(Dst, 5907); 1623 dasm_put(Dst, 5916);
1598 } else if (sse) { 1624 } else if (sse) {
1599 dasm_put(Dst, 5919); 1625 dasm_put(Dst, 5928);
1600 } else { 1626 } else {
1601 dasm_put(Dst, 5934); 1627 dasm_put(Dst, 5943);
1602 } 1628 }
1603 dasm_put(Dst, 5946, LJ_TSTR, LJ_TISNUM); 1629 dasm_put(Dst, 5955, LJ_TSTR, LJ_TISNUM);
1604 if (LJ_DUALNUM) { 1630 if (LJ_DUALNUM) {
1605 dasm_put(Dst, 2537); 1631 dasm_put(Dst, 2546);
1606 } else { 1632 } else {
1607 dasm_put(Dst, 2264); 1633 dasm_put(Dst, 2273);
1608 } 1634 }
1609 dasm_put(Dst, 5963, Dt5(->len)); 1635 dasm_put(Dst, 5972, Dt5(->len));
1610 if (LJ_DUALNUM) { 1636 if (LJ_DUALNUM) {
1611 dasm_put(Dst, 5973); 1637 dasm_put(Dst, 5982);
1612 } else if (sse) { 1638 } else if (sse) {
1613 dasm_put(Dst, 5977); 1639 dasm_put(Dst, 5986);
1614 } else { 1640 } else {
1615 dasm_put(Dst, 5984); 1641 dasm_put(Dst, 5993);
1616 } 1642 }
1617 dasm_put(Dst, 5996, sizeof(GCstr)-1); 1643 dasm_put(Dst, 6005, sizeof(GCstr)-1);
1618 dasm_put(Dst, 6071, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1644 dasm_put(Dst, 6080, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1619 dasm_put(Dst, 6130, LJ_TSTR, LJ_TISNUM); 1645 dasm_put(Dst, 6139, LJ_TSTR, LJ_TISNUM);
1620 if (LJ_DUALNUM) { 1646 if (LJ_DUALNUM) {
1621 dasm_put(Dst, 6147); 1647 dasm_put(Dst, 6156);
1622 } else if (sse) { 1648 } else if (sse) {
1623 dasm_put(Dst, 6155); 1649 dasm_put(Dst, 6164);
1624 } else { 1650 } else {
1625 dasm_put(Dst, 6166); 1651 dasm_put(Dst, 6175);
1626 } 1652 }
1627 dasm_put(Dst, 6182, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1653 dasm_put(Dst, 6191, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1628 dasm_put(Dst, 6247, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1654 dasm_put(Dst, 6256, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1629 dasm_put(Dst, 6310, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1655 dasm_put(Dst, 6319, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1630 dasm_put(Dst, 6381, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1656 dasm_put(Dst, 6390, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1631 dasm_put(Dst, 6466, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1657 dasm_put(Dst, 6475, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1632 dasm_put(Dst, 6536, 1+1, LJ_TTAB); 1658 dasm_put(Dst, 6545, 1+1, LJ_TTAB);
1633 if (LJ_DUALNUM) { 1659 if (LJ_DUALNUM) {
1634 dasm_put(Dst, 6604); 1660 dasm_put(Dst, 6613);
1635 } else if (sse) { 1661 } else if (sse) {
1636 dasm_put(Dst, 6611); 1662 dasm_put(Dst, 6620);
1637 } else { 1663 } else {
1638 dasm_put(Dst, 6621); 1664 dasm_put(Dst, 6630);
1639 } 1665 }
1640 dasm_put(Dst, 6632, 1+1, LJ_TISNUM); 1666 dasm_put(Dst, 6641, 1+1, LJ_TISNUM);
1641 if (LJ_DUALNUM) { 1667 if (LJ_DUALNUM) {
1642 dasm_put(Dst, 6648); 1668 dasm_put(Dst, 6657);
1643 } else { 1669 } else {
1644 dasm_put(Dst, 2264); 1670 dasm_put(Dst, 2273);
1645 } 1671 }
1646 if (sse) { 1672 if (sse) {
1647 dasm_put(Dst, 6665); 1673 dasm_put(Dst, 6674);
1648 } else { 1674 } else {
1649 dasm_put(Dst, 6694); 1675 dasm_put(Dst, 6703);
1650 } 1676 }
1651 dasm_put(Dst, 111); 1677 dasm_put(Dst, 111);
1652 if (LJ_DUALNUM || sse) { 1678 if (LJ_DUALNUM || sse) {
1653 if (!sse) { 1679 if (!sse) {
1654 dasm_put(Dst, 6712); 1680 dasm_put(Dst, 6721);
1655 } 1681 }
1656 dasm_put(Dst, 6716); 1682 dasm_put(Dst, 6725);
1657 } else { 1683 } else {
1658 dasm_put(Dst, 6624); 1684 dasm_put(Dst, 6633);
1659 } 1685 }
1660 dasm_put(Dst, 6721, 1+1); 1686 dasm_put(Dst, 6730, 1+1);
1661 if (sse) { 1687 if (sse) {
1662 dasm_put(Dst, 6732); 1688 dasm_put(Dst, 6741);
1663 } else { 1689 } else {
1664 dasm_put(Dst, 6747); 1690 dasm_put(Dst, 6756);
1665 } 1691 }
1666 dasm_put(Dst, 2241, LJ_TISNUM); 1692 dasm_put(Dst, 2250, LJ_TISNUM);
1667 if (LJ_DUALNUM) { 1693 if (LJ_DUALNUM) {
1668 dasm_put(Dst, 6756); 1694 dasm_put(Dst, 6765);
1669 } else { 1695 } else {
1670 dasm_put(Dst, 2264); 1696 dasm_put(Dst, 2273);
1671 } 1697 }
1672 if (sse) { 1698 if (sse) {
1673 dasm_put(Dst, 6773); 1699 dasm_put(Dst, 6782);
1674 } else { 1700 } else {
1675 dasm_put(Dst, 6788); 1701 dasm_put(Dst, 6797);
1676 } 1702 }
1677 dasm_put(Dst, 6801, LJ_TISNUM); 1703 dasm_put(Dst, 6810, LJ_TISNUM);
1678 if (LJ_DUALNUM) { 1704 if (LJ_DUALNUM) {
1679 dasm_put(Dst, 6826); 1705 dasm_put(Dst, 6835);
1680 } else { 1706 } else {
1681 dasm_put(Dst, 6846); 1707 dasm_put(Dst, 6855);
1682 } 1708 }
1683 if (sse) { 1709 if (sse) {
1684 dasm_put(Dst, 6851); 1710 dasm_put(Dst, 6860);
1685 } else { 1711 } else {
1686 dasm_put(Dst, 6868); 1712 dasm_put(Dst, 6877);
1687 } 1713 }
1688 dasm_put(Dst, 6881, 1+1); 1714 dasm_put(Dst, 6890, 1+1);
1689 if (sse) { 1715 if (sse) {
1690 dasm_put(Dst, 6732); 1716 dasm_put(Dst, 6741);
1691 } else { 1717 } else {
1692 dasm_put(Dst, 6747); 1718 dasm_put(Dst, 6756);
1693 } 1719 }
1694 dasm_put(Dst, 2241, LJ_TISNUM); 1720 dasm_put(Dst, 2250, LJ_TISNUM);
1695 if (LJ_DUALNUM) { 1721 if (LJ_DUALNUM) {
1696 dasm_put(Dst, 6756); 1722 dasm_put(Dst, 6765);
1697 } else { 1723 } else {
1698 dasm_put(Dst, 2264); 1724 dasm_put(Dst, 2273);
1699 } 1725 }
1700 if (sse) { 1726 if (sse) {
1701 dasm_put(Dst, 6773); 1727 dasm_put(Dst, 6782);
1702 } else { 1728 } else {
1703 dasm_put(Dst, 6788); 1729 dasm_put(Dst, 6797);
1704 } 1730 }
1705 dasm_put(Dst, 6801, LJ_TISNUM); 1731 dasm_put(Dst, 6810, LJ_TISNUM);
1706 if (LJ_DUALNUM) { 1732 if (LJ_DUALNUM) {
1707 dasm_put(Dst, 6899); 1733 dasm_put(Dst, 6908);
1708 } else { 1734 } else {
1709 dasm_put(Dst, 6846); 1735 dasm_put(Dst, 6855);
1710 } 1736 }
1711 if (sse) { 1737 if (sse) {
1712 dasm_put(Dst, 6919); 1738 dasm_put(Dst, 6928);
1713 } else { 1739 } else {
1714 dasm_put(Dst, 6936); 1740 dasm_put(Dst, 6945);
1715 } 1741 }
1716 dasm_put(Dst, 6949, 1+1); 1742 dasm_put(Dst, 6958, 1+1);
1717 if (sse) { 1743 if (sse) {
1718 dasm_put(Dst, 6732); 1744 dasm_put(Dst, 6741);
1719 } else { 1745 } else {
1720 dasm_put(Dst, 6747); 1746 dasm_put(Dst, 6756);
1721 } 1747 }
1722 dasm_put(Dst, 2241, LJ_TISNUM); 1748 dasm_put(Dst, 2250, LJ_TISNUM);
1723 if (LJ_DUALNUM) { 1749 if (LJ_DUALNUM) {
1724 dasm_put(Dst, 6756); 1750 dasm_put(Dst, 6765);
1725 } else { 1751 } else {
1726 dasm_put(Dst, 2264); 1752 dasm_put(Dst, 2273);
1727 } 1753 }
1728 if (sse) { 1754 if (sse) {
1729 dasm_put(Dst, 6773); 1755 dasm_put(Dst, 6782);
1730 } else { 1756 } else {
1731 dasm_put(Dst, 6788); 1757 dasm_put(Dst, 6797);
1732 } 1758 }
1733 dasm_put(Dst, 6801, LJ_TISNUM); 1759 dasm_put(Dst, 6810, LJ_TISNUM);
1734 if (LJ_DUALNUM) { 1760 if (LJ_DUALNUM) {
1735 dasm_put(Dst, 6967); 1761 dasm_put(Dst, 6976);
1736 } else { 1762 } else {
1737 dasm_put(Dst, 6846); 1763 dasm_put(Dst, 6855);
1738 } 1764 }
1739 if (sse) { 1765 if (sse) {
1740 dasm_put(Dst, 6987); 1766 dasm_put(Dst, 6996);
1741 } else { 1767 } else {
1742 dasm_put(Dst, 7004); 1768 dasm_put(Dst, 7013);
1743 } 1769 }
1744 dasm_put(Dst, 7017, 1+1, LJ_TISNUM); 1770 dasm_put(Dst, 7026, 1+1, LJ_TISNUM);
1745 if (LJ_DUALNUM) { 1771 if (LJ_DUALNUM) {
1746 dasm_put(Dst, 6756); 1772 dasm_put(Dst, 6765);
1747 } else { 1773 } else {
1748 dasm_put(Dst, 2264); 1774 dasm_put(Dst, 2273);
1749 } 1775 }
1750 if (sse) { 1776 if (sse) {
1751 dasm_put(Dst, 6665); 1777 dasm_put(Dst, 6674);
1752 } else { 1778 } else {
1753 dasm_put(Dst, 7040); 1779 dasm_put(Dst, 7049);
1754 } 1780 }
1755 dasm_put(Dst, 7061, 1+1, LJ_TISNUM); 1781 dasm_put(Dst, 7070, 1+1, LJ_TISNUM);
1756 if (LJ_DUALNUM) { 1782 if (LJ_DUALNUM) {
1757 dasm_put(Dst, 6756); 1783 dasm_put(Dst, 6765);
1758 } else { 1784 } else {
1759 dasm_put(Dst, 2264); 1785 dasm_put(Dst, 2273);
1760 } 1786 }
1761 if (sse) { 1787 if (sse) {
1762 dasm_put(Dst, 6665); 1788 dasm_put(Dst, 6674);
1763 } else { 1789 } else {
1764 dasm_put(Dst, 7040); 1790 dasm_put(Dst, 7049);
1765 } 1791 }
1766 dasm_put(Dst, 7085); 1792 dasm_put(Dst, 7094);
1767 if (LJ_DUALNUM) { 1793 if (LJ_DUALNUM) {
1768 dasm_put(Dst, 6716); 1794 dasm_put(Dst, 6725);
1769 } else if (sse) { 1795 } else if (sse) {
1770 dasm_put(Dst, 7091); 1796 dasm_put(Dst, 7100);
1771 } else { 1797 } else {
1772 dasm_put(Dst, 7103); 1798 dasm_put(Dst, 7112);
1773 } 1799 }
1774 dasm_put(Dst, 7116); 1800 dasm_put(Dst, 7125);
1775 if (LJ_DUALNUM) { 1801 if (LJ_DUALNUM) {
1776 dasm_put(Dst, 7127, 1+1, LJ_TISNUM); 1802 dasm_put(Dst, 7136, 1+1, LJ_TISNUM);
1777 if (LJ_DUALNUM) { 1803 if (LJ_DUALNUM) {
1778 dasm_put(Dst, 6756); 1804 dasm_put(Dst, 6765);
1779 } else { 1805 } else {
1780 dasm_put(Dst, 2264); 1806 dasm_put(Dst, 2273);
1781 } 1807 }
1782 if (sse) { 1808 if (sse) {
1783 dasm_put(Dst, 6665); 1809 dasm_put(Dst, 6674);
1784 } else { 1810 } else {
1785 dasm_put(Dst, 7040); 1811 dasm_put(Dst, 7049);
1786 } 1812 }
1787 dasm_put(Dst, 7143, LJ_TISNUM); 1813 dasm_put(Dst, 7152, LJ_TISNUM);
1788 } else if (sse) { 1814 } else if (sse) {
1789 dasm_put(Dst, 7158, 2+1, LJ_TISNUM, LJ_TISNUM); 1815 dasm_put(Dst, 7167, 2+1, LJ_TISNUM, LJ_TISNUM);
1790 } else { 1816 } else {
1791 dasm_put(Dst, 7230, 2+1, LJ_TISNUM, LJ_TISNUM); 1817 dasm_put(Dst, 7239, 2+1, LJ_TISNUM, LJ_TISNUM);
1792 } 1818 }
1793 dasm_put(Dst, 7294); 1819 dasm_put(Dst, 7303);
1794 if (LJ_DUALNUM) { 1820 if (LJ_DUALNUM) {
1795 dasm_put(Dst, 7301, 1+1, LJ_TISNUM); 1821 dasm_put(Dst, 7310, 1+1, LJ_TISNUM);
1796 if (LJ_DUALNUM) { 1822 if (LJ_DUALNUM) {
1797 dasm_put(Dst, 6756); 1823 dasm_put(Dst, 6765);
1798 } else { 1824 } else {
1799 dasm_put(Dst, 2264); 1825 dasm_put(Dst, 2273);
1800 } 1826 }
1801 if (sse) { 1827 if (sse) {
1802 dasm_put(Dst, 6665); 1828 dasm_put(Dst, 6674);
1803 } else { 1829 } else {
1804 dasm_put(Dst, 7040); 1830 dasm_put(Dst, 7049);
1805 } 1831 }
1806 dasm_put(Dst, 7143, LJ_TISNUM); 1832 dasm_put(Dst, 7152, LJ_TISNUM);
1807 } else if (sse) { 1833 } else if (sse) {
1808 dasm_put(Dst, 7317, 2+1, LJ_TISNUM, LJ_TISNUM); 1834 dasm_put(Dst, 7326, 2+1, LJ_TISNUM, LJ_TISNUM);
1809 } else { 1835 } else {
1810 dasm_put(Dst, 7389, 2+1, LJ_TISNUM, LJ_TISNUM); 1836 dasm_put(Dst, 7398, 2+1, LJ_TISNUM, LJ_TISNUM);
1811 } 1837 }
1812 dasm_put(Dst, 7453); 1838 dasm_put(Dst, 7462);
1813 if (LJ_DUALNUM) { 1839 if (LJ_DUALNUM) {
1814 dasm_put(Dst, 7461, 1+1, LJ_TISNUM); 1840 dasm_put(Dst, 7470, 1+1, LJ_TISNUM);
1815 if (LJ_DUALNUM) { 1841 if (LJ_DUALNUM) {
1816 dasm_put(Dst, 6756); 1842 dasm_put(Dst, 6765);
1817 } else { 1843 } else {
1818 dasm_put(Dst, 2264); 1844 dasm_put(Dst, 2273);
1819 } 1845 }
1820 if (sse) { 1846 if (sse) {
1821 dasm_put(Dst, 6665); 1847 dasm_put(Dst, 6674);
1822 } else { 1848 } else {
1823 dasm_put(Dst, 7040); 1849 dasm_put(Dst, 7049);
1824 } 1850 }
1825 dasm_put(Dst, 7143, LJ_TISNUM); 1851 dasm_put(Dst, 7152, LJ_TISNUM);
1826 } else if (sse) { 1852 } else if (sse) {
1827 dasm_put(Dst, 7477, 2+1, LJ_TISNUM, LJ_TISNUM); 1853 dasm_put(Dst, 7486, 2+1, LJ_TISNUM, LJ_TISNUM);
1828 } else { 1854 } else {
1829 dasm_put(Dst, 7549, 2+1, LJ_TISNUM, LJ_TISNUM); 1855 dasm_put(Dst, 7558, 2+1, LJ_TISNUM, LJ_TISNUM);
1830 } 1856 }
1831 dasm_put(Dst, 7613); 1857 dasm_put(Dst, 7622);
1832 if (LJ_DUALNUM) { 1858 if (LJ_DUALNUM) {
1833 dasm_put(Dst, 7621, 1+1, LJ_TISNUM); 1859 dasm_put(Dst, 7630, 1+1, LJ_TISNUM);
1834 if (LJ_DUALNUM) { 1860 if (LJ_DUALNUM) {
1835 dasm_put(Dst, 6756); 1861 dasm_put(Dst, 6765);
1836 } else { 1862 } else {
1837 dasm_put(Dst, 2264); 1863 dasm_put(Dst, 2273);
1838 } 1864 }
1839 if (sse) { 1865 if (sse) {
1840 dasm_put(Dst, 6665); 1866 dasm_put(Dst, 6674);
1841 } else { 1867 } else {
1842 dasm_put(Dst, 7040); 1868 dasm_put(Dst, 7049);
1843 } 1869 }
1844 dasm_put(Dst, 7143, LJ_TISNUM); 1870 dasm_put(Dst, 7152, LJ_TISNUM);
1845 } else if (sse) { 1871 } else if (sse) {
1846 dasm_put(Dst, 7637, 2+1, LJ_TISNUM, LJ_TISNUM); 1872 dasm_put(Dst, 7646, 2+1, LJ_TISNUM, LJ_TISNUM);
1847 } else { 1873 } else {
1848 dasm_put(Dst, 7709, 2+1, LJ_TISNUM, LJ_TISNUM); 1874 dasm_put(Dst, 7718, 2+1, LJ_TISNUM, LJ_TISNUM);
1849 } 1875 }
1850 dasm_put(Dst, 7773); 1876 dasm_put(Dst, 7782);
1851 if (LJ_DUALNUM) { 1877 if (LJ_DUALNUM) {
1852 dasm_put(Dst, 7780, 1+1, LJ_TISNUM); 1878 dasm_put(Dst, 7789, 1+1, LJ_TISNUM);
1853 if (LJ_DUALNUM) { 1879 if (LJ_DUALNUM) {
1854 dasm_put(Dst, 6756); 1880 dasm_put(Dst, 6765);
1855 } else { 1881 } else {
1856 dasm_put(Dst, 2264); 1882 dasm_put(Dst, 2273);
1857 } 1883 }
1858 if (sse) { 1884 if (sse) {
1859 dasm_put(Dst, 6665); 1885 dasm_put(Dst, 6674);
1860 } else { 1886 } else {
1861 dasm_put(Dst, 7040); 1887 dasm_put(Dst, 7049);
1862 } 1888 }
1863 dasm_put(Dst, 7143, LJ_TISNUM); 1889 dasm_put(Dst, 7152, LJ_TISNUM);
1864 } else if (sse) { 1890 } else if (sse) {
1865 dasm_put(Dst, 7796, 2+1, LJ_TISNUM, LJ_TISNUM); 1891 dasm_put(Dst, 7805, 2+1, LJ_TISNUM, LJ_TISNUM);
1866 } else { 1892 } else {
1867 dasm_put(Dst, 7868, 2+1, LJ_TISNUM, LJ_TISNUM); 1893 dasm_put(Dst, 7877, 2+1, LJ_TISNUM, LJ_TISNUM);
1868 } 1894 }
1869 dasm_put(Dst, 7932, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1895 dasm_put(Dst, 7941, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1870 dasm_put(Dst, 8008, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1896 dasm_put(Dst, 8017, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1871 dasm_put(Dst, 8132, Dt1(->top), Dt1(->base), Dt1(->top)); 1897 dasm_put(Dst, 8141, Dt1(->top), Dt1(->base), Dt1(->top));
1872#if LJ_HASJIT 1898#if LJ_HASJIT
1873 dasm_put(Dst, 8170, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1899 dasm_put(Dst, 8179, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1874#endif 1900#endif
1875 dasm_put(Dst, 8201, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1901 dasm_put(Dst, 8210, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1876 dasm_put(Dst, 8252, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1902 dasm_put(Dst, 8261, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1877#if LJ_HASJIT 1903#if LJ_HASJIT
1878 dasm_put(Dst, 8318, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1904 dasm_put(Dst, 8327, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1879#endif 1905#endif
1880 dasm_put(Dst, 8364); 1906 dasm_put(Dst, 8373);
1881#if LJ_HASJIT 1907#if LJ_HASJIT
1882 dasm_put(Dst, 8196); 1908 dasm_put(Dst, 8205);
1883#endif 1909#endif
1884 dasm_put(Dst, 8371); 1910 dasm_put(Dst, 8380);
1885#if LJ_HASJIT 1911#if LJ_HASJIT
1886 dasm_put(Dst, 8374); 1912 dasm_put(Dst, 8383);
1887#endif 1913#endif
1888 dasm_put(Dst, 8384, Dt1(->base), Dt1(->top)); 1914 dasm_put(Dst, 8393, Dt1(->base), Dt1(->top));
1889#if LJ_HASJIT 1915#if LJ_HASJIT
1890 dasm_put(Dst, 8418); 1916 dasm_put(Dst, 8427);
1891#endif 1917#endif
1892 dasm_put(Dst, 8423, Dt1(->base), Dt1(->top)); 1918 dasm_put(Dst, 8432, Dt1(->base), Dt1(->top));
1893#if LJ_HASJIT 1919#if LJ_HASJIT
1894 dasm_put(Dst, 8452, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); 1920 dasm_put(Dst, 8461, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
1895#endif 1921#endif
1896 dasm_put(Dst, 8595); 1922 dasm_put(Dst, 8604);
1897#if LJ_HASJIT 1923#if LJ_HASJIT
1898 dasm_put(Dst, 8598, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1924 dasm_put(Dst, 8607, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1899#endif 1925#endif
1900 dasm_put(Dst, 8676); 1926 dasm_put(Dst, 8685);
1901 if (!sse) { 1927 if (!sse) {
1902 dasm_put(Dst, 8679); 1928 dasm_put(Dst, 8688);
1903 } 1929 }
1904 dasm_put(Dst, 8724); 1930 dasm_put(Dst, 8733);
1905 if (!sse) { 1931 if (!sse) {
1906 dasm_put(Dst, 8826); 1932 dasm_put(Dst, 8835);
1907 } 1933 }
1908 dasm_put(Dst, 8871); 1934 dasm_put(Dst, 8880);
1909 if (!sse) { 1935 if (!sse) {
1910 dasm_put(Dst, 8973); 1936 dasm_put(Dst, 8982);
1911 } 1937 }
1912 dasm_put(Dst, 9012); 1938 dasm_put(Dst, 9021);
1913 if (sse) { 1939 if (sse) {
1914 dasm_put(Dst, 9117); 1940 dasm_put(Dst, 9126);
1915 } else { 1941 } else {
1916 dasm_put(Dst, 9247); 1942 dasm_put(Dst, 9256);
1917 } 1943 }
1918 dasm_put(Dst, 9294); 1944 dasm_put(Dst, 9303);
1919 if (!sse) { 1945 if (!sse) {
1920 dasm_put(Dst, 9368); 1946 dasm_put(Dst, 9377);
1921 if (cmov) { 1947 if (cmov) {
1922 dasm_put(Dst, 9379); 1948 dasm_put(Dst, 9388);
1923 } else { 1949 } else {
1924 dasm_put(Dst, 9383); 1950 dasm_put(Dst, 9392);
1925 } 1951 }
1926 dasm_put(Dst, 9390); 1952 dasm_put(Dst, 9399);
1927 dasm_put(Dst, 9464); 1953 dasm_put(Dst, 9473);
1928 dasm_put(Dst, 9564); 1954 dasm_put(Dst, 9573);
1929 if (cmov) { 1955 if (cmov) {
1930 dasm_put(Dst, 9567); 1956 dasm_put(Dst, 9576);
1931 } else { 1957 } else {
1932 dasm_put(Dst, 9571); 1958 dasm_put(Dst, 9580);
1933 } 1959 }
1934 dasm_put(Dst, 9578); 1960 dasm_put(Dst, 9587);
1935 if (cmov) { 1961 if (cmov) {
1936 dasm_put(Dst, 9379); 1962 dasm_put(Dst, 9388);
1937 } else { 1963 } else {
1938 dasm_put(Dst, 9383); 1964 dasm_put(Dst, 9392);
1939 } 1965 }
1940 dasm_put(Dst, 9596); 1966 dasm_put(Dst, 9605);
1941 } else { 1967 } else {
1942 dasm_put(Dst, 9675); 1968 dasm_put(Dst, 9684);
1943 } 1969 }
1944 dasm_put(Dst, 9678); 1970 dasm_put(Dst, 9687);
1945 dasm_put(Dst, 9763); 1971 dasm_put(Dst, 9772);
1946 dasm_put(Dst, 9893); 1972 dasm_put(Dst, 9902);
1947 dasm_put(Dst, 10099); 1973 dasm_put(Dst, 10108);
1948#if LJ_HASJIT 1974#if LJ_HASJIT
1949 if (sse) { 1975 if (sse) {
1950 dasm_put(Dst, 10106); 1976 dasm_put(Dst, 10115);
1951 dasm_put(Dst, 10163); 1977 dasm_put(Dst, 10172);
1952 dasm_put(Dst, 10254); 1978 dasm_put(Dst, 10263);
1953 } else { 1979 } else {
1954 dasm_put(Dst, 10296); 1980 dasm_put(Dst, 10305);
1955 dasm_put(Dst, 10388); 1981 dasm_put(Dst, 10397);
1956 } 1982 }
1957 dasm_put(Dst, 10434); 1983 dasm_put(Dst, 10443);
1958#endif 1984#endif
1959 dasm_put(Dst, 10438); 1985 dasm_put(Dst, 10447);
1960 if (sse) { 1986 if (sse) {
1961 dasm_put(Dst, 10441); 1987 dasm_put(Dst, 10450);
1962 dasm_put(Dst, 10546); 1988 dasm_put(Dst, 10555);
1963 dasm_put(Dst, 10629); 1989 dasm_put(Dst, 10638);
1964 } else { 1990 } else {
1965 dasm_put(Dst, 10701); 1991 dasm_put(Dst, 10710);
1966 dasm_put(Dst, 10784); 1992 dasm_put(Dst, 10793);
1967 if (cmov) { 1993 if (cmov) {
1968 dasm_put(Dst, 10839); 1994 dasm_put(Dst, 10848);
1969 } else { 1995 } else {
1970 dasm_put(Dst, 10858); 1996 dasm_put(Dst, 10867);
1971 } 1997 }
1972 dasm_put(Dst, 10434); 1998 dasm_put(Dst, 10443);
1973 } 1999 }
1974 dasm_put(Dst, 10899); 2000 dasm_put(Dst, 10908);
1975#ifdef LUA_USE_ASSERT 2001#ifdef LUA_USE_ASSERT
1976 dasm_put(Dst, 10436); 2002 dasm_put(Dst, 10445);
2003#endif
2004 dasm_put(Dst, 10964);
2005#if LJ_HASFFI
2006#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
2007 dasm_put(Dst, 10968, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), CFRAME_SIZE+16, DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.stack), CFRAME_SIZE+12, CFRAME_SIZE+8, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc));
1977#endif 2008#endif
1978 dasm_put(Dst, 10955); 2009 dasm_put(Dst, 11078);
1979#if LJ_HASFFI 2010#if LJ_HASFFI
1980#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 2011 dasm_put(Dst, 11081, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.fpr[0].d), DtE(->cb.fpr[0].f), Dt1(->top));
1981 dasm_put(Dst, 10959, DtE(->spadj)); 2012#endif
2013 dasm_put(Dst, 11170);
2014#if LJ_HASFFI
2015#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
2016 dasm_put(Dst, 11173, DtF(->spadj));
1982#if LJ_TARGET_WINDOWS 2017#if LJ_TARGET_WINDOWS
1983 dasm_put(Dst, 10969, DtE(->spadj)); 2018 dasm_put(Dst, 11183, DtF(->spadj));
1984#endif 2019#endif
1985 dasm_put(Dst, 10973, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0])); 2020 dasm_put(Dst, 11187, DtF(->nsp), offsetof(CCallState, stack), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->func), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->resx87), DtF(->fpr[0].d[0]));
1986 dasm_put(Dst, 11043, DtE(->fpr[0].f[0])); 2021 dasm_put(Dst, 11257, DtF(->fpr[0].f[0]));
1987#if LJ_TARGET_WINDOWS 2022#if LJ_TARGET_WINDOWS
1988 dasm_put(Dst, 11049, DtE(->spadj)); 2023 dasm_put(Dst, 11263, DtF(->spadj));
1989#endif 2024#endif
1990 dasm_put(Dst, 11053); 2025 dasm_put(Dst, 11267);
1991#endif 2026#endif
1992} 2027}
1993 2028
@@ -1995,7 +2030,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1995static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 2030static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1996{ 2031{
1997 int vk = 0; 2032 int vk = 0;
1998 dasm_put(Dst, 11060, defop); 2033 dasm_put(Dst, 11274, defop);
1999 2034
2000 switch (op) { 2035 switch (op) {
2001 2036
@@ -2006,303 +2041,303 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2006 2041
2007 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 2042 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
2008 if (LJ_DUALNUM) { 2043 if (LJ_DUALNUM) {
2009 dasm_put(Dst, 11062, LJ_TISNUM, LJ_TISNUM); 2044 dasm_put(Dst, 11276, LJ_TISNUM, LJ_TISNUM);
2010 switch (op) { 2045 switch (op) {
2011 case BC_ISLT: 2046 case BC_ISLT:
2012 dasm_put(Dst, 11092); 2047 dasm_put(Dst, 11306);
2013 break; 2048 break;
2014 case BC_ISGE: 2049 case BC_ISGE:
2015 dasm_put(Dst, 11097); 2050 dasm_put(Dst, 11311);
2016 break; 2051 break;
2017 case BC_ISLE: 2052 case BC_ISLE:
2018 dasm_put(Dst, 11102); 2053 dasm_put(Dst, 11316);
2019 break; 2054 break;
2020 case BC_ISGT: 2055 case BC_ISGT:
2021 dasm_put(Dst, 11107); 2056 dasm_put(Dst, 11321);
2022 break; 2057 break;
2023 default: break; /* Shut up GCC. */ 2058 default: break; /* Shut up GCC. */
2024 } 2059 }
2025 dasm_put(Dst, 11112, -BCBIAS_J*4, LJ_TISNUM); 2060 dasm_put(Dst, 11326, -BCBIAS_J*4, LJ_TISNUM);
2026 if (sse) { 2061 if (sse) {
2027 dasm_put(Dst, 11165); 2062 dasm_put(Dst, 11379);
2028 } else { 2063 } else {
2029 dasm_put(Dst, 11176); 2064 dasm_put(Dst, 11390);
2030 } 2065 }
2031 dasm_put(Dst, 11187); 2066 dasm_put(Dst, 11401);
2032 if (sse) { 2067 if (sse) {
2033 dasm_put(Dst, 11194); 2068 dasm_put(Dst, 11408);
2034 switch (op) { 2069 switch (op) {
2035 case BC_ISLT: 2070 case BC_ISLT:
2036 dasm_put(Dst, 11214); 2071 dasm_put(Dst, 11428);
2037 break; 2072 break;
2038 case BC_ISGE: 2073 case BC_ISGE:
2039 dasm_put(Dst, 11219); 2074 dasm_put(Dst, 11433);
2040 break; 2075 break;
2041 case BC_ISLE: 2076 case BC_ISLE:
2042 dasm_put(Dst, 11224); 2077 dasm_put(Dst, 11438);
2043 break; 2078 break;
2044 case BC_ISGT: 2079 case BC_ISGT:
2045 dasm_put(Dst, 11229); 2080 dasm_put(Dst, 11443);
2046 break; 2081 break;
2047 default: break; /* Shut up GCC. */ 2082 default: break; /* Shut up GCC. */
2048 } 2083 }
2049 dasm_put(Dst, 11234); 2084 dasm_put(Dst, 11448);
2050 } else { 2085 } else {
2051 dasm_put(Dst, 11239); 2086 dasm_put(Dst, 11453);
2052 } 2087 }
2053 } else { 2088 } else {
2054 dasm_put(Dst, 11247, LJ_TISNUM, LJ_TISNUM); 2089 dasm_put(Dst, 11461, LJ_TISNUM, LJ_TISNUM);
2055 } 2090 }
2056 if (sse) { 2091 if (sse) {
2057 dasm_put(Dst, 11268); 2092 dasm_put(Dst, 11482);
2058 } else { 2093 } else {
2059 dasm_put(Dst, 11289); 2094 dasm_put(Dst, 11503);
2060 if (cmov) { 2095 if (cmov) {
2061 dasm_put(Dst, 3944); 2096 dasm_put(Dst, 3953);
2062 } else { 2097 } else {
2063 dasm_put(Dst, 3950); 2098 dasm_put(Dst, 3959);
2064 } 2099 }
2065 } 2100 }
2066 if (LJ_DUALNUM) { 2101 if (LJ_DUALNUM) {
2067 switch (op) { 2102 switch (op) {
2068 case BC_ISLT: 2103 case BC_ISLT:
2069 dasm_put(Dst, 11214); 2104 dasm_put(Dst, 11428);
2070 break; 2105 break;
2071 case BC_ISGE: 2106 case BC_ISGE:
2072 dasm_put(Dst, 11219); 2107 dasm_put(Dst, 11433);
2073 break; 2108 break;
2074 case BC_ISLE: 2109 case BC_ISLE:
2075 dasm_put(Dst, 11224); 2110 dasm_put(Dst, 11438);
2076 break; 2111 break;
2077 case BC_ISGT: 2112 case BC_ISGT:
2078 dasm_put(Dst, 11229); 2113 dasm_put(Dst, 11443);
2079 break; 2114 break;
2080 default: break; /* Shut up GCC. */ 2115 default: break; /* Shut up GCC. */
2081 } 2116 }
2082 dasm_put(Dst, 11234); 2117 dasm_put(Dst, 11448);
2083 } else { 2118 } else {
2084 switch (op) { 2119 switch (op) {
2085 case BC_ISLT: 2120 case BC_ISLT:
2086 dasm_put(Dst, 11305); 2121 dasm_put(Dst, 752);
2087 break; 2122 break;
2088 case BC_ISGE: 2123 case BC_ISGE:
2089 dasm_put(Dst, 11310); 2124 dasm_put(Dst, 11519);
2090 break; 2125 break;
2091 case BC_ISLE: 2126 case BC_ISLE:
2092 dasm_put(Dst, 11315); 2127 dasm_put(Dst, 11524);
2093 break; 2128 break;
2094 case BC_ISGT: 2129 case BC_ISGT:
2095 dasm_put(Dst, 11320); 2130 dasm_put(Dst, 11529);
2096 break; 2131 break;
2097 default: break; /* Shut up GCC. */ 2132 default: break; /* Shut up GCC. */
2098 } 2133 }
2099 dasm_put(Dst, 11325, -BCBIAS_J*4); 2134 dasm_put(Dst, 11534, -BCBIAS_J*4);
2100 } 2135 }
2101 break; 2136 break;
2102 2137
2103 case BC_ISEQV: case BC_ISNEV: 2138 case BC_ISEQV: case BC_ISNEV:
2104 vk = op == BC_ISEQV; 2139 vk = op == BC_ISEQV;
2105 dasm_put(Dst, 11356); 2140 dasm_put(Dst, 11565);
2106 if (LJ_DUALNUM) { 2141 if (LJ_DUALNUM) {
2107 dasm_put(Dst, 11364, LJ_TISNUM, LJ_TISNUM); 2142 dasm_put(Dst, 11573, LJ_TISNUM, LJ_TISNUM);
2108 if (vk) { 2143 if (vk) {
2109 dasm_put(Dst, 11389); 2144 dasm_put(Dst, 11598);
2110 } else { 2145 } else {
2111 dasm_put(Dst, 11394); 2146 dasm_put(Dst, 11603);
2112 } 2147 }
2113 dasm_put(Dst, 11399, -BCBIAS_J*4, LJ_TISNUM); 2148 dasm_put(Dst, 11608, -BCBIAS_J*4, LJ_TISNUM);
2114 if (sse) { 2149 if (sse) {
2115 dasm_put(Dst, 11450); 2150 dasm_put(Dst, 11659);
2116 } else { 2151 } else {
2117 dasm_put(Dst, 11457); 2152 dasm_put(Dst, 11666);
2118 } 2153 }
2119 dasm_put(Dst, 11461); 2154 dasm_put(Dst, 11670);
2120 if (sse) { 2155 if (sse) {
2121 dasm_put(Dst, 11472); 2156 dasm_put(Dst, 11681);
2122 } else { 2157 } else {
2123 dasm_put(Dst, 11484); 2158 dasm_put(Dst, 11693);
2124 } 2159 }
2125 dasm_put(Dst, 11491); 2160 dasm_put(Dst, 11700);
2126 } else { 2161 } else {
2127 dasm_put(Dst, 11496, LJ_TISNUM, LJ_TISNUM); 2162 dasm_put(Dst, 11705, LJ_TISNUM, LJ_TISNUM);
2128 } 2163 }
2129 if (sse) { 2164 if (sse) {
2130 dasm_put(Dst, 11515); 2165 dasm_put(Dst, 11724);
2131 } else { 2166 } else {
2132 dasm_put(Dst, 11533); 2167 dasm_put(Dst, 11742);
2133 if (cmov) { 2168 if (cmov) {
2134 dasm_put(Dst, 3944); 2169 dasm_put(Dst, 3953);
2135 } else { 2170 } else {
2136 dasm_put(Dst, 3950); 2171 dasm_put(Dst, 3959);
2137 } 2172 }
2138 } 2173 }
2139 iseqne_fp: 2174 iseqne_fp:
2140 if (vk) { 2175 if (vk) {
2141 dasm_put(Dst, 11546); 2176 dasm_put(Dst, 11755);
2142 } else { 2177 } else {
2143 dasm_put(Dst, 11555); 2178 dasm_put(Dst, 11764);
2144 } 2179 }
2145 iseqne_end: 2180 iseqne_end:
2146 if (vk) { 2181 if (vk) {
2147 dasm_put(Dst, 11564, -BCBIAS_J*4); 2182 dasm_put(Dst, 11773, -BCBIAS_J*4);
2148 if (!LJ_HASFFI) { 2183 if (!LJ_HASFFI) {
2149 dasm_put(Dst, 4844); 2184 dasm_put(Dst, 4853);
2150 } 2185 }
2151 } else { 2186 } else {
2152 if (!LJ_HASFFI) { 2187 if (!LJ_HASFFI) {
2153 dasm_put(Dst, 4844); 2188 dasm_put(Dst, 4853);
2154 } 2189 }
2155 dasm_put(Dst, 11579, -BCBIAS_J*4); 2190 dasm_put(Dst, 11788, -BCBIAS_J*4);
2156 } 2191 }
2157 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || 2192 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
2158 op == BC_ISEQN || op == BC_ISNEN)) { 2193 op == BC_ISEQN || op == BC_ISNEN)) {
2159 dasm_put(Dst, 11594); 2194 dasm_put(Dst, 11803);
2160 } else { 2195 } else {
2161 dasm_put(Dst, 11337); 2196 dasm_put(Dst, 11546);
2162 } 2197 }
2163 if (op == BC_ISEQV || op == BC_ISNEV) { 2198 if (op == BC_ISEQV || op == BC_ISNEV) {
2164 dasm_put(Dst, 11599); 2199 dasm_put(Dst, 11808);
2165 if (LJ_HASFFI) { 2200 if (LJ_HASFFI) {
2166 dasm_put(Dst, 11602, LJ_TCDATA, LJ_TCDATA); 2201 dasm_put(Dst, 11811, LJ_TCDATA, LJ_TCDATA);
2167 } 2202 }
2168 dasm_put(Dst, 11621, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 2203 dasm_put(Dst, 11830, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
2169 if (vk) { 2204 if (vk) {
2170 dasm_put(Dst, 11677); 2205 dasm_put(Dst, 11886);
2171 } else { 2206 } else {
2172 dasm_put(Dst, 11681); 2207 dasm_put(Dst, 11890);
2173 } 2208 }
2174 dasm_put(Dst, 11687); 2209 dasm_put(Dst, 11896);
2175 } else if (LJ_HASFFI) { 2210 } else if (LJ_HASFFI) {
2176 dasm_put(Dst, 11692, LJ_TCDATA); 2211 dasm_put(Dst, 11901, LJ_TCDATA);
2177 if (LJ_DUALNUM && vk) { 2212 if (LJ_DUALNUM && vk) {
2178 dasm_put(Dst, 11699); 2213 dasm_put(Dst, 11908);
2179 } else { 2214 } else {
2180 dasm_put(Dst, 11672); 2215 dasm_put(Dst, 11881);
2181 } 2216 }
2182 dasm_put(Dst, 11704); 2217 dasm_put(Dst, 11913);
2183 } 2218 }
2184 break; 2219 break;
2185 case BC_ISEQS: case BC_ISNES: 2220 case BC_ISEQS: case BC_ISNES:
2186 vk = op == BC_ISEQS; 2221 vk = op == BC_ISEQS;
2187 dasm_put(Dst, 11709, LJ_TSTR); 2222 dasm_put(Dst, 11918, LJ_TSTR);
2188 iseqne_test: 2223 iseqne_test:
2189 if (vk) { 2224 if (vk) {
2190 dasm_put(Dst, 11550); 2225 dasm_put(Dst, 11759);
2191 } else { 2226 } else {
2192 dasm_put(Dst, 748); 2227 dasm_put(Dst, 2971);
2193 } 2228 }
2194 goto iseqne_end; 2229 goto iseqne_end;
2195 case BC_ISEQN: case BC_ISNEN: 2230 case BC_ISEQN: case BC_ISNEN:
2196 vk = op == BC_ISEQN; 2231 vk = op == BC_ISEQN;
2197 dasm_put(Dst, 11734); 2232 dasm_put(Dst, 11943);
2198 if (LJ_DUALNUM) { 2233 if (LJ_DUALNUM) {
2199 dasm_put(Dst, 11742, LJ_TISNUM, LJ_TISNUM); 2234 dasm_put(Dst, 11951, LJ_TISNUM, LJ_TISNUM);
2200 if (vk) { 2235 if (vk) {
2201 dasm_put(Dst, 11389); 2236 dasm_put(Dst, 11598);
2202 } else { 2237 } else {
2203 dasm_put(Dst, 11394); 2238 dasm_put(Dst, 11603);
2204 } 2239 }
2205 dasm_put(Dst, 11767, -BCBIAS_J*4, LJ_TISNUM); 2240 dasm_put(Dst, 11976, -BCBIAS_J*4, LJ_TISNUM);
2206 if (sse) { 2241 if (sse) {
2207 dasm_put(Dst, 11814); 2242 dasm_put(Dst, 12023);
2208 } else { 2243 } else {
2209 dasm_put(Dst, 11821); 2244 dasm_put(Dst, 12030);
2210 } 2245 }
2211 dasm_put(Dst, 11825); 2246 dasm_put(Dst, 12034);
2212 if (sse) { 2247 if (sse) {
2213 dasm_put(Dst, 11832); 2248 dasm_put(Dst, 12041);
2214 } else { 2249 } else {
2215 dasm_put(Dst, 11844); 2250 dasm_put(Dst, 12053);
2216 } 2251 }
2217 dasm_put(Dst, 11491); 2252 dasm_put(Dst, 11700);
2218 } else { 2253 } else {
2219 dasm_put(Dst, 11851, LJ_TISNUM); 2254 dasm_put(Dst, 12060, LJ_TISNUM);
2220 } 2255 }
2221 if (sse) { 2256 if (sse) {
2222 dasm_put(Dst, 11860); 2257 dasm_put(Dst, 12069);
2223 } else { 2258 } else {
2224 dasm_put(Dst, 11878); 2259 dasm_put(Dst, 12087);
2225 if (cmov) { 2260 if (cmov) {
2226 dasm_put(Dst, 3944); 2261 dasm_put(Dst, 3953);
2227 } else { 2262 } else {
2228 dasm_put(Dst, 3950); 2263 dasm_put(Dst, 3959);
2229 } 2264 }
2230 } 2265 }
2231 goto iseqne_fp; 2266 goto iseqne_fp;
2232 case BC_ISEQP: case BC_ISNEP: 2267 case BC_ISEQP: case BC_ISNEP:
2233 vk = op == BC_ISEQP; 2268 vk = op == BC_ISEQP;
2234 dasm_put(Dst, 11891); 2269 dasm_put(Dst, 12100);
2235 if (!LJ_HASFFI) goto iseqne_test; 2270 if (!LJ_HASFFI) goto iseqne_test;
2236 if (vk) { 2271 if (vk) {
2237 dasm_put(Dst, 11904, -BCBIAS_J*4, LJ_TCDATA); 2272 dasm_put(Dst, 12113, -BCBIAS_J*4, LJ_TCDATA);
2238 } else { 2273 } else {
2239 dasm_put(Dst, 11953, LJ_TCDATA, -BCBIAS_J*4); 2274 dasm_put(Dst, 12162, LJ_TCDATA, -BCBIAS_J*4);
2240 } 2275 }
2241 break; 2276 break;
2242 2277
2243 /* -- Unary test and copy ops ------------------------------------------- */ 2278 /* -- Unary test and copy ops ------------------------------------------- */
2244 2279
2245 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2280 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
2246 dasm_put(Dst, 11996, LJ_TISTRUECOND); 2281 dasm_put(Dst, 12205, LJ_TISTRUECOND);
2247 if (op == BC_IST || op == BC_ISTC) { 2282 if (op == BC_IST || op == BC_ISTC) {
2248 dasm_put(Dst, 11320); 2283 dasm_put(Dst, 11529);
2249 } else { 2284 } else {
2250 dasm_put(Dst, 11315); 2285 dasm_put(Dst, 11524);
2251 } 2286 }
2252 if (op == BC_ISTC || op == BC_ISFC) { 2287 if (op == BC_ISTC || op == BC_ISFC) {
2253 dasm_put(Dst, 12008); 2288 dasm_put(Dst, 12217);
2254 } 2289 }
2255 dasm_put(Dst, 11325, -BCBIAS_J*4); 2290 dasm_put(Dst, 11534, -BCBIAS_J*4);
2256 break; 2291 break;
2257 2292
2258 /* -- Unary ops --------------------------------------------------------- */ 2293 /* -- Unary ops --------------------------------------------------------- */
2259 2294
2260 case BC_MOV: 2295 case BC_MOV:
2261 dasm_put(Dst, 12019); 2296 dasm_put(Dst, 12228);
2262 break; 2297 break;
2263 case BC_NOT: 2298 case BC_NOT:
2264 dasm_put(Dst, 12052, LJ_TISTRUECOND, LJ_TTRUE); 2299 dasm_put(Dst, 12261, LJ_TISTRUECOND, LJ_TTRUE);
2265 break; 2300 break;
2266 case BC_UNM: 2301 case BC_UNM:
2267 if (LJ_DUALNUM) { 2302 if (LJ_DUALNUM) {
2268 dasm_put(Dst, 12087, LJ_TISNUM, LJ_TISNUM); 2303 dasm_put(Dst, 12296, LJ_TISNUM, LJ_TISNUM);
2269 } else { 2304 } else {
2270 dasm_put(Dst, 12163, LJ_TISNUM); 2305 dasm_put(Dst, 12372, LJ_TISNUM);
2271 } 2306 }
2272 if (sse) { 2307 if (sse) {
2273 dasm_put(Dst, 12174); 2308 dasm_put(Dst, 12383);
2274 } else { 2309 } else {
2275 dasm_put(Dst, 12204); 2310 dasm_put(Dst, 12413);
2276 } 2311 }
2277 if (LJ_DUALNUM) { 2312 if (LJ_DUALNUM) {
2278 dasm_put(Dst, 11594); 2313 dasm_put(Dst, 11803);
2279 } else { 2314 } else {
2280 dasm_put(Dst, 11337); 2315 dasm_put(Dst, 11546);
2281 } 2316 }
2282 break; 2317 break;
2283 case BC_LEN: 2318 case BC_LEN:
2284 dasm_put(Dst, 12213, LJ_TSTR); 2319 dasm_put(Dst, 12422, LJ_TSTR);
2285 if (LJ_DUALNUM) { 2320 if (LJ_DUALNUM) {
2286 dasm_put(Dst, 12227, Dt5(->len), LJ_TISNUM); 2321 dasm_put(Dst, 12436, Dt5(->len), LJ_TISNUM);
2287 } else if (sse) { 2322 } else if (sse) {
2288 dasm_put(Dst, 12241, Dt5(->len)); 2323 dasm_put(Dst, 12450, Dt5(->len));
2289 } else { 2324 } else {
2290 dasm_put(Dst, 12259, Dt5(->len)); 2325 dasm_put(Dst, 12468, Dt5(->len));
2291 } 2326 }
2292 dasm_put(Dst, 12268, LJ_TTAB); 2327 dasm_put(Dst, 12477, LJ_TTAB);
2293#ifdef LUAJIT_ENABLE_LUA52COMPAT 2328#ifdef LUAJIT_ENABLE_LUA52COMPAT
2294 dasm_put(Dst, 12302, Dt6(->metatable)); 2329 dasm_put(Dst, 12511, Dt6(->metatable));
2295#endif 2330#endif
2296 dasm_put(Dst, 12316); 2331 dasm_put(Dst, 12525);
2297 if (LJ_DUALNUM) { 2332 if (LJ_DUALNUM) {
2298 } else if (sse) { 2333 } else if (sse) {
2299 dasm_put(Dst, 12325); 2334 dasm_put(Dst, 12534);
2300 } else { 2335 } else {
2301 dasm_put(Dst, 12331); 2336 dasm_put(Dst, 12540);
2302 } 2337 }
2303 dasm_put(Dst, 12338); 2338 dasm_put(Dst, 12547);
2304#ifdef LUAJIT_ENABLE_LUA52COMPAT 2339#ifdef LUAJIT_ENABLE_LUA52COMPAT
2305 dasm_put(Dst, 12351, Dt6(->nomm), 1<<MM_len); 2340 dasm_put(Dst, 12560, Dt6(->nomm), 1<<MM_len);
2306#endif 2341#endif
2307 break; 2342 break;
2308 2343
@@ -2311,620 +2346,620 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2311 2346
2312 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2347 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
2313 if (LJ_DUALNUM) { 2348 if (LJ_DUALNUM) {
2314 dasm_put(Dst, 12367); 2349 dasm_put(Dst, 12576);
2315 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2350 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2316 switch (vk) { 2351 switch (vk) {
2317 case 0: 2352 case 0:
2318 dasm_put(Dst, 12375, LJ_TISNUM, LJ_TISNUM); 2353 dasm_put(Dst, 12584, LJ_TISNUM, LJ_TISNUM);
2319 break; 2354 break;
2320 case 1: 2355 case 1:
2321 dasm_put(Dst, 12408, LJ_TISNUM, LJ_TISNUM); 2356 dasm_put(Dst, 12617, LJ_TISNUM, LJ_TISNUM);
2322 break; 2357 break;
2323 default: 2358 default:
2324 dasm_put(Dst, 12441, LJ_TISNUM, LJ_TISNUM); 2359 dasm_put(Dst, 12650, LJ_TISNUM, LJ_TISNUM);
2325 break; 2360 break;
2326 } 2361 }
2327 dasm_put(Dst, 12474, LJ_TISNUM); 2362 dasm_put(Dst, 12683, LJ_TISNUM);
2328 if (vk == 1) { 2363 if (vk == 1) {
2329 dasm_put(Dst, 12237); 2364 dasm_put(Dst, 12446);
2330 } else { 2365 } else {
2331 dasm_put(Dst, 12015); 2366 dasm_put(Dst, 12224);
2332 } 2367 }
2333 dasm_put(Dst, 11337); 2368 dasm_put(Dst, 11546);
2334 } else { 2369 } else {
2335 dasm_put(Dst, 12367); 2370 dasm_put(Dst, 12576);
2336 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2371 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2337 switch (vk) { 2372 switch (vk) {
2338 case 0: 2373 case 0:
2339 dasm_put(Dst, 12480, LJ_TISNUM); 2374 dasm_put(Dst, 12689, LJ_TISNUM);
2340 if (LJ_DUALNUM) { 2375 if (LJ_DUALNUM) {
2341 dasm_put(Dst, 12492, LJ_TISNUM); 2376 dasm_put(Dst, 12701, LJ_TISNUM);
2342 } 2377 }
2343 if (sse) { 2378 if (sse) {
2344 dasm_put(Dst, 12503); 2379 dasm_put(Dst, 12712);
2345 } else { 2380 } else {
2346 dasm_put(Dst, 12517); 2381 dasm_put(Dst, 12726);
2347 } 2382 }
2348 break; 2383 break;
2349 case 1: 2384 case 1:
2350 dasm_put(Dst, 12525, LJ_TISNUM); 2385 dasm_put(Dst, 12734, LJ_TISNUM);
2351 if (LJ_DUALNUM) { 2386 if (LJ_DUALNUM) {
2352 dasm_put(Dst, 12537, LJ_TISNUM); 2387 dasm_put(Dst, 12746, LJ_TISNUM);
2353 } 2388 }
2354 if (sse) { 2389 if (sse) {
2355 dasm_put(Dst, 12548); 2390 dasm_put(Dst, 12757);
2356 } else { 2391 } else {
2357 dasm_put(Dst, 12562); 2392 dasm_put(Dst, 12771);
2358 } 2393 }
2359 break; 2394 break;
2360 default: 2395 default:
2361 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2396 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2362 if (sse) { 2397 if (sse) {
2363 dasm_put(Dst, 12592); 2398 dasm_put(Dst, 12801);
2364 } else { 2399 } else {
2365 dasm_put(Dst, 12606); 2400 dasm_put(Dst, 12815);
2366 } 2401 }
2367 break; 2402 break;
2368 } 2403 }
2369 if (sse) { 2404 if (sse) {
2370 dasm_put(Dst, 12197); 2405 dasm_put(Dst, 12406);
2371 } else { 2406 } else {
2372 dasm_put(Dst, 12209); 2407 dasm_put(Dst, 12418);
2373 } 2408 }
2374 dasm_put(Dst, 11337); 2409 dasm_put(Dst, 11546);
2375 } 2410 }
2376 break; 2411 break;
2377 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2412 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
2378 if (LJ_DUALNUM) { 2413 if (LJ_DUALNUM) {
2379 dasm_put(Dst, 12367); 2414 dasm_put(Dst, 12576);
2380 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2415 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2381 switch (vk) { 2416 switch (vk) {
2382 case 0: 2417 case 0:
2383 dasm_put(Dst, 12614, LJ_TISNUM, LJ_TISNUM); 2418 dasm_put(Dst, 12823, LJ_TISNUM, LJ_TISNUM);
2384 break; 2419 break;
2385 case 1: 2420 case 1:
2386 dasm_put(Dst, 12647, LJ_TISNUM, LJ_TISNUM); 2421 dasm_put(Dst, 12856, LJ_TISNUM, LJ_TISNUM);
2387 break; 2422 break;
2388 default: 2423 default:
2389 dasm_put(Dst, 12680, LJ_TISNUM, LJ_TISNUM); 2424 dasm_put(Dst, 12889, LJ_TISNUM, LJ_TISNUM);
2390 break; 2425 break;
2391 } 2426 }
2392 dasm_put(Dst, 12474, LJ_TISNUM); 2427 dasm_put(Dst, 12683, LJ_TISNUM);
2393 if (vk == 1) { 2428 if (vk == 1) {
2394 dasm_put(Dst, 12237); 2429 dasm_put(Dst, 12446);
2395 } else { 2430 } else {
2396 dasm_put(Dst, 12015); 2431 dasm_put(Dst, 12224);
2397 } 2432 }
2398 dasm_put(Dst, 11337); 2433 dasm_put(Dst, 11546);
2399 } else { 2434 } else {
2400 dasm_put(Dst, 12367); 2435 dasm_put(Dst, 12576);
2401 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2436 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2402 switch (vk) { 2437 switch (vk) {
2403 case 0: 2438 case 0:
2404 dasm_put(Dst, 12480, LJ_TISNUM); 2439 dasm_put(Dst, 12689, LJ_TISNUM);
2405 if (LJ_DUALNUM) { 2440 if (LJ_DUALNUM) {
2406 dasm_put(Dst, 12492, LJ_TISNUM); 2441 dasm_put(Dst, 12701, LJ_TISNUM);
2407 } 2442 }
2408 if (sse) { 2443 if (sse) {
2409 dasm_put(Dst, 12713); 2444 dasm_put(Dst, 12922);
2410 } else { 2445 } else {
2411 dasm_put(Dst, 12727); 2446 dasm_put(Dst, 12936);
2412 } 2447 }
2413 break; 2448 break;
2414 case 1: 2449 case 1:
2415 dasm_put(Dst, 12525, LJ_TISNUM); 2450 dasm_put(Dst, 12734, LJ_TISNUM);
2416 if (LJ_DUALNUM) { 2451 if (LJ_DUALNUM) {
2417 dasm_put(Dst, 12537, LJ_TISNUM); 2452 dasm_put(Dst, 12746, LJ_TISNUM);
2418 } 2453 }
2419 if (sse) { 2454 if (sse) {
2420 dasm_put(Dst, 12735); 2455 dasm_put(Dst, 12944);
2421 } else { 2456 } else {
2422 dasm_put(Dst, 12749); 2457 dasm_put(Dst, 12958);
2423 } 2458 }
2424 break; 2459 break;
2425 default: 2460 default:
2426 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2461 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2427 if (sse) { 2462 if (sse) {
2428 dasm_put(Dst, 12757); 2463 dasm_put(Dst, 12966);
2429 } else { 2464 } else {
2430 dasm_put(Dst, 12771); 2465 dasm_put(Dst, 12980);
2431 } 2466 }
2432 break; 2467 break;
2433 } 2468 }
2434 if (sse) { 2469 if (sse) {
2435 dasm_put(Dst, 12197); 2470 dasm_put(Dst, 12406);
2436 } else { 2471 } else {
2437 dasm_put(Dst, 12209); 2472 dasm_put(Dst, 12418);
2438 } 2473 }
2439 dasm_put(Dst, 11337); 2474 dasm_put(Dst, 11546);
2440 } 2475 }
2441 break; 2476 break;
2442 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2477 case BC_MULVN: case BC_MULNV: case BC_MULVV:
2443 if (LJ_DUALNUM) { 2478 if (LJ_DUALNUM) {
2444 dasm_put(Dst, 12367); 2479 dasm_put(Dst, 12576);
2445 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2480 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2446 switch (vk) { 2481 switch (vk) {
2447 case 0: 2482 case 0:
2448 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM); 2483 dasm_put(Dst, 12988, LJ_TISNUM, LJ_TISNUM);
2449 break; 2484 break;
2450 case 1: 2485 case 1:
2451 dasm_put(Dst, 12813, LJ_TISNUM, LJ_TISNUM); 2486 dasm_put(Dst, 13022, LJ_TISNUM, LJ_TISNUM);
2452 break; 2487 break;
2453 default: 2488 default:
2454 dasm_put(Dst, 12847, LJ_TISNUM, LJ_TISNUM); 2489 dasm_put(Dst, 13056, LJ_TISNUM, LJ_TISNUM);
2455 break; 2490 break;
2456 } 2491 }
2457 dasm_put(Dst, 12474, LJ_TISNUM); 2492 dasm_put(Dst, 12683, LJ_TISNUM);
2458 if (vk == 1) { 2493 if (vk == 1) {
2459 dasm_put(Dst, 12237); 2494 dasm_put(Dst, 12446);
2460 } else { 2495 } else {
2461 dasm_put(Dst, 12015); 2496 dasm_put(Dst, 12224);
2462 } 2497 }
2463 dasm_put(Dst, 11337); 2498 dasm_put(Dst, 11546);
2464 } else { 2499 } else {
2465 dasm_put(Dst, 12367); 2500 dasm_put(Dst, 12576);
2466 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2501 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2467 switch (vk) { 2502 switch (vk) {
2468 case 0: 2503 case 0:
2469 dasm_put(Dst, 12480, LJ_TISNUM); 2504 dasm_put(Dst, 12689, LJ_TISNUM);
2470 if (LJ_DUALNUM) { 2505 if (LJ_DUALNUM) {
2471 dasm_put(Dst, 12492, LJ_TISNUM); 2506 dasm_put(Dst, 12701, LJ_TISNUM);
2472 } 2507 }
2473 if (sse) { 2508 if (sse) {
2474 dasm_put(Dst, 12881); 2509 dasm_put(Dst, 13090);
2475 } else { 2510 } else {
2476 dasm_put(Dst, 12895); 2511 dasm_put(Dst, 13104);
2477 } 2512 }
2478 break; 2513 break;
2479 case 1: 2514 case 1:
2480 dasm_put(Dst, 12525, LJ_TISNUM); 2515 dasm_put(Dst, 12734, LJ_TISNUM);
2481 if (LJ_DUALNUM) { 2516 if (LJ_DUALNUM) {
2482 dasm_put(Dst, 12537, LJ_TISNUM); 2517 dasm_put(Dst, 12746, LJ_TISNUM);
2483 } 2518 }
2484 if (sse) { 2519 if (sse) {
2485 dasm_put(Dst, 12903); 2520 dasm_put(Dst, 13112);
2486 } else { 2521 } else {
2487 dasm_put(Dst, 12917); 2522 dasm_put(Dst, 13126);
2488 } 2523 }
2489 break; 2524 break;
2490 default: 2525 default:
2491 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2526 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2492 if (sse) { 2527 if (sse) {
2493 dasm_put(Dst, 12925); 2528 dasm_put(Dst, 13134);
2494 } else { 2529 } else {
2495 dasm_put(Dst, 12939); 2530 dasm_put(Dst, 13148);
2496 } 2531 }
2497 break; 2532 break;
2498 } 2533 }
2499 if (sse) { 2534 if (sse) {
2500 dasm_put(Dst, 12197); 2535 dasm_put(Dst, 12406);
2501 } else { 2536 } else {
2502 dasm_put(Dst, 12209); 2537 dasm_put(Dst, 12418);
2503 } 2538 }
2504 dasm_put(Dst, 11337); 2539 dasm_put(Dst, 11546);
2505 } 2540 }
2506 break; 2541 break;
2507 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2542 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
2508 dasm_put(Dst, 12367); 2543 dasm_put(Dst, 12576);
2509 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2544 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2510 switch (vk) { 2545 switch (vk) {
2511 case 0: 2546 case 0:
2512 dasm_put(Dst, 12480, LJ_TISNUM); 2547 dasm_put(Dst, 12689, LJ_TISNUM);
2513 if (LJ_DUALNUM) { 2548 if (LJ_DUALNUM) {
2514 dasm_put(Dst, 12492, LJ_TISNUM); 2549 dasm_put(Dst, 12701, LJ_TISNUM);
2515 } 2550 }
2516 if (sse) { 2551 if (sse) {
2517 dasm_put(Dst, 12947); 2552 dasm_put(Dst, 13156);
2518 } else { 2553 } else {
2519 dasm_put(Dst, 12961); 2554 dasm_put(Dst, 13170);
2520 } 2555 }
2521 break; 2556 break;
2522 case 1: 2557 case 1:
2523 dasm_put(Dst, 12525, LJ_TISNUM); 2558 dasm_put(Dst, 12734, LJ_TISNUM);
2524 if (LJ_DUALNUM) { 2559 if (LJ_DUALNUM) {
2525 dasm_put(Dst, 12537, LJ_TISNUM); 2560 dasm_put(Dst, 12746, LJ_TISNUM);
2526 } 2561 }
2527 if (sse) { 2562 if (sse) {
2528 dasm_put(Dst, 12969); 2563 dasm_put(Dst, 13178);
2529 } else { 2564 } else {
2530 dasm_put(Dst, 12983); 2565 dasm_put(Dst, 13192);
2531 } 2566 }
2532 break; 2567 break;
2533 default: 2568 default:
2534 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2569 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2535 if (sse) { 2570 if (sse) {
2536 dasm_put(Dst, 12991); 2571 dasm_put(Dst, 13200);
2537 } else { 2572 } else {
2538 dasm_put(Dst, 13005); 2573 dasm_put(Dst, 13214);
2539 } 2574 }
2540 break; 2575 break;
2541 } 2576 }
2542 if (sse) { 2577 if (sse) {
2543 dasm_put(Dst, 12197); 2578 dasm_put(Dst, 12406);
2544 } else { 2579 } else {
2545 dasm_put(Dst, 12209); 2580 dasm_put(Dst, 12418);
2546 } 2581 }
2547 dasm_put(Dst, 11337); 2582 dasm_put(Dst, 11546);
2548 break; 2583 break;
2549 case BC_MODVN: 2584 case BC_MODVN:
2550 dasm_put(Dst, 12367); 2585 dasm_put(Dst, 12576);
2551 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2586 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2552 switch (vk) { 2587 switch (vk) {
2553 case 0: 2588 case 0:
2554 dasm_put(Dst, 12480, LJ_TISNUM); 2589 dasm_put(Dst, 12689, LJ_TISNUM);
2555 if (LJ_DUALNUM) { 2590 if (LJ_DUALNUM) {
2556 dasm_put(Dst, 12492, LJ_TISNUM); 2591 dasm_put(Dst, 12701, LJ_TISNUM);
2557 } 2592 }
2558 if (sse) { 2593 if (sse) {
2559 dasm_put(Dst, 13013); 2594 dasm_put(Dst, 13222);
2560 } else { 2595 } else {
2561 dasm_put(Dst, 13027); 2596 dasm_put(Dst, 13236);
2562 } 2597 }
2563 break; 2598 break;
2564 case 1: 2599 case 1:
2565 dasm_put(Dst, 12525, LJ_TISNUM); 2600 dasm_put(Dst, 12734, LJ_TISNUM);
2566 if (LJ_DUALNUM) { 2601 if (LJ_DUALNUM) {
2567 dasm_put(Dst, 12537, LJ_TISNUM); 2602 dasm_put(Dst, 12746, LJ_TISNUM);
2568 } 2603 }
2569 if (sse) { 2604 if (sse) {
2570 dasm_put(Dst, 13035); 2605 dasm_put(Dst, 13244);
2571 } else { 2606 } else {
2572 dasm_put(Dst, 13049); 2607 dasm_put(Dst, 13258);
2573 } 2608 }
2574 break; 2609 break;
2575 default: 2610 default:
2576 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2611 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2577 if (sse) { 2612 if (sse) {
2578 dasm_put(Dst, 13057); 2613 dasm_put(Dst, 13266);
2579 } else { 2614 } else {
2580 dasm_put(Dst, 13071); 2615 dasm_put(Dst, 13280);
2581 } 2616 }
2582 break; 2617 break;
2583 } 2618 }
2584 dasm_put(Dst, 13079); 2619 dasm_put(Dst, 13288);
2585 if (sse) { 2620 if (sse) {
2586 dasm_put(Dst, 12197); 2621 dasm_put(Dst, 12406);
2587 } else { 2622 } else {
2588 dasm_put(Dst, 12209); 2623 dasm_put(Dst, 12418);
2589 } 2624 }
2590 dasm_put(Dst, 11337); 2625 dasm_put(Dst, 11546);
2591 break; 2626 break;
2592 case BC_MODNV: case BC_MODVV: 2627 case BC_MODNV: case BC_MODVV:
2593 dasm_put(Dst, 12367); 2628 dasm_put(Dst, 12576);
2594 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2629 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2595 switch (vk) { 2630 switch (vk) {
2596 case 0: 2631 case 0:
2597 dasm_put(Dst, 12480, LJ_TISNUM); 2632 dasm_put(Dst, 12689, LJ_TISNUM);
2598 if (LJ_DUALNUM) { 2633 if (LJ_DUALNUM) {
2599 dasm_put(Dst, 12492, LJ_TISNUM); 2634 dasm_put(Dst, 12701, LJ_TISNUM);
2600 } 2635 }
2601 if (sse) { 2636 if (sse) {
2602 dasm_put(Dst, 13013); 2637 dasm_put(Dst, 13222);
2603 } else { 2638 } else {
2604 dasm_put(Dst, 13027); 2639 dasm_put(Dst, 13236);
2605 } 2640 }
2606 break; 2641 break;
2607 case 1: 2642 case 1:
2608 dasm_put(Dst, 12525, LJ_TISNUM); 2643 dasm_put(Dst, 12734, LJ_TISNUM);
2609 if (LJ_DUALNUM) { 2644 if (LJ_DUALNUM) {
2610 dasm_put(Dst, 12537, LJ_TISNUM); 2645 dasm_put(Dst, 12746, LJ_TISNUM);
2611 } 2646 }
2612 if (sse) { 2647 if (sse) {
2613 dasm_put(Dst, 13035); 2648 dasm_put(Dst, 13244);
2614 } else { 2649 } else {
2615 dasm_put(Dst, 13049); 2650 dasm_put(Dst, 13258);
2616 } 2651 }
2617 break; 2652 break;
2618 default: 2653 default:
2619 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2654 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2620 if (sse) { 2655 if (sse) {
2621 dasm_put(Dst, 13057); 2656 dasm_put(Dst, 13266);
2622 } else { 2657 } else {
2623 dasm_put(Dst, 13071); 2658 dasm_put(Dst, 13280);
2624 } 2659 }
2625 break; 2660 break;
2626 } 2661 }
2627 dasm_put(Dst, 13085); 2662 dasm_put(Dst, 13294);
2628 break; 2663 break;
2629 case BC_POW: 2664 case BC_POW:
2630 dasm_put(Dst, 12367); 2665 dasm_put(Dst, 12576);
2631 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2666 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2632 switch (vk) { 2667 switch (vk) {
2633 case 0: 2668 case 0:
2634 dasm_put(Dst, 12480, LJ_TISNUM); 2669 dasm_put(Dst, 12689, LJ_TISNUM);
2635 if (LJ_DUALNUM) { 2670 if (LJ_DUALNUM) {
2636 dasm_put(Dst, 12492, LJ_TISNUM); 2671 dasm_put(Dst, 12701, LJ_TISNUM);
2637 } 2672 }
2638 if (sse) { 2673 if (sse) {
2639 dasm_put(Dst, 13013); 2674 dasm_put(Dst, 13222);
2640 } else { 2675 } else {
2641 dasm_put(Dst, 13027); 2676 dasm_put(Dst, 13236);
2642 } 2677 }
2643 break; 2678 break;
2644 case 1: 2679 case 1:
2645 dasm_put(Dst, 12525, LJ_TISNUM); 2680 dasm_put(Dst, 12734, LJ_TISNUM);
2646 if (LJ_DUALNUM) { 2681 if (LJ_DUALNUM) {
2647 dasm_put(Dst, 12537, LJ_TISNUM); 2682 dasm_put(Dst, 12746, LJ_TISNUM);
2648 } 2683 }
2649 if (sse) { 2684 if (sse) {
2650 dasm_put(Dst, 13035); 2685 dasm_put(Dst, 13244);
2651 } else { 2686 } else {
2652 dasm_put(Dst, 13049); 2687 dasm_put(Dst, 13258);
2653 } 2688 }
2654 break; 2689 break;
2655 default: 2690 default:
2656 dasm_put(Dst, 12570, LJ_TISNUM, LJ_TISNUM); 2691 dasm_put(Dst, 12779, LJ_TISNUM, LJ_TISNUM);
2657 if (sse) { 2692 if (sse) {
2658 dasm_put(Dst, 13057); 2693 dasm_put(Dst, 13266);
2659 } else { 2694 } else {
2660 dasm_put(Dst, 13071); 2695 dasm_put(Dst, 13280);
2661 } 2696 }
2662 break; 2697 break;
2663 } 2698 }
2664 dasm_put(Dst, 13090); 2699 dasm_put(Dst, 13299);
2665 if (sse) { 2700 if (sse) {
2666 dasm_put(Dst, 12197); 2701 dasm_put(Dst, 12406);
2667 } else { 2702 } else {
2668 dasm_put(Dst, 12209); 2703 dasm_put(Dst, 12418);
2669 } 2704 }
2670 dasm_put(Dst, 11337); 2705 dasm_put(Dst, 11546);
2671 break; 2706 break;
2672 2707
2673 case BC_CAT: 2708 case BC_CAT:
2674 dasm_put(Dst, 13094, Dt1(->base), Dt1(->base)); 2709 dasm_put(Dst, 13303, Dt1(->base), Dt1(->base));
2675 break; 2710 break;
2676 2711
2677 /* -- Constant ops ------------------------------------------------------ */ 2712 /* -- Constant ops ------------------------------------------------------ */
2678 2713
2679 case BC_KSTR: 2714 case BC_KSTR:
2680 dasm_put(Dst, 13188, LJ_TSTR); 2715 dasm_put(Dst, 13397, LJ_TSTR);
2681 break; 2716 break;
2682 case BC_KCDATA: 2717 case BC_KCDATA:
2683#if LJ_HASFFI 2718#if LJ_HASFFI
2684 dasm_put(Dst, 13188, LJ_TCDATA); 2719 dasm_put(Dst, 13397, LJ_TCDATA);
2685#endif 2720#endif
2686 break; 2721 break;
2687 case BC_KSHORT: 2722 case BC_KSHORT:
2688 if (LJ_DUALNUM) { 2723 if (LJ_DUALNUM) {
2689 dasm_put(Dst, 13221, LJ_TISNUM); 2724 dasm_put(Dst, 13430, LJ_TISNUM);
2690 } else if (sse) { 2725 } else if (sse) {
2691 dasm_put(Dst, 13233); 2726 dasm_put(Dst, 13442);
2692 } else { 2727 } else {
2693 dasm_put(Dst, 13248); 2728 dasm_put(Dst, 13457);
2694 } 2729 }
2695 dasm_put(Dst, 11337); 2730 dasm_put(Dst, 11546);
2696 break; 2731 break;
2697 case BC_KNUM: 2732 case BC_KNUM:
2698 if (sse) { 2733 if (sse) {
2699 dasm_put(Dst, 13256); 2734 dasm_put(Dst, 13465);
2700 } else { 2735 } else {
2701 dasm_put(Dst, 13269); 2736 dasm_put(Dst, 13478);
2702 } 2737 }
2703 dasm_put(Dst, 11337); 2738 dasm_put(Dst, 11546);
2704 break; 2739 break;
2705 case BC_KPRI: 2740 case BC_KPRI:
2706 dasm_put(Dst, 13276); 2741 dasm_put(Dst, 13485);
2707 break; 2742 break;
2708 case BC_KNIL: 2743 case BC_KNIL:
2709 dasm_put(Dst, 13302, LJ_TNIL); 2744 dasm_put(Dst, 13511, LJ_TNIL);
2710 break; 2745 break;
2711 2746
2712 /* -- Upvalue and function ops ------------------------------------------ */ 2747 /* -- Upvalue and function ops ------------------------------------------ */
2713 2748
2714 case BC_UGET: 2749 case BC_UGET:
2715 dasm_put(Dst, 13348, offsetof(GCfuncL, uvptr), DtA(->v)); 2750 dasm_put(Dst, 13557, offsetof(GCfuncL, uvptr), DtA(->v));
2716 break; 2751 break;
2717 case BC_USETV: 2752 case BC_USETV:
2718#define TV2MARKOFS \ 2753#define TV2MARKOFS \
2719 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2754 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2720 dasm_put(Dst, 13392, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 2755 dasm_put(Dst, 13601, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
2721 dasm_put(Dst, 13482); 2756 dasm_put(Dst, 13691);
2722 break; 2757 break;
2723#undef TV2MARKOFS 2758#undef TV2MARKOFS
2724 case BC_USETS: 2759 case BC_USETS:
2725 dasm_put(Dst, 13494, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2760 dasm_put(Dst, 13703, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2726 break; 2761 break;
2727 case BC_USETN: 2762 case BC_USETN:
2728 dasm_put(Dst, 13585); 2763 dasm_put(Dst, 13794);
2729 if (sse) { 2764 if (sse) {
2730 dasm_put(Dst, 13590); 2765 dasm_put(Dst, 13799);
2731 } else { 2766 } else {
2732 dasm_put(Dst, 11847); 2767 dasm_put(Dst, 12056);
2733 } 2768 }
2734 dasm_put(Dst, 13597, offsetof(GCfuncL, uvptr), DtA(->v)); 2769 dasm_put(Dst, 13806, offsetof(GCfuncL, uvptr), DtA(->v));
2735 if (sse) { 2770 if (sse) {
2736 dasm_put(Dst, 13606); 2771 dasm_put(Dst, 13815);
2737 } else { 2772 } else {
2738 dasm_put(Dst, 13612); 2773 dasm_put(Dst, 13821);
2739 } 2774 }
2740 dasm_put(Dst, 11337); 2775 dasm_put(Dst, 11546);
2741 break; 2776 break;
2742 case BC_USETP: 2777 case BC_USETP:
2743 dasm_put(Dst, 13615, offsetof(GCfuncL, uvptr), DtA(->v)); 2778 dasm_put(Dst, 13824, offsetof(GCfuncL, uvptr), DtA(->v));
2744 break; 2779 break;
2745 case BC_UCLO: 2780 case BC_UCLO:
2746 dasm_put(Dst, 13652, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2781 dasm_put(Dst, 13861, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2747 break; 2782 break;
2748 2783
2749 case BC_FNEW: 2784 case BC_FNEW:
2750 dasm_put(Dst, 13706, Dt1(->base), Dt1(->base), LJ_TFUNC); 2785 dasm_put(Dst, 13915, Dt1(->base), Dt1(->base), LJ_TFUNC);
2751 break; 2786 break;
2752 2787
2753 /* -- Table ops --------------------------------------------------------- */ 2788 /* -- Table ops --------------------------------------------------------- */
2754 2789
2755 case BC_TNEW: 2790 case BC_TNEW:
2756 dasm_put(Dst, 13777, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2791 dasm_put(Dst, 13986, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2757 break; 2792 break;
2758 case BC_TDUP: 2793 case BC_TDUP:
2759 dasm_put(Dst, 13903, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2794 dasm_put(Dst, 14112, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2760 break; 2795 break;
2761 2796
2762 case BC_GGET: 2797 case BC_GGET:
2763 dasm_put(Dst, 13995, Dt7(->env)); 2798 dasm_put(Dst, 14204, Dt7(->env));
2764 break; 2799 break;
2765 case BC_GSET: 2800 case BC_GSET:
2766 dasm_put(Dst, 14013, Dt7(->env)); 2801 dasm_put(Dst, 14222, Dt7(->env));
2767 break; 2802 break;
2768 2803
2769 case BC_TGETV: 2804 case BC_TGETV:
2770 dasm_put(Dst, 14031, LJ_TTAB); 2805 dasm_put(Dst, 14240, LJ_TTAB);
2771 if (LJ_DUALNUM) { 2806 if (LJ_DUALNUM) {
2772 dasm_put(Dst, 14054, LJ_TISNUM); 2807 dasm_put(Dst, 14263, LJ_TISNUM);
2773 } else { 2808 } else {
2774 dasm_put(Dst, 14068, LJ_TISNUM); 2809 dasm_put(Dst, 14277, LJ_TISNUM);
2775 if (sse) { 2810 if (sse) {
2776 dasm_put(Dst, 14079); 2811 dasm_put(Dst, 14288);
2777 } else { 2812 } else {
2778 dasm_put(Dst, 14100); 2813 dasm_put(Dst, 14309);
2779 if (cmov) { 2814 if (cmov) {
2780 dasm_put(Dst, 3944); 2815 dasm_put(Dst, 3953);
2781 } else { 2816 } else {
2782 dasm_put(Dst, 3950); 2817 dasm_put(Dst, 3959);
2783 } 2818 }
2784 dasm_put(Dst, 2680); 2819 dasm_put(Dst, 2689);
2785 } 2820 }
2786 dasm_put(Dst, 14110); 2821 dasm_put(Dst, 14319);
2787 } 2822 }
2788 dasm_put(Dst, 14115, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL); 2823 dasm_put(Dst, 14324, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2789 dasm_put(Dst, 14210, LJ_TSTR); 2824 dasm_put(Dst, 14419, LJ_TSTR);
2790 break; 2825 break;
2791 case BC_TGETS: 2826 case BC_TGETS:
2792 dasm_put(Dst, 14228, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2827 dasm_put(Dst, 14437, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2793 dasm_put(Dst, 14316, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2828 dasm_put(Dst, 14525, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2794 break; 2829 break;
2795 case BC_TGETB: 2830 case BC_TGETB:
2796 dasm_put(Dst, 14386, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2831 dasm_put(Dst, 14595, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2797 dasm_put(Dst, 14485, LJ_TNIL); 2832 dasm_put(Dst, 14694, LJ_TNIL);
2798 break; 2833 break;
2799 2834
2800 case BC_TSETV: 2835 case BC_TSETV:
2801 dasm_put(Dst, 14502, LJ_TTAB); 2836 dasm_put(Dst, 14711, LJ_TTAB);
2802 if (LJ_DUALNUM) { 2837 if (LJ_DUALNUM) {
2803 dasm_put(Dst, 14054, LJ_TISNUM); 2838 dasm_put(Dst, 14263, LJ_TISNUM);
2804 } else { 2839 } else {
2805 dasm_put(Dst, 14068, LJ_TISNUM); 2840 dasm_put(Dst, 14277, LJ_TISNUM);
2806 if (sse) { 2841 if (sse) {
2807 dasm_put(Dst, 14079); 2842 dasm_put(Dst, 14288);
2808 } else { 2843 } else {
2809 dasm_put(Dst, 14100); 2844 dasm_put(Dst, 14309);
2810 if (cmov) { 2845 if (cmov) {
2811 dasm_put(Dst, 3944); 2846 dasm_put(Dst, 3953);
2812 } else { 2847 } else {
2813 dasm_put(Dst, 3950); 2848 dasm_put(Dst, 3959);
2814 } 2849 }
2815 dasm_put(Dst, 2680); 2850 dasm_put(Dst, 2689);
2816 } 2851 }
2817 dasm_put(Dst, 14525); 2852 dasm_put(Dst, 14734);
2818 } 2853 }
2819 dasm_put(Dst, 14530, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 2854 dasm_put(Dst, 14739, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2820 dasm_put(Dst, 14614, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2855 dasm_put(Dst, 14823, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2821 break; 2856 break;
2822 case BC_TSETS: 2857 case BC_TSETS:
2823 dasm_put(Dst, 14671, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2858 dasm_put(Dst, 14880, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2824 dasm_put(Dst, 14746, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2859 dasm_put(Dst, 14955, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2825 dasm_put(Dst, 14838, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2860 dasm_put(Dst, 15047, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2826 break; 2861 break;
2827 case BC_TSETB: 2862 case BC_TSETB:
2828 dasm_put(Dst, 14934, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2863 dasm_put(Dst, 15143, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2829 dasm_put(Dst, 15032, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2864 dasm_put(Dst, 15241, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2830 break; 2865 break;
2831 2866
2832 case BC_TSETM: 2867 case BC_TSETM:
2833 dasm_put(Dst, 15078, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2868 dasm_put(Dst, 15287, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2834 dasm_put(Dst, 15227, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2869 dasm_put(Dst, 15436, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2835 break; 2870 break;
2836 2871
2837 /* -- Calls and vararg handling ----------------------------------------- */ 2872 /* -- Calls and vararg handling ----------------------------------------- */
2838 2873
2839 case BC_CALL: case BC_CALLM: 2874 case BC_CALL: case BC_CALLM:
2840 dasm_put(Dst, 12371); 2875 dasm_put(Dst, 12580);
2841 if (op == BC_CALLM) { 2876 if (op == BC_CALLM) {
2842 dasm_put(Dst, 15245); 2877 dasm_put(Dst, 15454);
2843 } 2878 }
2844 dasm_put(Dst, 15250, LJ_TFUNC, Dt7(->pc)); 2879 dasm_put(Dst, 15459, LJ_TFUNC, Dt7(->pc));
2845 break; 2880 break;
2846 2881
2847 case BC_CALLMT: 2882 case BC_CALLMT:
2848 dasm_put(Dst, 15245); 2883 dasm_put(Dst, 15454);
2849 break; 2884 break;
2850 case BC_CALLT: 2885 case BC_CALLT:
2851 dasm_put(Dst, 15291, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2886 dasm_put(Dst, 15500, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2852 dasm_put(Dst, 15409, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2887 dasm_put(Dst, 15618, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2853 break; 2888 break;
2854 2889
2855 case BC_ITERC: 2890 case BC_ITERC:
2856 dasm_put(Dst, 15479, LJ_TFUNC, 2+1, Dt7(->pc)); 2891 dasm_put(Dst, 15688, LJ_TFUNC, 2+1, Dt7(->pc));
2857 break; 2892 break;
2858 2893
2859 case BC_ITERN: 2894 case BC_ITERN:
2860#if LJ_HASJIT 2895#if LJ_HASJIT
2861#endif 2896#endif
2862 dasm_put(Dst, 15559, Dt6(->asize), Dt6(->array), LJ_TNIL); 2897 dasm_put(Dst, 15768, Dt6(->asize), Dt6(->array), LJ_TNIL);
2863 if (LJ_DUALNUM) { 2898 if (LJ_DUALNUM) {
2864 dasm_put(Dst, 12232, LJ_TISNUM); 2899 dasm_put(Dst, 12441, LJ_TISNUM);
2865 } else if (sse) { 2900 } else if (sse) {
2866 dasm_put(Dst, 12325); 2901 dasm_put(Dst, 12534);
2867 } else { 2902 } else {
2868 dasm_put(Dst, 15605); 2903 dasm_put(Dst, 15814);
2869 } 2904 }
2870 dasm_put(Dst, 15611); 2905 dasm_put(Dst, 15820);
2871 if (LJ_DUALNUM) { 2906 if (LJ_DUALNUM) {
2872 } else if (sse) { 2907 } else if (sse) {
2873 dasm_put(Dst, 12197); 2908 dasm_put(Dst, 12406);
2874 } else { 2909 } else {
2875 dasm_put(Dst, 12209); 2910 dasm_put(Dst, 12418);
2876 } 2911 }
2877 dasm_put(Dst, 15630, -BCBIAS_J*4); 2912 dasm_put(Dst, 15839, -BCBIAS_J*4);
2878 if (!LJ_DUALNUM && !sse) { 2913 if (!LJ_DUALNUM && !sse) {
2879 dasm_put(Dst, 15681); 2914 dasm_put(Dst, 15890);
2880 } 2915 }
2881 dasm_put(Dst, 15687, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); 2916 dasm_put(Dst, 15896, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
2882 dasm_put(Dst, 15762); 2917 dasm_put(Dst, 15971);
2883 break; 2918 break;
2884 2919
2885 case BC_ISNEXT: 2920 case BC_ISNEXT:
2886 dasm_put(Dst, 15770, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2921 dasm_put(Dst, 15979, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2887 break; 2922 break;
2888 2923
2889 case BC_VARG: 2924 case BC_VARG:
2890 dasm_put(Dst, 15869, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2925 dasm_put(Dst, 16078, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2891 dasm_put(Dst, 16033, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2926 dasm_put(Dst, 16242, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2892 break; 2927 break;
2893 2928
2894 /* -- Returns ----------------------------------------------------------- */ 2929 /* -- Returns ----------------------------------------------------------- */
2895 2930
2896 case BC_RETM: 2931 case BC_RETM:
2897 dasm_put(Dst, 15245); 2932 dasm_put(Dst, 15454);
2898 break; 2933 break;
2899 2934
2900 case BC_RET: case BC_RET0: case BC_RET1: 2935 case BC_RET: case BC_RET0: case BC_RET1:
2901 if (op != BC_RET0) { 2936 if (op != BC_RET0) {
2902 dasm_put(Dst, 16104); 2937 dasm_put(Dst, 16313);
2903 } 2938 }
2904 dasm_put(Dst, 16108, FRAME_TYPE); 2939 dasm_put(Dst, 16317, FRAME_TYPE);
2905 switch (op) { 2940 switch (op) {
2906 case BC_RET: 2941 case BC_RET:
2907 dasm_put(Dst, 16127); 2942 dasm_put(Dst, 16336);
2908 break; 2943 break;
2909 case BC_RET1: 2944 case BC_RET1:
2910 dasm_put(Dst, 16185); 2945 dasm_put(Dst, 16394);
2911 /* fallthrough */ 2946 /* fallthrough */
2912 case BC_RET0: 2947 case BC_RET0:
2913 dasm_put(Dst, 16201); 2948 dasm_put(Dst, 16410);
2914 default: 2949 default:
2915 break; 2950 break;
2916 } 2951 }
2917 dasm_put(Dst, 16212, Dt7(->pc), PC2PROTO(k)); 2952 dasm_put(Dst, 16421, Dt7(->pc), PC2PROTO(k));
2918 if (op == BC_RET) { 2953 if (op == BC_RET) {
2919 dasm_put(Dst, 16254, LJ_TNIL); 2954 dasm_put(Dst, 16463, LJ_TNIL);
2920 } else { 2955 } else {
2921 dasm_put(Dst, 16263, LJ_TNIL); 2956 dasm_put(Dst, 16472, LJ_TNIL);
2922 } 2957 }
2923 dasm_put(Dst, 16270, -FRAME_VARG, FRAME_TYPEP); 2958 dasm_put(Dst, 16479, -FRAME_VARG, FRAME_TYPEP);
2924 if (op != BC_RET0) { 2959 if (op != BC_RET0) {
2925 dasm_put(Dst, 16294); 2960 dasm_put(Dst, 16503);
2926 } 2961 }
2927 dasm_put(Dst, 4928); 2962 dasm_put(Dst, 4937);
2928 break; 2963 break;
2929 2964
2930 /* -- Loops and branches ------------------------------------------------ */ 2965 /* -- Loops and branches ------------------------------------------------ */
@@ -2932,7 +2967,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2932 2967
2933 case BC_FORL: 2968 case BC_FORL:
2934#if LJ_HASJIT 2969#if LJ_HASJIT
2935 dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 2970 dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
2936#endif 2971#endif
2937 break; 2972 break;
2938 2973
@@ -2944,111 +2979,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2944 case BC_FORI: 2979 case BC_FORI:
2945 case BC_IFORL: 2980 case BC_IFORL:
2946 vk = (op == BC_IFORL || op == BC_JFORL); 2981 vk = (op == BC_IFORL || op == BC_JFORL);
2947 dasm_put(Dst, 16319); 2982 dasm_put(Dst, 16528);
2948 if (LJ_DUALNUM) { 2983 if (LJ_DUALNUM) {
2949 dasm_put(Dst, 16323, LJ_TISNUM); 2984 dasm_put(Dst, 16532, LJ_TISNUM);
2950 if (!vk) { 2985 if (!vk) {
2951 dasm_put(Dst, 16333, LJ_TISNUM, LJ_TISNUM); 2986 dasm_put(Dst, 16542, LJ_TISNUM, LJ_TISNUM);
2952 } else { 2987 } else {
2953#ifdef LUA_USE_ASSERT 2988#ifdef LUA_USE_ASSERT
2954 dasm_put(Dst, 16362, LJ_TISNUM, LJ_TISNUM); 2989 dasm_put(Dst, 16571, LJ_TISNUM, LJ_TISNUM);
2955#endif 2990#endif
2956 dasm_put(Dst, 16381); 2991 dasm_put(Dst, 16590);
2957 } 2992 }
2958 dasm_put(Dst, 16400, LJ_TISNUM); 2993 dasm_put(Dst, 16609, LJ_TISNUM);
2959 if (op == BC_FORI) { 2994 if (op == BC_FORI) {
2960 dasm_put(Dst, 16411, -BCBIAS_J*4); 2995 dasm_put(Dst, 16620, -BCBIAS_J*4);
2961 } else if (op == BC_JFORI) { 2996 } else if (op == BC_JFORI) {
2962 dasm_put(Dst, 16425, -BCBIAS_J*4, BC_JLOOP); 2997 dasm_put(Dst, 16634, -BCBIAS_J*4, BC_JLOOP);
2963 } else if (op == BC_IFORL) { 2998 } else if (op == BC_IFORL) {
2964 dasm_put(Dst, 16443, -BCBIAS_J*4); 2999 dasm_put(Dst, 16652, -BCBIAS_J*4);
2965 } else { 3000 } else {
2966 dasm_put(Dst, 16435, BC_JLOOP); 3001 dasm_put(Dst, 16644, BC_JLOOP);
2967 } 3002 }
2968 dasm_put(Dst, 16457); 3003 dasm_put(Dst, 16666);
2969 if (vk) { 3004 if (vk) {
2970 dasm_put(Dst, 16480); 3005 dasm_put(Dst, 16689);
2971 } 3006 }
2972 dasm_put(Dst, 16400, LJ_TISNUM); 3007 dasm_put(Dst, 16609, LJ_TISNUM);
2973 if (op == BC_FORI) { 3008 if (op == BC_FORI) {
2974 dasm_put(Dst, 16489); 3009 dasm_put(Dst, 16698);
2975 } else if (op == BC_JFORI) { 3010 } else if (op == BC_JFORI) {
2976 dasm_put(Dst, 16494, -BCBIAS_J*4, BC_JLOOP); 3011 dasm_put(Dst, 16703, -BCBIAS_J*4, BC_JLOOP);
2977 } else if (op == BC_IFORL) { 3012 } else if (op == BC_IFORL) {
2978 dasm_put(Dst, 16508); 3013 dasm_put(Dst, 16717);
2979 } else { 3014 } else {
2980 dasm_put(Dst, 16504, BC_JLOOP); 3015 dasm_put(Dst, 16713, BC_JLOOP);
2981 } 3016 }
2982 dasm_put(Dst, 16513); 3017 dasm_put(Dst, 16722);
2983 } else if (!vk) { 3018 } else if (!vk) {
2984 dasm_put(Dst, 16520, LJ_TISNUM); 3019 dasm_put(Dst, 16729, LJ_TISNUM);
2985 } 3020 }
2986 if (!vk) { 3021 if (!vk) {
2987 dasm_put(Dst, 16526, LJ_TISNUM); 3022 dasm_put(Dst, 16735, LJ_TISNUM);
2988 } else { 3023 } else {
2989#ifdef LUA_USE_ASSERT 3024#ifdef LUA_USE_ASSERT
2990 dasm_put(Dst, 16540, LJ_TISNUM, LJ_TISNUM); 3025 dasm_put(Dst, 16749, LJ_TISNUM, LJ_TISNUM);
2991#endif 3026#endif
2992 } 3027 }
2993 dasm_put(Dst, 16559); 3028 dasm_put(Dst, 16768);
2994 if (!vk) { 3029 if (!vk) {
2995 dasm_put(Dst, 16563, LJ_TISNUM); 3030 dasm_put(Dst, 16772, LJ_TISNUM);
2996 } 3031 }
2997 if (sse) { 3032 if (sse) {
2998 dasm_put(Dst, 16572); 3033 dasm_put(Dst, 16781);
2999 if (vk) { 3034 if (vk) {
3000 dasm_put(Dst, 16584); 3035 dasm_put(Dst, 16793);
3001 } else { 3036 } else {
3002 dasm_put(Dst, 16603); 3037 dasm_put(Dst, 16812);
3003 } 3038 }
3004 dasm_put(Dst, 16608); 3039 dasm_put(Dst, 16817);
3005 } else { 3040 } else {
3006 dasm_put(Dst, 16621); 3041 dasm_put(Dst, 16830);
3007 if (vk) { 3042 if (vk) {
3008 dasm_put(Dst, 16627); 3043 dasm_put(Dst, 16836);
3009 } else { 3044 } else {
3010 dasm_put(Dst, 16643); 3045 dasm_put(Dst, 16852);
3011 } 3046 }
3012 dasm_put(Dst, 16651); 3047 dasm_put(Dst, 16860);
3013 if (cmov) { 3048 if (cmov) {
3014 dasm_put(Dst, 3944); 3049 dasm_put(Dst, 3953);
3015 } else { 3050 } else {
3016 dasm_put(Dst, 3950); 3051 dasm_put(Dst, 3959);
3017 } 3052 }
3018 if (!cmov) { 3053 if (!cmov) {
3019 dasm_put(Dst, 16656); 3054 dasm_put(Dst, 16865);
3020 } 3055 }
3021 } 3056 }
3022 if (op == BC_FORI) { 3057 if (op == BC_FORI) {
3023 if (LJ_DUALNUM) { 3058 if (LJ_DUALNUM) {
3024 dasm_put(Dst, 16662); 3059 dasm_put(Dst, 16871);
3025 } else { 3060 } else {
3026 dasm_put(Dst, 16667, -BCBIAS_J*4); 3061 dasm_put(Dst, 16876, -BCBIAS_J*4);
3027 } 3062 }
3028 } else if (op == BC_JFORI) { 3063 } else if (op == BC_JFORI) {
3029 dasm_put(Dst, 16677, -BCBIAS_J*4, BC_JLOOP); 3064 dasm_put(Dst, 16886, -BCBIAS_J*4, BC_JLOOP);
3030 } else if (op == BC_IFORL) { 3065 } else if (op == BC_IFORL) {
3031 if (LJ_DUALNUM) { 3066 if (LJ_DUALNUM) {
3032 dasm_put(Dst, 16691); 3067 dasm_put(Dst, 16900);
3033 } else { 3068 } else {
3034 dasm_put(Dst, 16696, -BCBIAS_J*4); 3069 dasm_put(Dst, 16905, -BCBIAS_J*4);
3035 } 3070 }
3036 } else { 3071 } else {
3037 dasm_put(Dst, 16687, BC_JLOOP); 3072 dasm_put(Dst, 16896, BC_JLOOP);
3038 } 3073 }
3039 if (LJ_DUALNUM) { 3074 if (LJ_DUALNUM) {
3040 dasm_put(Dst, 11234); 3075 dasm_put(Dst, 11448);
3041 } else { 3076 } else {
3042 dasm_put(Dst, 11975); 3077 dasm_put(Dst, 12184);
3043 } 3078 }
3044 if (sse) { 3079 if (sse) {
3045 dasm_put(Dst, 16706); 3080 dasm_put(Dst, 16915);
3046 } 3081 }
3047 break; 3082 break;
3048 3083
3049 case BC_ITERL: 3084 case BC_ITERL:
3050#if LJ_HASJIT 3085#if LJ_HASJIT
3051 dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 3086 dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
3052#endif 3087#endif
3053 break; 3088 break;
3054 3089
@@ -3057,33 +3092,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3057 break; 3092 break;
3058#endif 3093#endif
3059 case BC_IITERL: 3094 case BC_IITERL:
3060 dasm_put(Dst, 16717, LJ_TNIL); 3095 dasm_put(Dst, 16926, LJ_TNIL);
3061 if (op == BC_JITERL) { 3096 if (op == BC_JITERL) {
3062 dasm_put(Dst, 16732, BC_JLOOP); 3097 dasm_put(Dst, 16941, BC_JLOOP);
3063 } else { 3098 } else {
3064 dasm_put(Dst, 16746, -BCBIAS_J*4); 3099 dasm_put(Dst, 16955, -BCBIAS_J*4);
3065 } 3100 }
3066 dasm_put(Dst, 11335); 3101 dasm_put(Dst, 11544);
3067 break; 3102 break;
3068 3103
3069 case BC_LOOP: 3104 case BC_LOOP:
3070#if LJ_HASJIT 3105#if LJ_HASJIT
3071 dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); 3106 dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
3072#endif 3107#endif
3073 break; 3108 break;
3074 3109
3075 case BC_ILOOP: 3110 case BC_ILOOP:
3076 dasm_put(Dst, 11337); 3111 dasm_put(Dst, 11546);
3077 break; 3112 break;
3078 3113
3079 case BC_JLOOP: 3114 case BC_JLOOP:
3080#if LJ_HASJIT 3115#if LJ_HASJIT
3081 dasm_put(Dst, 16762, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 3116 dasm_put(Dst, 16971, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
3082#endif 3117#endif
3083 break; 3118 break;
3084 3119
3085 case BC_JMP: 3120 case BC_JMP:
3086 dasm_put(Dst, 16785, -BCBIAS_J*4); 3121 dasm_put(Dst, 16994, -BCBIAS_J*4);
3087 break; 3122 break;
3088 3123
3089 /* -- Function headers -------------------------------------------------- */ 3124 /* -- Function headers -------------------------------------------------- */
@@ -3097,7 +3132,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3097 3132
3098 case BC_FUNCF: 3133 case BC_FUNCF:
3099#if LJ_HASJIT 3134#if LJ_HASJIT
3100 dasm_put(Dst, 16809, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); 3135 dasm_put(Dst, 17018, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
3101#endif 3136#endif
3102 case BC_FUNCV: /* NYI: compiled vararg functions. */ 3137 case BC_FUNCV: /* NYI: compiled vararg functions. */
3103 break; 3138 break;
@@ -3107,47 +3142,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3107 break; 3142 break;
3108#endif 3143#endif
3109 case BC_IFUNCF: 3144 case BC_IFUNCF:
3110 dasm_put(Dst, 16830, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 3145 dasm_put(Dst, 17039, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
3111 if (op == BC_JFUNCF) { 3146 if (op == BC_JFUNCF) {
3112 dasm_put(Dst, 16860, BC_JLOOP); 3147 dasm_put(Dst, 17069, BC_JLOOP);
3113 } else { 3148 } else {
3114 dasm_put(Dst, 11337); 3149 dasm_put(Dst, 11546);
3115 } 3150 }
3116 dasm_put(Dst, 16869, LJ_TNIL); 3151 dasm_put(Dst, 17078, LJ_TNIL);
3117 break; 3152 break;
3118 3153
3119 case BC_JFUNCV: 3154 case BC_JFUNCV:
3120#if !LJ_HASJIT 3155#if !LJ_HASJIT
3121 break; 3156 break;
3122#endif 3157#endif
3123 dasm_put(Dst, 10436); 3158 dasm_put(Dst, 10445);
3124 break; /* NYI: compiled vararg functions. */ 3159 break; /* NYI: compiled vararg functions. */
3125 3160
3126 case BC_IFUNCV: 3161 case BC_IFUNCV:
3127 dasm_put(Dst, 16891, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 3162 dasm_put(Dst, 17100, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
3128 if (op == BC_JFUNCV) { 3163 if (op == BC_JFUNCV) {
3129 dasm_put(Dst, 16860, BC_JLOOP); 3164 dasm_put(Dst, 17069, BC_JLOOP);
3130 } else { 3165 } else {
3131 dasm_put(Dst, 16982, -4+PC2PROTO(k)); 3166 dasm_put(Dst, 17191, -4+PC2PROTO(k));
3132 } 3167 }
3133 dasm_put(Dst, 17004, LJ_TNIL); 3168 dasm_put(Dst, 17213, LJ_TNIL);
3134 break; 3169 break;
3135 3170
3136 case BC_FUNCC: 3171 case BC_FUNCC:
3137 case BC_FUNCCW: 3172 case BC_FUNCCW:
3138 dasm_put(Dst, 17026, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 3173 dasm_put(Dst, 17235, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
3139 if (op == BC_FUNCC) { 3174 if (op == BC_FUNCC) {
3140 dasm_put(Dst, 17055); 3175 dasm_put(Dst, 17264);
3141 } else { 3176 } else {
3142 dasm_put(Dst, 17059); 3177 dasm_put(Dst, 17268);
3143 } 3178 }
3144 dasm_put(Dst, 17067, DISPATCH_GL(vmstate), ~LJ_VMST_C); 3179 dasm_put(Dst, 17276, DISPATCH_GL(vmstate), ~LJ_VMST_C);
3145 if (op == BC_FUNCC) { 3180 if (op == BC_FUNCC) {
3146 dasm_put(Dst, 17076); 3181 dasm_put(Dst, 17285);
3147 } else { 3182 } else {
3148 dasm_put(Dst, 17080, DISPATCH_GL(wrapf)); 3183 dasm_put(Dst, 17289, DISPATCH_GL(wrapf));
3149 } 3184 }
3150 dasm_put(Dst, 17085, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 3185 dasm_put(Dst, 17294, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
3151 break; 3186 break;
3152 3187
3153 /* ---------------------------------------------------------------------- */ 3188 /* ---------------------------------------------------------------------- */
@@ -3175,7 +3210,7 @@ static int build_backend(BuildCtx *ctx)
3175 3210
3176 build_subroutines(ctx, cmov, sse); 3211 build_subroutines(ctx, cmov, sse);
3177 3212
3178 dasm_put(Dst, 17110); 3213 dasm_put(Dst, 17319);
3179 for (op = 0; op < BC__MAX; op++) 3214 for (op = 0; op < BC__MAX; op++)
3180 build_ins(ctx, (BCOp)op, op, cmov, sse); 3215 build_ins(ctx, (BCOp)op, op, cmov, sse);
3181 3216
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index af500118..850805e6 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -27,6 +27,7 @@
27#include "lj_cconv.h" 27#include "lj_cconv.h"
28#include "lj_carith.h" 28#include "lj_carith.h"
29#include "lj_ccall.h" 29#include "lj_ccall.h"
30#include "lj_ccallback.h"
30#include "lj_clib.h" 31#include "lj_clib.h"
31#include "lj_ff.h" 32#include "lj_ff.h"
32#include "lj_lib.h" 33#include "lj_lib.h"
@@ -384,6 +385,50 @@ LJLIB_CF(ffi_clib___gc)
384 385
385#include "lj_libdef.h" 386#include "lj_libdef.h"
386 387
388/* -- Callback function metamethods --------------------------------------- */
389
390#define LJLIB_MODULE_ffi_callback
391
392static int ffi_callback_set(lua_State *L, GCfunc *fn)
393{
394 GCcdata *cd = ffi_checkcdata(L, 1);
395 CTState *cts = ctype_cts(L);
396 CType *ct = ctype_raw(cts, cd->typeid);
397 if (ctype_isptr(ct->info) && (LJ_32 || ct->size == 8)) {
398 MSize slot = lj_ccallback_ptr2slot(cts, *(void **)cdataptr(cd));
399 if (slot < cts->cb.sizeid && cts->cb.cbid[slot] != 0) {
400 GCtab *t = cts->miscmap;
401 TValue *tv = lj_tab_setint(L, t, (int32_t)slot);
402 if (fn) {
403 setfuncV(L, tv, fn);
404 lj_gc_anybarriert(L, t);
405 } else {
406 setnilV(tv);
407 cts->cb.cbid[slot] = 0;
408 cts->cb.topid = slot < cts->cb.topid ? slot : cts->cb.topid;
409 }
410 return 0;
411 }
412 }
413 lj_err_caller(L, LJ_ERR_FFI_BADCBACK);
414 return 0;
415}
416
417LJLIB_CF(ffi_callback_free)
418{
419 return ffi_callback_set(L, NULL);
420}
421
422LJLIB_CF(ffi_callback_set)
423{
424 GCfunc *fn = lj_lib_checkfunc(L, 2);
425 return ffi_callback_set(L, fn);
426}
427
428LJLIB_PUSH(top-1) LJLIB_SET(__index)
429
430#include "lj_libdef.h"
431
387/* -- FFI library functions ----------------------------------------------- */ 432/* -- FFI library functions ----------------------------------------------- */
388 433
389#define LJLIB_MODULE_ffi 434#define LJLIB_MODULE_ffi
@@ -428,7 +473,7 @@ LJLIB_CF(ffi_new) LJLIB_REC(.)
428 o, (MSize)(L->top - o)); /* Initialize cdata. */ 473 o, (MSize)(L->top - o)); /* Initialize cdata. */
429 if (ctype_isstruct(ct->info)) { 474 if (ctype_isstruct(ct->info)) {
430 /* Handle ctype __gc metamethod. Use the fast lookup here. */ 475 /* Handle ctype __gc metamethod. Use the fast lookup here. */
431 cTValue *tv = lj_tab_getint(cts->metatype, (int32_t)id); 476 cTValue *tv = lj_tab_getinth(cts->miscmap, -(int32_t)id);
432 if (tv && tvistab(tv) && (tv = lj_meta_fast(L, tabV(tv), MM_gc))) { 477 if (tv && tvistab(tv) && (tv = lj_meta_fast(L, tabV(tv), MM_gc))) {
433 GCtab *t = cts->finalizer; 478 GCtab *t = cts->finalizer;
434 if (gcref(t->metatable)) { 479 if (gcref(t->metatable)) {
@@ -650,21 +695,21 @@ LJLIB_CF(ffi_abi) LJLIB_REC(.)
650 695
651#undef H_ 696#undef H_
652 697
653LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to metatype table. */ 698LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to miscmap table. */
654 699
655LJLIB_CF(ffi_metatype) 700LJLIB_CF(ffi_metatype)
656{ 701{
657 CTState *cts = ctype_cts(L); 702 CTState *cts = ctype_cts(L);
658 CTypeID id = ffi_checkctype(L, cts); 703 CTypeID id = ffi_checkctype(L, cts);
659 GCtab *mt = lj_lib_checktab(L, 2); 704 GCtab *mt = lj_lib_checktab(L, 2);
660 GCtab *t = cts->metatype; 705 GCtab *t = cts->miscmap;
661 CType *ct = ctype_get(cts, id); /* Only allow raw types. */ 706 CType *ct = ctype_get(cts, id); /* Only allow raw types. */
662 TValue *tv; 707 TValue *tv;
663 GCcdata *cd; 708 GCcdata *cd;
664 if (!(ctype_isstruct(ct->info) || ctype_iscomplex(ct->info) || 709 if (!(ctype_isstruct(ct->info) || ctype_iscomplex(ct->info) ||
665 ctype_isvector(ct->info))) 710 ctype_isvector(ct->info)))
666 lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE); 711 lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE);
667 tv = lj_tab_setint(L, t, (int32_t)id); 712 tv = lj_tab_setinth(L, t, -(int32_t)id);
668 if (!tvisnil(tv)) 713 if (!tvisnil(tv))
669 lj_err_caller(L, LJ_ERR_PROTMT); 714 lj_err_caller(L, LJ_ERR_PROTMT);
670 settabV(L, tv, mt); 715 settabV(L, tv, mt);
@@ -745,12 +790,16 @@ static void ffi_register_module(lua_State *L)
745LUALIB_API int luaopen_ffi(lua_State *L) 790LUALIB_API int luaopen_ffi(lua_State *L)
746{ 791{
747 CTState *cts = lj_ctype_init(L); 792 CTState *cts = lj_ctype_init(L);
748 settabV(L, L->top++, (cts->metatype = lj_tab_new(L, 0, 0))); 793 settabV(L, L->top++, (cts->miscmap = lj_tab_new(L, 0, 1)));
749 cts->finalizer = ffi_finalizer(L); 794 cts->finalizer = ffi_finalizer(L);
750 LJ_LIB_REG(L, NULL, ffi_meta); 795 LJ_LIB_REG(L, NULL, ffi_meta);
751 /* NOBARRIER: basemt is a GC root. */ 796 /* NOBARRIER: basemt is a GC root. */
752 setgcref(basemt_it(G(L), LJ_TCDATA), obj2gco(tabV(L->top-1))); 797 setgcref(basemt_it(G(L), LJ_TCDATA), obj2gco(tabV(L->top-1)));
753 LJ_LIB_REG(L, NULL, ffi_clib); 798 LJ_LIB_REG(L, NULL, ffi_clib);
799 LJ_LIB_REG(L, NULL, ffi_callback);
800 /* NOBARRIER: the key is new and lj_tab_newkey() handles the barrier. */
801 settabV(L, lj_tab_setstr(L, cts->miscmap, &cts->g->strempty), tabV(L->top-1));
802 L->top--;
754 lj_clib_default(L, tabV(L->top-1)); /* Create ffi.C default namespace. */ 803 lj_clib_default(L, tabV(L->top-1)); /* Create ffi.C default namespace. */
755 lua_pushliteral(L, LJ_OS_NAME); 804 lua_pushliteral(L, LJ_OS_NAME);
756 lua_pushliteral(L, LJ_ARCH_NAME); 805 lua_pushliteral(L, LJ_ARCH_NAME);
diff --git a/src/lj_ccall.c b/src/lj_ccall.c
index c1c04b6f..5ed1bf5b 100644
--- a/src/lj_ccall.c
+++ b/src/lj_ccall.c
@@ -10,6 +10,7 @@
10#include "lj_gc.h" 10#include "lj_gc.h"
11#include "lj_err.h" 11#include "lj_err.h"
12#include "lj_str.h" 12#include "lj_str.h"
13#include "lj_tab.h"
13#include "lj_ctype.h" 14#include "lj_ctype.h"
14#include "lj_cconv.h" 15#include "lj_cconv.h"
15#include "lj_cdata.h" 16#include "lj_cdata.h"
@@ -290,7 +291,7 @@
290 } 291 }
291 292
292#else 293#else
293#error "missing calling convention definitions for this architecture" 294#error "Missing calling convention definitions for this architecture"
294#endif 295#endif
295 296
296#ifndef CCALL_HANDLE_STRUCTRET2 297#ifndef CCALL_HANDLE_STRUCTRET2
@@ -649,7 +650,13 @@ int lj_ccall_func(lua_State *L, GCcdata *cd)
649 int gcsteps, ret; 650 int gcsteps, ret;
650 cc.func = (void (*)(void))cdata_getptr(cdataptr(cd), sz); 651 cc.func = (void (*)(void))cdata_getptr(cdataptr(cd), sz);
651 gcsteps = ccall_set_args(L, cts, ct, &cc); 652 gcsteps = ccall_set_args(L, cts, ct, &cc);
653 cts->cb.slot = ~0u;
652 lj_vm_ffi_call(&cc); 654 lj_vm_ffi_call(&cc);
655 if (cts->cb.slot != ~0u) { /* Blacklist function that called a callback. */
656 TValue tv;
657 setlightudV(&tv, (void *)cc.func);
658 setboolV(lj_tab_set(L, cts->miscmap, &tv), 1);
659 }
653 gcsteps += ccall_get_results(L, cts, ct, &cc, &ret); 660 gcsteps += ccall_get_results(L, cts, ct, &cc, &ret);
654#if LJ_TARGET_X86 && LJ_ABI_WIN 661#if LJ_TARGET_X86 && LJ_ABI_WIN
655 /* Automatically detect __stdcall and fix up C function declaration. */ 662 /* Automatically detect __stdcall and fix up C function declaration. */
diff --git a/src/lj_ccall.h b/src/lj_ccall.h
index 14f61924..0641625f 100644
--- a/src/lj_ccall.h
+++ b/src/lj_ccall.h
@@ -81,7 +81,7 @@ typedef double FPRArg;
81typedef intptr_t GPRArg; 81typedef intptr_t GPRArg;
82 82
83#else 83#else
84#error "missing calling convention definitions for this architecture" 84#error "Missing calling convention definitions for this architecture"
85#endif 85#endif
86 86
87#ifndef CCALL_SPS_EXTRA 87#ifndef CCALL_SPS_EXTRA
@@ -99,6 +99,10 @@ typedef intptr_t GPRArg;
99#define CCALL_NUM_FPR \ 99#define CCALL_NUM_FPR \
100 (CCALL_NARG_FPR > CCALL_NRET_FPR ? CCALL_NARG_FPR : CCALL_NRET_FPR) 100 (CCALL_NARG_FPR > CCALL_NRET_FPR ? CCALL_NARG_FPR : CCALL_NRET_FPR)
101 101
102/* Check against constants in lj_ctype.h. */
103LJ_STATIC_ASSERT(CCALL_NUM_GPR <= CCALL_MAX_GPR);
104LJ_STATIC_ASSERT(CCALL_NUM_FPR <= CCALL_MAX_FPR);
105
102#define CCALL_MAXSTACK 32 106#define CCALL_MAXSTACK 32
103 107
104/* -- C call state -------------------------------------------------------- */ 108/* -- C call state -------------------------------------------------------- */
diff --git a/src/lj_ccallback.c b/src/lj_ccallback.c
new file mode 100644
index 00000000..8aab7f36
--- /dev/null
+++ b/src/lj_ccallback.c
@@ -0,0 +1,461 @@
1/*
2** FFI C callback handling.
3** Copyright (C) 2005-2011 Mike Pall. See Copyright Notice in luajit.h
4*/
5
6#include "lj_obj.h"
7
8#if LJ_HASFFI
9
10#include "lj_gc.h"
11#include "lj_err.h"
12#include "lj_tab.h"
13#include "lj_state.h"
14#include "lj_frame.h"
15#include "lj_ctype.h"
16#include "lj_cconv.h"
17#include "lj_ccall.h"
18#include "lj_ccallback.h"
19#include "lj_target.h"
20#include "lj_vm.h"
21
22/* -- Target-specific handling of callback slots -------------------------- */
23
24#define CALLBACK_MCODE_SIZE (LJ_PAGESIZE * LJ_NUM_CBPAGE)
25
26#if LJ_TARGET_X86ORX64
27
28#define CALLBACK_MCODE_HEAD (LJ_64 ? 8 : 0)
29#define CALLBACK_MCODE_GROUP (-2+1+2+5+(LJ_64 ? 6 : 5))
30
31#define CALLBACK_SLOT2OFS(slot) \
32 (CALLBACK_MCODE_HEAD + CALLBACK_MCODE_GROUP*((slot)/32) + 4*(slot))
33
34static MSize CALLBACK_OFS2SLOT(MSize ofs)
35{
36 MSize group;
37 ofs -= CALLBACK_MCODE_HEAD;
38 group = ofs / (32*4 + CALLBACK_MCODE_GROUP);
39 return (ofs % (32*4 + CALLBACK_MCODE_GROUP))/4 + group*32;
40}
41
42#define CALLBACK_MAX_SLOT \
43 (((CALLBACK_MCODE_SIZE-CALLBACK_MCODE_HEAD)/(CALLBACK_MCODE_GROUP+4*32))*32)
44
45#else
46
47/* Missing support for this architecture. */
48#define CALLBACK_SLOT2OFS(slot) (0*(slot))
49#define CALLBACK_OFS2SLOT(ofs) (0*(ofs))
50#define CALLBACK_MAX_SLOT 0
51
52#endif
53
54/* Convert callback slot number to callback function pointer. */
55static void *callback_slot2ptr(CTState *cts, MSize slot)
56{
57 return (uint8_t *)cts->cb.mcode + CALLBACK_SLOT2OFS(slot);
58}
59
60/* Convert callback function pointer to slot number. */
61MSize lj_ccallback_ptr2slot(CTState *cts, void *p)
62{
63 uintptr_t ofs = (uintptr_t)((uint8_t *)p -(uint8_t *)cts->cb.mcode);
64 if (ofs < CALLBACK_MCODE_SIZE) {
65 MSize slot = CALLBACK_OFS2SLOT((MSize)ofs);
66 if (CALLBACK_SLOT2OFS(slot) == (MSize)ofs)
67 return slot;
68 }
69 return ~0u; /* Not a known callback function pointer. */
70}
71
72#if LJ_TARGET_X86ORX64
73/* Initialize machine code for callback function pointers. */
74static void callback_mcode_init(global_State *g, uint8_t *page)
75{
76 uint8_t *p = page;
77 uint8_t *target = (uint8_t *)(void *)lj_vm_ffi_callback;
78 MSize slot;
79#if LJ_64
80 *(void **)p = target; p += 8;
81#endif
82 for (slot = 0; slot < CALLBACK_MAX_SLOT; slot++) {
83 /* mov al, slot; jmp group */
84 *p++ = XI_MOVrib | RID_EAX; *p++ = (uint8_t)slot;
85 if ((slot & 31) == 31 || slot == CALLBACK_MAX_SLOT-1) {
86 /* push ebp/rbp; mov ah, slot>>8; mov ebp, &g. */
87 *p++ = XI_PUSH + RID_EBP;
88 *p++ = XI_MOVrib | (RID_EAX+4); *p++ = (uint8_t)(slot >> 8);
89 *p++ = XI_MOVri | RID_EBP;
90 *(int32_t *)p = i32ptr(g); p += 4;
91#if LJ_64
92 /* jmp [rip-pageofs] where lj_vm_ffi_callback is stored. */
93 *p++ = XI_GROUP5; *p++ = XM_OFS0 + (XOg_JMP<<3) + RID_EBP;
94 *(int32_t *)p = (int32_t)(page-(p+4)); p += 4;
95#else
96 /* jmp lj_vm_ffi_callback. */
97 *p++ = XI_JMP; *(int32_t *)p = target-(p+4); p += 4;
98#endif
99 } else {
100 *p++ = XI_JMPs; *p++ = (uint8_t)((2+2)*(31-(slot&31)) - 2);
101 }
102 }
103 lua_assert(p - page <= CALLBACK_MCODE_SIZE);
104}
105#else
106/* Missing support for this architecture. */
107#define callback_mcode_init(g, p) UNUSED(p)
108#endif
109
110/* -- Machine code management --------------------------------------------- */
111
112#if LJ_TARGET_WINDOWS
113
114#define WIN32_LEAN_AND_MEAN
115#include <windows.h>
116
117#elif LJ_TARGET_POSIX
118
119#include <sys/mman.h>
120#ifndef MAP_ANONYMOUS
121#define MAP_ANONYMOUS MAP_ANON
122#endif
123
124#endif
125
126/* Allocate and initialize area for callback function pointers. */
127static void callback_mcode_new(CTState *cts)
128{
129 size_t sz = (size_t)CALLBACK_MCODE_SIZE;
130 void *p;
131 if (CALLBACK_MAX_SLOT == 0)
132 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
133#if LJ_TARGET_WINDOWS
134 p = VirtualAlloc(NULL, sz, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
135 if (!p)
136 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
137#elif LJ_TARGET_POSIX
138 p = mmap(NULL, sz, (PROT_READ|PROT_WRITE), MAP_PRIVATE|MAP_ANONYMOUS,
139 -1, 0);
140 if (p == MAP_FAILED)
141 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
142#else
143 /* Fallback allocator. Fails if memory is not executable by default. */
144 p = lj_mem_new(cts->L, sz);
145#endif
146 cts->cb.mcode = p;
147 callback_mcode_init(cts->g, p);
148#if LJ_TARGET_WINDOWS
149 {
150 DWORD oprot;
151 VirtualProtect(p, sz, PAGE_EXECUTE_READ, &oprot);
152 }
153#elif LJ_TARGET_POSIX
154 mprotect(p, sz, (PROT_READ|PROT_EXEC));
155#endif
156}
157
158/* Free area for callback function pointers. */
159void lj_ccallback_mcode_free(CTState *cts)
160{
161 size_t sz = (size_t)CALLBACK_MCODE_SIZE;
162 void *p = cts->cb.mcode;
163 if (p == NULL) return;
164#if LJ_TARGET_WINDOWS
165 VirtualFree(p, 0, MEM_RELEASE);
166 UNUSED(sz);
167#elif LJ_TARGET_POSIX
168 munmap(p, sz);
169#else
170 lj_mem_free(cts->g, p, sz);
171#endif
172}
173
174/* -- C callback entry ---------------------------------------------------- */
175
176/* Target-specific handling of register arguments. Similar to lj_ccall.c. */
177#if LJ_TARGET_X86
178
179#define CALLBACK_HANDLE_REGARG \
180 if (!isfp) { /* Only non-FP values may be passed in registers. */ \
181 if (n > 1) { /* Anything > 32 bit is passed on the stack. */ \
182 if (!LJ_ABI_WIN) ngpr = maxgpr; /* Prevent reordering. */ \
183 } else if (ngpr + 1 <= maxgpr) { \
184 sp = &cts->cb.gpr[ngpr]; \
185 ngpr += n; \
186 goto done; \
187 } \
188 }
189
190#elif LJ_TARGET_X64 && LJ_ABI_WIN
191
192/* Windows/x64 argument registers are strictly positional (use ngpr). */
193#define CALLBACK_HANDLE_REGARG \
194 if (isfp) { \
195 if (ngpr < 4) { sp = &cts->cb.fpr[ngpr++]; nfpr = ngpr; goto done; } \
196 } else { \
197 if (ngpr < 4) { sp = &cts->cb.gpr[ngpr++]; goto done; } \
198 }
199
200#elif LJ_TARGET_X64
201
202#define CALLBACK_HANDLE_REGARG \
203 if (isfp) { \
204 if (nfpr + n <= CCALL_NARG_FPR) { \
205 sp = &cts->cb.fpr[nfpr]; \
206 nfpr += n; \
207 goto done; \
208 } \
209 } else { \
210 if (ngpr + n <= maxgpr) { \
211 sp = &cts->cb.gpr[ngpr]; \
212 ngpr += n; \
213 goto done; \
214 } \
215 }
216
217#elif LJ_TARGET_ARM
218
219#define CALLBACK_HANDLE_REGARG \
220 UNUSED(ngpr); UNUSED(maxgpr); goto done; /* NYI */
221
222#elif LJ_TARGET_PPC
223
224#define CALLBACK_HANDLE_REGARG \
225 UNUSED(ngpr); UNUSED(nfpr); UNUSED(maxgpr); goto done; /* NYI */
226#define CALLBACK_HANDLE_RET /* NYI */
227
228#else
229#error "Missing calling convention definitions for this architecture"
230#endif
231
232/* Convert and push callback arguments to Lua stack. */
233static void callback_conv_args(CTState *cts, lua_State *L)
234{
235 TValue *o = L->top;
236 intptr_t *stack = cts->cb.stack;
237 MSize slot = cts->cb.slot;
238 CTypeID id = 0, rid, fid;
239 CType *ct;
240 GCfunc *fn;
241 MSize ngpr = 0, nsp = 0, maxgpr = CCALL_NARG_GPR;
242#if CCALL_NARG_FPR
243 MSize nfpr = 0;
244#endif
245
246 if (slot < cts->cb.sizeid && (id = cts->cb.cbid[slot]) != 0) {
247 ct = ctype_get(cts, id);
248 rid = ctype_cid(ct->info);
249 fn = funcV(lj_tab_getint(cts->miscmap, (int32_t)slot));
250 } else { /* Must set up frame first, before throwing the error. */
251 ct = NULL;
252 rid = 0;
253 fn = (GCfunc *)L;
254 }
255 o->u32.lo = LJ_CONT_FFI_CALLBACK; /* Continuation returns from callback. */
256 o->u32.hi = rid; /* Return type. x86: +(spadj<<16). */
257 o++;
258 setframe_gc(o, obj2gco(fn));
259 setframe_ftsz(o, (int)((char *)(o+1) - (char *)L->base) + FRAME_CONT);
260 L->top = L->base = ++o;
261 if (!ct)
262 lj_err_caller(cts->L, LJ_ERR_FFI_BADCBACK);
263 if (isluafunc(fn))
264 setcframe_pc(L->cframe, proto_bc(funcproto(fn))+1);
265 lj_state_checkstack(L, LUA_MINSTACK); /* May throw. */
266 o = L->base; /* Might have been reallocated. */
267
268#if LJ_TARGET_X86
269 /* x86 has several different calling conventions. */
270 switch (ctype_cconv(ct->info)) {
271 case CTCC_FASTCALL: maxgpr = 2; break;
272 case CTCC_THISCALL: maxgpr = 1; break;
273 default: maxgpr = 0; break;
274 }
275#endif
276
277 fid = ct->sib;
278 while (fid) {
279 CType *ctf = ctype_get(cts, fid);
280 if (!ctype_isattrib(ctf->info)) {
281 CType *cta;
282 void *sp;
283 CTSize sz;
284 int isfp;
285 MSize n;
286 lua_assert(ctype_isfield(ctf->info));
287 cta = ctype_rawchild(cts, ctf);
288 if (ctype_isenum(cta->info)) cta = ctype_child(cts, cta);
289 isfp = ctype_isfp(cta->info);
290 sz = (cta->size + CTSIZE_PTR-1) & ~(CTSIZE_PTR-1);
291 n = sz / CTSIZE_PTR; /* Number of GPRs or stack slots needed. */
292
293 CALLBACK_HANDLE_REGARG /* Handle register arguments. */
294
295 /* Otherwise pass argument on stack. */
296 if (CCALL_ALIGN_STACKARG && LJ_32 && sz == 8)
297 nsp = (nsp + 1) & ~1u; /* Align 64 bit argument on stack. */
298 sp = &stack[nsp];
299 nsp += n;
300
301 done:
302 if (LJ_BE && cta->size < CTSIZE_PTR)
303 sp = (void *)((uint8_t *)sp + CTSIZE_PTR-cta->size);
304 lj_cconv_tv_ct(cts, cta, 0, o++, sp);
305 }
306 fid = ctf->sib;
307 }
308 L->top = o;
309#if LJ_TARGET_X86
310 /* Store stack adjustment for returns from fastcall/stdcall callbacks. */
311 switch (ctype_cconv(ct->info)) {
312 case CTCC_FASTCALL: case CTCC_STDCALL:
313 (L->base-2)->u32.hi |= (nsp << (16+2));
314 break;
315 }
316#endif
317}
318
319/* Convert Lua object to callback result. */
320static void callback_conv_result(CTState *cts, lua_State *L, TValue *o)
321{
322 CType *ctr = ctype_raw(cts, (uint16_t)(L->base-2)->u32.hi);
323#if LJ_TARGET_X86
324 cts->cb.gpr[2] = 0;
325#endif
326 if (!ctype_isvoid(ctr->info)) {
327 uint8_t *dp = (uint8_t *)&cts->cb.gpr[0];
328#ifdef CALLBACK_HANDLE_RET
329 CALLBACK_HANDLE_RET
330#endif
331#if CCALL_NUM_FPR
332 if (ctype_isfp(ctr->info))
333 dp = (uint8_t *)&cts->cb.fpr[0];
334#endif
335 lj_cconv_ct_tv(cts, ctr, dp, o, 0);
336 /* Extend returned integers to (at least) 32 bits. */
337 if (ctype_isinteger_or_bool(ctr->info) && ctr->size < 4) {
338 if (ctr->info & CTF_UNSIGNED)
339 *(uint32_t *)dp = ctr->size == 1 ? (uint32_t)*(uint8_t *)dp :
340 (uint32_t)*(uint16_t *)dp;
341 else
342 *(int32_t *)dp = ctr->size == 1 ? (int32_t)*(int8_t *)dp :
343 (int32_t)*(int16_t *)dp;
344 }
345#if LJ_TARGET_X86
346 if (ctype_isfp(ctr->info))
347 cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2;
348#endif
349 }
350}
351
352/* Enter callback. */
353lua_State * LJ_FASTCALL lj_ccallback_enter(CTState *cts, void *cf)
354{
355 lua_State *L = cts->L;
356 lua_assert(L != NULL);
357 if (gcref(cts->g->jit_L))
358 lj_err_caller(gco2th(gcref(cts->g->jit_L)), LJ_ERR_FFI_BADCBACK);
359 /* Setup C frame. */
360 cframe_prev(cf) = L->cframe;
361 setcframe_L(cf, L);
362 cframe_errfunc(cf) = -1;
363 cframe_nres(cf) = 0;
364 L->cframe = cf;
365 callback_conv_args(cts, L);
366 return L; /* Now call the function on this stack. */
367}
368
369/* Leave callback. */
370void LJ_FASTCALL lj_ccallback_leave(CTState *cts, TValue *o)
371{
372 lua_State *L = cts->L;
373 GCfunc *fn;
374 TValue *obase = L->base;
375 L->base = L->top; /* Keep continuation frame for throwing errors. */
376 /* PC of RET* is lost. Point to last line for result conv. errors. */
377 fn = curr_func(L);
378 if (isluafunc(fn)) {
379 GCproto *pt = funcproto(fn);
380 setcframe_pc(L->cframe, proto_bc(pt)+pt->sizebc);
381 }
382 callback_conv_result(cts, L, o);
383 /* Finally drop C frame and continuation frame. */
384 L->cframe = cframe_prev(L->cframe);
385 L->top -= 2;
386 L->base = obase;
387}
388
389/* -- C callback management ----------------------------------------------- */
390
391/* Get an unused slot in the callback slot table. */
392static MSize callback_slot_new(CTState *cts, CType *ct)
393{
394 CTypeID id = ctype_typeid(cts, ct);
395 CTypeID1 *cbid = cts->cb.cbid;
396 MSize top;
397 for (top = cts->cb.topid; top < cts->cb.sizeid; top++)
398 if (LJ_LIKELY(cbid[top] == 0))
399 goto found;
400#if CALLBACK_MAX_SLOT
401 if (top >= CALLBACK_MAX_SLOT)
402#endif
403 lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
404 if (!cts->cb.mcode)
405 callback_mcode_new(cts);
406 lj_mem_growvec(cts->L, cbid, cts->cb.sizeid, CALLBACK_MAX_SLOT, CTypeID1);
407 cts->cb.cbid = cbid;
408 memset(cbid+top, 0, (cts->cb.sizeid-top)*sizeof(CTypeID1));
409found:
410 cbid[top] = id;
411 cts->cb.topid = top+1;
412 return top;
413}
414
415/* Check for function pointer and supported argument/result types. */
416static CType *callback_checkfunc(CTState *cts, CType *ct)
417{
418 int narg = 0;
419 if (!ctype_isptr(ct->info) || (LJ_64 && ct->size != CTSIZE_PTR))
420 return NULL;
421 ct = ctype_rawchild(cts, ct);
422 if (ctype_isfunc(ct->info)) {
423 CType *ctr = ctype_rawchild(cts, ct);
424 CTypeID fid = ct->sib;
425 if (!(ctype_isvoid(ctr->info) || ctype_isenum(ctr->info) ||
426 ctype_isptr(ctr->info) || (ctype_isnum(ctr->info) && ctr->size <= 8)))
427 return NULL;
428 if ((ct->info & CTF_VARARG))
429 return NULL;
430 while (fid) {
431 CType *ctf = ctype_get(cts, fid);
432 if (!ctype_isattrib(ctf->info)) {
433 CType *cta;
434 lua_assert(ctype_isfield(ctf->info));
435 cta = ctype_rawchild(cts, ctf);
436 if (!(ctype_isenum(cta->info) || ctype_isptr(cta->info) ||
437 (ctype_isnum(cta->info) && cta->size <= 8)) ||
438 ++narg >= LUA_MINSTACK-3)
439 return NULL;
440 }
441 fid = ctf->sib;
442 }
443 return ct;
444 }
445 return NULL;
446}
447
448/* Create a new callback and return the callback function pointer. */
449void *lj_ccallback_new(CTState *cts, CType *ct, GCfunc *fn)
450{
451 ct = callback_checkfunc(cts, ct);
452 if (ct) {
453 MSize slot = callback_slot_new(cts, ct);
454 GCtab *t = cts->miscmap;
455 setfuncV(cts->L, lj_tab_setint(cts->L, t, (int32_t)slot), fn);
456 return callback_slot2ptr(cts, slot);
457 }
458 return NULL; /* Bad conversion. */
459}
460
461#endif
diff --git a/src/lj_ccallback.h b/src/lj_ccallback.h
new file mode 100644
index 00000000..cbdc1e89
--- /dev/null
+++ b/src/lj_ccallback.h
@@ -0,0 +1,25 @@
1/*
2** FFI C callback handling.
3** Copyright (C) 2005-2011 Mike Pall. See Copyright Notice in luajit.h
4*/
5
6#ifndef _LJ_CCALLBACK_H
7#define _LJ_CCALLBACK_H
8
9#include "lj_obj.h"
10#include "lj_ctype.h"
11
12#if LJ_HASFFI
13
14/* Really belongs to lj_vm.h. */
15LJ_ASMF void lj_vm_ffi_callback(void);
16
17LJ_FUNC MSize lj_ccallback_ptr2slot(CTState *cts, void *p);
18LJ_FUNCA lua_State * LJ_FASTCALL lj_ccallback_enter(CTState *cts, void *cf);
19LJ_FUNCA void LJ_FASTCALL lj_ccallback_leave(CTState *cts, TValue *o);
20LJ_FUNC void *lj_ccallback_new(CTState *cts, CType *ct, GCfunc *fn);
21LJ_FUNC void lj_ccallback_mcode_free(CTState *cts);
22
23#endif
24
25#endif
diff --git a/src/lj_cconv.c b/src/lj_cconv.c
index 884edef1..d73984f4 100644
--- a/src/lj_cconv.c
+++ b/src/lj_cconv.c
@@ -12,6 +12,7 @@
12#include "lj_ctype.h" 12#include "lj_ctype.h"
13#include "lj_cdata.h" 13#include "lj_cdata.h"
14#include "lj_cconv.h" 14#include "lj_cconv.h"
15#include "lj_ccallback.h"
15 16
16/* -- Conversion errors --------------------------------------------------- */ 17/* -- Conversion errors --------------------------------------------------- */
17 18
@@ -603,6 +604,13 @@ void lj_cconv_ct_tv(CTState *cts, CType *d,
603 tmpptr = uddata(udataV(o)); 604 tmpptr = uddata(udataV(o));
604 } else if (tvislightud(o)) { 605 } else if (tvislightud(o)) {
605 tmpptr = lightudV(o); 606 tmpptr = lightudV(o);
607 } else if (tvisfunc(o)) {
608 void *p = lj_ccallback_new(cts, d, funcV(o));
609 if (p) {
610 *(void **)dp = p;
611 return;
612 }
613 goto err_conv;
606 } else { 614 } else {
607 err_conv: 615 err_conv:
608 cconv_err_convtv(cts, d, o, flags); 616 cconv_err_convtv(cts, d, o, flags);
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 2c63e8a6..9457b519 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -15,6 +15,7 @@
15#include "lj_tab.h" 15#include "lj_tab.h"
16#include "lj_frame.h" 16#include "lj_frame.h"
17#include "lj_ctype.h" 17#include "lj_ctype.h"
18#include "lj_cdata.h"
18#include "lj_cparse.h" 19#include "lj_cparse.h"
19#include "lj_cconv.h" 20#include "lj_cconv.h"
20#include "lj_clib.h" 21#include "lj_clib.h"
@@ -785,7 +786,7 @@ static TRef crec_call_args(jit_State *J, RecordFFData *rd,
785 did = ctype_cid(ctf->info); 786 did = ctype_cid(ctf->info);
786 } else { 787 } else {
787 if (!(ct->info & CTF_VARARG)) 788 if (!(ct->info & CTF_VARARG))
788 lj_trace_err(J, LJ_TRERR_NYICALL); /* Too many arguments. */ 789 lj_trace_err(J, LJ_TRERR_NYICALL); /* Too many arguments. */
789 did = lj_ccall_ctid_vararg(cts, o); /* Infer vararg type. */ 790 did = lj_ccall_ctid_vararg(cts, o); /* Infer vararg type. */
790 } 791 }
791 d = ctype_raw(cts, did); 792 d = ctype_raw(cts, did);
@@ -853,6 +854,12 @@ static int crec_call(jit_State *J, RecordFFData *rd, GCcdata *cd)
853 CType *ctr = ctype_rawchild(cts, ct); 854 CType *ctr = ctype_rawchild(cts, ct);
854 IRType t = crec_ct2irt(ctr); 855 IRType t = crec_ct2irt(ctr);
855 TRef tr; 856 TRef tr;
857 TValue tv;
858 /* Check for blacklisted C functions that might call a callback. */
859 setlightudV(&tv,
860 cdata_getptr(cdataptr(cd), (LJ_64 && tp == IRT_P64) ? 8 : 4));
861 if (tvistrue(lj_tab_get(J->L, cts->miscmap, &tv)))
862 lj_trace_err(J, LJ_TRERR_BLACKL);
856 if (ctype_isvoid(ctr->info)) { 863 if (ctype_isvoid(ctr->info)) {
857 t = IRT_NIL; 864 t = IRT_NIL;
858 rd->nres = 0; 865 rd->nres = 0;
diff --git a/src/lj_ctype.c b/src/lj_ctype.c
index 85e9a0ba..7187d6ff 100644
--- a/src/lj_ctype.c
+++ b/src/lj_ctype.c
@@ -12,6 +12,7 @@
12#include "lj_str.h" 12#include "lj_str.h"
13#include "lj_tab.h" 13#include "lj_tab.h"
14#include "lj_ctype.h" 14#include "lj_ctype.h"
15#include "lj_ccallback.h"
15 16
16/* -- C type definitions -------------------------------------------------- */ 17/* -- C type definitions -------------------------------------------------- */
17 18
@@ -315,7 +316,11 @@ cTValue *lj_ctype_meta(CTState *cts, CTypeID id, MMS mm)
315 id = ctype_cid(ct->info); 316 id = ctype_cid(ct->info);
316 ct = ctype_get(cts, id); 317 ct = ctype_get(cts, id);
317 } 318 }
318 tv = lj_tab_getint(cts->metatype, (int32_t)id); 319 if (ctype_isptr(ct->info) &&
320 ctype_isfunc(ctype_get(cts, ctype_cid(ct->info))->info))
321 tv = lj_tab_getstr(cts->miscmap, &cts->g->strempty);
322 else
323 tv = lj_tab_getinth(cts->miscmap, -(int32_t)id);
319 if (tv && tvistab(tv) && 324 if (tv && tvistab(tv) &&
320 (tv = lj_tab_getstr(tabV(tv), mmname_str(cts->g, mm))) && !tvisnil(tv)) 325 (tv = lj_tab_getstr(tabV(tv), mmname_str(cts->g, mm))) && !tvisnil(tv))
321 return tv; 326 return tv;
@@ -592,7 +597,9 @@ void lj_ctype_freestate(global_State *g)
592{ 597{
593 CTState *cts = ctype_ctsG(g); 598 CTState *cts = ctype_ctsG(g);
594 if (cts) { 599 if (cts) {
600 lj_ccallback_mcode_free(cts);
595 lj_mem_freevec(g, cts->tab, cts->sizetab, CType); 601 lj_mem_freevec(g, cts->tab, cts->sizetab, CType);
602 lj_mem_freevec(g, cts->cb.cbid, cts->cb.sizeid, CTypeID1);
596 lj_mem_freet(g, cts); 603 lj_mem_freet(g, cts);
597 } 604 }
598} 605}
diff --git a/src/lj_ctype.h b/src/lj_ctype.h
index 49f28108..da313851 100644
--- a/src/lj_ctype.h
+++ b/src/lj_ctype.h
@@ -151,6 +151,25 @@ typedef struct CType {
151#define CTHASH_SIZE 128 /* Number of hash anchors. */ 151#define CTHASH_SIZE 128 /* Number of hash anchors. */
152#define CTHASH_MASK (CTHASH_SIZE-1) 152#define CTHASH_MASK (CTHASH_SIZE-1)
153 153
154/* Simplify target-specific configuration. Checked in lj_ccall.h. */
155#define CCALL_MAX_GPR 8
156#define CCALL_MAX_FPR 8
157
158typedef LJ_ALIGN(8) union FPRCBArg { double d; float f; } FPRCBArg;
159
160/* C callback state. Defined here, to avoid dragging in lj_ccall.h. */
161
162typedef LJ_ALIGN(8) struct CCallback {
163 FPRCBArg fpr[CCALL_MAX_FPR]; /* Arguments/results in FPRs. */
164 intptr_t gpr[CCALL_MAX_GPR]; /* Arguments/results in GPRs. */
165 intptr_t *stack; /* Pointer to arguments on stack. */
166 void *mcode; /* Machine code for callback func. pointers. */
167 CTypeID1 *cbid; /* Callback type table. */
168 MSize sizeid; /* Size of callback type table. */
169 MSize topid; /* Highest unused callback type table slot. */
170 MSize slot; /* Current callback slot. */
171} CCallback;
172
154/* C type state. */ 173/* C type state. */
155typedef struct CTState { 174typedef struct CTState {
156 CType *tab; /* C type table. */ 175 CType *tab; /* C type table. */
@@ -159,7 +178,8 @@ typedef struct CTState {
159 lua_State *L; /* Lua state (needed for errors and allocations). */ 178 lua_State *L; /* Lua state (needed for errors and allocations). */
160 global_State *g; /* Global state. */ 179 global_State *g; /* Global state. */
161 GCtab *finalizer; /* Map of cdata to finalizer. */ 180 GCtab *finalizer; /* Map of cdata to finalizer. */
162 GCtab *metatype; /* Map of CTypeID to metatable. */ 181 GCtab *miscmap; /* Map of -CTypeID to metatable and cb slot to func. */
182 CCallback cb; /* Temporary callback state. */
163 CTypeID1 hash[CTHASH_SIZE]; /* Hash anchors for C type table. */ 183 CTypeID1 hash[CTHASH_SIZE]; /* Hash anchors for C type table. */
164} CTState; 184} CTState;
165 185
diff --git a/src/lj_debug.c b/src/lj_debug.c
index 699fca28..4038e209 100644
--- a/src/lj_debug.c
+++ b/src/lj_debug.c
@@ -107,6 +107,7 @@ BCLine LJ_FASTCALL lj_debug_line(GCproto *pt, BCPos pc)
107 const void *lineinfo = proto_lineinfo(pt); 107 const void *lineinfo = proto_lineinfo(pt);
108 if (pc < pt->sizebc && lineinfo) { 108 if (pc < pt->sizebc && lineinfo) {
109 BCLine first = pt->firstline; 109 BCLine first = pt->firstline;
110 if (pc == pt->sizebc-1) return first + pt->numline;
110 if (pc-- == 0) return first; 111 if (pc-- == 0) return first;
111 if (pt->numline < 256) 112 if (pt->numline < 256)
112 return first + (BCLine)((const uint8_t *)lineinfo)[pc]; 113 return first + (BCLine)((const uint8_t *)lineinfo)[pc];
@@ -124,7 +125,7 @@ static BCLine debug_frameline(lua_State *L, GCfunc *fn, cTValue *nextframe)
124 BCPos pc = debug_framepc(L, fn, nextframe); 125 BCPos pc = debug_framepc(L, fn, nextframe);
125 if (pc != NO_BCPOS) { 126 if (pc != NO_BCPOS) {
126 GCproto *pt = funcproto(fn); 127 GCproto *pt = funcproto(fn);
127 lua_assert(pc < pt->sizebc); 128 lua_assert(pc <= pt->sizebc);
128 return lj_debug_line(pt, pc); 129 return lj_debug_line(pt, pc);
129 } 130 }
130 return -1; 131 return -1;
diff --git a/src/lj_def.h b/src/lj_def.h
index dadb8c0a..5d21d584 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -67,6 +67,8 @@ typedef unsigned int uintptr_t;
67#define LJ_MAX_IDXCHAIN 100 /* __index/__newindex chain limit. */ 67#define LJ_MAX_IDXCHAIN 100 /* __index/__newindex chain limit. */
68#define LJ_STACK_EXTRA 5 /* Extra stack space (metamethods). */ 68#define LJ_STACK_EXTRA 5 /* Extra stack space (metamethods). */
69 69
70#define LJ_NUM_CBPAGE 1 /* Number of FFI callback pages. */
71
70/* Minimum table/buffer sizes. */ 72/* Minimum table/buffer sizes. */
71#define LJ_MIN_GLOBAL 6 /* Min. global table size (hbits). */ 73#define LJ_MIN_GLOBAL 6 /* Min. global table size (hbits). */
72#define LJ_MIN_REGISTRY 2 /* Min. registry size (hbits). */ 74#define LJ_MIN_REGISTRY 2 /* Min. registry size (hbits). */
diff --git a/src/lj_err.c b/src/lj_err.c
index 406c833d..b0f3e5c7 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -113,6 +113,9 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
113 frame = frame_prevl(frame); 113 frame = frame_prevl(frame);
114 break; 114 break;
115 case FRAME_C: /* C frame. */ 115 case FRAME_C: /* C frame. */
116#if LJ_HASFFI
117 unwind_c:
118#endif
116#if LJ_UNWIND_EXT 119#if LJ_UNWIND_EXT
117 if (errcode) { 120 if (errcode) {
118 L->cframe = cframe_prev(cf); 121 L->cframe = cframe_prev(cf);
@@ -145,6 +148,10 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
145 } 148 }
146 return cf; 149 return cf;
147 case FRAME_CONT: /* Continuation frame. */ 150 case FRAME_CONT: /* Continuation frame. */
151#if LJ_HASFFI
152 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
153 goto unwind_c;
154#endif
148 case FRAME_VARG: /* Vararg frame. */ 155 case FRAME_VARG: /* Vararg frame. */
149 frame = frame_prevd(frame); 156 frame = frame_prevd(frame);
150 break; 157 break;
@@ -464,6 +471,10 @@ static ptrdiff_t finderrfunc(lua_State *L)
464 cf = cframe_prev(cf); 471 cf = cframe_prev(cf);
465 /* fallthrough */ 472 /* fallthrough */
466 case FRAME_CONT: 473 case FRAME_CONT:
474#if LJ_HASFFI
475 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
476 cf = cframe_prev(cf);
477#endif
467 case FRAME_VARG: 478 case FRAME_VARG:
468 frame = frame_prevd(frame); 479 frame = frame_prevd(frame);
469 break; 480 break;
@@ -591,15 +602,23 @@ LJ_NOINLINE void lj_err_callermsg(lua_State *L, const char *msg)
591 if (frame_islua(frame)) { 602 if (frame_islua(frame)) {
592 pframe = frame_prevl(frame); 603 pframe = frame_prevl(frame);
593 } else if (frame_iscont(frame)) { 604 } else if (frame_iscont(frame)) {
594 pframe = frame_prevd(frame);
595#if LJ_HASFFI 605#if LJ_HASFFI
596 /* Remove frame for FFI metamethods. */ 606 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK) {
597 if (frame_func(frame)->c.ffid >= FF_ffi_meta___index && 607 pframe = frame;
598 frame_func(frame)->c.ffid <= FF_ffi_meta___tostring) { 608 frame = NULL;
599 L->base = pframe+1; 609 } else
600 L->top = frame; 610#endif
601 } 611 {
612 pframe = frame_prevd(frame);
613#if LJ_HASFFI
614 /* Remove frame for FFI metamethods. */
615 if (frame_func(frame)->c.ffid >= FF_ffi_meta___index &&
616 frame_func(frame)->c.ffid <= FF_ffi_meta___tostring) {
617 L->base = pframe+1;
618 L->top = frame;
619 }
602#endif 620#endif
621 }
603 } 622 }
604 lj_debug_addloc(L, msg, pframe, frame); 623 lj_debug_addloc(L, msg, pframe, frame);
605 lj_err_run(L); 624 lj_err_run(L);
diff --git a/src/lj_errmsg.h b/src/lj_errmsg.h
index dc015ef2..e9ad0451 100644
--- a/src/lj_errmsg.h
+++ b/src/lj_errmsg.h
@@ -160,6 +160,12 @@ ERRDEF(FFI_BADMEMBER, LUA_QS " has no member named " LUA_QS)
160ERRDEF(FFI_BADIDX, LUA_QS " cannot be indexed") 160ERRDEF(FFI_BADIDX, LUA_QS " cannot be indexed")
161ERRDEF(FFI_WRCONST, "attempt to write to constant location") 161ERRDEF(FFI_WRCONST, "attempt to write to constant location")
162ERRDEF(FFI_NODECL, "missing declaration for symbol " LUA_QS) 162ERRDEF(FFI_NODECL, "missing declaration for symbol " LUA_QS)
163ERRDEF(FFI_BADCBACK, "bad callback")
164#if LJ_TARGET_X86ORX64
165ERRDEF(FFI_CBACKOV, "too many callbacks")
166#else
167ERRDEF(FFI_CBACKOV, "no support for callbacks (yet)")
168#endif
163ERRDEF(FFI_NYIPACKBIT, "NYI: packed bit fields") 169ERRDEF(FFI_NYIPACKBIT, "NYI: packed bit fields")
164ERRDEF(FFI_NYICALL, "NYI: cannot call this C function (yet)") 170ERRDEF(FFI_NYICALL, "NYI: cannot call this C function (yet)")
165#endif 171#endif
diff --git a/src/lj_frame.h b/src/lj_frame.h
index 89484565..3497671b 100644
--- a/src/lj_frame.h
+++ b/src/lj_frame.h
@@ -138,6 +138,8 @@ enum {
138 (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th) 138 (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
139#define cframe_pc(cf) \ 139#define cframe_pc(cf) \
140 (mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns)) 140 (mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns))
141#define setcframe_L(cf, L) \
142 (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_L), (L)))
141#define setcframe_pc(cf, pc) \ 143#define setcframe_pc(cf, pc) \
142 (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc))) 144 (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc)))
143#define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_RESUME) 145#define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_RESUME)
diff --git a/src/lj_meta.c b/src/lj_meta.c
index 278d2d34..f258e3e1 100644
--- a/src/lj_meta.c
+++ b/src/lj_meta.c
@@ -77,7 +77,7 @@ int lj_meta_tailcall(lua_State *L, cTValue *tv)
77 TValue *top = L->top; 77 TValue *top = L->top;
78 const BCIns *pc = frame_pc(base-1); /* Preserve old PC from frame. */ 78 const BCIns *pc = frame_pc(base-1); /* Preserve old PC from frame. */
79 copyTV(L, base-1, tv); /* Replace frame with new object. */ 79 copyTV(L, base-1, tv); /* Replace frame with new object. */
80 top->u64 = 0; 80 top->u32.lo = LJ_CONT_TAILCALL;
81 setframe_pc(top, pc); 81 setframe_pc(top, pc);
82 setframe_gc(top+1, obj2gco(L)); /* Dummy frame object. */ 82 setframe_gc(top+1, obj2gco(L)); /* Dummy frame object. */
83 setframe_ftsz(top+1, (int)((char *)(top+2) - (char *)base) + FRAME_CONT); 83 setframe_ftsz(top+1, (int)((char *)(top+2) - (char *)base) + FRAME_CONT);
diff --git a/src/lj_target_x86.h b/src/lj_target_x86.h
index 233b77e5..593e7b00 100644
--- a/src/lj_target_x86.h
+++ b/src/lj_target_x86.h
@@ -192,6 +192,7 @@ typedef enum {
192 XI_CALL = 0xe8, 192 XI_CALL = 0xe8,
193 XI_JMP = 0xe9, 193 XI_JMP = 0xe9,
194 XI_JMPs = 0xeb, 194 XI_JMPs = 0xeb,
195 XI_PUSH = 0x50, /* Really 50+r. */
195 XI_JCCs = 0x70, /* Really 7x. */ 196 XI_JCCs = 0x70, /* Really 7x. */
196 XI_JCCn = 0x80, /* Really 0f8x. */ 197 XI_JCCn = 0x80, /* Really 0f8x. */
197 XI_LEA = 0x8d, 198 XI_LEA = 0x8d,
@@ -203,6 +204,7 @@ typedef enum {
203 XI_PUSHi8 = 0x6a, 204 XI_PUSHi8 = 0x6a,
204 XI_TEST = 0x85, 205 XI_TEST = 0x85,
205 XI_MOVmi = 0xc7, 206 XI_MOVmi = 0xc7,
207 XI_GROUP5 = 0xff,
206 208
207 /* Note: little-endian byte-order! */ 209 /* Note: little-endian byte-order! */
208 XI_FLDZ = 0xeed9, 210 XI_FLDZ = 0xeed9,
diff --git a/src/lj_vm.h b/src/lj_vm.h
index 5a82dab0..9ce14acc 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -88,6 +88,8 @@ LJ_ASMF void lj_cont_condt(void); /* Branch if result is true. */
88LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */ 88LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */
89LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */ 89LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */
90 90
91enum { LJ_CONT_TAILCALL, LJ_CONT_FFI_CALLBACK }; /* Special continuations. */
92
91/* Start of the ASM code. */ 93/* Start of the ASM code. */
92LJ_ASMF char lj_vm_asm_begin[]; 94LJ_ASMF char lj_vm_asm_begin[];
93 95
diff --git a/src/ljamalg.c b/src/ljamalg.c
index cc32bf30..17c4b65e 100644
--- a/src/ljamalg.c
+++ b/src/ljamalg.c
@@ -52,6 +52,7 @@
52#include "lj_cdata.c" 52#include "lj_cdata.c"
53#include "lj_cconv.c" 53#include "lj_cconv.c"
54#include "lj_ccall.c" 54#include "lj_ccall.c"
55#include "lj_ccallback.c"
55#include "lj_carith.c" 56#include "lj_carith.c"
56#include "lj_clib.c" 57#include "lj_clib.c"
57#include "lj_cparse.c" 58#include "lj_cparse.c"