aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-02-13 04:51:56 +0100
committerMike Pall <mike>2010-02-13 04:51:56 +0100
commitc93138b59e8f28b3d412cd7ec0c6631fd27e3e1b (patch)
tree8c0ffe2086ab0b032ed8e9f92ae6fb9d4d040d66 /src
parent4f8d7be8ea8a103f4d9046188d6005740b74f3d4 (diff)
downloadluajit-c93138b59e8f28b3d412cd7ec0c6631fd27e3e1b.tar.gz
luajit-c93138b59e8f28b3d412cd7ec0c6631fd27e3e1b.tar.bz2
luajit-c93138b59e8f28b3d412cd7ec0c6631fd27e3e1b.zip
Major redesign of function call handling.
Drop call gates. Use function headers, dispatched like bytecodes. Emit BC_FUNCF/BC_FUNCV bytecode at PC 0 for all Lua functions. C functions and ASM fast functions get extra bytecodes. Modify internal calling convention: new base in BASE (formerly in RA). Can now use better C function wrapper semantics (dynamic on/off). Prerequisite for call hooks with zero-overhead if disabled. Prerequisite for compiling recursive calls. Prerequisite for efficient 32/64 bit prototype guards.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile4
-rw-r--r--src/Makefile.dep51
-rw-r--r--src/buildvm.c12
-rw-r--r--src/buildvm_lib.c31
-rw-r--r--src/buildvm_peobj.c7
-rw-r--r--src/buildvm_x64.h2225
-rw-r--r--src/buildvm_x64win.h2289
-rw-r--r--src/buildvm_x86.dasc1181
-rw-r--r--src/buildvm_x86.h2361
-rw-r--r--src/lib_base.c18
-rw-r--r--src/lib_io.c3
-rw-r--r--src/lib_jit.c8
-rw-r--r--src/lib_package.c4
-rw-r--r--src/lib_string.c3
-rw-r--r--src/lj_api.c5
-rw-r--r--src/lj_asm.c4
-rw-r--r--src/lj_bc.c7
-rw-r--r--src/lj_bc.h21
-rw-r--r--src/lj_def.h12
-rw-r--r--src/lj_dispatch.c62
-rw-r--r--src/lj_dispatch.h22
-rw-r--r--src/lj_err.c17
-rw-r--r--src/lj_func.c3
-rw-r--r--src/lj_gdbjit.c5
-rw-r--r--src/lj_lib.c11
-rw-r--r--src/lj_lib.h13
-rw-r--r--src/lj_obj.h9
-rw-r--r--src/lj_parse.c38
-rw-r--r--src/lj_record.c8
-rw-r--r--src/lj_state.c14
-rw-r--r--src/lj_trace.c8
-rw-r--r--src/lj_vm.h6
-rw-r--r--src/msvcbuild.bat2
33 files changed, 4311 insertions, 4153 deletions
diff --git a/src/Makefile b/src/Makefile
index e3a3fbc2..5fef367a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -412,9 +412,9 @@ $(LJVM_BOUT): $(BUILDVM_T)
412 $(E) "BUILDVM $@" 412 $(E) "BUILDVM $@"
413 $(Q)$(BUILDVM_X) -m $(LJVM_MODE) -o $@ 413 $(Q)$(BUILDVM_X) -m $(LJVM_MODE) -o $@
414 414
415lj_bcdef.h: $(BUILDVM_T) 415lj_bcdef.h: $(BUILDVM_T) $(LJLIB_C)
416 $(E) "BUILDVM $@" 416 $(E) "BUILDVM $@"
417 $(Q)$(BUILDVM_X) -m bcdef -o $@ 417 $(Q)$(BUILDVM_X) -m bcdef -o $@ $(LJLIB_C)
418 418
419lj_ffdef.h: $(BUILDVM_T) $(LJLIB_C) 419lj_ffdef.h: $(BUILDVM_T) $(LJLIB_C)
420 $(E) "BUILDVM $@" 420 $(E) "BUILDVM $@"
diff --git a/src/Makefile.dep b/src/Makefile.dep
index ef64bd9a..68b4f532 100644
--- a/src/Makefile.dep
+++ b/src/Makefile.dep
@@ -14,7 +14,8 @@ lib_aux.o: lib_aux.c lua.h luaconf.h lauxlib.h lj_obj.h lj_def.h \
14 lj_arch.h lj_err.h lj_errmsg.h lj_state.h lj_lib.h lj_alloc.h 14 lj_arch.h lj_err.h lj_errmsg.h lj_state.h lj_lib.h lj_alloc.h
15lib_base.o: lib_base.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ 15lib_base.o: lib_base.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
16 lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h \ 16 lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h \
17 lj_meta.h lj_state.h lj_ff.h lj_ffdef.h lj_ctype.h lj_lib.h lj_libdef.h 17 lj_meta.h lj_state.h lj_bc.h lj_ff.h lj_ffdef.h lj_dispatch.h lj_jit.h \
18 lj_ir.h lj_ctype.h lj_lib.h lj_libdef.h
18lib_bit.o: lib_bit.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 19lib_bit.o: lib_bit.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
19 lj_arch.h lj_err.h lj_errmsg.h lj_str.h lj_lib.h lj_libdef.h 20 lj_arch.h lj_err.h lj_errmsg.h lj_str.h lj_lib.h lj_libdef.h
20lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ 21lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
@@ -22,8 +23,8 @@ lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
22lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h 23lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h
23lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ 24lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
24 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \ 25 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \
25 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_lib.h \ 26 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h lj_traceerr.h \
26 lj_libdef.h 27 lj_lib.h lj_libdef.h
27lib_jit.o: lib_jit.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h \ 28lib_jit.o: lib_jit.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h \
28 lj_obj.h lj_def.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_bc.h \ 29 lj_obj.h lj_def.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_bc.h \
29 lj_ir.h lj_jit.h lj_iropt.h lj_dispatch.h lj_vm.h lj_vmevent.h lj_lib.h \ 30 lj_ir.h lj_jit.h lj_iropt.h lj_dispatch.h lj_vm.h lj_vmevent.h lj_lib.h \
@@ -43,7 +44,7 @@ lib_table.o: lib_table.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
43lj_alloc.o: lj_alloc.c lj_def.h lua.h luaconf.h lj_arch.h lj_alloc.h 44lj_alloc.o: lj_alloc.c lj_def.h lua.h luaconf.h lj_arch.h lj_alloc.h
44lj_api.o: lj_api.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 45lj_api.o: lj_api.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
45 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \ 46 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \
46 lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \ 47 lj_state.h lj_bc.h lj_frame.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \
47 lj_traceerr.h lj_vm.h lj_lex.h lj_parse.h 48 lj_traceerr.h lj_vm.h lj_lex.h lj_parse.h
48lj_asm.o: lj_asm.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 49lj_asm.o: lj_asm.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
49 lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ir.h lj_jit.h lj_iropt.h \ 50 lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ir.h lj_jit.h lj_iropt.h \
@@ -53,14 +54,15 @@ lj_bc.o: lj_bc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_bc.h \
53 lj_bcdef.h 54 lj_bcdef.h
54lj_ctype.o: lj_ctype.c lj_ctype.h lj_def.h lua.h luaconf.h 55lj_ctype.o: lj_ctype.c lj_ctype.h lj_def.h lua.h luaconf.h
55lj_dispatch.o: lj_dispatch.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 56lj_dispatch.o: lj_dispatch.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
56 lj_err.h lj_errmsg.h lj_state.h lj_frame.h lj_bc.h lj_jit.h lj_ir.h \ 57 lj_err.h lj_errmsg.h lj_state.h lj_frame.h lj_bc.h lj_ff.h lj_ffdef.h \
57 lj_trace.h lj_dispatch.h lj_traceerr.h lj_vm.h luajit.h 58 lj_jit.h lj_ir.h lj_trace.h lj_dispatch.h lj_traceerr.h lj_vm.h \
59 luajit.h
58lj_err.o: lj_err.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_err.h \ 60lj_err.o: lj_err.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_err.h \
59 lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_state.h lj_frame.h lj_bc.h \ 61 lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_state.h lj_frame.h lj_bc.h \
60 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h 62 lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h
61lj_func.o: lj_func.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 63lj_func.o: lj_func.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
62 lj_func.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_traceerr.h \ 64 lj_func.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
63 lj_vm.h 65 lj_traceerr.h lj_vm.h
64lj_gc.o: lj_gc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 66lj_gc.o: lj_gc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
65 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \ 67 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_udata.h lj_meta.h \
66 lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \ 68 lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h \
@@ -70,14 +72,14 @@ lj_gdbjit.o: lj_gdbjit.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
70 lj_ir.h lj_dispatch.h 72 lj_ir.h lj_dispatch.h
71lj_ir.o: lj_ir.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 73lj_ir.o: lj_ir.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
72 lj_str.h lj_tab.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \ 74 lj_str.h lj_tab.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \
73 lj_traceerr.h lj_lib.h 75 lj_bc.h lj_traceerr.h lj_lib.h
74lj_lex.o: lj_lex.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 76lj_lex.o: lj_lex.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
75 lj_err.h lj_errmsg.h lj_str.h lj_lex.h lj_parse.h lj_ctype.h 77 lj_err.h lj_errmsg.h lj_str.h lj_lex.h lj_parse.h lj_ctype.h
76lj_lib.o: lj_lib.c lauxlib.h lua.h luaconf.h lj_obj.h lj_def.h lj_arch.h \ 78lj_lib.o: lj_lib.c lauxlib.h lua.h luaconf.h lj_obj.h lj_def.h lj_arch.h \
77 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_vm.h \ 79 lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h lj_bc.h \
78 lj_lib.h 80 lj_dispatch.h lj_jit.h lj_ir.h lj_vm.h lj_lib.h
79lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 81lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
80 lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h \ 82 lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h lj_bc.h \
81 lj_traceerr.h 83 lj_traceerr.h
82lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \ 84lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
83 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_bc.h lj_vm.h 85 lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_bc.h lj_vm.h
@@ -85,11 +87,11 @@ lj_obj.o: lj_obj.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h
85lj_opt_dce.o: lj_opt_dce.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 87lj_opt_dce.o: lj_opt_dce.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
86 lj_ir.h lj_jit.h lj_iropt.h 88 lj_ir.h lj_jit.h lj_iropt.h
87lj_opt_fold.o: lj_opt_fold.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 89lj_opt_fold.o: lj_opt_fold.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
88 lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h \ 90 lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h lj_dispatch.h lj_bc.h \
89 lj_traceerr.h lj_vm.h lj_folddef.h 91 lj_traceerr.h lj_vm.h lj_folddef.h
90lj_opt_loop.o: lj_opt_loop.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 92lj_opt_loop.o: lj_opt_loop.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
91 lj_err.h lj_errmsg.h lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h \ 93 lj_err.h lj_errmsg.h lj_str.h lj_ir.h lj_jit.h lj_iropt.h lj_trace.h \
92 lj_dispatch.h lj_traceerr.h lj_snap.h lj_vm.h 94 lj_dispatch.h lj_bc.h lj_traceerr.h lj_snap.h lj_vm.h
93lj_opt_mem.o: lj_opt_mem.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 95lj_opt_mem.o: lj_opt_mem.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
94 lj_tab.h lj_ir.h lj_jit.h lj_iropt.h 96 lj_tab.h lj_ir.h lj_jit.h lj_iropt.h
95lj_opt_narrow.o: lj_opt_narrow.c lj_obj.h lua.h luaconf.h lj_def.h \ 97lj_opt_narrow.o: lj_opt_narrow.c lj_obj.h lua.h luaconf.h lj_def.h \
@@ -122,21 +124,20 @@ lj_trace.o: lj_trace.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
122lj_udata.o: lj_udata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 124lj_udata.o: lj_udata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
123 lj_gc.h lj_udata.h 125 lj_gc.h lj_udata.h
124lj_vmevent.o: lj_vmevent.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ 126lj_vmevent.o: lj_vmevent.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
125 lj_str.h lj_tab.h lj_state.h lj_dispatch.h lj_jit.h lj_ir.h lj_vm.h \ 127 lj_str.h lj_tab.h lj_state.h lj_dispatch.h lj_bc.h lj_jit.h lj_ir.h \
126 lj_vmevent.h 128 lj_vm.h lj_vmevent.h
127ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \ 129ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \
128 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h \ 130 lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_func.h \
129 lj_udata.h lj_meta.h lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h \ 131 lj_udata.h lj_meta.h lj_state.h lj_frame.h lj_bc.h lj_trace.h lj_jit.h \
130 lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h lj_err.c lj_ctype.c \ 132 lj_ir.h lj_dispatch.h lj_traceerr.h lj_vm.h lj_err.c lj_ctype.c \
131 lj_ctype.h lj_bc.c lj_bcdef.h lj_obj.c lj_str.c lj_tab.c lj_func.c \ 133 lj_ctype.h lj_bc.c lj_bcdef.h lj_obj.c lj_str.c lj_tab.c lj_func.c \
132 lj_udata.c lj_meta.c lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c \ 134 lj_udata.c lj_meta.c lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c \
133 luajit.h lj_vmevent.c lj_vmevent.h lj_api.c lj_parse.h lj_lex.c \ 135 lj_ff.h lj_ffdef.h luajit.h lj_vmevent.c lj_vmevent.h lj_api.c \
134 lj_parse.c lj_lib.c lj_lib.h lj_ir.c lj_iropt.h lj_opt_mem.c \ 136 lj_parse.h lj_lex.c lj_parse.c lj_lib.c lj_lib.h lj_ir.c lj_iropt.h \
135 lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c lj_opt_loop.c \ 137 lj_opt_mem.c lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c \
136 lj_snap.h lj_mcode.c lj_mcode.h lj_snap.c lj_target.h lj_target_x86.h \ 138 lj_opt_loop.c lj_snap.h lj_mcode.c lj_mcode.h lj_snap.c lj_target.h \
137 lj_record.c lj_ff.h lj_ffdef.h lj_record.h lj_asm.h lj_recdef.h \ 139 lj_target_x86.h lj_record.c lj_record.h lj_asm.h lj_recdef.h lj_asm.c \
138 lj_asm.c lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c \ 140 lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c \
139 lib_base.c lualib.h lj_libdef.h lib_math.c lib_string.c lib_table.c \ 141 lualib.h lj_libdef.h lib_math.c lib_string.c lib_table.c lib_io.c \
140 lib_io.c lib_os.c lib_package.c lib_debug.c lib_bit.c lib_jit.c \ 142 lib_os.c lib_package.c lib_debug.c lib_bit.c lib_jit.c lib_init.c
141 lib_init.c
142luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h 143luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h
diff --git a/src/buildvm.c b/src/buildvm.c
index 44fd2c71..dd0cbcc6 100644
--- a/src/buildvm.c
+++ b/src/buildvm.c
@@ -256,12 +256,12 @@ static void emit_bcdef(BuildCtx *ctx)
256{ 256{
257 int i; 257 int i;
258 fprintf(ctx->fp, "/* This is a generated file. DO NOT EDIT! */\n\n"); 258 fprintf(ctx->fp, "/* This is a generated file. DO NOT EDIT! */\n\n");
259 fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_ofs[BC__MAX+1] = {\n "); 259 fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_ofs[] = {\n");
260 for (i = 0; i < ctx->npc; i++) { 260 for (i = 0; i < ctx->npc; i++) {
261 fprintf(ctx->fp, " %4d,", ctx->sym_ofs[i]); 261 if (i != 0)
262 if ((i & 7) == 7) fprintf(ctx->fp, "\n "); 262 fprintf(ctx->fp, ",\n");
263 fprintf(ctx->fp, "%d", ctx->sym_ofs[i]);
263 } 264 }
264 fprintf(ctx->fp, " 0\n};\n\n");
265} 265}
266 266
267/* Emit VM definitions as Lua code for debug modules. */ 267/* Emit VM definitions as Lua code for debug modules. */
@@ -433,10 +433,12 @@ int main(int argc, char **argv)
433 break; 433 break;
434 case BUILD_bcdef: 434 case BUILD_bcdef:
435 emit_bcdef(ctx); 435 emit_bcdef(ctx);
436 emit_lib(ctx);
436 break; 437 break;
437 case BUILD_vmdef: 438 case BUILD_vmdef:
438 emit_vmdef(ctx); 439 emit_vmdef(ctx);
439 /* fallthrough */ 440 emit_lib(ctx);
441 break;
440 case BUILD_ffdef: 442 case BUILD_ffdef:
441 case BUILD_libdef: 443 case BUILD_libdef:
442 case BUILD_recdef: 444 case BUILD_recdef:
diff --git a/src/buildvm_lib.c b/src/buildvm_lib.c
index 3cf8f522..e77240c5 100644
--- a/src/buildvm_lib.c
+++ b/src/buildvm_lib.c
@@ -15,7 +15,7 @@ static char modname[80];
15static size_t modnamelen; 15static size_t modnamelen;
16static char funcname[80]; 16static char funcname[80];
17static int modstate, regfunc; 17static int modstate, regfunc;
18static int ffid, recffid; 18static int ffid, recffid, ffasmfunc;
19 19
20enum { 20enum {
21 REGFUNC_OK, 21 REGFUNC_OK,
@@ -77,7 +77,8 @@ static void libdef_module(BuildCtx *ctx, char *p, int arg)
77 libdef_endmodule(ctx); 77 libdef_endmodule(ctx);
78 optr = obuf; 78 optr = obuf;
79 *optr++ = (uint8_t)ffid; 79 *optr++ = (uint8_t)ffid;
80 *optr++ = 0; 80 *optr++ = (uint8_t)ffasmfunc;
81 *optr++ = 0; /* Hash table size. */
81 modstate = 1; 82 modstate = 1;
82 fprintf(ctx->fp, "#ifdef %sMODULE_%s\n", LIBDEF_PREFIX, p); 83 fprintf(ctx->fp, "#ifdef %sMODULE_%s\n", LIBDEF_PREFIX, p);
83 fprintf(ctx->fp, "#undef %sMODULE_%s\n", LIBDEF_PREFIX, p); 84 fprintf(ctx->fp, "#undef %sMODULE_%s\n", LIBDEF_PREFIX, p);
@@ -108,8 +109,9 @@ static int find_ffofs(BuildCtx *ctx, const char *name)
108 109
109static void libdef_func(BuildCtx *ctx, char *p, int arg) 110static void libdef_func(BuildCtx *ctx, char *p, int arg)
110{ 111{
112 if (arg != LIBINIT_CF)
113 ffasmfunc++;
111 if (ctx->mode == BUILD_libdef) { 114 if (ctx->mode == BUILD_libdef) {
112 int ofs = arg != LIBINIT_CF ? find_ffofs(ctx, p) : 0;
113 if (modstate == 0) { 115 if (modstate == 0) {
114 fprintf(stderr, "Error: no module for function definition %s\n", p); 116 fprintf(stderr, "Error: no module for function definition %s\n", p);
115 exit(1); 117 exit(1);
@@ -126,12 +128,8 @@ static void libdef_func(BuildCtx *ctx, char *p, int arg)
126 modstate = 2; 128 modstate = 2;
127 fprintf(ctx->fp, " %s%s", arg ? LABEL_PREFIX_FFH : LABEL_PREFIX_CF, p); 129 fprintf(ctx->fp, " %s%s", arg ? LABEL_PREFIX_FFH : LABEL_PREFIX_CF, p);
128 } 130 }
129 if (regfunc != REGFUNC_NOREGUV) obuf[1]++; /* Bump hash table size. */ 131 if (regfunc != REGFUNC_NOREGUV) obuf[2]++; /* Bump hash table size. */
130 libdef_name(regfunc == REGFUNC_NOREGUV ? "" : p, arg); 132 libdef_name(regfunc == REGFUNC_NOREGUV ? "" : p, arg);
131 if (arg) {
132 *optr++ = (uint8_t)ofs;
133 *optr++ = (uint8_t)(ofs >> 8);
134 }
135 } 133 }
136 } else if (ctx->mode == BUILD_ffdef) { 134 } else if (ctx->mode == BUILD_ffdef) {
137 fprintf(ctx->fp, "FFDEF(%s)\n", p); 135 fprintf(ctx->fp, "FFDEF(%s)\n", p);
@@ -146,6 +144,9 @@ static void libdef_func(BuildCtx *ctx, char *p, int arg)
146 for (i = 1; p[i] && modname[i-1]; i++) 144 for (i = 1; p[i] && modname[i-1]; i++)
147 if (p[i] == '_') p[i] = '.'; 145 if (p[i] == '_') p[i] = '.';
148 fprintf(ctx->fp, "\"%s\",\n", p); 146 fprintf(ctx->fp, "\"%s\",\n", p);
147 } else if (ctx->mode == BUILD_bcdef) {
148 if (arg != LIBINIT_CF)
149 fprintf(ctx->fp, ",\n%d", find_ffofs(ctx, p));
149 } 150 }
150 ffid++; 151 ffid++;
151 regfunc = REGFUNC_OK; 152 regfunc = REGFUNC_OK;
@@ -253,7 +254,7 @@ static void libdef_set(BuildCtx *ctx, char *p, int arg)
253 if (p[0] == '!' && p[1] == '\0') p[0] = '\0'; /* Set env. */ 254 if (p[0] == '!' && p[1] == '\0') p[0] = '\0'; /* Set env. */
254 libdef_name(p, LIBINIT_STRING); 255 libdef_name(p, LIBINIT_STRING);
255 *optr++ = LIBINIT_SET; 256 *optr++ = LIBINIT_SET;
256 obuf[1]++; /* Bump hash table size. */ 257 obuf[2]++; /* Bump hash table size. */
257 } 258 }
258} 259}
259 260
@@ -298,6 +299,7 @@ void emit_lib(BuildCtx *ctx)
298 if (ctx->mode == BUILD_recdef) 299 if (ctx->mode == BUILD_recdef)
299 fprintf(ctx->fp, "static const uint16_t recff_idmap[] = {\n0,\n0x0100"); 300 fprintf(ctx->fp, "static const uint16_t recff_idmap[] = {\n0,\n0x0100");
300 recffid = ffid = FF_C+1; 301 recffid = ffid = FF_C+1;
302 ffasmfunc = 0;
301 303
302 while ((fname = *ctx->args++)) { 304 while ((fname = *ctx->args++)) {
303 char buf[256]; /* We don't care about analyzing lines longer than that. */ 305 char buf[256]; /* We don't care about analyzing lines longer than that. */
@@ -347,8 +349,19 @@ void emit_lib(BuildCtx *ctx)
347 349
348 if (ctx->mode == BUILD_ffdef) { 350 if (ctx->mode == BUILD_ffdef) {
349 fprintf(ctx->fp, "\n#undef FFDEF\n\n"); 351 fprintf(ctx->fp, "\n#undef FFDEF\n\n");
352 fprintf(ctx->fp,
353 "#ifndef FF_NUM_ASMFUNC\n#define FF_NUM_ASMFUNC %d\n#endif\n\n",
354 ffasmfunc);
350 } else if (ctx->mode == BUILD_vmdef) { 355 } else if (ctx->mode == BUILD_vmdef) {
351 fprintf(ctx->fp, "}\n\n"); 356 fprintf(ctx->fp, "}\n\n");
357 } else if (ctx->mode == BUILD_bcdef) {
358 int i;
359 fprintf(ctx->fp, "\n};\n\n");
360 fprintf(ctx->fp, "LJ_DATADEF const uint16_t lj_bc_mode[] = {\n");
361 fprintf(ctx->fp, "BCDEF(BCMODE)\n");
362 for (i = ffasmfunc-1; i > 0; i--)
363 fprintf(ctx->fp, "BCMODE_FF,\n");
364 fprintf(ctx->fp, "BCMODE_FF\n};\n\n");
352 } else if (ctx->mode == BUILD_recdef) { 365 } else if (ctx->mode == BUILD_recdef) {
353 char *p = (char *)obuf; 366 char *p = (char *)obuf;
354 fprintf(ctx->fp, "\n};\n\n"); 367 fprintf(ctx->fp, "\n};\n\n");
diff --git a/src/buildvm_peobj.c b/src/buildvm_peobj.c
index 5f4075af..2ff274f9 100644
--- a/src/buildvm_peobj.c
+++ b/src/buildvm_peobj.c
@@ -238,7 +238,7 @@ void emit_peobj(BuildCtx *ctx)
238 for (relocsyms = 0; ctx->extnames[relocsyms]; relocsyms++) ; 238 for (relocsyms = 0; ctx->extnames[relocsyms]; relocsyms++) ;
239 pehdr.nsyms = 1+PEOBJ_NSECTIONS*2 + 1+(ctx->nsym-nzsym) + relocsyms; 239 pehdr.nsyms = 1+PEOBJ_NSECTIONS*2 + 1+(ctx->nsym-nzsym) + relocsyms;
240#if !LJ_HASJIT 240#if !LJ_HASJIT
241 pehdr.nsyms -= 7; 241 pehdr.nsyms -= 11; /* See below, removes [IJ]* opcode symbols. */
242#endif 242#endif
243#if LJ_TARGET_X64 243#if LJ_TARGET_X64
244 pehdr.nsyms += 1; /* Symbol for lj_err_unwind_win64. */ 244 pehdr.nsyms += 1; /* Symbol for lj_err_unwind_win64. */
@@ -353,8 +353,9 @@ void emit_peobj(BuildCtx *ctx)
353 } else { 353 } else {
354#else 354#else
355 } else if (!(pi == BC_JFORI || pi == BC_JFORL || pi == BC_JITERL || 355 } else if (!(pi == BC_JFORI || pi == BC_JFORL || pi == BC_JITERL ||
356 pi == BC_JLOOP || pi == BC_IFORL || pi == BC_IITERL || 356 pi == BC_JLOOP || pi == BC_JFUNCF || pi == BC_JFUNCV ||
357 pi == BC_ILOOP)) { 357 pi == BC_IFORL || pi == BC_IITERL || pi == BC_ILOOP ||
358 pi == BC_IFUNCF || pi == BC_IFUNCV)) {
358#endif 359#endif
359 sprintf(name, PEOBJ_SYM_PREFIX LABEL_PREFIX_BC "%s", 360 sprintf(name, PEOBJ_SYM_PREFIX LABEL_PREFIX_BC "%s",
360 bc_names[pi]); 361 bc_names[pi]);
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 95af6a6c..a9e093bf 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,416 +12,396 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[13650] = { 15static const unsigned char build_actionlist[13578] = {
16 254,1,248,10,137,202,137,90,252,252,139,157,233,15,182,139,233,68,139,187, 16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
17 233,139,108,36,16,141,12,202,59,141,233,15,135,244,11,15,182,139,233,57,200, 17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
18 15,134,244,249,248,2,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 18 252,247,195,237,15,132,244,13,248,14,252,247,195,237,15,132,244,10,65,199,
19 65,252,255,36,252,238,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, 19 134,233,237,131,227,252,248,41,211,252,247,219,131,232,1,15,132,244,248,248,
20 244,3,252,233,244,2,248,12,137,89,252,252,141,28,197,237,141,148,253,25,233, 20 1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
21 137,106,252,248,137,90,252,252,139,157,233,15,182,171,233,68,141,60,252,234, 21 1,15,133,244,1,248,2,255,139,108,36,16,137,157,233,248,3,139,68,36,4,139,
22 139,108,36,16,68,59,189,233,15,135,244,13,137,208,15,182,171,233,133,252, 22 76,36,8,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,15,
23 237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,68,139,121,252, 23 72,139,76,36,32,72,137,141,233,49,192,248,16,72,131,196,40,65,94,65,95,91,
24 248,68,137,56,68,139,121,252,252,68,137,120,4,131,192,8,199,65,252,252,237, 24 93,195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,
25 131,252,237,1,15,133,244,1,248,2,68,139,187,233,255,139,3,15,182,204,15,182, 25 131,194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,
26 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,199,64,4,237,131,192, 26 20,202,252,233,244,5,248,8,137,149,233,137,68,36,4,137,206,137,252,239,232,
27 8,131,252,237,1,15,133,244,3,252,233,244,2,248,14,137,89,252,252,76,139,189, 27 251,1,0,139,149,233,252,233,244,3,248,17,137,252,240,72,137,252,252,248,18,
28 233,139,108,36,16,141,68,193,252,248,137,141,233,141,136,233,137,133,233, 28 139,108,36,16,139,173,233,199,133,233,237,252,233,244,16,248,19,72,129,231,
29 59,141,233,76,137,252,254,137,252,239,15,135,244,15,65,199,134,233,237,65, 29 239,72,137,252,252,248,20,139,108,36,16,72,199,193,252,248,252,255,252,255,
30 252,255,150,233,65,199,134,233,237,139,149,233,255,141,12,194,252,247,217, 30 252,255,184,237,255,139,149,233,68,139,181,233,65,129,198,239,139,90,252,
31 3,141,233,248,16,131,192,1,137,68,36,4,252,247,195,237,15,132,244,17,252, 31 252,199,66,252,252,237,65,199,134,233,237,252,233,244,12,248,21,190,237,252,
32 233,244,18,248,19,137,89,252,252,76,139,189,233,139,108,36,16,141,68,193, 32 233,244,248,248,22,131,232,8,252,233,244,247,248,23,141,68,194,252,248,248,
33 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,252,239,15,135, 33 1,15,182,139,233,131,195,4,137,149,233,137,133,233,255,137,92,36,20,137,206,
34 244,15,65,199,134,233,237,65,252,255,215,65,199,134,233,237,139,149,233,255, 34 248,2,137,252,239,232,251,1,0,139,149,233,139,133,233,139,106,252,248,139,
35 141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,4,252,247,195, 35 90,252,252,41,208,193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,
36 237,15,132,244,17,248,18,252,247,195,237,15,132,244,20,65,199,134,233,237, 36 182,205,131,195,4,65,252,255,36,252,238,248,24,85,83,65,87,65,86,72,131,252,
37 131,227,252,248,41,211,252,247,219,131,232,1,15,132,244,248,248,1,139,44, 37 236,40,137,252,253,137,124,36,16,137,252,241,187,237,49,192,76,141,188,253,
38 10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,1,15,133, 38 36,233,68,139,181,233,65,129,198,239,76,137,189,233,137,68,36,20,72,137,68,
39 244,1,248,2,139,108,36,16,137,157,233,248,3,139,68,36,4,139,76,36,8,248,4, 39 36,32,137,68,36,8,137,68,36,12,56,133,233,15,132,244,249,65,199,134,233,237,
40 255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,21,72,139,76, 40 136,133,233,139,149,233,139,133,233,41,200,193,232,3,131,192,1,41,209,139,
41 36,32,72,137,141,233,49,192,248,22,72,131,196,40,65,94,65,95,91,93,195,248, 41 90,252,252,137,68,36,4,252,247,195,237,15,132,244,13,255,252,233,244,14,248,
42 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131, 42 25,85,83,65,87,65,86,72,131,252,236,40,187,237,137,76,36,12,252,233,244,247,
43 192,1,252,233,244,4,248,7,133,201,15,132,244,5,41,193,141,20,202,252,233, 43 248,26,85,83,65,87,65,86,72,131,252,236,40,187,237,248,1,137,84,36,8,137,
44 244,5,248,8,255,137,149,233,137,68,36,4,137,206,137,252,239,232,251,1,0,139, 44 252,253,137,124,36,16,137,252,241,248,2,76,139,189,233,76,137,124,36,32,137,
45 149,233,252,233,244,3,248,23,137,252,240,72,137,252,252,248,24,139,108,36, 45 108,36,20,72,137,165,233,68,139,181,233,65,129,198,239,248,3,65,199,134,233,
46 16,139,173,233,199,133,233,237,252,233,244,22,248,25,72,129,231,239,72,137, 46 237,139,149,233,1,203,41,211,139,133,233,41,200,193,232,3,131,192,1,248,27,
47 252,252,248,26,139,108,36,16,72,199,193,252,248,252,255,252,255,252,255,184, 47 255,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,29,137,202,
48 237,139,149,233,68,139,181,233,65,129,198,239,139,90,252,252,199,66,252,252, 48 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,
49 237,65,199,134,233,237,255,252,233,244,16,248,20,252,247,195,237,15,132,244, 49 252,255,36,252,238,248,30,85,83,65,87,65,86,72,131,252,236,40,137,252,253,
50 27,131,227,252,248,41,218,72,141,76,25,252,248,139,90,252,252,199,68,10,4, 50 137,124,36,16,137,108,36,20,68,139,189,233,68,43,189,233,199,68,36,12,0,0,
51 237,252,233,244,16,248,15,190,237,252,233,244,247,248,13,137,202,248,11,141, 51 0,0,68,137,124,36,8,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,
52 68,194,252,248,15,182,139,233,131,195,4,137,149,233,137,133,233,137,92,36, 52 209,133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,
53 20,137,206,248,1,137,252,239,232,251,1,0,139,141,233,255,139,133,233,139, 53 227,252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,
54 105,252,248,139,89,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248, 54 72,99,77,252,240,76,141,61,245,76,1,252,249,68,139,122,252,248,69,139,191,
55 28,85,83,65,87,65,86,72,131,252,236,40,137,252,253,137,124,36,16,137,252, 55 233,255,69,139,191,233,252,255,225,248,31,15,182,75,252,255,131,252,237,16,
56 241,187,237,49,192,76,141,188,253,36,233,68,139,181,233,65,129,198,239,76, 56 141,12,202,41,252,233,15,132,244,32,252,247,217,193,252,233,3,139,124,36,
57 137,189,233,137,68,36,20,72,137,68,36,32,137,68,36,8,137,68,36,12,56,133, 57 16,137,151,233,137,202,139,72,4,139,0,137,77,4,137,69,0,137,252,238,252,233,
58 233,15,132,244,249,65,199,134,233,237,136,133,233,139,149,233,139,133,233, 58 244,33,248,34,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,
59 41,200,193,232,3,131,192,1,41,209,139,90,252,252,137,68,36,4,252,247,195, 59 133,244,247,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,
60 237,15,132,244,17,252,233,244,18,248,29,255,85,83,65,87,65,86,72,131,252, 60 35,15,182,67,252,254,255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,
61 236,40,187,237,137,76,36,12,252,233,244,247,248,30,85,83,65,87,65,86,72,131, 61 4,36,252,233,244,247,248,36,15,182,67,252,254,141,4,194,248,1,15,182,107,
62 252,236,40,187,237,248,1,137,84,36,8,137,252,253,137,124,36,16,137,252,241, 62 252,255,141,44,252,234,248,2,139,124,36,16,137,151,233,137,252,238,72,137,
63 248,2,76,139,189,233,76,137,124,36,32,137,108,36,20,72,137,165,233,68,139, 63 194,137,252,253,137,92,36,20,232,251,1,1,139,149,233,133,192,15,132,244,249,
64 181,233,65,129,198,239,248,3,65,199,134,233,237,139,149,233,1,203,41,211, 64 248,32,15,182,75,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,3,15,
65 139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252, 65 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,
66 239,15,133,244,31,252,255,165,233,248,32,255,85,83,65,87,65,86,72,131,252, 66 233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,237,252,233,244,
67 236,40,137,252,253,137,124,36,16,137,108,36,20,68,139,189,233,68,43,189,233, 67 29,248,37,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,
68 199,68,36,12,0,0,0,0,68,137,124,36,8,76,139,189,233,76,137,124,36,32,72,137, 68 244,247,255,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,
69 165,233,252,255,209,133,192,15,132,244,21,137,193,187,237,252,233,244,2,248, 69 38,15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,39,15,182,67,252,
70 27,1,209,131,227,252,248,137,213,41,218,199,68,193,252,252,237,137,200,139, 70 254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,
71 93,252,244,72,99,77,252,240,76,141,61,245,76,1,252,249,68,139,122,252,248, 71 137,151,233,137,252,238,72,137,194,137,252,253,137,92,36,20,232,251,1,2,139,
72 69,139,191,233,69,139,191,233,252,255,225,248,33,15,182,75,252,255,131,252, 72 149,233,133,192,15,132,244,249,15,182,75,252,253,139,108,202,4,139,12,202,
73 237,16,141,12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,139, 73 137,104,4,137,8,248,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
74 124,36,16,137,151,233,137,202,139,72,4,139,0,137,77,4,137,69,0,137,252,238, 74 252,255,36,252,238,248,3,139,141,233,137,89,252,244,15,182,67,252,253,139,
75 252,233,244,35,248,36,255,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252, 75 108,194,4,139,4,194,137,105,20,137,65,16,141,153,233,41,211,139,105,252,248,
76 252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137,205,252,233, 76 184,237,252,233,244,29,248,41,139,108,36,16,137,149,233,141,52,202,141,20,
77 244,248,248,37,15,182,67,252,254,255,252,242,15,42,192,252,242,15,17,4,36, 77 194,137,252,239,15,182,75,252,252,137,92,36,20,232,251,1,3,248,3,139,149,
78 255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141,4,194,248,1, 78 233,255,131,252,248,1,15,135,244,42,248,4,141,91,4,15,130,244,252,248,5,15,
79 15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,137,151,233,137,252, 79 183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15,182,232,131,
80 238,72,137,194,137,252,253,137,92,36,20,232,251,1,1,139,149,233,133,192,15, 80 195,4,193,232,16,65,252,255,36,252,238,248,43,131,195,4,129,120,253,4,239,
81 132,244,249,248,34,15,182,75,252,253,139,104,4,139,0,137,108,202,4,137,4, 81 15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,244,4,248,45,
82 202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 82 131,252,235,4,137,206,137,252,233,139,108,36,16,137,149,233,255,137,194,137,
83 248,3,139,141,233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,3, 83 252,239,137,92,36,20,232,251,1,4,252,233,244,3,248,46,65,141,4,199,252,233,
84 0,0,0,252,255,165,233,248,39,137,4,36,199,68,36,4,237,72,141,4,36,128,123, 84 244,247,248,47,65,141,4,199,141,44,252,234,149,252,233,244,248,248,48,141,
85 252,252,235,15,133,244,247,65,141,142,233,255,137,41,199,65,4,237,137,205, 85 4,194,137,197,252,233,244,248,248,49,141,4,194,248,1,141,44,252,234,248,2,
86 252,233,244,248,248,40,15,182,67,252,254,255,72,141,4,36,252,233,244,247, 86 141,12,202,68,15,182,67,252,252,137,206,137,193,139,124,36,16,137,151,233,
87 248,41,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234, 87 137,252,234,137,252,253,137,92,36,20,232,251,1,5,139,149,233,133,192,15,132,
88 248,2,139,124,36,16,137,151,233,137,252,238,72,137,194,137,252,253,137,92, 88 244,40,248,42,137,193,41,208,137,89,252,244,141,152,233,255,184,237,252,233,
89 36,20,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,75,252,253,139, 89 244,27,248,50,139,108,36,16,137,149,233,141,52,194,137,252,239,137,92,36,
90 108,202,4,139,12,202,137,104,4,137,8,248,42,139,3,15,182,204,15,182,232,131, 90 20,232,251,1,6,139,149,233,252,233,244,42,248,51,141,76,202,8,248,28,137,
91 195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,15, 91 76,36,4,137,4,36,131,252,233,8,139,108,36,16,137,149,233,137,206,141,20,193,
92 182,67,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,153,233,41, 92 137,252,239,137,92,36,20,232,251,1,7,139,149,233,139,76,36,4,139,4,36,139,
93 211,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,139,108,36,16,137, 93 105,252,248,131,192,1,65,57,215,15,132,244,52,137,202,137,90,252,252,139,
94 149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,20, 94 157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,
95 232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255,141,91, 95 248,53,139,108,36,16,137,149,233,137,206,137,252,239,137,92,36,20,232,251,
96 4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3, 96 1,8,139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,
97 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,45,131, 97 164,253,252,238,233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,
98 195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120,253,4,239, 98 252,253,239,15,131,244,55,139,90,252,252,137,68,36,4,137,106,252,252,139,
99 252,233,244,4,248,47,131,252,235,4,137,206,137,252,233,139,108,36,16,137, 99 42,137,106,252,248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,
100 149,233,137,194,137,252,239,137,92,36,20,232,251,1,4,252,233,244,3,248,48, 100 4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,
101 255,65,141,4,199,252,233,244,247,248,49,65,141,4,199,141,44,252,234,149,252, 101 68,36,4,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,
102 233,244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141,4,194,248, 102 237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,
103 1,141,44,252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,137,193,139, 103 139,106,252,248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,
104 124,36,16,137,151,233,137,252,234,137,252,253,137,92,36,20,232,251,1,5,139, 104 66,252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,
105 149,233,133,192,15,132,244,42,248,44,137,193,41,208,137,89,252,244,141,152, 105 139,90,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,
106 233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,244,31,255, 106 2,133,252,237,199,66,252,252,237,15,132,244,58,65,139,134,233,199,66,252,
107 252,255,165,233,248,52,139,108,36,16,137,149,233,141,52,194,137,252,239,137, 107 252,237,137,106,252,248,139,141,233,255,35,136,233,105,201,239,3,141,233,
108 92,36,20,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76,36,4,137,4, 108 248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,
109 36,131,252,233,8,139,108,36,16,137,149,233,137,206,141,20,193,137,252,239, 109 137,233,133,201,15,133,244,3,252,233,244,58,248,5,139,105,4,129,252,253,239,
110 137,92,36,20,232,251,1,7,139,149,233,139,76,36,4,139,4,36,139,105,252,248, 110 15,132,244,58,255,139,1,137,106,252,252,137,66,252,248,252,233,244,58,248,
111 131,192,1,65,57,215,15,132,244,53,252,255,165,233,248,54,139,108,36,16,137, 111 6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,
112 149,233,137,206,137,252,239,137,92,36,20,232,251,1,8,139,149,233,139,67,252, 112 7,252,247,213,65,139,172,253,174,233,252,233,244,2,248,60,129,252,248,239,
113 252,15,182,204,15,182,232,193,232,16,65,252,255,164,253,252,238,233,248,55, 113 15,130,244,55,129,122,253,4,239,15,133,244,55,255,139,42,131,189,233,0,15,
114 129,252,248,239,15,130,244,56,255,139,105,4,129,252,253,239,15,131,244,56, 114 133,244,55,129,122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,90,252,
115 137,68,36,4,137,105,252,252,139,41,137,105,252,248,131,232,2,15,132,244,248, 115 252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,
116 137,12,36,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248, 116 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,248,1,252,233,244,
117 131,232,1,15,133,244,1,139,12,36,248,2,139,68,36,4,252,233,244,57,248,58, 117 58,248,61,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,
118 129,252,248,239,15,130,244,56,139,105,4,184,237,252,247,213,57,232,255,15, 118 55,137,213,139,50,141,82,8,139,124,36,16,232,251,1,9,137,252,234,139,40,139,
119 71,197,255,15,134,244,247,137,232,248,1,255,139,105,252,248,139,132,253,197, 119 64,4,139,90,252,252,137,106,252,248,137,66,252,252,252,233,244,58,248,62,
120 233,199,65,252,252,237,137,65,252,248,252,233,244,59,248,60,129,252,248,239, 120 129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,
121 15,130,244,56,139,105,4,129,252,253,239,15,133,244,252,248,1,139,41,139,173, 121 15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,129,252,248,239,
122 233,248,2,133,252,237,199,65,252,252,237,15,132,244,59,139,65,252,248,65, 122 15,130,244,55,139,90,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,
123 139,134,233,199,65,252,252,237,137,105,252,248,137,12,36,139,141,233,255, 123 199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,122,253,4,239,
124 35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57, 124 15,135,244,55,65,131,190,233,0,15,133,244,55,65,139,174,233,65,59,174,233,
125 129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244, 125 255,15,130,244,247,232,244,66,248,1,139,108,36,16,137,149,233,137,92,36,20,
126 59,248,5,139,105,4,129,252,253,239,15,132,244,59,255,139,1,139,12,36,137, 126 137,214,137,252,239,232,251,1,10,139,149,233,252,233,244,2,248,67,129,252,
127 105,252,252,137,65,252,248,252,233,244,59,248,6,129,252,253,239,15,132,244, 127 248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15,133,244,55,
128 1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,65,139,172,253, 128 139,108,36,16,137,149,233,255,139,90,252,252,139,50,141,82,8,137,252,239,
129 174,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,129,121,253,4, 129 137,92,36,20,232,251,1,11,139,149,233,133,192,15,132,244,249,139,106,8,139,
130 239,15,133,244,56,255,139,41,131,189,233,0,15,133,244,56,129,121,253,12,239, 130 66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,
131 15,133,244,56,139,65,8,137,133,233,199,65,252,252,237,137,105,252,248,252, 131 248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,233,244,1,248,3,199,
132 246,133,233,235,15,132,244,247,128,165,233,235,65,139,134,233,65,137,174, 132 66,252,252,237,252,233,244,58,248,70,129,252,248,239,15,130,244,55,139,106,
133 233,137,133,233,248,1,252,233,244,59,248,62,255,129,252,248,239,15,130,244, 133 252,248,129,122,253,4,239,255,15,133,244,55,139,133,233,139,90,252,252,199,
134 56,129,121,253,4,239,15,133,244,56,137,20,36,137,205,139,49,141,81,8,139, 134 66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,69,248,71,
135 124,36,16,232,251,1,9,137,252,233,139,20,36,139,40,139,64,4,137,105,252,248, 135 129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,129,122,253,
136 137,65,252,252,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,121, 136 12,239,15,135,244,55,139,90,252,252,255,252,242,15,16,66,8,72,189,237,237,
137 253,4,239,15,135,244,56,255,252,242,15,16,1,252,233,244,64,255,221,1,252, 137 102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,
138 233,244,65,255,248,66,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 138 248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
139 133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244,59, 139 253,4,239,15,132,244,72,139,40,139,64,4,137,42,137,66,4,252,233,244,68,248,
140 248,3,129,121,253,4,239,15,135,244,56,65,131,190,233,0,15,133,244,56,65,139, 140 2,131,189,233,0,15,132,244,72,137,252,239,137,213,137,198,232,251,1,12,137,
141 174,233,65,59,174,233,255,15,130,244,247,232,244,67,248,1,139,108,36,16,137, 141 252,234,133,192,15,133,244,1,248,72,184,237,252,233,244,69,248,73,255,129,
142 141,233,137,89,252,252,137,92,36,20,137,20,36,137,206,137,252,239,232,251, 142 252,248,239,15,130,244,55,139,106,252,248,129,122,253,4,239,15,133,244,55,
143 1,10,139,141,233,139,20,36,252,233,244,2,248,68,129,252,248,239,15,130,244, 143 139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,255,15,87,192,
144 56,15,132,244,248,248,1,129,121,253,4,239,15,133,244,56,137,20,36,139,49, 144 252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,69,248,
145 139,108,36,16,137,141,233,255,137,89,252,252,141,81,8,137,252,239,137,92, 145 74,129,252,248,239,15,130,244,55,141,74,8,131,232,1,187,237,248,1,65,15,182,
146 36,20,232,251,1,11,139,141,233,139,20,36,133,192,15,132,244,249,139,105,8, 146 174,233,193,252,237,235,131,229,1,1,252,235,252,233,244,27,248,75,129,252,
147 139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,20,137,41,137, 147 248,239,15,130,244,55,129,122,253,12,239,15,133,244,55,255,139,106,4,137,
148 65,4,248,69,184,237,252,233,244,70,248,2,199,65,12,237,252,233,244,1,248, 148 106,12,199,66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,
149 3,199,65,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56, 149 187,237,252,233,244,1,248,76,129,252,248,239,15,130,244,55,139,42,139,90,
150 129,121,253,4,239,255,15,133,244,56,139,133,233,199,65,252,252,237,137,65, 150 252,252,137,92,36,20,137,44,36,129,122,253,4,239,15,133,244,55,72,131,189,
151 252,248,199,65,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130, 151 233,0,15,133,244,55,128,189,233,235,15,135,244,55,139,141,233,15,132,244,
152 244,56,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,255, 152 247,255,59,141,233,15,132,244,55,248,1,141,92,193,252,240,59,157,233,15,135,
153 252,242,15,16,65,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252, 153 244,55,137,157,233,139,108,36,16,137,149,233,131,194,8,137,149,233,141,108,
154 242,15,45,192,252,242,15,17,65,252,248,255,139,41,59,133,233,15,131,244,248, 154 194,232,72,41,221,57,203,15,132,244,249,248,2,139,68,43,4,137,67,252,252,
155 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,139,40,139,64,4, 155 139,4,43,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,139,
156 137,41,137,65,4,252,233,244,69,248,2,131,189,233,0,15,132,244,73,137,20,36, 156 60,36,232,244,24,65,199,134,233,237,255,139,108,36,16,139,28,36,139,149,233,
157 137,252,239,137,205,137,198,232,251,1,12,137,252,233,139,20,36,133,192,15, 157 129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,
158 133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15,130, 158 68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,
159 244,56,129,121,253,4,239,15,133,244,56,139,133,233,199,65,252,252,237,137, 159 135,244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,
160 65,252,248,255,15,87,192,252,242,15,17,65,8,255,217,252,238,221,89,8,255, 160 193,8,68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,
161 184,237,252,233,244,70,248,75,129,252,248,239,15,130,244,56,137,89,252,252, 161 139,92,36,20,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,
162 187,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,65,252,246,134, 162 195,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,139,
163 233,235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,31,252,255, 163 233,131,252,233,8,137,139,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,
164 165,233,248,3,131,195,1,252,233,244,2,248,76,255,129,252,248,239,15,130,244, 164 244,7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,
165 56,129,121,253,12,239,15,133,244,56,137,89,252,252,139,105,4,137,105,12,199, 165 149,233,252,233,244,4,248,77,139,106,252,248,139,173,233,139,90,252,252,137,
166 65,4,237,139,41,139,89,8,137,105,8,137,25,187,237,137,202,129,193,239,131, 166 92,36,20,137,44,36,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,
167 232,2,252,233,244,1,248,9,139,92,36,20,252,233,244,56,248,77,129,252,248, 167 135,244,55,139,141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,
168 239,15,130,244,56,139,41,137,89,252,252,137,92,36,20,137,44,36,129,121,253, 168 92,193,252,248,59,157,233,15,135,244,55,137,157,233,139,108,36,16,137,149,
169 4,239,15,133,244,9,255,72,131,189,233,0,15,133,244,9,128,189,233,235,15,135, 169 233,137,149,233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,
170 244,9,139,157,233,137,92,36,4,15,132,244,247,59,157,233,15,132,244,9,248, 170 255,139,68,43,4,137,67,252,252,139,4,43,137,67,252,248,131,252,235,8,57,203,
171 1,141,92,195,252,240,59,157,233,15,135,244,9,137,157,233,139,108,36,16,137, 171 15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,139,108,
172 141,233,131,193,8,137,141,233,255,139,108,36,4,141,76,193,232,72,41,217,57, 172 36,16,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,
173 252,235,15,132,244,249,248,2,139,68,11,4,137,67,252,252,139,4,11,137,67,252, 173 233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,
174 248,131,252,235,8,57,252,235,15,133,244,2,248,3,139,60,36,139,116,36,4,232, 174 26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,139,
175 244,28,65,199,134,233,237,139,108,36,16,139,28,36,139,149,233,129,252,248, 175 1,137,4,41,139,65,4,137,68,41,4,131,193,8,68,57,252,249,15,133,244,5,248,
176 239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68,137,252, 176 6,141,67,1,248,7,139,92,36,20,137,68,36,4,49,201,252,247,195,237,15,132,244,
177 251,41,203,15,132,244,252,255,141,4,26,193,252,235,3,59,133,233,15,135,244, 177 13,252,233,244,14,248,8,137,222,137,252,239,232,251,1,13,248,9,139,12,36,
178 255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8, 178 68,137,185,233,137,222,137,252,239,232,251,1,0,139,149,233,252,233,244,4,
179 68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,139,92, 179 248,78,139,108,36,16,72,252,247,133,233,237,15,132,244,55,255,137,149,233,
180 36,20,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,195, 180 141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,
181 237,15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,139,233,131, 181 252,233,244,16,255,248,64,139,90,252,252,221,90,252,248,252,233,244,58,248,
182 252,233,8,137,139,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7, 182 79,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
183 248,9,255,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,149, 183 15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,63,139,90,252,252,
184 233,252,233,244,4,248,9,139,92,36,20,252,233,244,56,248,78,139,173,233,137, 184 252,242,15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,
185 89,252,252,137,92,36,20,137,44,36,72,131,189,233,0,15,133,244,9,128,189,233, 185 253,4,239,15,135,244,55,221,2,217,225,248,63,248,64,139,90,252,252,221,90,
186 235,15,135,244,9,139,157,233,137,92,36,4,15,132,244,247,59,157,233,255,15, 186 252,248,255,248,58,184,237,248,69,137,68,36,4,248,56,252,247,195,237,15,133,
187 132,244,9,248,1,141,92,195,252,248,59,157,233,15,135,244,9,137,157,233,139, 187 244,253,248,5,56,67,252,255,15,135,244,252,15,182,75,252,253,72,252,247,209,
188 108,36,16,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,72,41,217, 188 141,20,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
189 57,252,235,15,132,244,249,248,2,139,68,11,4,137,67,252,252,139,4,11,137,67, 189 252,238,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,
190 252,248,131,252,235,8,57,252,235,15,133,244,2,248,3,139,60,36,139,116,36, 190 193,252,248,252,255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,
191 4,232,244,28,65,199,134,233,237,139,108,36,16,139,28,36,139,149,233,255,129, 191 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,
192 252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68, 192 244,63,248,81,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
193 137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,135, 193 55,252,242,15,16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,
194 244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193, 194 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,
195 8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,20,137,68,36, 195 233,244,63,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
196 4,49,201,252,247,195,237,15,132,244,17,255,252,233,244,18,248,8,137,222,137, 196 135,244,55,221,2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,
197 252,239,232,251,1,13,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232, 197 244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,
198 251,1,0,139,149,233,252,233,244,4,248,79,139,108,36,16,137,89,252,252,72, 198 83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
199 252,247,133,233,237,15,132,244,56,137,141,233,141,68,193,252,248,137,133, 199 2,232,244,84,252,233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,
200 233,49,192,72,137,133,233,176,235,136,133,233,252,233,244,22,255,248,65,221, 200 122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,
201 89,252,248,252,233,244,59,248,80,129,252,248,239,15,130,244,56,129,121,253, 201 248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,
202 4,239,15,135,244,56,252,242,15,16,1,72,184,237,237,102,72,15,110,200,15,84, 202 252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,248,239,255,15,130,
203 193,248,64,252,242,15,17,65,252,248,255,248,80,129,252,248,239,15,130,244, 203 244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,
204 56,129,121,253,4,239,15,135,244,56,221,1,217,225,248,64,248,65,221,89,252, 204 89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,
205 248,255,248,59,184,237,248,70,137,68,36,4,248,57,252,247,195,237,15,133,244, 205 252,254,252,233,244,64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,
206 253,248,5,56,67,252,255,15,135,244,252,139,3,15,182,204,15,182,232,131,195, 206 4,239,15,135,244,55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,
207 4,193,232,16,65,252,255,36,252,238,248,6,199,68,193,252,244,237,131,192,1, 207 15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,
208 252,233,244,5,248,7,137,202,72,199,193,252,248,252,255,252,255,252,255,252, 208 233,244,64,248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,
209 233,244,18,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 209 135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
210 135,244,56,252,242,15,81,1,252,233,244,64,248,82,129,252,248,239,15,130,244, 210 252,233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
211 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,83,252,233,244, 211 135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
212 64,248,84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 212 252,243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,
213 56,252,242,15,16,1,232,244,85,252,233,244,64,255,248,81,129,252,248,239,15, 213 239,15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,
214 130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,250,252,233,244, 214 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
215 65,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, 215 16,2,255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248,96,129,252,
216 1,232,244,83,252,233,244,65,248,84,255,129,252,248,239,15,130,244,56,129, 216 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,
217 121,253,4,239,15,135,244,56,221,1,232,244,85,252,233,244,65,255,248,86,129, 217 137,213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129,252,248,239,
218 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252,237,221, 218 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,213,
219 1,217,252,241,252,233,244,65,248,87,129,252,248,239,15,130,244,56,129,121, 219 232,251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129,252,248,239,
220 253,4,239,15,135,244,56,217,252,236,221,1,217,252,241,252,233,244,65,248, 220 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,139,106,252,
221 88,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221, 221 248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248,239,15,130,
222 1,232,244,89,252,233,244,65,248,90,129,252,248,239,15,130,244,56,129,121, 222 244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220,141,233,
223 253,4,239,15,135,244,56,221,1,217,252,254,252,233,244,65,248,91,129,252,248, 223 252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122,253,4,239,
224 239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,255,252, 224 15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217,252,243,
225 233,244,65,248,92,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 225 252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
226 244,56,221,1,217,252,242,221,216,252,233,244,65,248,93,129,252,248,239,15, 226 135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217,252,253,
227 130,244,56,255,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217, 227 221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139,106,4,129,
228 232,222,225,217,252,250,217,252,243,252,233,244,65,248,94,129,252,248,239, 228 252,253,239,15,135,244,55,139,90,252,252,139,2,137,106,252,252,137,66,252,
229 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,232, 229 248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,
230 222,225,217,252,250,217,201,217,252,243,252,233,244,65,248,95,129,252,248, 230 184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,
231 239,15,130,244,56,129,121,253,4,239,15,135,244,56,255,221,1,217,232,217,252, 231 41,197,255,252,242,15,42,197,255,137,44,36,219,4,36,255,139,106,252,252,129,
232 243,252,233,244,65,255,248,96,129,252,248,239,15,130,244,56,129,121,253,4, 232 229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,
233 239,15,135,244,56,252,242,15,16,1,255,137,12,36,137,213,232,251,1,14,139, 233 242,15,17,2,255,221,26,255,184,237,252,233,244,69,248,3,255,15,87,192,252,
234 12,36,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,244,56, 234 233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,72,
235 129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,137,12,36,137,213,232, 235 189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,66,252,248,
236 251,1,15,139,12,36,137,252,234,252,233,244,64,255,248,98,129,252,248,239, 236 255,221,2,199,4,36,0,0,128,90,216,12,36,221,90,252,248,255,139,106,252,252,
237 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,137,12, 237 184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,248,239,15,130,244,
238 36,137,213,232,251,1,16,139,12,36,137,252,234,252,233,244,64,248,99,255,248, 238 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,248,103,129,252,248,
239 100,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 239 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,255,139,106,4,139,
240 15,16,1,252,242,15,89,133,233,252,233,244,64,255,248,100,129,252,248,239, 240 90,252,252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,
241 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,220,141,233,252,233,244, 241 232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,
242 65,255,248,101,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 242 34,255,217,192,232,244,104,220,252,233,248,1,221,90,252,248,221,26,255,139,
243 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,217,252,243,252,233,244, 243 66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,69,248,
244 65,248,102,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 244 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
245 129,121,253,12,239,255,15,135,244,56,221,65,8,221,1,217,252,253,221,217,252, 245 244,1,255,217,252,238,217,201,252,233,244,1,255,248,105,129,252,248,239,15,
246 233,244,65,248,103,129,252,248,239,15,130,244,56,139,105,4,129,252,253,239, 246 130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
247 15,135,244,56,139,1,137,105,252,252,137,65,252,248,209,229,129,252,253,0, 247 55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
248 0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252, 248 233,244,64,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
249 253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42, 249 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
250 197,255,137,44,36,219,4,36,255,139,105,252,252,129,229,252,255,252,255,15, 250 74,8,232,244,107,252,233,244,63,255,248,106,129,252,248,239,15,130,244,55,
251 128,129,205,0,0,224,63,137,105,252,252,248,2,255,252,242,15,17,1,255,221, 251 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,
252 25,255,184,237,252,233,244,70,248,3,255,15,87,192,252,233,244,2,255,217,252, 252 66,8,232,244,107,252,233,244,64,255,248,108,129,252,248,239,15,130,244,55,
253 238,252,233,244,2,255,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252, 253 129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,
254 242,15,89,193,252,242,15,17,65,252,248,255,221,1,199,4,36,0,0,128,90,216, 254 15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,242,15,16,
255 12,36,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244, 255 76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,109,
256 1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 256 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
257 56,252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253, 257 16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,
258 4,239,15,135,244,56,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255, 258 15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,
259 15,132,244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242, 259 1,252,233,244,1,255,248,5,221,216,252,233,244,55,255,248,110,129,252,248,
260 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,220,252,233,248, 260 239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42,255,252,242,15,42,
261 1,221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, 261 133,233,252,233,244,63,255,219,133,233,252,233,244,64,255,248,111,129,252,
262 248,2,184,237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,105,4,252,233, 262 248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139,42,139,90,252,252,
263 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 263 131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,15,42,197,252,233,
264 1,255,248,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 264 244,63,255,137,44,36,219,4,36,252,233,244,64,255,248,112,65,139,174,233,65,
265 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223, 265 59,174,233,15,130,244,247,232,244,66,248,1,129,252,248,239,15,133,244,55,
266 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15, 266 129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61,252,255,0,0,0,15,135,
267 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 267 244,55,137,68,36,4,255,221,2,219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,
268 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248, 268 244,55,255,199,68,36,24,1,0,0,0,72,141,68,36,4,248,113,139,108,36,16,137,
269 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, 269 149,233,139,84,36,24,72,137,198,137,252,239,137,92,36,20,232,251,1,17,139,
270 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248, 270 149,233,139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,58,248,
271 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 271 114,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,199,68,36,
272 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252, 272 4,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,55,15,134,244,
273 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, 273 247,129,122,253,20,239,255,252,242,15,45,106,16,137,108,36,4,255,221,66,16,
274 197,1,252,233,244,1,255,248,110,129,252,248,239,15,130,244,56,129,121,253, 274 219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,55,129,122,253,12,239,
275 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64, 275 15,135,244,55,139,42,137,108,36,24,139,173,233,255,252,242,15,45,74,8,255,
276 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252, 276 139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,
277 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244, 277 108,36,24,41,200,15,140,244,115,141,172,253,13,233,131,192,1,248,4,137,68,
278 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 278 36,24,137,232,252,233,244,113,248,5,15,140,244,252,141,68,40,1,252,233,244,
279 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233, 279 2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,
280 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133, 280 1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,115,49,192,252,233,244,
281 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42, 281 4,248,116,129,252,248,239,15,130,244,55,65,139,174,233,65,59,174,233,15,130,
282 197,252,233,244,64,255,137,44,36,219,4,36,252,233,244,65,255,248,113,65,139, 282 244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,55,129,122,253,
283 174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,129,252,248,239,15, 283 12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,66,8,219,92,36,
284 133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252,255, 284 4,139,68,36,4,255,133,192,15,142,244,115,131,189,233,1,15,130,244,115,15,
285 0,0,0,15,135,244,56,137,68,36,4,255,221,1,219,92,36,4,129,124,36,4,252,255, 285 133,244,117,65,57,134,233,15,130,244,117,15,182,141,233,65,139,174,233,137,
286 0,0,0,15,135,244,56,255,199,68,36,24,1,0,0,0,72,141,68,36,4,137,12,36,248, 286 68,36,24,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,
287 114,139,108,36,16,137,149,233,139,84,36,24,72,137,198,137,252,239,137,92, 287 233,244,113,248,118,129,252,248,239,255,15,130,244,55,65,139,174,233,65,59,
288 36,20,232,251,1,17,139,12,36,139,149,233,199,65,252,252,237,137,65,252,248, 288 174,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,
289 252,233,244,59,248,115,65,139,174,233,65,59,174,233,15,130,244,247,232,244, 289 42,139,133,233,133,192,15,132,244,115,65,57,134,233,15,130,244,119,129,197,
290 67,248,1,137,12,36,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248, 290 239,137,92,36,4,137,68,36,24,65,139,158,233,248,1,255,15,182,77,0,131,197,
291 239,15,130,244,56,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105, 291 1,131,232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,113,248,
292 16,137,108,36,4,255,221,65,16,219,92,36,4,255,248,1,129,121,253,4,239,15, 292 120,129,252,248,239,15,130,244,55,65,139,174,233,65,59,174,233,15,130,244,
293 133,244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36,24,139,173, 293 247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,65,
294 233,255,252,242,15,45,73,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133, 294 57,134,233,255,15,130,244,119,129,197,239,137,92,36,4,137,68,36,24,65,139,
295 201,15,142,244,253,248,3,139,108,36,24,41,200,15,140,244,116,141,172,253, 295 158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,
296 13,233,131,192,1,248,4,137,68,36,24,137,232,252,233,244,114,248,5,15,140, 296 131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,
297 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15, 297 1,15,137,244,1,137,216,139,92,36,4,252,233,244,113,248,121,129,252,248,239,
298 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244, 298 15,130,244,55,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,
299 3,248,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,65,139, 299 248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,65,57,134,233,15,
300 174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,255,137,12,36,129,121, 300 130,244,119,129,197,239,137,92,36,4,137,68,36,24,65,139,158,233,252,233,244,
301 253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255,252,242, 301 249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,
302 15,45,65,8,255,221,65,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,116, 302 15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,
303 131,189,233,1,15,130,244,116,15,133,244,118,65,57,134,233,15,130,244,118, 303 137,216,139,92,36,4,252,233,244,113,248,122,129,252,248,239,15,130,244,55,
304 15,182,141,233,65,139,174,233,137,68,36,24,248,1,136,77,0,131,197,1,131,232, 304 129,122,253,4,239,15,133,244,55,137,213,139,58,232,251,1,18,137,252,234,255,
305 1,15,133,244,1,65,139,134,233,252,233,244,114,248,119,129,252,248,239,255, 305 252,242,15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,244,55,
306 15,130,244,56,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248, 306 129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,
307 1,137,12,36,129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15, 307 110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,
308 132,244,116,65,57,134,233,15,130,244,120,129,197,239,137,92,36,4,137,68,36, 308 255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
309 24,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133, 309 252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,
310 244,1,137,216,139,92,36,4,252,233,244,114,248,121,129,252,248,239,15,130, 310 126,197,255,137,68,36,4,141,68,194,252,240,248,1,57,208,15,134,244,125,129,
311 244,56,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,137,12, 311 120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,
312 36,129,121,253,4,239,15,133,244,56,139,41,139,133,233,65,57,134,233,255,15, 312 126,193,33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,
313 130,244,120,129,197,239,137,92,36,4,137,68,36,24,65,139,158,233,252,233,244, 313 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,
314 249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135, 314 102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,
315 244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216, 315 242,15,88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,130,244,
316 139,92,36,4,252,233,244,114,248,122,129,252,248,239,15,130,244,56,255,65, 316 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,
317 139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,137,12,36,129,121, 317 15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,
318 253,4,239,15,133,244,56,139,41,139,133,233,65,57,134,233,15,130,244,120,129, 318 88,193,102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,55,129,
319 197,239,137,92,36,4,137,68,36,24,65,139,158,233,252,233,244,249,248,1,15, 319 122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,
320 182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248, 320 205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,248,130,
321 131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92, 321 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
322 36,4,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4, 322 16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
323 239,15,133,244,56,137,20,36,137,205,139,57,232,251,1,18,137,252,233,139,20, 323 252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,126,139,
324 36,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239,15,130, 324 68,36,4,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,
325 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237,237,102, 325 253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,
326 72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233, 326 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
327 244,64,255,248,125,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
328 244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
329 102,15,126,197,255,137,68,36,4,141,68,193,252,240,255,137,20,36,255,248,1,
330 57,200,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,
331 0,252,242,15,88,193,102,15,126,194,33,213,255,131,232,8,252,233,244,1,255,
332 248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,
333 242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,
334 197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,255,248,129,
335 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,
336 16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
337 252,242,15,16,0,252,242,15,88,193,102,15,126,194,49,213,255,248,130,129,252,
338 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,
339 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,
340 252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129,121,253,4,239,
341 15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,
342 88,193,102,15,126,197,255,252,247,213,255,248,131,252,242,15,42,197,252,233,
343 244,64,248,126,252,242,15,42,197,139,20,36,252,233,244,64,255,248,127,255,
344 139,68,36,4,252,233,244,56,255,248,133,129,252,248,239,15,130,244,56,129,
345 121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,
346 1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
347 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252, 327 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252,
348 233,244,131,255,248,134,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 328 233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
349 135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16, 329 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
350 73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202, 330 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,
351 137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244, 331 137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244,
352 131,255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 332 125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
353 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72, 333 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,
354 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, 334 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
355 102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,131,255, 335 102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,125,255,
356 248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129, 336 248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,
357 121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,189,237, 337 122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,
358 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15, 338 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
359 126,197,102,15,126,201,255,211,197,137,193,252,233,244,131,255,248,137,129, 339 126,197,102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,135,129,
360 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12, 340 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,
361 239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,189,237,237,102,72, 341 239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,
362 15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, 342 15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
363 15,126,201,255,211,205,137,193,252,233,244,131,248,118,184,237,252,233,244, 343 15,126,201,255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,
364 56,248,120,184,237,248,56,139,108,36,16,41,202,137,89,252,252,137,92,36,20, 344 55,248,119,184,237,248,55,139,108,36,16,139,90,252,252,137,92,36,20,137,149,
365 137,20,36,137,141,233,141,68,193,252,248,141,144,233,137,133,233,139,65,252, 345 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,
366 248,59,149,233,15,135,244,251,137,252,239,252,255,144,233,133,192,15,133, 346 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,133,244,
367 244,249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139, 347 69,248,1,255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,90,
368 105,252,248,139,20,36,1,202,57,89,252,252,15,133,244,248,252,255,165,233, 348 252,252,15,133,244,248,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
369 248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,139,141, 349 4,65,252,255,36,252,238,248,2,137,209,252,247,195,237,15,133,244,249,15,182,
370 233,139,20,36,1,202,252,233,244,70,248,5,190,237,137,252,239,232,251,1,0, 350 107,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,221,131,
371 252,233,244,1,248,67,93,72,137,108,36,24,139,108,36,16,41,202,137,84,36,4, 351 229,252,248,41,252,234,252,233,244,27,248,5,190,237,137,252,239,232,251,1,
372 137,89,252,252,137,92,36,20,137,141,233,141,68,193,252,248,137,252,239,137, 352 0,139,149,233,252,233,244,1,248,66,93,72,137,108,36,24,139,108,36,16,137,
373 133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192, 353 92,36,20,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232,251,
374 1,139,89,252,252,139,84,36,4,1,202,72,139,108,36,24,85,139,105,252,248,195, 354 1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,24,
375 248,138,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,133,244,247, 355 85,195,248,136,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,133,
376 168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,248,139,65, 356 244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,248,
377 15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255,142, 357 137,65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,
378 233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,16,137,149,233, 358 255,142,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,16,137,
379 137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75,252,253, 359 149,233,137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75,
380 248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252,238, 360 252,253,248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,
381 233,248,140,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,141,255,204, 361 252,238,233,248,138,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,139,
382 255,248,142,255,248,143,255,248,144,255,68,139,122,252,248,69,139,191,233, 362 255,204,255,248,140,255,248,141,255,248,142,255,68,139,122,252,248,69,139,
383 69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204, 363 191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,
384 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,248,83,255,217, 364 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,248,82,
385 124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 365 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
386 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248, 366 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,
387 145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15, 367 255,248,143,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
388 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15, 368 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,
389 88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252, 369 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,
390 242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248, 370 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,
391 85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255, 371 195,248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,
392 252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8, 372 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
393 195,255,248,146,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15, 373 68,36,8,195,255,248,144,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
394 110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208, 374 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
395 252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15, 375 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
396 110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248, 376 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,
397 1,195,248,105,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102, 377 193,248,1,195,248,104,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,
398 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248, 378 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,
399 147,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15, 379 255,248,145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
400 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193, 380 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,
401 252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216,252, 381 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216,
402 242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193, 382 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,
403 248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184,237,237,102,72,15, 383 193,248,1,195,248,146,255,15,40,232,252,242,15,94,193,72,184,237,237,102,
404 110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102,15,46, 384 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102,
405 220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102, 385 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,
406 15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,84, 386 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,
407 194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,248, 387 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,
408 1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,241, 388 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,
409 217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68, 389 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,
410 36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,248, 390 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,
411 89,217,252,234,222,201,248,149,217,84,36,252,248,129,124,36,252,248,0,0,128, 391 248,88,217,252,234,222,201,248,147,217,84,36,252,248,129,124,36,252,248,0,
412 127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,15,132,244,248,248, 392 0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,15,132,244,248,
413 150,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217, 393 248,148,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
414 252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,255,248, 394 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,107,255,
415 151,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138, 395 248,149,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
416 244,255,248,152,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244, 396 15,138,244,255,248,150,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
417 248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 397 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,
418 15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255, 398 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,
419 252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15, 399 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,
420 132,244,5,15,130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,15,94, 400 6,15,132,244,5,15,130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,
421 200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248, 401 15,94,200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,
422 7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224, 402 1,248,7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,
423 72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,72, 403 224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,
424 209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251, 404 72,209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,
425 252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240, 405 252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,
426 221,68,36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217, 406 221,68,36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,
427 252,240,217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15, 407 252,240,217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,
@@ -431,27 +411,27 @@ static const unsigned char build_actionlist[13650] = {
431 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184, 411 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,
432 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244, 412 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,
433 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248, 413 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,
434 153,255,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130,244, 414 151,255,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130,244,
435 105,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248, 415 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,
436 221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,89, 416 221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,88,
437 252,233,244,253,248,1,232,244,149,255,252,233,244,253,248,2,131,252,255,7, 417 252,233,244,253,248,1,232,244,147,255,252,233,244,253,248,2,131,252,255,7,
438 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244, 418 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,
439 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9, 419 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,
440 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244, 420 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,
441 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244, 421 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,
442 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216, 422 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,
443 248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12, 423 248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,
444 221,68,36,4,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130, 424 221,68,36,4,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130,
445 244,105,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,89, 425 244,104,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,88,
446 15,132,244,149,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217, 426 15,132,244,147,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,
447 201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255, 427 201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,
448 9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248, 428 9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,
449 1,217,252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217, 429 1,217,252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,
450 252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,154,255,131,252, 430 252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,152,255,131,252,
451 255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15, 431 255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,
452 92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89, 432 92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,
453 193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,148,15, 433 193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,146,15,
454 132,244,108,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255, 434 132,244,107,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,
455 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15, 435 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,
456 84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248, 436 84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,
457 252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244, 437 252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,
@@ -461,241 +441,258 @@ static const unsigned char build_actionlist[13650] = {
461 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, 441 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,
462 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, 442 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,
463 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 443 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,
464 252,248,5,15,130,244,148,15,132,244,108,131,252,248,7,15,132,244,247,15,135, 444 252,248,5,15,130,244,146,15,132,244,107,131,252,248,7,15,132,244,247,15,135,
465 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 445 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,
466 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 446 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,
467 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 447 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,
468 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 448 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,
469 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 449 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,
470 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 450 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,
471 155,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,129, 451 153,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,249,
472 124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252, 452 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,
473 242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,194,131,195, 453 41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,
474 4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248, 454 194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,
475 255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2, 455 134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,
476 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 456 233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
477 139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,253,202,4, 457 252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,
478 239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202, 458 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
479 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, 459 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
480 247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,2,15,183, 460 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,
481 67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4,15,133,244,2, 461 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4,
482 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 462 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,
483 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 463 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,
484 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, 464 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,
485 72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244,248,139,12,202, 465 233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244,
486 65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244,248,255,252,242, 466 248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244,
487 65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199,255,72,252,247, 467 248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199,
488 208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129,252,253,239,255, 468 255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129,
489 15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202, 469 252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,
490 255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,204,15,182,232, 470 194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,
491 131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,139,4,194,137, 471 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,
492 108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, 472 4,139,4,194,137,108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,
493 255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202, 473 193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,
494 4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 474 213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
495 255,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237, 475 252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,
496 237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224, 476 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,
497 221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192, 477 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,
498 252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221, 478 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,
499 28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 479 128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,
500 252,238,248,2,129,124,253,194,4,239,15,133,244,52,139,60,194,137,213,232, 480 16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,
501 251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252,233, 481 194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,
502 244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135, 482 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,
503 244,48,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234, 483 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,
504 65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,65,15, 484 221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,
505 16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255,129,124, 485 252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,
506 253,252,234,4,239,15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252, 486 234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,
507 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, 487 135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,
508 242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,65,220,36,199, 488 234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,
509 255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,4,199,220,36, 489 4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,
510 252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234, 490 255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,
511 220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199,255,221,4,252, 491 4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,
512 234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255, 492 15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,
513 65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194, 493 242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,
514 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,65,15,94, 494 234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,
515 4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,16,4,199,252,242, 495 252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,
516 15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234, 496 65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,
517 252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252, 497 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,
518 234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,4,199,255,252,242,65, 498 255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,
519 15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,221,4,252,234,255,252, 499 221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,
520 242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255, 500 4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,
521 248,156,232,244,148,255,252,233,244,156,255,232,244,108,255,15,182,252,236, 501 221,4,252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,154,255,232,
522 15,182,192,139,124,36,16,137,151,233,141,52,194,137,194,41,252,234,248,35, 502 244,107,255,15,182,252,236,15,182,192,139,124,36,16,137,151,233,141,52,194,
523 137,252,253,137,92,36,20,232,251,1,21,139,149,233,133,192,15,133,244,44,15, 503 137,194,41,252,234,248,33,137,252,253,137,92,36,20,232,251,1,21,139,149,233,
524 182,107,252,255,15,182,75,252,253,139,68,252,234,4,139,44,252,234,137,68, 504 133,192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,139,68,252,234,
525 202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, 505 4,139,44,252,234,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,
526 255,36,252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202, 506 195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,199,
527 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 507 68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
528 15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28, 508 252,255,36,252,238,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,
529 202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28, 509 223,67,252,254,221,28,202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,
530 202,255,72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4, 510 255,65,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,3,15,182,
531 193,232,16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137, 511 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,76,202,
532 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15, 512 12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,
533 182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139, 513 134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
534 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139, 514 252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,
535 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139, 515 109,0,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
536 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139, 516 16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189,
537 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244, 517 233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,
538 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 518 252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,
539 252,238,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235, 519 195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239,
540 15,132,244,1,137,252,238,137,213,65,141,190,233,255,232,251,1,22,137,252, 520 15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141,
541 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233, 521 190,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,
542 65,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244, 522 106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4,
543 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 523 237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,
544 252,238,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1, 524 131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132,
545 137,213,137,198,65,141,190,233,232,251,1,22,137,252,234,252,233,244,1,255, 525 244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1,
546 139,106,252,248,255,252,242,65,15,16,4,199,255,139,172,253,141,233,139,141, 526 22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199,
547 233,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137, 527 255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,
548 65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 528 252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,
549 255,141,156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149, 529 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,
550 233,141,52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204, 530 156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149,233,141,
551 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208, 531 52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204,15,182,
552 139,108,36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92, 532 232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,139,108,
553 36,20,232,251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237, 533 36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,36,20,232,
554 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 534 251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,
555 139,124,36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61, 535 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,124,
556 252,255,7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65, 536 36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,
557 59,134,233,137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75, 537 7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65,59,134,233,
558 252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4, 538 137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75,252,253,137,
559 193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232, 539 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
560 251,1,26,15,183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139, 540 252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,
561 108,36,16,65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244, 541 183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139,108,36,16,
562 249,248,2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252, 542 65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244,249,248,
563 253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193, 543 2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252,253,137,
564 232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252, 544 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
565 254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173, 545 252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252,254,72,252,
566 233,65,139,4,135,252,233,244,157,255,72,252,247,208,139,106,252,248,139,173, 546 247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
567 233,65,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192,129,124,253, 547 4,135,252,233,244,155,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
568 252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194,4,239,15,135,244, 548 4,135,252,233,244,156,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
569 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46, 549 239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,
570 193,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, 550 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
571 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139, 551 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
572 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2, 552 239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,
573 131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,38, 553 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,
574 15,182,75,252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, 554 233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,
575 38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192,72,252,247,208, 555 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,139,4,
576 65,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157, 556 194,252,233,244,155,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,
577 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, 557 135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,155,139,141,
578 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, 558 233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,
579 67,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182, 559 57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,67,252,
580 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67, 560 253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182,204,15,
581 252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248, 561 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,
582 5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233, 562 185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,
583 244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, 563 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,
584 37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253, 564 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,
585 4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3, 565 44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,
586 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131, 566 15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,182,
587 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37,255, 567 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,
588 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44, 568 0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,252,
589 252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133,233, 569 236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,
590 15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1, 570 124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,
591 252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, 571 39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,
592 4,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 572 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,
593 238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235, 573 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,
594 15,132,244,41,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239, 574 131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,
595 15,133,244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,65,139,142, 575 39,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
596 233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182, 576 39,139,4,194,252,233,244,156,248,7,128,165,233,235,65,139,142,233,65,137,
597 252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239, 577 174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,
598 15,133,244,39,139,44,252,234,248,158,139,141,233,35,136,233,105,201,239,198, 578 182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,
599 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133, 579 37,139,44,252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,
600 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15, 580 0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,
601 133,244,253,248,3,15,182,67,252,253,139,108,194,4,139,4,194,137,105,4,137, 581 129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,
602 1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 582 253,248,3,15,182,67,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,3,
603 248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235, 583 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,131,
604 15,132,244,39,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244, 584 189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,15,132,244,
605 1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39, 585 37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,
606 248,6,137,4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72, 586 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,
607 141,20,36,137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139, 587 4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72,141,20,36,
608 108,36,24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137, 588 137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139,108,36,
609 174,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253, 589 24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174,
610 252,234,4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224, 590 233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,
611 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15, 591 234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,
612 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204, 592 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,
613 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0, 593 244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204,15,
614 15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,75, 594 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15,
615 252,253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233, 595 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,252,
616 137,141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141, 596 253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233,137,
617 12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36, 597 141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141,12,
618 4,255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248, 598 202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,4,
619 59,133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139, 599 255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248,59,
600 133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139,
620 41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133, 601 41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133,
621 244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 602 244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
622 65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194, 603 65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194,
623 137,252,253,137,92,36,20,232,251,1,29,139,149,233,15,182,75,252,253,252,233, 604 137,252,253,137,92,36,20,232,251,1,29,139,149,233,15,182,75,252,253,252,233,
624 244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233, 605 244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233,
625 252,233,244,2,255,3,68,36,4,255,141,76,202,8,139,105,252,248,129,121,253, 606 252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,
626 252,252,239,15,133,244,31,252,255,165,233,255,141,76,202,8,65,137,215,139, 607 51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,
627 105,252,248,129,121,253,252,252,239,15,133,244,31,248,53,139,90,252,252,252, 608 131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,
628 247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15, 609 129,121,253,252,252,239,15,133,244,28,248,52,139,90,252,252,252,247,195,237,
629 132,244,249,248,2,139,41,65,137,47,139,105,4,65,137,111,4,65,131,199,8,131, 610 15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,
630 193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1, 611 248,2,139,41,65,137,47,139,105,4,65,137,111,4,65,131,199,8,131,193,8,131,
631 15,135,244,251,248,4,139,68,36,4,252,255,165,233,248,5,255,252,247,195,237, 612 232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,
632 15,133,244,4,15,182,67,252,253,72,252,247,208,141,20,194,68,139,122,252,248, 613 244,251,248,4,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,
633 69,139,191,233,69,139,191,233,252,233,244,4,248,7,15,139,244,1,131,227,252, 614 255,36,252,238,248,5,255,252,247,195,237,15,133,244,4,15,182,75,252,253,72,
634 248,41,218,65,137,215,139,90,252,252,252,233,244,1,255,141,76,202,8,139,105, 615 252,247,209,141,12,202,68,139,121,252,248,69,139,191,233,69,139,191,233,252,
635 232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105, 616 233,244,4,248,7,15,139,244,1,131,227,252,248,41,218,65,137,215,139,90,252,
636 8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252, 617 252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,
637 248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15,182,252,236,139, 618 65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,
638 66,252,248,141,12,202,139,128,233,15,182,128,233,68,137,60,36,68,141,188, 619 228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,28,
639 253,194,233,68,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233, 620 137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
640 252,248,65,57,215,15,131,244,248,248,1,65,139,71,252,248,137,1,65,139,71, 621 4,65,252,255,36,252,238,255,15,182,252,236,139,66,252,248,141,12,202,139,
641 252,252,65,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,65,57,215, 622 128,233,15,182,128,233,68,137,60,36,68,141,188,253,194,233,68,43,122,252,
642 15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,68, 623 252,133,252,237,15,132,244,251,141,108,252,233,252,248,65,57,215,15,131,244,
643 139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 624 248,248,1,65,139,71,252,248,137,1,65,139,71,252,252,65,131,199,8,137,65,4,
644 252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41,252,248,15,134,244,3,255, 625 131,193,8,57,252,233,15,131,244,249,65,57,215,15,130,244,1,248,2,199,65,4,
645 137,197,193,252,237,3,131,197,1,137,108,36,4,139,108,36,16,1,200,59,133,233, 626 237,131,193,8,57,252,233,15,130,244,2,248,3,68,139,60,36,139,3,15,182,204,
646 15,135,244,253,248,6,65,139,71,252,248,137,1,65,139,71,252,252,65,131,199, 627 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,199,68,36,4,1,
647 8,137,65,4,131,193,8,65,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233, 628 0,0,0,137,208,68,41,252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,
648 137,141,233,137,92,36,20,65,41,215,139,116,36,4,131,252,238,1,137,252,239, 629 1,137,108,36,4,139,108,36,16,1,200,59,133,233,15,135,244,253,248,6,65,139,
649 232,251,1,0,139,149,233,139,141,233,65,1,215,252,233,244,6,255,193,225,3, 630 71,252,248,137,1,65,139,71,252,252,65,131,199,8,137,65,4,131,193,8,65,57,
650 255,248,1,139,90,252,252,137,68,36,4,252,247,195,237,15,133,244,253,255,248, 631 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,92,36,20,
651 17,65,137,215,131,232,1,15,132,244,249,248,2,65,139,44,15,65,137,111,252, 632 65,41,215,139,116,36,4,131,252,238,1,137,252,239,232,251,1,0,139,149,233,
652 248,65,139,108,15,4,65,137,111,252,252,65,131,199,8,131,232,1,15,133,244, 633 139,141,233,65,1,215,252,233,244,6,255,193,225,3,255,248,1,139,90,252,252,
653 2,248,3,139,68,36,4,15,182,107,252,255,248,5,57,197,15,135,244,252,255,139, 634 137,68,36,4,252,247,195,237,15,133,244,253,255,248,13,65,137,215,131,232,
654 108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,67,252,255, 635 1,15,132,244,249,248,2,65,139,44,15,65,137,111,252,248,65,139,108,15,4,65,
655 15,135,244,252,255,15,182,75,252,253,72,252,247,209,141,20,202,68,139,122, 636 137,111,252,252,65,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,4,15,
656 252,248,69,139,191,233,69,139,191,233,139,3,15,182,204,15,182,232,131,195, 637 182,107,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,
657 4,193,232,16,65,252,255,36,252,238,248,6,255,65,199,71,252,252,237,65,131, 638 252,139,44,10,137,106,252,248,255,248,5,56,67,252,255,15,135,244,252,255,
658 199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15,139, 639 15,182,75,252,253,72,252,247,209,141,20,202,68,139,122,252,248,69,139,191,
659 244,18,131,227,252,248,41,218,255,1,217,255,137,221,209,252,237,129,229,239, 640 233,69,139,191,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
660 102,65,131,172,253,46,233,1,15,132,244,141,255,141,12,202,255,129,121,253, 641 255,36,252,238,248,6,255,65,199,71,252,252,237,65,131,199,8,255,199,68,194,
661 4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139,105,20,255,129, 642 252,244,237,255,131,192,1,252,233,244,5,248,7,15,139,244,14,131,227,252,248,
662 252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16,73,8,255,252, 643 41,218,255,1,217,255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,
663 242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244, 644 233,1,15,132,244,139,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,
664 249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220, 645 121,253,12,239,15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,
665 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244, 646 53,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,
666 247,255,217,201,248,1,255,15,183,67,252,254,255,15,131,244,248,141,156,253, 647 15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,
667 131,233,255,141,156,253,131,233,15,183,67,252,254,15,131,245,255,15,130,244, 648 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,
668 248,141,156,253,131,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12, 649 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,
669 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137, 650 15,183,67,252,254,255,15,131,244,248,141,156,253,131,233,255,141,156,253,
670 105,252,248,252,233,245,255,141,156,253,131,233,139,1,137,105,252,252,137, 651 131,233,15,183,67,252,254,15,131,245,255,15,130,244,248,141,156,253,131,233,
671 65,252,248,255,65,139,142,233,139,4,129,72,139,128,233,139,108,36,16,65,137, 652 255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,
672 150,233,65,137,174,233,252,255,224,255,141,156,253,131,233,139,3,15,182,204, 653 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,
673 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,254,0 654 255,141,156,253,131,233,139,1,137,105,252,252,137,65,252,248,255,65,139,142,
655 233,139,4,129,72,139,128,233,139,108,36,16,65,137,150,233,65,137,174,233,
656 252,255,224,255,141,156,253,131,233,139,3,15,182,204,15,182,232,131,195,4,
657 193,232,16,65,252,255,36,252,238,255,68,139,187,233,139,108,36,16,141,12,
658 202,59,141,233,15,135,244,23,15,182,139,233,57,200,15,134,244,249,248,2,255,
659 15,183,67,252,254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,
660 57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,
661 252,248,137,104,252,252,68,137,120,252,248,139,108,36,16,141,12,200,59,141,
662 233,15,135,244,22,137,209,137,194,15,182,171,233,133,252,237,15,132,244,248,
663 248,1,131,193,8,57,209,15,131,244,249,68,139,121,252,248,68,137,56,68,139,
664 121,252,252,68,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
665 244,1,248,2,255,68,139,187,233,139,3,15,182,204,15,182,232,131,195,4,193,
666 232,16,65,252,255,36,252,238,255,248,3,199,64,4,237,131,192,8,131,252,237,
667 1,15,133,244,3,252,233,244,2,255,139,106,252,248,76,139,189,233,139,108,36,
668 16,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,
669 137,252,239,255,76,137,252,254,137,252,239,255,15,135,244,21,65,199,134,233,
670 237,255,65,252,255,215,255,65,252,255,150,233,255,65,199,134,233,237,139,
671 149,233,141,12,194,252,247,217,3,141,233,139,90,252,252,252,233,244,12,255,
672 254,0
674}; 673};
675 674
676enum { 675enum {
677 GLOB_gate_lf, 676 GLOB_vm_returnp,
678 GLOB_gate_lf_growstack, 677 GLOB_cont_dispatch,
679 GLOB_gate_lv,
680 GLOB_gate_lv_growstack,
681 GLOB_gate_cwrap,
682 GLOB_gate_c_growstack,
683 GLOB_vm_returnc, 678 GLOB_vm_returnc,
684 GLOB_BC_RET_Z, 679 GLOB_BC_RET_Z,
685 GLOB_vm_return, 680 GLOB_vm_return,
686 GLOB_gate_c,
687 GLOB_vm_returnp,
688 GLOB_vm_leave_cp, 681 GLOB_vm_leave_cp,
689 GLOB_vm_leave_unw, 682 GLOB_vm_leave_unw,
690 GLOB_vm_unwind_c, 683 GLOB_vm_unwind_c,
691 GLOB_vm_unwind_c_eh, 684 GLOB_vm_unwind_c_eh,
692 GLOB_vm_unwind_ff, 685 GLOB_vm_unwind_ff,
693 GLOB_vm_unwind_ff_eh, 686 GLOB_vm_unwind_ff_eh,
694 GLOB_cont_dispatch, 687 GLOB_vm_growstack_c,
688 GLOB_vm_growstack_v,
689 GLOB_vm_growstack_f,
695 GLOB_vm_resume, 690 GLOB_vm_resume,
696 GLOB_vm_pcall, 691 GLOB_vm_pcall,
697 GLOB_vm_call, 692 GLOB_vm_call,
693 GLOB_vm_call_dispatch,
698 GLOB_vmeta_call, 694 GLOB_vmeta_call,
695 GLOB_vm_call_dispatch_f,
699 GLOB_vm_cpcall, 696 GLOB_vm_cpcall,
700 GLOB_cont_cat, 697 GLOB_cont_cat,
701 GLOB_cont_ra, 698 GLOB_cont_ra,
@@ -717,6 +714,7 @@ enum {
717 GLOB_vmeta_unm, 714 GLOB_vmeta_unm,
718 GLOB_vmeta_arith_vv, 715 GLOB_vmeta_arith_vv,
719 GLOB_vmeta_len, 716 GLOB_vmeta_len,
717 GLOB_vmeta_call_ra,
720 GLOB_BC_CALLT_Z, 718 GLOB_BC_CALLT_Z,
721 GLOB_vmeta_for, 719 GLOB_vmeta_for,
722 GLOB_ff_assert, 720 GLOB_ff_assert,
@@ -790,12 +788,11 @@ enum {
790 GLOB_ff_table_getn, 788 GLOB_ff_table_getn,
791 GLOB_ff_bit_tobit, 789 GLOB_ff_bit_tobit,
792 GLOB_ff_bit_band, 790 GLOB_ff_bit_band,
793 GLOB_fff_resbit_op, 791 GLOB_fff_resbit,
794 GLOB_fff_fallback_bit_op, 792 GLOB_fff_fallback_bit_op,
795 GLOB_ff_bit_bor, 793 GLOB_ff_bit_bor,
796 GLOB_ff_bit_bxor, 794 GLOB_ff_bit_bxor,
797 GLOB_ff_bit_bswap, 795 GLOB_ff_bit_bswap,
798 GLOB_fff_resbit,
799 GLOB_ff_bit_bnot, 796 GLOB_ff_bit_bnot,
800 GLOB_ff_bit_lshift, 797 GLOB_ff_bit_lshift,
801 GLOB_ff_bit_rshift, 798 GLOB_ff_bit_rshift,
@@ -826,28 +823,26 @@ enum {
826 GLOB__MAX 823 GLOB__MAX
827}; 824};
828static const char *const globnames[] = { 825static const char *const globnames[] = {
829 "gate_lf", 826 "vm_returnp",
830 "gate_lf_growstack", 827 "cont_dispatch",
831 "gate_lv",
832 "gate_lv_growstack",
833 "gate_cwrap",
834 "gate_c_growstack",
835 "vm_returnc", 828 "vm_returnc",
836 "BC_RET_Z", 829 "BC_RET_Z",
837 "vm_return", 830 "vm_return",
838 "gate_c",
839 "vm_returnp",
840 "vm_leave_cp", 831 "vm_leave_cp",
841 "vm_leave_unw", 832 "vm_leave_unw",
842 "vm_unwind_c@8", 833 "vm_unwind_c@8",
843 "vm_unwind_c_eh", 834 "vm_unwind_c_eh",
844 "vm_unwind_ff@4", 835 "vm_unwind_ff@4",
845 "vm_unwind_ff_eh", 836 "vm_unwind_ff_eh",
846 "cont_dispatch", 837 "vm_growstack_c",
838 "vm_growstack_v",
839 "vm_growstack_f",
847 "vm_resume", 840 "vm_resume",
848 "vm_pcall", 841 "vm_pcall",
849 "vm_call", 842 "vm_call",
843 "vm_call_dispatch",
850 "vmeta_call", 844 "vmeta_call",
845 "vm_call_dispatch_f",
851 "vm_cpcall", 846 "vm_cpcall",
852 "cont_cat", 847 "cont_cat",
853 "cont_ra", 848 "cont_ra",
@@ -869,6 +864,7 @@ static const char *const globnames[] = {
869 "vmeta_unm", 864 "vmeta_unm",
870 "vmeta_arith_vv", 865 "vmeta_arith_vv",
871 "vmeta_len", 866 "vmeta_len",
867 "vmeta_call_ra",
872 "BC_CALLT_Z", 868 "BC_CALLT_Z",
873 "vmeta_for", 869 "vmeta_for",
874 "ff_assert", 870 "ff_assert",
@@ -942,12 +938,11 @@ static const char *const globnames[] = {
942 "ff_table_getn", 938 "ff_table_getn",
943 "ff_bit_tobit", 939 "ff_bit_tobit",
944 "ff_bit_band", 940 "ff_bit_band",
945 "fff_resbit_op", 941 "fff_resbit",
946 "fff_fallback_bit_op", 942 "fff_fallback_bit_op",
947 "ff_bit_bor", 943 "ff_bit_bor",
948 "ff_bit_bxor", 944 "ff_bit_bxor",
949 "ff_bit_bswap", 945 "ff_bit_bswap",
950 "fff_resbit",
951 "ff_bit_bnot", 946 "ff_bit_bnot",
952 "ff_bit_lshift", 947 "ff_bit_lshift",
953 "ff_bit_rshift", 948 "ff_bit_rshift",
@@ -1033,392 +1028,367 @@ static const char *const extnames[] = {
1033static void build_subroutines(BuildCtx *ctx, int cmov, int sse) 1028static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1034{ 1029{
1035 dasm_put(Dst, 0); 1030 dasm_put(Dst, 0);
1036 dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); 1031 dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
1037#if LJ_HASJIT 1032 dasm_put(Dst, 111, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1038#endif 1033 dasm_put(Dst, 202, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
1039 dasm_put(Dst, 48, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); 1034 dasm_put(Dst, 298, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
1040 dasm_put(Dst, 161, LJ_TNIL, PC2PROTO(k)); 1035 dasm_put(Dst, 367, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1041#if LJ_HASJIT 1036 dasm_put(Dst, 535, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1042#endif 1037 dasm_put(Dst, 648, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
1043 dasm_put(Dst, 201, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1038 dasm_put(Dst, 813, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1044 dasm_put(Dst, 303, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1045 dasm_put(Dst, 389, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1046 dasm_put(Dst, 495, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1047 dasm_put(Dst, 584, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1048 dasm_put(Dst, 688, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
1049 dasm_put(Dst, 778, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1050 dasm_put(Dst, 917, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1051 dasm_put(Dst, 1042, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base));
1052 dasm_put(Dst, 1226, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1053 if (sse) { 1039 if (sse) {
1054 dasm_put(Dst, 1271); 1040 dasm_put(Dst, 922);
1055 } else { 1041 } else {
1056 } 1042 }
1057 dasm_put(Dst, 1283, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1043 dasm_put(Dst, 934, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1058 dasm_put(Dst, 1441, LJ_TTAB); 1044 dasm_put(Dst, 1085, DISPATCH_GL(tmptv), LJ_TTAB);
1059 if (sse) { 1045 if (sse) {
1060 dasm_put(Dst, 1271); 1046 dasm_put(Dst, 922);
1061 } else { 1047 } else {
1062 } 1048 }
1063 dasm_put(Dst, 1461, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1049 dasm_put(Dst, 1109, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1064 dasm_put(Dst, 1656, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1050 dasm_put(Dst, 1291, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1065 dasm_put(Dst, 1764, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1051 dasm_put(Dst, 1390, Dt1(->base), Dt1(->base), FRAME_CONT);
1066 dasm_put(Dst, 1887, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*8, 1+1); 1052 dasm_put(Dst, 1513, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1067 dasm_put(Dst, 2042, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1053 dasm_put(Dst, 1691, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1068 if (cmov) { 1054 if (cmov) {
1069 dasm_put(Dst, 2136); 1055 dasm_put(Dst, 1793);
1070 } else { 1056 } else {
1071 dasm_put(Dst, 2140); 1057 dasm_put(Dst, 1797);
1072 } 1058 }
1073 dasm_put(Dst, 2149, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1059 dasm_put(Dst, 1806, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1074 dasm_put(Dst, 2237, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1060 dasm_put(Dst, 1895, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1075 dasm_put(Dst, 2292, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1061 dasm_put(Dst, 1950, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1076 dasm_put(Dst, 2364, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1062 dasm_put(Dst, 2019, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1077 dasm_put(Dst, 2431, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1063 dasm_put(Dst, 2090, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1078 if (sse) { 1064 if (sse) {
1079 dasm_put(Dst, 2509); 1065 dasm_put(Dst, 2166);
1080 } else { 1066 } else {
1081 dasm_put(Dst, 2519); 1067 dasm_put(Dst, 2176);
1082 } 1068 }
1083 dasm_put(Dst, 2526, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1069 dasm_put(Dst, 2183, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1084 dasm_put(Dst, 2591, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1070 dasm_put(Dst, 2252, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1085 dasm_put(Dst, 2675, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1071 dasm_put(Dst, 2321, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1086 dasm_put(Dst, 2775, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1072 dasm_put(Dst, 2424, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1087 if (sse) { 1073 if (sse) {
1088 dasm_put(Dst, 2830, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1074 dasm_put(Dst, 2487, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1089 } else { 1075 } else {
1090 } 1076 }
1091 dasm_put(Dst, 2863, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1077 dasm_put(Dst, 2520, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1092 dasm_put(Dst, 2950, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1078 dasm_put(Dst, 2601, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1093 if (sse) { 1079 if (sse) {
1094 dasm_put(Dst, 2980); 1080 dasm_put(Dst, 2639);
1095 } else { 1081 } else {
1096 dasm_put(Dst, 2990); 1082 dasm_put(Dst, 2649);
1097 } 1083 }
1098 dasm_put(Dst, 2997, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1084 dasm_put(Dst, 2656, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1099 dasm_put(Dst, 3071, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1085 dasm_put(Dst, 2721, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1100 dasm_put(Dst, 3169, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1086 dasm_put(Dst, 2810, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1101 dasm_put(Dst, 3235, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1087 dasm_put(Dst, 2903, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1102 dasm_put(Dst, 3339, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1088 dasm_put(Dst, 3023, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1103 dasm_put(Dst, 3462, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1089 dasm_put(Dst, 3119, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1104 dasm_put(Dst, 3543, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1090 dasm_put(Dst, 3185, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1105 dasm_put(Dst, 3649, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1091 dasm_put(Dst, 3280, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1106 dasm_put(Dst, 3749, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1092 dasm_put(Dst, 3392, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1107 if (sse) { 1093 if (sse) {
1108 dasm_put(Dst, 3836, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1094 dasm_put(Dst, 3419, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1109 } else { 1095 } else {
1110 dasm_put(Dst, 3892, 1+1, LJ_TISNUM); 1096 dasm_put(Dst, 3483, 1+1, LJ_TISNUM);
1111 } 1097 }
1112 dasm_put(Dst, 3924, 1+1, FRAME_TYPE, LJ_TNIL); 1098 dasm_put(Dst, 3519, 1+1, FRAME_TYPE, LJ_TNIL);
1113 if (sse) { 1099 if (sse) {
1114 dasm_put(Dst, 4009, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1100 dasm_put(Dst, 3614, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1115 dasm_put(Dst, 4071, 1+1, LJ_TISNUM); 1101 dasm_put(Dst, 3676, 1+1, LJ_TISNUM);
1116 } else { 1102 } else {
1117 dasm_put(Dst, 4101, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1103 dasm_put(Dst, 3706, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1118 dasm_put(Dst, 4160, 1+1, LJ_TISNUM); 1104 dasm_put(Dst, 3765, 1+1, LJ_TISNUM);
1119 } 1105 }
1120 dasm_put(Dst, 4187, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1106 dasm_put(Dst, 3792, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1121 dasm_put(Dst, 4256, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1107 dasm_put(Dst, 3861, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1122 dasm_put(Dst, 4313, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1108 dasm_put(Dst, 3918, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1123 dasm_put(Dst, 4376, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1109 dasm_put(Dst, 3981, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1124 dasm_put(Dst, 4466); 1110 dasm_put(Dst, 4071);
1125 if (sse) { 1111 if (sse) {
1126 dasm_put(Dst, 4478, 1+1, LJ_TISNUM); 1112 dasm_put(Dst, 4083, 1+1, LJ_TISNUM);
1127 } else { 1113 } else {
1128 } 1114 }
1129 dasm_put(Dst, 4503); 1115 dasm_put(Dst, 4108);
1130 if (sse) { 1116 if (sse) {
1131 dasm_put(Dst, 4523, 1+1, LJ_TISNUM); 1117 dasm_put(Dst, 4122, 1+1, LJ_TISNUM);
1132 } else { 1118 } else {
1133 } 1119 }
1134 dasm_put(Dst, 4548); 1120 dasm_put(Dst, 4147);
1135 if (sse) { 1121 if (sse) {
1136 dasm_put(Dst, 4568, 1+1, LJ_TISNUM); 1122 dasm_put(Dst, 4161, 1+1, LJ_TISNUM);
1137 } else { 1123 } else {
1138 } 1124 }
1139 dasm_put(Dst, 4593); 1125 dasm_put(Dst, 4186);
1140 if (sse) { 1126 if (sse) {
1141 dasm_put(Dst, 4615, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1127 dasm_put(Dst, 4202, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1142 } else { 1128 } else {
1143 dasm_put(Dst, 4650, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1129 dasm_put(Dst, 4241, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1144 } 1130 }
1145 dasm_put(Dst, 4679, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1131 dasm_put(Dst, 4274, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1146 dasm_put(Dst, 4744, 1+1, LJ_TISNUM); 1132 dasm_put(Dst, 4339, 1+1, LJ_TISNUM);
1147 if (sse) { 1133 if (sse) {
1148 dasm_put(Dst, 4839); 1134 dasm_put(Dst, 4438);
1149 } else { 1135 } else {
1150 dasm_put(Dst, 4845); 1136 dasm_put(Dst, 4444);
1151 } 1137 }
1152 dasm_put(Dst, 4852); 1138 dasm_put(Dst, 4451);
1153 if (sse) { 1139 if (sse) {
1154 dasm_put(Dst, 4877); 1140 dasm_put(Dst, 4476);
1155 } else { 1141 } else {
1156 dasm_put(Dst, 4883); 1142 dasm_put(Dst, 4482);
1157 } 1143 }
1158 dasm_put(Dst, 4886, 1+2); 1144 dasm_put(Dst, 4485, 1+2);
1159 if (sse) { 1145 if (sse) {
1160 dasm_put(Dst, 4895); 1146 dasm_put(Dst, 4494);
1161 } else { 1147 } else {
1162 dasm_put(Dst, 4903); 1148 dasm_put(Dst, 4502);
1163 } 1149 }
1164 dasm_put(Dst, 492); 1150 dasm_put(Dst, 4510);
1165 if (sse) { 1151 if (sse) {
1166 dasm_put(Dst, 4911, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1152 dasm_put(Dst, 4513, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1167 } else { 1153 } else {
1168 dasm_put(Dst, 4938); 1154 dasm_put(Dst, 4540);
1169 } 1155 }
1170 dasm_put(Dst, 4955); 1156 dasm_put(Dst, 4557);
1171 if (sse) { 1157 if (sse) {
1172 dasm_put(Dst, 4971, 1+1, LJ_TISNUM); 1158 dasm_put(Dst, 4573, 1+1, LJ_TISNUM);
1173 } else { 1159 } else {
1174 dasm_put(Dst, 4996, 1+1, LJ_TISNUM); 1160 dasm_put(Dst, 4598, 1+1, LJ_TISNUM);
1175 } 1161 }
1176 dasm_put(Dst, 5018); 1162 dasm_put(Dst, 4620);
1177 if (sse) { 1163 if (sse) {
1178 dasm_put(Dst, 5036); 1164 dasm_put(Dst, 4642);
1179 } else { 1165 } else {
1180 dasm_put(Dst, 5062); 1166 dasm_put(Dst, 4668);
1181 } 1167 }
1182 dasm_put(Dst, 5079, 1+2); 1168 dasm_put(Dst, 4685, 1+2);
1183 if (sse) { 1169 if (sse) {
1184 dasm_put(Dst, 5119); 1170 dasm_put(Dst, 4725);
1185 } else { 1171 } else {
1186 dasm_put(Dst, 5127); 1172 dasm_put(Dst, 4733);
1187 } 1173 }
1188 dasm_put(Dst, 5137, 2+1, LJ_TISNUM, LJ_TISNUM); 1174 dasm_put(Dst, 4743, 2+1, LJ_TISNUM, LJ_TISNUM);
1189 if (sse) { 1175 if (sse) {
1190 dasm_put(Dst, 5189, 1+1, LJ_TISNUM, LJ_TISNUM); 1176 dasm_put(Dst, 4795, 1+1, LJ_TISNUM, LJ_TISNUM);
1191 } else { 1177 } else {
1192 dasm_put(Dst, 5236, 2+1, LJ_TISNUM, LJ_TISNUM); 1178 dasm_put(Dst, 4842, 2+1, LJ_TISNUM, LJ_TISNUM);
1193 } 1179 }
1194 if (sse) { 1180 if (sse) {
1195 dasm_put(Dst, 5277, 1+1, LJ_TISNUM, LJ_TISNUM); 1181 dasm_put(Dst, 4883, 1+1, LJ_TISNUM, LJ_TISNUM);
1196 } else { 1182 } else {
1197 } 1183 }
1198 if (sse) { 1184 if (sse) {
1199 dasm_put(Dst, 5348, 1+1, LJ_TISNUM, LJ_TISNUM); 1185 dasm_put(Dst, 4954, 1+1, LJ_TISNUM, LJ_TISNUM);
1200 } else { 1186 } else {
1201 } 1187 }
1202 if (!sse) { 1188 if (!sse) {
1203 dasm_put(Dst, 5419); 1189 dasm_put(Dst, 5025);
1204 } 1190 }
1205 dasm_put(Dst, 5428, 1+1, LJ_TSTR); 1191 dasm_put(Dst, 5034, 1+1, LJ_TSTR);
1206 if (sse) { 1192 if (sse) {
1207 dasm_put(Dst, 5450, Dt5(->len)); 1193 dasm_put(Dst, 5056, Dt5(->len));
1208 } else { 1194 } else {
1209 dasm_put(Dst, 5461, Dt5(->len)); 1195 dasm_put(Dst, 5067, Dt5(->len));
1210 } 1196 }
1211 dasm_put(Dst, 5469, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1197 dasm_put(Dst, 5075, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1212 if (sse) { 1198 if (sse) {
1213 dasm_put(Dst, 5503); 1199 dasm_put(Dst, 5113);
1214 } else { 1200 } else {
1215 dasm_put(Dst, 5513); 1201 dasm_put(Dst, 5123);
1216 } 1202 }
1217 dasm_put(Dst, 5524, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1203 dasm_put(Dst, 5134, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1218 if (sse) { 1204 if (sse) {
1219 dasm_put(Dst, 5561); 1205 dasm_put(Dst, 5171);
1220 } else { 1206 } else {
1221 dasm_put(Dst, 5581); 1207 dasm_put(Dst, 5191);
1222 } 1208 }
1223 dasm_put(Dst, 5601, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1209 dasm_put(Dst, 5211, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1224 dasm_put(Dst, 2504); 1210 dasm_put(Dst, 2161);
1225 if (sse) { 1211 if (sse) {
1226 dasm_put(Dst, 5715); 1212 dasm_put(Dst, 5320);
1227 } else { 1213 } else {
1228 dasm_put(Dst, 5726); 1214 dasm_put(Dst, 5331);
1229 } 1215 }
1230 dasm_put(Dst, 5734, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1216 dasm_put(Dst, 5339, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1231 if (sse) { 1217 if (sse) {
1232 dasm_put(Dst, 5764); 1218 dasm_put(Dst, 5369);
1233 } else { 1219 } else {
1234 } 1220 }
1235 dasm_put(Dst, 5771, sizeof(GCstr)-1); 1221 dasm_put(Dst, 5376, sizeof(GCstr)-1);
1236 dasm_put(Dst, 5846, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1222 dasm_put(Dst, 5451, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1237 dasm_put(Dst, 5907, LJ_TSTR, LJ_TISNUM); 1223 dasm_put(Dst, 5512, LJ_TSTR, LJ_TISNUM);
1238 if (sse) { 1224 if (sse) {
1239 dasm_put(Dst, 5931); 1225 dasm_put(Dst, 5533);
1240 } else { 1226 } else {
1241 dasm_put(Dst, 5938); 1227 dasm_put(Dst, 5540);
1242 } 1228 }
1243 dasm_put(Dst, 5950, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1229 dasm_put(Dst, 5552, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1244 dasm_put(Dst, 6018, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1230 dasm_put(Dst, 5620, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1245 dasm_put(Dst, 6088, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1231 dasm_put(Dst, 5687, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1246 dasm_put(Dst, 6164, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1232 dasm_put(Dst, 5760, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1247 dasm_put(Dst, 6249, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1233 dasm_put(Dst, 5845, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1248 dasm_put(Dst, 6326, 1+1, LJ_TTAB); 1234 dasm_put(Dst, 5919, 1+1, LJ_TTAB);
1249 if (sse) { 1235 if (sse) {
1250 dasm_put(Dst, 6399); 1236 dasm_put(Dst, 5986);
1251 } else { 1237 } else {
1252 } 1238 }
1253 if (sse) { 1239 if (sse) {
1254 dasm_put(Dst, 6409, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1240 dasm_put(Dst, 5996, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1255 } else { 1241 } else {
1256 } 1242 }
1257 if (sse) { 1243 if (sse) {
1258 dasm_put(Dst, 6461, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1244 dasm_put(Dst, 6048, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1259 } else { 1245 } else {
1260 } 1246 }
1261 dasm_put(Dst, 6504); 1247 dasm_put(Dst, 6091, LJ_TISNUM);
1262 if (sse) {
1263 dasm_put(Dst, 6514);
1264 }
1265 dasm_put(Dst, 6518, LJ_TISNUM);
1266 if (sse) { 1248 if (sse) {
1267 dasm_put(Dst, 6536); 1249 dasm_put(Dst, 6118);
1268 } else { 1250 } else {
1269 } 1251 }
1270 dasm_put(Dst, 6553); 1252 dasm_put(Dst, 6135);
1271 if (sse) { 1253 if (sse) {
1272 dasm_put(Dst, 6561, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1254 dasm_put(Dst, 6143, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1273 } else { 1255 } else {
1274 } 1256 }
1275 dasm_put(Dst, 6504); 1257 dasm_put(Dst, 6091, LJ_TISNUM);
1276 if (sse) { 1258 if (sse) {
1277 dasm_put(Dst, 6514); 1259 dasm_put(Dst, 6186);
1278 }
1279 dasm_put(Dst, 6518, LJ_TISNUM);
1280 if (sse) {
1281 dasm_put(Dst, 6604);
1282 } else { 1260 } else {
1283 } 1261 }
1284 dasm_put(Dst, 6553); 1262 dasm_put(Dst, 6135);
1285 if (sse) { 1263 if (sse) {
1286 dasm_put(Dst, 6621, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1264 dasm_put(Dst, 6203, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1287 } else { 1265 } else {
1288 } 1266 }
1289 dasm_put(Dst, 6504); 1267 dasm_put(Dst, 6091, LJ_TISNUM);
1290 if (sse) { 1268 if (sse) {
1291 dasm_put(Dst, 6514); 1269 dasm_put(Dst, 6246);
1292 }
1293 dasm_put(Dst, 6518, LJ_TISNUM);
1294 if (sse) {
1295 dasm_put(Dst, 6664);
1296 } else { 1270 } else {
1297 } 1271 }
1298 dasm_put(Dst, 6553); 1272 dasm_put(Dst, 6135);
1299 if (sse) { 1273 if (sse) {
1300 dasm_put(Dst, 6681, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1274 dasm_put(Dst, 6263, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1301 } else { 1275 } else {
1302 } 1276 }
1303 dasm_put(Dst, 6724); 1277 dasm_put(Dst, 6306);
1304 if (sse) { 1278 if (sse) {
1305 dasm_put(Dst, 6731, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1279 dasm_put(Dst, 6313, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1306 } else { 1280 } else {
1307 } 1281 }
1308 dasm_put(Dst, 6774); 1282 dasm_put(Dst, 6356);
1309 if (sse) { 1283 if (sse) {
1310 dasm_put(Dst, 6778); 1284 dasm_put(Dst, 6360);
1311 } else { 1285 } else {
1312 } 1286 }
1313 dasm_put(Dst, 6804); 1287 dasm_put(Dst, 6372);
1314 if (sse) {
1315 dasm_put(Dst, 6395);
1316 }
1317 dasm_put(Dst, 6807);
1318 if (sse) { 1288 if (sse) {
1319 dasm_put(Dst, 6816, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1289 dasm_put(Dst, 6383, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1320 } else { 1290 } else {
1321 } 1291 }
1322 dasm_put(Dst, 6885); 1292 dasm_put(Dst, 6452);
1323 if (sse) { 1293 if (sse) {
1324 dasm_put(Dst, 6894, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1294 dasm_put(Dst, 6461, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1325 } else { 1295 } else {
1326 } 1296 }
1327 dasm_put(Dst, 6963); 1297 dasm_put(Dst, 6530);
1328 if (sse) { 1298 if (sse) {
1329 dasm_put(Dst, 6973, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1299 dasm_put(Dst, 6540, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1330 } else { 1300 } else {
1331 } 1301 }
1332 dasm_put(Dst, 7042); 1302 dasm_put(Dst, 6609);
1333 if (sse) { 1303 if (sse) {
1334 dasm_put(Dst, 7052, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1304 dasm_put(Dst, 6619, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1335 } else { 1305 } else {
1336 } 1306 }
1337 dasm_put(Dst, 7121); 1307 dasm_put(Dst, 6688);
1338 if (sse) { 1308 if (sse) {
1339 dasm_put(Dst, 7130, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1309 dasm_put(Dst, 6697, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1340 } else { 1310 } else {
1341 } 1311 }
1342 dasm_put(Dst, 7199, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1312 dasm_put(Dst, 6766, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1343 dasm_put(Dst, 7282, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1313 dasm_put(Dst, 6844, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1344 dasm_put(Dst, 7400, Dt1(->base), Dt1(->top)); 1314 dasm_put(Dst, 6970, Dt1(->top), Dt1(->base), Dt1(->top));
1345#if LJ_HASJIT 1315#if LJ_HASJIT
1346 dasm_put(Dst, 7442, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1316 dasm_put(Dst, 7009, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1347#endif 1317#endif
1348 dasm_put(Dst, 7475, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); 1318 dasm_put(Dst, 7042, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1349 dasm_put(Dst, 7542, BC__MAX*8); 1319 dasm_put(Dst, 7109, GG_DISP2STATIC);
1350#if LJ_HASJIT 1320#if LJ_HASJIT
1351 dasm_put(Dst, 7579); 1321 dasm_put(Dst, 7146);
1352#endif 1322#endif
1353 dasm_put(Dst, 7581); 1323 dasm_put(Dst, 7148);
1354#if LJ_HASJIT 1324#if LJ_HASJIT
1355 dasm_put(Dst, 7579); 1325 dasm_put(Dst, 7146);
1356#endif 1326#endif
1357 dasm_put(Dst, 7584); 1327 dasm_put(Dst, 7151);
1358#if LJ_HASJIT 1328#if LJ_HASJIT
1359 dasm_put(Dst, 7579); 1329 dasm_put(Dst, 7146);
1360#endif 1330#endif
1361 dasm_put(Dst, 7587); 1331 dasm_put(Dst, 7154);
1362#if LJ_HASJIT 1332#if LJ_HASJIT
1363 dasm_put(Dst, 7590, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1333 dasm_put(Dst, 7157, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1364#endif 1334#endif
1365 dasm_put(Dst, 7637); 1335 dasm_put(Dst, 7204);
1366 if (!sse) { 1336 if (!sse) {
1367 dasm_put(Dst, 7640); 1337 dasm_put(Dst, 7207);
1368 } 1338 }
1369 dasm_put(Dst, 7685, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1339 dasm_put(Dst, 7252, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1370 if (!sse) { 1340 if (!sse) {
1371 dasm_put(Dst, 7771); 1341 dasm_put(Dst, 7338);
1372 } 1342 }
1373 dasm_put(Dst, 7816, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); 1343 dasm_put(Dst, 7383, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
1374 if (!sse) { 1344 if (!sse) {
1375 dasm_put(Dst, 7902); 1345 dasm_put(Dst, 7469);
1376 } 1346 }
1377 dasm_put(Dst, 7941, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1347 dasm_put(Dst, 7508, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1378 if (sse) { 1348 if (sse) {
1379 dasm_put(Dst, 8030, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1349 dasm_put(Dst, 7597, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1380 } else { 1350 } else {
1381 dasm_put(Dst, 8144); 1351 dasm_put(Dst, 7711);
1382 } 1352 }
1383 dasm_put(Dst, 8191); 1353 dasm_put(Dst, 7758);
1384 if (!sse) { 1354 if (!sse) {
1385 } else { 1355 } else {
1386 dasm_put(Dst, 8268); 1356 dasm_put(Dst, 7835);
1387 } 1357 }
1388 dasm_put(Dst, 8271); 1358 dasm_put(Dst, 7838);
1389 dasm_put(Dst, 8356, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1359 dasm_put(Dst, 7923, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1390 dasm_put(Dst, 8457, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1360 dasm_put(Dst, 8024, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1391 dasm_put(Dst, 8631); 1361 dasm_put(Dst, 8198);
1392 if (sse) { 1362 if (sse) {
1393 dasm_put(Dst, 8672); 1363 dasm_put(Dst, 8239);
1394 dasm_put(Dst, 8742); 1364 dasm_put(Dst, 8309);
1395 dasm_put(Dst, 8814); 1365 dasm_put(Dst, 8381);
1396 } else { 1366 } else {
1397 dasm_put(Dst, 8866); 1367 dasm_put(Dst, 8433);
1398 dasm_put(Dst, 8958); 1368 dasm_put(Dst, 8525);
1399 } 1369 }
1400 dasm_put(Dst, 9004); 1370 dasm_put(Dst, 8571);
1401 if (sse) { 1371 if (sse) {
1402 dasm_put(Dst, 9010, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1372 dasm_put(Dst, 8577, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1403 dasm_put(Dst, 9095, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1373 dasm_put(Dst, 8662, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1404 } else { 1374 } else {
1405 dasm_put(Dst, 9223); 1375 dasm_put(Dst, 8790);
1406 dasm_put(Dst, 9306); 1376 dasm_put(Dst, 8873);
1407 if (cmov) { 1377 if (cmov) {
1408 dasm_put(Dst, 9361); 1378 dasm_put(Dst, 8928);
1409 } else { 1379 } else {
1410 dasm_put(Dst, 9380); 1380 dasm_put(Dst, 8947);
1411 } 1381 }
1412 dasm_put(Dst, 9219); 1382 dasm_put(Dst, 8786);
1413 } 1383 }
1414 dasm_put(Dst, 9421); 1384 dasm_put(Dst, 8988);
1415} 1385}
1416 1386
1417/* Generate the code for a single instruction. */ 1387/* Generate the code for a single instruction. */
1418static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1388static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1419{ 1389{
1420 int vk = 0; 1390 int vk = 0;
1421 dasm_put(Dst, 159, defop); 1391 dasm_put(Dst, 9010, defop);
1422 1392
1423 switch (op) { 1393 switch (op) {
1424 1394
@@ -1427,602 +1397,602 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1427 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1397 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1428 1398
1429 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1399 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1430 dasm_put(Dst, 9443, LJ_TISNUM, LJ_TISNUM); 1400 dasm_put(Dst, 9012, LJ_TISNUM, LJ_TISNUM);
1431 if (sse) { 1401 if (sse) {
1432 dasm_put(Dst, 9464); 1402 dasm_put(Dst, 9033);
1433 } else { 1403 } else {
1434 dasm_put(Dst, 9479); 1404 dasm_put(Dst, 9048);
1435 if (cmov) { 1405 if (cmov) {
1436 dasm_put(Dst, 9489); 1406 dasm_put(Dst, 9058);
1437 } else { 1407 } else {
1438 dasm_put(Dst, 9495); 1408 dasm_put(Dst, 9064);
1439 } 1409 }
1440 } 1410 }
1441 switch (op) { 1411 switch (op) {
1442 case BC_ISLT: 1412 case BC_ISLT:
1443 dasm_put(Dst, 9502); 1413 dasm_put(Dst, 9071);
1444 break; 1414 break;
1445 case BC_ISGE: 1415 case BC_ISGE:
1446 dasm_put(Dst, 9301); 1416 dasm_put(Dst, 8868);
1447 break; 1417 break;
1448 case BC_ISLE: 1418 case BC_ISLE:
1449 dasm_put(Dst, 6321); 1419 dasm_put(Dst, 5914);
1450 break; 1420 break;
1451 case BC_ISGT: 1421 case BC_ISGT:
1452 dasm_put(Dst, 9507); 1422 dasm_put(Dst, 9076);
1453 break; 1423 break;
1454 default: break; /* Shut up GCC. */ 1424 default: break; /* Shut up GCC. */
1455 } 1425 }
1456 dasm_put(Dst, 9512, -BCBIAS_J*4); 1426 dasm_put(Dst, 9081, -BCBIAS_J*4);
1457 break; 1427 break;
1458 1428
1459 case BC_ISEQV: case BC_ISNEV: 1429 case BC_ISEQV: case BC_ISNEV:
1460 vk = op == BC_ISEQV; 1430 vk = op == BC_ISEQV;
1461 dasm_put(Dst, 9547, LJ_TISNUM, LJ_TISNUM); 1431 dasm_put(Dst, 9116, LJ_TISNUM, LJ_TISNUM);
1462 if (sse) { 1432 if (sse) {
1463 dasm_put(Dst, 9573); 1433 dasm_put(Dst, 9142);
1464 } else { 1434 } else {
1465 dasm_put(Dst, 9585); 1435 dasm_put(Dst, 9154);
1466 if (cmov) { 1436 if (cmov) {
1467 dasm_put(Dst, 9489); 1437 dasm_put(Dst, 9058);
1468 } else { 1438 } else {
1469 dasm_put(Dst, 9495); 1439 dasm_put(Dst, 9064);
1470 } 1440 }
1471 } 1441 }
1472 iseqne_fp: 1442 iseqne_fp:
1473 if (vk) { 1443 if (vk) {
1474 dasm_put(Dst, 9592); 1444 dasm_put(Dst, 9161);
1475 } else { 1445 } else {
1476 dasm_put(Dst, 9601); 1446 dasm_put(Dst, 9170);
1477 } 1447 }
1478 iseqne_end: 1448 iseqne_end:
1479 if (vk) { 1449 if (vk) {
1480 dasm_put(Dst, 9610, -BCBIAS_J*4); 1450 dasm_put(Dst, 9179, -BCBIAS_J*4);
1481 } else { 1451 } else {
1482 dasm_put(Dst, 9625, -BCBIAS_J*4); 1452 dasm_put(Dst, 9194, -BCBIAS_J*4);
1483 } 1453 }
1484 dasm_put(Dst, 7616); 1454 dasm_put(Dst, 7183);
1485 if (op == BC_ISEQV || op == BC_ISNEV) { 1455 if (op == BC_ISEQV || op == BC_ISNEV) {
1486 dasm_put(Dst, 9640, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1456 dasm_put(Dst, 9209, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1487 if (vk) { 1457 if (vk) {
1488 dasm_put(Dst, 9698); 1458 dasm_put(Dst, 9267);
1489 } else { 1459 } else {
1490 dasm_put(Dst, 9702); 1460 dasm_put(Dst, 9271);
1491 } 1461 }
1492 dasm_put(Dst, 9708); 1462 dasm_put(Dst, 9277);
1493 } 1463 }
1494 break; 1464 break;
1495 case BC_ISEQS: case BC_ISNES: 1465 case BC_ISEQS: case BC_ISNES:
1496 vk = op == BC_ISEQS; 1466 vk = op == BC_ISEQS;
1497 dasm_put(Dst, 9713, LJ_TSTR); 1467 dasm_put(Dst, 9282, LJ_TSTR);
1498 iseqne_test: 1468 iseqne_test:
1499 if (vk) { 1469 if (vk) {
1500 dasm_put(Dst, 9596); 1470 dasm_put(Dst, 9165);
1501 } else { 1471 } else {
1502 dasm_put(Dst, 8953); 1472 dasm_put(Dst, 2805);
1503 } 1473 }
1504 goto iseqne_end; 1474 goto iseqne_end;
1505 case BC_ISEQN: case BC_ISNEN: 1475 case BC_ISEQN: case BC_ISNEN:
1506 vk = op == BC_ISEQN; 1476 vk = op == BC_ISEQN;
1507 dasm_put(Dst, 9738, LJ_TISNUM); 1477 dasm_put(Dst, 9307, LJ_TISNUM);
1508 if (sse) { 1478 if (sse) {
1509 dasm_put(Dst, 9752); 1479 dasm_put(Dst, 9321);
1510 } else { 1480 } else {
1511 dasm_put(Dst, 9765); 1481 dasm_put(Dst, 9334);
1512 if (cmov) { 1482 if (cmov) {
1513 dasm_put(Dst, 9489); 1483 dasm_put(Dst, 9058);
1514 } else { 1484 } else {
1515 dasm_put(Dst, 9495); 1485 dasm_put(Dst, 9064);
1516 } 1486 }
1517 } 1487 }
1518 goto iseqne_fp; 1488 goto iseqne_fp;
1519 case BC_ISEQP: case BC_ISNEP: 1489 case BC_ISEQP: case BC_ISNEP:
1520 vk = op == BC_ISEQP; 1490 vk = op == BC_ISEQP;
1521 dasm_put(Dst, 9773); 1491 dasm_put(Dst, 9342);
1522 goto iseqne_test; 1492 goto iseqne_test;
1523 1493
1524 /* -- Unary test and copy ops ------------------------------------------- */ 1494 /* -- Unary test and copy ops ------------------------------------------- */
1525 1495
1526 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1496 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1527 dasm_put(Dst, 9785, LJ_TISTRUECOND); 1497 dasm_put(Dst, 9354, LJ_TISTRUECOND);
1528 if (op == BC_IST || op == BC_ISTC) { 1498 if (op == BC_IST || op == BC_ISTC) {
1529 dasm_put(Dst, 9797); 1499 dasm_put(Dst, 9366);
1530 } else { 1500 } else {
1531 dasm_put(Dst, 9802); 1501 dasm_put(Dst, 9371);
1532 } 1502 }
1533 if (op == BC_ISTC || op == BC_ISFC) { 1503 if (op == BC_ISTC || op == BC_ISFC) {
1534 dasm_put(Dst, 9807); 1504 dasm_put(Dst, 9376);
1535 } 1505 }
1536 dasm_put(Dst, 9818, -BCBIAS_J*4); 1506 dasm_put(Dst, 9387, -BCBIAS_J*4);
1537 break; 1507 break;
1538 1508
1539 /* -- Unary ops --------------------------------------------------------- */ 1509 /* -- Unary ops --------------------------------------------------------- */
1540 1510
1541 case BC_MOV: 1511 case BC_MOV:
1542 dasm_put(Dst, 9851); 1512 dasm_put(Dst, 9420);
1543 break; 1513 break;
1544 case BC_NOT: 1514 case BC_NOT:
1545 dasm_put(Dst, 9886, LJ_TISTRUECOND, LJ_TTRUE); 1515 dasm_put(Dst, 9455, LJ_TISTRUECOND, LJ_TTRUE);
1546 break; 1516 break;
1547 case BC_UNM: 1517 case BC_UNM:
1548 dasm_put(Dst, 9923, LJ_TISNUM); 1518 dasm_put(Dst, 9492, LJ_TISNUM);
1549 if (sse) { 1519 if (sse) {
1550 dasm_put(Dst, 9934, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1520 dasm_put(Dst, 9503, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1551 } else { 1521 } else {
1552 dasm_put(Dst, 9959); 1522 dasm_put(Dst, 9528);
1553 } 1523 }
1554 dasm_put(Dst, 7616); 1524 dasm_put(Dst, 7183);
1555 break; 1525 break;
1556 case BC_LEN: 1526 case BC_LEN:
1557 dasm_put(Dst, 9968, LJ_TSTR); 1527 dasm_put(Dst, 9537, LJ_TSTR);
1558 if (sse) { 1528 if (sse) {
1559 dasm_put(Dst, 9982, Dt5(->len)); 1529 dasm_put(Dst, 9551, Dt5(->len));
1560 } else { 1530 } else {
1561 dasm_put(Dst, 10000, Dt5(->len)); 1531 dasm_put(Dst, 9569, Dt5(->len));
1562 } 1532 }
1563 dasm_put(Dst, 10009, LJ_TTAB); 1533 dasm_put(Dst, 9578, LJ_TTAB);
1564 if (sse) { 1534 if (sse) {
1565 dasm_put(Dst, 10051); 1535 dasm_put(Dst, 9620);
1566 } else { 1536 } else {
1567 } 1537 }
1568 dasm_put(Dst, 10060); 1538 dasm_put(Dst, 9629);
1569 break; 1539 break;
1570 1540
1571 /* -- Binary ops -------------------------------------------------------- */ 1541 /* -- Binary ops -------------------------------------------------------- */
1572 1542
1573 1543
1574 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1544 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1575 dasm_put(Dst, 10070); 1545 dasm_put(Dst, 9639);
1576 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1546 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1577 switch (vk) { 1547 switch (vk) {
1578 case 0: 1548 case 0:
1579 dasm_put(Dst, 10078, LJ_TISNUM); 1549 dasm_put(Dst, 9647, LJ_TISNUM);
1580 if (sse) { 1550 if (sse) {
1581 dasm_put(Dst, 10090); 1551 dasm_put(Dst, 9659);
1582 } else { 1552 } else {
1583 dasm_put(Dst, 10105); 1553 dasm_put(Dst, 9674);
1584 } 1554 }
1585 break; 1555 break;
1586 case 1: 1556 case 1:
1587 dasm_put(Dst, 10114, LJ_TISNUM); 1557 dasm_put(Dst, 9683, LJ_TISNUM);
1588 if (sse) { 1558 if (sse) {
1589 dasm_put(Dst, 10126); 1559 dasm_put(Dst, 9695);
1590 } else { 1560 } else {
1591 dasm_put(Dst, 10141); 1561 dasm_put(Dst, 9710);
1592 } 1562 }
1593 break; 1563 break;
1594 default: 1564 default:
1595 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1565 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1596 if (sse) { 1566 if (sse) {
1597 dasm_put(Dst, 10172); 1567 dasm_put(Dst, 9741);
1598 } else { 1568 } else {
1599 dasm_put(Dst, 10186); 1569 dasm_put(Dst, 9755);
1600 } 1570 }
1601 break; 1571 break;
1602 } 1572 }
1603 if (sse) { 1573 if (sse) {
1604 dasm_put(Dst, 9952); 1574 dasm_put(Dst, 9521);
1605 } else { 1575 } else {
1606 dasm_put(Dst, 9964); 1576 dasm_put(Dst, 9533);
1607 } 1577 }
1608 dasm_put(Dst, 7616); 1578 dasm_put(Dst, 7183);
1609 break; 1579 break;
1610 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1580 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1611 dasm_put(Dst, 10070); 1581 dasm_put(Dst, 9639);
1612 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1582 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1613 switch (vk) { 1583 switch (vk) {
1614 case 0: 1584 case 0:
1615 dasm_put(Dst, 10078, LJ_TISNUM); 1585 dasm_put(Dst, 9647, LJ_TISNUM);
1616 if (sse) { 1586 if (sse) {
1617 dasm_put(Dst, 10194); 1587 dasm_put(Dst, 9763);
1618 } else { 1588 } else {
1619 dasm_put(Dst, 10209); 1589 dasm_put(Dst, 9778);
1620 } 1590 }
1621 break; 1591 break;
1622 case 1: 1592 case 1:
1623 dasm_put(Dst, 10114, LJ_TISNUM); 1593 dasm_put(Dst, 9683, LJ_TISNUM);
1624 if (sse) { 1594 if (sse) {
1625 dasm_put(Dst, 10218); 1595 dasm_put(Dst, 9787);
1626 } else { 1596 } else {
1627 dasm_put(Dst, 10233); 1597 dasm_put(Dst, 9802);
1628 } 1598 }
1629 break; 1599 break;
1630 default: 1600 default:
1631 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1601 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1632 if (sse) { 1602 if (sse) {
1633 dasm_put(Dst, 10242); 1603 dasm_put(Dst, 9811);
1634 } else { 1604 } else {
1635 dasm_put(Dst, 10256); 1605 dasm_put(Dst, 9825);
1636 } 1606 }
1637 break; 1607 break;
1638 } 1608 }
1639 if (sse) { 1609 if (sse) {
1640 dasm_put(Dst, 9952); 1610 dasm_put(Dst, 9521);
1641 } else { 1611 } else {
1642 dasm_put(Dst, 9964); 1612 dasm_put(Dst, 9533);
1643 } 1613 }
1644 dasm_put(Dst, 7616); 1614 dasm_put(Dst, 7183);
1645 break; 1615 break;
1646 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1616 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1647 dasm_put(Dst, 10070); 1617 dasm_put(Dst, 9639);
1648 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1618 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1649 switch (vk) { 1619 switch (vk) {
1650 case 0: 1620 case 0:
1651 dasm_put(Dst, 10078, LJ_TISNUM); 1621 dasm_put(Dst, 9647, LJ_TISNUM);
1652 if (sse) { 1622 if (sse) {
1653 dasm_put(Dst, 10264); 1623 dasm_put(Dst, 9833);
1654 } else { 1624 } else {
1655 dasm_put(Dst, 10279); 1625 dasm_put(Dst, 9848);
1656 } 1626 }
1657 break; 1627 break;
1658 case 1: 1628 case 1:
1659 dasm_put(Dst, 10114, LJ_TISNUM); 1629 dasm_put(Dst, 9683, LJ_TISNUM);
1660 if (sse) { 1630 if (sse) {
1661 dasm_put(Dst, 10288); 1631 dasm_put(Dst, 9857);
1662 } else { 1632 } else {
1663 dasm_put(Dst, 10303); 1633 dasm_put(Dst, 9872);
1664 } 1634 }
1665 break; 1635 break;
1666 default: 1636 default:
1667 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1637 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1668 if (sse) { 1638 if (sse) {
1669 dasm_put(Dst, 10312); 1639 dasm_put(Dst, 9881);
1670 } else { 1640 } else {
1671 dasm_put(Dst, 10326); 1641 dasm_put(Dst, 9895);
1672 } 1642 }
1673 break; 1643 break;
1674 } 1644 }
1675 if (sse) { 1645 if (sse) {
1676 dasm_put(Dst, 9952); 1646 dasm_put(Dst, 9521);
1677 } else { 1647 } else {
1678 dasm_put(Dst, 9964); 1648 dasm_put(Dst, 9533);
1679 } 1649 }
1680 dasm_put(Dst, 7616); 1650 dasm_put(Dst, 7183);
1681 break; 1651 break;
1682 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1652 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1683 dasm_put(Dst, 10070); 1653 dasm_put(Dst, 9639);
1684 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1654 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1685 switch (vk) { 1655 switch (vk) {
1686 case 0: 1656 case 0:
1687 dasm_put(Dst, 10078, LJ_TISNUM); 1657 dasm_put(Dst, 9647, LJ_TISNUM);
1688 if (sse) { 1658 if (sse) {
1689 dasm_put(Dst, 10334); 1659 dasm_put(Dst, 9903);
1690 } else { 1660 } else {
1691 dasm_put(Dst, 10349); 1661 dasm_put(Dst, 9918);
1692 } 1662 }
1693 break; 1663 break;
1694 case 1: 1664 case 1:
1695 dasm_put(Dst, 10114, LJ_TISNUM); 1665 dasm_put(Dst, 9683, LJ_TISNUM);
1696 if (sse) { 1666 if (sse) {
1697 dasm_put(Dst, 10358); 1667 dasm_put(Dst, 9927);
1698 } else { 1668 } else {
1699 dasm_put(Dst, 10373); 1669 dasm_put(Dst, 9942);
1700 } 1670 }
1701 break; 1671 break;
1702 default: 1672 default:
1703 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1673 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1704 if (sse) { 1674 if (sse) {
1705 dasm_put(Dst, 10382); 1675 dasm_put(Dst, 9951);
1706 } else { 1676 } else {
1707 dasm_put(Dst, 10396); 1677 dasm_put(Dst, 9965);
1708 } 1678 }
1709 break; 1679 break;
1710 } 1680 }
1711 if (sse) { 1681 if (sse) {
1712 dasm_put(Dst, 9952); 1682 dasm_put(Dst, 9521);
1713 } else { 1683 } else {
1714 dasm_put(Dst, 9964); 1684 dasm_put(Dst, 9533);
1715 } 1685 }
1716 dasm_put(Dst, 7616); 1686 dasm_put(Dst, 7183);
1717 break; 1687 break;
1718 case BC_MODVN: 1688 case BC_MODVN:
1719 dasm_put(Dst, 10070); 1689 dasm_put(Dst, 9639);
1720 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1690 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1721 switch (vk) { 1691 switch (vk) {
1722 case 0: 1692 case 0:
1723 dasm_put(Dst, 10078, LJ_TISNUM); 1693 dasm_put(Dst, 9647, LJ_TISNUM);
1724 if (sse) { 1694 if (sse) {
1725 dasm_put(Dst, 10404); 1695 dasm_put(Dst, 9973);
1726 } else { 1696 } else {
1727 dasm_put(Dst, 10419); 1697 dasm_put(Dst, 9988);
1728 } 1698 }
1729 break; 1699 break;
1730 case 1: 1700 case 1:
1731 dasm_put(Dst, 10114, LJ_TISNUM); 1701 dasm_put(Dst, 9683, LJ_TISNUM);
1732 if (sse) { 1702 if (sse) {
1733 dasm_put(Dst, 10428); 1703 dasm_put(Dst, 9997);
1734 } else { 1704 } else {
1735 dasm_put(Dst, 10443); 1705 dasm_put(Dst, 10012);
1736 } 1706 }
1737 break; 1707 break;
1738 default: 1708 default:
1739 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1709 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1740 if (sse) { 1710 if (sse) {
1741 dasm_put(Dst, 10452); 1711 dasm_put(Dst, 10021);
1742 } else { 1712 } else {
1743 dasm_put(Dst, 10466); 1713 dasm_put(Dst, 10035);
1744 } 1714 }
1745 break; 1715 break;
1746 } 1716 }
1747 dasm_put(Dst, 10474); 1717 dasm_put(Dst, 10043);
1748 if (sse) { 1718 if (sse) {
1749 dasm_put(Dst, 9952); 1719 dasm_put(Dst, 9521);
1750 } else { 1720 } else {
1751 dasm_put(Dst, 9964); 1721 dasm_put(Dst, 9533);
1752 } 1722 }
1753 dasm_put(Dst, 7616); 1723 dasm_put(Dst, 7183);
1754 break; 1724 break;
1755 case BC_MODNV: case BC_MODVV: 1725 case BC_MODNV: case BC_MODVV:
1756 dasm_put(Dst, 10070); 1726 dasm_put(Dst, 9639);
1757 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1727 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1758 switch (vk) { 1728 switch (vk) {
1759 case 0: 1729 case 0:
1760 dasm_put(Dst, 10078, LJ_TISNUM); 1730 dasm_put(Dst, 9647, LJ_TISNUM);
1761 if (sse) { 1731 if (sse) {
1762 dasm_put(Dst, 10404); 1732 dasm_put(Dst, 9973);
1763 } else { 1733 } else {
1764 dasm_put(Dst, 10419); 1734 dasm_put(Dst, 9988);
1765 } 1735 }
1766 break; 1736 break;
1767 case 1: 1737 case 1:
1768 dasm_put(Dst, 10114, LJ_TISNUM); 1738 dasm_put(Dst, 9683, LJ_TISNUM);
1769 if (sse) { 1739 if (sse) {
1770 dasm_put(Dst, 10428); 1740 dasm_put(Dst, 9997);
1771 } else { 1741 } else {
1772 dasm_put(Dst, 10443); 1742 dasm_put(Dst, 10012);
1773 } 1743 }
1774 break; 1744 break;
1775 default: 1745 default:
1776 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1746 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1777 if (sse) { 1747 if (sse) {
1778 dasm_put(Dst, 10452); 1748 dasm_put(Dst, 10021);
1779 } else { 1749 } else {
1780 dasm_put(Dst, 10466); 1750 dasm_put(Dst, 10035);
1781 } 1751 }
1782 break; 1752 break;
1783 } 1753 }
1784 dasm_put(Dst, 10480); 1754 dasm_put(Dst, 10049);
1785 break; 1755 break;
1786 case BC_POW: 1756 case BC_POW:
1787 dasm_put(Dst, 10070); 1757 dasm_put(Dst, 9639);
1788 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1758 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1789 switch (vk) { 1759 switch (vk) {
1790 case 0: 1760 case 0:
1791 dasm_put(Dst, 10078, LJ_TISNUM); 1761 dasm_put(Dst, 9647, LJ_TISNUM);
1792 if (sse) { 1762 if (sse) {
1793 dasm_put(Dst, 10404); 1763 dasm_put(Dst, 9973);
1794 } else { 1764 } else {
1795 dasm_put(Dst, 10419); 1765 dasm_put(Dst, 9988);
1796 } 1766 }
1797 break; 1767 break;
1798 case 1: 1768 case 1:
1799 dasm_put(Dst, 10114, LJ_TISNUM); 1769 dasm_put(Dst, 9683, LJ_TISNUM);
1800 if (sse) { 1770 if (sse) {
1801 dasm_put(Dst, 10428); 1771 dasm_put(Dst, 9997);
1802 } else { 1772 } else {
1803 dasm_put(Dst, 10443); 1773 dasm_put(Dst, 10012);
1804 } 1774 }
1805 break; 1775 break;
1806 default: 1776 default:
1807 dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); 1777 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM);
1808 if (sse) { 1778 if (sse) {
1809 dasm_put(Dst, 10452); 1779 dasm_put(Dst, 10021);
1810 } else { 1780 } else {
1811 dasm_put(Dst, 10466); 1781 dasm_put(Dst, 10035);
1812 } 1782 }
1813 break; 1783 break;
1814 } 1784 }
1815 dasm_put(Dst, 10485); 1785 dasm_put(Dst, 10054);
1816 if (sse) { 1786 if (sse) {
1817 dasm_put(Dst, 9952); 1787 dasm_put(Dst, 9521);
1818 } else { 1788 } else {
1819 dasm_put(Dst, 9964); 1789 dasm_put(Dst, 9533);
1820 } 1790 }
1821 dasm_put(Dst, 7616); 1791 dasm_put(Dst, 7183);
1822 break; 1792 break;
1823 1793
1824 case BC_CAT: 1794 case BC_CAT:
1825 dasm_put(Dst, 10489, Dt1(->base), Dt1(->base)); 1795 dasm_put(Dst, 10058, Dt1(->base), Dt1(->base));
1826 break; 1796 break;
1827 1797
1828 /* -- Constant ops ------------------------------------------------------ */ 1798 /* -- Constant ops ------------------------------------------------------ */
1829 1799
1830 case BC_KSTR: 1800 case BC_KSTR:
1831 dasm_put(Dst, 10580, LJ_TSTR); 1801 dasm_put(Dst, 10149, LJ_TSTR);
1832 break; 1802 break;
1833 case BC_KSHORT: 1803 case BC_KSHORT:
1834 if (sse) { 1804 if (sse) {
1835 dasm_put(Dst, 10617); 1805 dasm_put(Dst, 10186);
1836 } else { 1806 } else {
1837 dasm_put(Dst, 10632); 1807 dasm_put(Dst, 10201);
1838 } 1808 }
1839 dasm_put(Dst, 7616); 1809 dasm_put(Dst, 7183);
1840 break; 1810 break;
1841 case BC_KNUM: 1811 case BC_KNUM:
1842 if (sse) { 1812 if (sse) {
1843 dasm_put(Dst, 10640); 1813 dasm_put(Dst, 10209);
1844 } else { 1814 } else {
1845 dasm_put(Dst, 10654); 1815 dasm_put(Dst, 10223);
1846 } 1816 }
1847 dasm_put(Dst, 7616); 1817 dasm_put(Dst, 7183);
1848 break; 1818 break;
1849 case BC_KPRI: 1819 case BC_KPRI:
1850 dasm_put(Dst, 10662); 1820 dasm_put(Dst, 10231);
1851 break; 1821 break;
1852 case BC_KNIL: 1822 case BC_KNIL:
1853 dasm_put(Dst, 10691, LJ_TNIL); 1823 dasm_put(Dst, 10260, LJ_TNIL);
1854 break; 1824 break;
1855 1825
1856 /* -- Upvalue and function ops ------------------------------------------ */ 1826 /* -- Upvalue and function ops ------------------------------------------ */
1857 1827
1858 case BC_UGET: 1828 case BC_UGET:
1859 dasm_put(Dst, 10739, offsetof(GCfuncL, uvptr), DtA(->v)); 1829 dasm_put(Dst, 10308, offsetof(GCfuncL, uvptr), DtA(->v));
1860 break; 1830 break;
1861 case BC_USETV: 1831 case BC_USETV:
1862#define TV2MARKOFS \ 1832#define TV2MARKOFS \
1863 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1833 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1864 dasm_put(Dst, 10785, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1834 dasm_put(Dst, 10354, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1865 dasm_put(Dst, 10881); 1835 dasm_put(Dst, 10450);
1866 break; 1836 break;
1867#undef TV2MARKOFS 1837#undef TV2MARKOFS
1868 case BC_USETS: 1838 case BC_USETS:
1869 dasm_put(Dst, 10893, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1839 dasm_put(Dst, 10462, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1870 break; 1840 break;
1871 case BC_USETN: 1841 case BC_USETN:
1872 dasm_put(Dst, 10989); 1842 dasm_put(Dst, 10558);
1873 if (sse) { 1843 if (sse) {
1874 dasm_put(Dst, 10994); 1844 dasm_put(Dst, 10563);
1875 } else { 1845 } else {
1876 dasm_put(Dst, 9768); 1846 dasm_put(Dst, 9337);
1877 } 1847 }
1878 dasm_put(Dst, 11002, offsetof(GCfuncL, uvptr), DtA(->v)); 1848 dasm_put(Dst, 10571, offsetof(GCfuncL, uvptr), DtA(->v));
1879 if (sse) { 1849 if (sse) {
1880 dasm_put(Dst, 4877); 1850 dasm_put(Dst, 10580);
1881 } else { 1851 } else {
1882 dasm_put(Dst, 4883); 1852 dasm_put(Dst, 10586);
1883 } 1853 }
1884 dasm_put(Dst, 7616); 1854 dasm_put(Dst, 7183);
1885 break; 1855 break;
1886 case BC_USETP: 1856 case BC_USETP:
1887 dasm_put(Dst, 11011, offsetof(GCfuncL, uvptr), DtA(->v)); 1857 dasm_put(Dst, 10589, offsetof(GCfuncL, uvptr), DtA(->v));
1888 break; 1858 break;
1889 case BC_UCLO: 1859 case BC_UCLO:
1890 dasm_put(Dst, 11051, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1860 dasm_put(Dst, 10629, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1891 break; 1861 break;
1892 1862
1893 case BC_FNEW: 1863 case BC_FNEW:
1894 dasm_put(Dst, 11107, Dt1(->base), Dt1(->base), LJ_TFUNC); 1864 dasm_put(Dst, 10685, Dt1(->base), Dt1(->base), LJ_TFUNC);
1895 break; 1865 break;
1896 1866
1897 /* -- Table ops --------------------------------------------------------- */ 1867 /* -- Table ops --------------------------------------------------------- */
1898 1868
1899 case BC_TNEW: 1869 case BC_TNEW:
1900 dasm_put(Dst, 11174, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1870 dasm_put(Dst, 10752, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1901 break; 1871 break;
1902 case BC_TDUP: 1872 case BC_TDUP:
1903 dasm_put(Dst, 11298, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1873 dasm_put(Dst, 10876, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1904 break; 1874 break;
1905 1875
1906 case BC_GGET: 1876 case BC_GGET:
1907 dasm_put(Dst, 11397, Dt7(->env)); 1877 dasm_put(Dst, 10975, Dt7(->env));
1908 break; 1878 break;
1909 case BC_GSET: 1879 case BC_GSET:
1910 dasm_put(Dst, 11417, Dt7(->env)); 1880 dasm_put(Dst, 10995, Dt7(->env));
1911 break; 1881 break;
1912 1882
1913 case BC_TGETV: 1883 case BC_TGETV:
1914 dasm_put(Dst, 11437, LJ_TTAB, LJ_TISNUM); 1884 dasm_put(Dst, 11015, LJ_TTAB, LJ_TISNUM);
1915 if (sse) { 1885 if (sse) {
1916 dasm_put(Dst, 11470); 1886 dasm_put(Dst, 11048);
1917 } else { 1887 } else {
1918 } 1888 }
1919 dasm_put(Dst, 11491, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1889 dasm_put(Dst, 11069, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1920 dasm_put(Dst, 11585, LJ_TSTR); 1890 dasm_put(Dst, 11163, LJ_TSTR);
1921 break; 1891 break;
1922 case BC_TGETS: 1892 case BC_TGETS:
1923 dasm_put(Dst, 11603, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1893 dasm_put(Dst, 11181, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1924 dasm_put(Dst, 11689, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1894 dasm_put(Dst, 11267, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1925 break; 1895 break;
1926 case BC_TGETB: 1896 case BC_TGETB:
1927 dasm_put(Dst, 11762, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1897 dasm_put(Dst, 11340, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1928 dasm_put(Dst, 10060); 1898 dasm_put(Dst, 9629);
1929 break; 1899 break;
1930 1900
1931 case BC_TSETV: 1901 case BC_TSETV:
1932 dasm_put(Dst, 11863, LJ_TTAB, LJ_TISNUM); 1902 dasm_put(Dst, 11441, LJ_TTAB, LJ_TISNUM);
1933 if (sse) { 1903 if (sse) {
1934 dasm_put(Dst, 11470); 1904 dasm_put(Dst, 11048);
1935 } else { 1905 } else {
1936 } 1906 }
1937 dasm_put(Dst, 11896, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1907 dasm_put(Dst, 11474, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1938 dasm_put(Dst, 11981, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1908 dasm_put(Dst, 11559, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1939 break; 1909 break;
1940 case BC_TSETS: 1910 case BC_TSETS:
1941 dasm_put(Dst, 12045, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1911 dasm_put(Dst, 11623, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1942 dasm_put(Dst, 12122, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1912 dasm_put(Dst, 11700, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1943 dasm_put(Dst, 12214, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1913 dasm_put(Dst, 11792, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1944 break; 1914 break;
1945 case BC_TSETB: 1915 case BC_TSETB:
1946 dasm_put(Dst, 12306, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1916 dasm_put(Dst, 11884, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1947 dasm_put(Dst, 12406, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1917 dasm_put(Dst, 11984, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1948 break; 1918 break;
1949 1919
1950 case BC_TSETM: 1920 case BC_TSETM:
1951 dasm_put(Dst, 12454); 1921 dasm_put(Dst, 12032);
1952 if (sse) { 1922 if (sse) {
1953 dasm_put(Dst, 10994); 1923 dasm_put(Dst, 10563);
1954 } else { 1924 } else {
1955 } 1925 }
1956 dasm_put(Dst, 12459, Dt6(->marked), LJ_GC_BLACK); 1926 dasm_put(Dst, 12037, Dt6(->marked), LJ_GC_BLACK);
1957 if (sse) { 1927 if (sse) {
1958 dasm_put(Dst, 12484); 1928 dasm_put(Dst, 12062);
1959 } else { 1929 } else {
1960 } 1930 }
1961 dasm_put(Dst, 12492, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 1931 dasm_put(Dst, 12070, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
1962 dasm_put(Dst, 12628, Dt6(->gclist)); 1932 dasm_put(Dst, 12206, Dt6(->gclist));
1963 break; 1933 break;
1964 1934
1965 /* -- Calls and vararg handling ----------------------------------------- */ 1935 /* -- Calls and vararg handling ----------------------------------------- */
1966 1936
1967 case BC_CALL: case BC_CALLM: 1937 case BC_CALL: case BC_CALLM:
1968 dasm_put(Dst, 10074); 1938 dasm_put(Dst, 9643);
1969 if (op == BC_CALLM) { 1939 if (op == BC_CALLM) {
1970 dasm_put(Dst, 12636); 1940 dasm_put(Dst, 12214);
1971 } 1941 }
1972 dasm_put(Dst, 12641, LJ_TFUNC, Dt7(->gate)); 1942 dasm_put(Dst, 12219, LJ_TFUNC, Dt7(->pc));
1973 break; 1943 break;
1974 1944
1975 case BC_CALLMT: 1945 case BC_CALLMT:
1976 dasm_put(Dst, 12636); 1946 dasm_put(Dst, 12214);
1977 break; 1947 break;
1978 case BC_CALLT: 1948 case BC_CALLT:
1979 dasm_put(Dst, 12664, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 1949 dasm_put(Dst, 12262, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
1980 dasm_put(Dst, 12773, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 1950 dasm_put(Dst, 12386, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
1981 break; 1951 break;
1982 1952
1983 case BC_ITERC: 1953 case BC_ITERC:
1984 dasm_put(Dst, 12834, LJ_TFUNC, Dt7(->gate)); 1954 dasm_put(Dst, 12447, LJ_TFUNC, 2+1, Dt7(->pc));
1985 break; 1955 break;
1986 1956
1987 case BC_VARG: 1957 case BC_VARG:
1988 dasm_put(Dst, 12896, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 1958 dasm_put(Dst, 12529, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
1989 dasm_put(Dst, 13050, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 1959 dasm_put(Dst, 12683, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1990 break; 1960 break;
1991 1961
1992 /* -- Returns ----------------------------------------------------------- */ 1962 /* -- Returns ----------------------------------------------------------- */
1993 1963
1994 case BC_RETM: 1964 case BC_RETM:
1995 dasm_put(Dst, 12636); 1965 dasm_put(Dst, 12214);
1996 break; 1966 break;
1997 1967
1998 case BC_RET: case BC_RET0: case BC_RET1: 1968 case BC_RET: case BC_RET0: case BC_RET1:
1999 if (op != BC_RET0) { 1969 if (op != BC_RET0) {
2000 dasm_put(Dst, 13155); 1970 dasm_put(Dst, 12788);
2001 } 1971 }
2002 dasm_put(Dst, 13159, FRAME_TYPE); 1972 dasm_put(Dst, 12792, FRAME_TYPE);
2003 switch (op) { 1973 switch (op) {
2004 case BC_RET: 1974 case BC_RET:
2005 dasm_put(Dst, 13178); 1975 dasm_put(Dst, 12811);
2006 break; 1976 break;
2007 case BC_RET1: 1977 case BC_RET1:
2008 dasm_put(Dst, 13242); 1978 dasm_put(Dst, 12875);
2009 /* fallthrough */ 1979 /* fallthrough */
2010 case BC_RET0: 1980 case BC_RET0:
2011 dasm_put(Dst, 13258); 1981 dasm_put(Dst, 12891);
2012 default: 1982 default:
2013 break; 1983 break;
2014 } 1984 }
2015 dasm_put(Dst, 13269, Dt7(->pc), PC2PROTO(k)); 1985 dasm_put(Dst, 12902, Dt7(->pc), PC2PROTO(k));
2016 if (op == BC_RET) { 1986 if (op == BC_RET) {
2017 dasm_put(Dst, 13317, LJ_TNIL); 1987 dasm_put(Dst, 12950, LJ_TNIL);
2018 } else { 1988 } else {
2019 dasm_put(Dst, 13328, LJ_TNIL); 1989 dasm_put(Dst, 12961, LJ_TNIL);
2020 } 1990 }
2021 dasm_put(Dst, 13335); 1991 dasm_put(Dst, 12968);
2022 if (op != BC_RET0) { 1992 if (op != BC_RET0) {
2023 dasm_put(Dst, 13355); 1993 dasm_put(Dst, 12988);
2024 } 1994 }
2025 dasm_put(Dst, 4966); 1995 dasm_put(Dst, 4568);
2026 break; 1996 break;
2027 1997
2028 /* -- Loops and branches ------------------------------------------------ */ 1998 /* -- Loops and branches ------------------------------------------------ */
@@ -2030,7 +2000,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2030 2000
2031 case BC_FORL: 2001 case BC_FORL:
2032#if LJ_HASJIT 2002#if LJ_HASJIT
2033 dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); 2003 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
2034#endif 2004#endif
2035 break; 2005 break;
2036 2006
@@ -2042,57 +2012,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2042 case BC_FORI: 2012 case BC_FORI:
2043 case BC_IFORL: 2013 case BC_IFORL:
2044 vk = (op == BC_IFORL || op == BC_JFORL); 2014 vk = (op == BC_IFORL || op == BC_JFORL);
2045 dasm_put(Dst, 13379); 2015 dasm_put(Dst, 13012);
2046 if (!vk) { 2016 if (!vk) {
2047 dasm_put(Dst, 13383, LJ_TISNUM, LJ_TISNUM); 2017 dasm_put(Dst, 13016, LJ_TISNUM, LJ_TISNUM);
2048 } 2018 }
2049 dasm_put(Dst, 13402); 2019 dasm_put(Dst, 13035);
2050 if (!vk) { 2020 if (!vk) {
2051 dasm_put(Dst, 13406, LJ_TISNUM); 2021 dasm_put(Dst, 13039, LJ_TISNUM);
2052 } 2022 }
2053 if (sse) { 2023 if (sse) {
2054 dasm_put(Dst, 13415); 2024 dasm_put(Dst, 13048);
2055 if (vk) { 2025 if (vk) {
2056 dasm_put(Dst, 13427); 2026 dasm_put(Dst, 13060);
2057 } else { 2027 } else {
2058 dasm_put(Dst, 13446); 2028 dasm_put(Dst, 13079);
2059 } 2029 }
2060 dasm_put(Dst, 13451); 2030 dasm_put(Dst, 13084);
2061 } else { 2031 } else {
2062 dasm_put(Dst, 13464); 2032 dasm_put(Dst, 13097);
2063 if (vk) { 2033 if (vk) {
2064 dasm_put(Dst, 13470); 2034 dasm_put(Dst, 13103);
2065 } else { 2035 } else {
2066 dasm_put(Dst, 13486); 2036 dasm_put(Dst, 13119);
2067 } 2037 }
2068 dasm_put(Dst, 13494); 2038 dasm_put(Dst, 13127);
2069 if (cmov) { 2039 if (cmov) {
2070 dasm_put(Dst, 9489); 2040 dasm_put(Dst, 9058);
2071 } else { 2041 } else {
2072 dasm_put(Dst, 9495); 2042 dasm_put(Dst, 9064);
2073 } 2043 }
2074 if (!cmov) { 2044 if (!cmov) {
2075 dasm_put(Dst, 13499); 2045 dasm_put(Dst, 13132);
2076 } 2046 }
2077 } 2047 }
2078 if (op == BC_FORI) { 2048 if (op == BC_FORI) {
2079 dasm_put(Dst, 13505, -BCBIAS_J*4); 2049 dasm_put(Dst, 13138, -BCBIAS_J*4);
2080 } else if (op == BC_JFORI) { 2050 } else if (op == BC_JFORI) {
2081 dasm_put(Dst, 13515, -BCBIAS_J*4, BC_JLOOP); 2051 dasm_put(Dst, 13148, -BCBIAS_J*4, BC_JLOOP);
2082 } else if (op == BC_IFORL) { 2052 } else if (op == BC_IFORL) {
2083 dasm_put(Dst, 13529, -BCBIAS_J*4); 2053 dasm_put(Dst, 13162, -BCBIAS_J*4);
2084 } else { 2054 } else {
2085 dasm_put(Dst, 13525, BC_JLOOP); 2055 dasm_put(Dst, 13158, BC_JLOOP);
2086 } 2056 }
2087 dasm_put(Dst, 9524); 2057 dasm_put(Dst, 9093);
2088 if (sse) { 2058 if (sse) {
2089 dasm_put(Dst, 13539); 2059 dasm_put(Dst, 13172);
2090 } 2060 }
2091 break; 2061 break;
2092 2062
2093 case BC_ITERL: 2063 case BC_ITERL:
2094#if LJ_HASJIT 2064#if LJ_HASJIT
2095 dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); 2065 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
2096#endif 2066#endif
2097 break; 2067 break;
2098 2068
@@ -2101,33 +2071,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2101 break; 2071 break;
2102#endif 2072#endif
2103 case BC_IITERL: 2073 case BC_IITERL:
2104 dasm_put(Dst, 13550, LJ_TNIL); 2074 dasm_put(Dst, 13183, LJ_TNIL);
2105 if (op == BC_JITERL) { 2075 if (op == BC_JITERL) {
2106 dasm_put(Dst, 13565, BC_JLOOP); 2076 dasm_put(Dst, 13198, BC_JLOOP);
2107 } else { 2077 } else {
2108 dasm_put(Dst, 13579, -BCBIAS_J*4); 2078 dasm_put(Dst, 13212, -BCBIAS_J*4);
2109 } 2079 }
2110 dasm_put(Dst, 9828); 2080 dasm_put(Dst, 9397);
2111 break; 2081 break;
2112 2082
2113 case BC_LOOP: 2083 case BC_LOOP:
2114#if LJ_HASJIT 2084#if LJ_HASJIT
2115 dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); 2085 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT);
2116#endif 2086#endif
2117 break; 2087 break;
2118 2088
2119 case BC_ILOOP: 2089 case BC_ILOOP:
2120 dasm_put(Dst, 7616); 2090 dasm_put(Dst, 7183);
2121 break; 2091 break;
2122 2092
2123 case BC_JLOOP: 2093 case BC_JLOOP:
2124#if LJ_HASJIT 2094#if LJ_HASJIT
2125 dasm_put(Dst, 13595, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2095 dasm_put(Dst, 13228, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2126#endif 2096#endif
2127 break; 2097 break;
2128 2098
2129 case BC_JMP: 2099 case BC_JMP:
2130 dasm_put(Dst, 13622, -BCBIAS_J*4); 2100 dasm_put(Dst, 13255, -BCBIAS_J*4);
2101 break;
2102
2103 /* -- Function headers -------------------------------------------------- */
2104
2105 /*
2106 ** Reminder: A function may be called with func/args above L->maxstack,
2107 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
2108 ** too. This means all FUNC* ops (including fast functions) must check
2109 ** for stack overflow _before_ adding more slots!
2110 */
2111
2112 case BC_FUNCF:
2113#if LJ_HASJIT
2114#endif
2115 case BC_FUNCV: /* NYI: compiled vararg functions. */
2116 break;
2117
2118 case BC_JFUNCF:
2119#if !LJ_HASJIT
2120 break;
2121#endif
2122 case BC_IFUNCF:
2123 dasm_put(Dst, 13281, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2124 if (op == BC_JFUNCF) {
2125 dasm_put(Dst, 13312, BC_JLOOP);
2126 } else {
2127 dasm_put(Dst, 7183);
2128 }
2129 dasm_put(Dst, 13321, LJ_TNIL);
2130 break;
2131
2132 case BC_JFUNCV:
2133#if !LJ_HASJIT
2134 break;
2135#endif
2136 dasm_put(Dst, 7146);
2137 break; /* NYI: compiled vararg functions. */
2138
2139 case BC_IFUNCV:
2140 dasm_put(Dst, 13343, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2141 if (op == BC_JFUNCV) {
2142 dasm_put(Dst, 13312, BC_JLOOP);
2143 } else {
2144 dasm_put(Dst, 13440, -4+PC2PROTO(k));
2145 }
2146 dasm_put(Dst, 13465, LJ_TNIL);
2147 break;
2148
2149 case BC_FUNCC:
2150 case BC_FUNCCW:
2151 dasm_put(Dst, 13487, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2152 if (op == BC_FUNCC) {
2153 dasm_put(Dst, 13517);
2154 } else {
2155 dasm_put(Dst, 13521);
2156 }
2157 dasm_put(Dst, 13529, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2158 if (op == BC_FUNCC) {
2159 dasm_put(Dst, 13539);
2160 } else {
2161 dasm_put(Dst, 13544, DISPATCH_GL(wrapf));
2162 }
2163 dasm_put(Dst, 13550, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2131 break; 2164 break;
2132 2165
2133 /* ---------------------------------------------------------------------- */ 2166 /* ---------------------------------------------------------------------- */
@@ -2155,7 +2188,7 @@ static int build_backend(BuildCtx *ctx)
2155 2188
2156 build_subroutines(ctx, cmov, sse); 2189 build_subroutines(ctx, cmov, sse);
2157 2190
2158 dasm_put(Dst, 13648); 2191 dasm_put(Dst, 13576);
2159 for (op = 0; op < BC__MAX; op++) 2192 for (op = 0; op < BC__MAX; op++)
2160 build_ins(ctx, (BCOp)op, op, cmov, sse); 2193 build_ins(ctx, (BCOp)op, op, cmov, sse);
2161 2194
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index 94d0641f..8784aecf 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,687 +12,680 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[13496] = { 15static const unsigned char build_actionlist[13390] = {
16 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
17 139,108,36,96,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15, 17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
18 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 18 36,84,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,
19 255,36,252,235,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3, 19 199,131,233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,
20 252,233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137, 20 248,1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,
21 106,252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139, 21 232,1,15,133,244,1,248,2,255,139,108,36,96,137,181,233,248,3,139,68,36,84,
22 108,36,96,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15, 22 139,76,36,88,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,
23 132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137, 23 248,15,72,139,76,36,104,72,137,141,233,49,192,248,16,72,131,196,40,91,94,
24 56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15, 24 95,93,195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,
25 133,244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193, 25 131,194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,
26 232,16,252,255,36,252,235,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133, 26 20,202,252,233,244,5,248,8,137,149,233,137,68,36,84,137,202,137,252,233,232,
27 244,3,252,233,244,2,248,14,137,113,252,252,72,139,189,233,139,108,36,96,141, 27 251,1,0,139,149,233,252,233,244,3,248,17,137,208,72,137,204,248,18,139,108,
28 68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,233,72,137,252, 28 36,96,139,173,233,199,133,233,237,252,233,244,16,248,19,72,129,225,239,72,
29 250,137,252,233,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233, 29 137,204,248,20,139,108,36,96,72,199,193,252,248,252,255,252,255,252,255,184,
30 237,139,149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137, 30 237,255,139,149,233,139,157,233,129,195,239,139,114,252,252,199,66,252,252,
31 68,36,84,252,247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252, 31 237,199,131,233,237,252,233,244,12,248,21,186,237,252,233,244,248,248,22,
32 252,72,139,189,233,139,108,36,96,141,68,193,252,248,137,141,233,141,136,233, 32 131,232,8,252,233,244,247,248,23,141,68,194,252,248,248,1,15,182,142,233,
33 137,133,233,59,141,233,137,252,233,15,135,244,15,199,131,233,237,252,255, 33 131,198,4,137,149,233,137,133,233,255,137,116,36,100,137,202,248,2,137,252,
34 215,199,131,233,237,139,149,233,255,141,12,194,252,247,217,3,141,233,248, 34 233,232,251,1,0,139,149,233,139,133,233,139,106,252,248,139,114,252,252,41,
35 16,131,192,1,137,68,36,84,252,247,198,237,15,132,244,17,248,18,252,247,198, 35 208,193,232,3,131,192,1,139,181,233,139,14,15,182,252,233,15,182,205,131,
36 237,15,132,244,20,199,131,233,237,131,230,252,248,41,214,252,247,222,131, 36 198,4,252,255,36,252,235,248,24,85,87,86,83,72,131,252,236,40,137,205,137,
37 232,1,15,132,244,248,248,1,139,44,10,137,106,252,248,139,108,10,4,137,106, 37 76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233,129,195,
38 252,252,131,194,8,131,232,1,15,133,244,1,248,2,139,108,36,96,137,181,233, 38 239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68,36,
39 248,3,139,68,36,84,139,76,36,88,248,4,255,57,193,15,133,244,252,248,5,131, 39 92,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
40 252,234,8,137,149,233,248,21,72,139,76,36,104,72,137,141,233,49,192,248,22,
41 72,131,196,40,91,94,95,93,195,248,6,15,130,244,253,59,149,233,15,135,244,
42 254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7,133,201,15,
43 132,244,5,41,193,141,20,202,252,233,244,5,248,8,255,137,149,233,137,68,36,
44 84,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248,23,137,208,
45 72,137,204,248,24,139,108,36,96,139,173,233,199,133,233,237,252,233,244,22,
46 248,25,72,129,225,239,72,137,204,248,26,139,108,36,96,72,199,193,252,248,
47 252,255,252,255,252,255,184,237,139,149,233,139,157,233,129,195,239,139,114,
48 252,252,199,66,252,252,237,199,131,233,237,255,252,233,244,16,248,20,252,
49 247,198,237,15,132,244,27,131,230,252,248,41,252,242,72,141,76,49,252,248,
50 139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233,244,
51 247,248,13,137,202,248,11,141,68,194,252,248,15,182,142,233,131,198,4,137,
52 149,233,137,133,233,137,116,36,100,137,202,248,1,137,252,233,232,251,1,0,
53 139,141,233,255,139,133,233,139,105,252,248,139,113,252,252,41,200,193,232,
54 3,131,192,1,252,255,165,233,248,28,85,87,86,83,72,131,252,236,40,137,205,
55 137,76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233,129,
56 195,239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68,
57 36,92,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
58 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,84,252, 40 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,84,252,
59 247,198,237,15,132,244,17,252,233,244,18,248,29,255,85,87,86,83,72,131,252, 41 247,198,237,15,132,244,13,255,252,233,244,14,248,25,85,87,86,83,72,131,252,
60 236,40,190,237,68,137,76,36,92,252,233,244,247,248,30,85,87,86,83,72,131, 42 236,40,190,237,68,137,76,36,92,252,233,244,247,248,26,85,87,86,83,72,131,
61 252,236,40,190,237,248,1,68,137,68,36,88,137,205,137,76,36,96,137,209,248, 43 252,236,40,190,237,248,1,68,137,68,36,88,137,205,137,76,36,96,137,209,248,
62 2,72,139,189,233,72,137,124,36,104,137,108,36,100,72,137,165,233,139,157, 44 2,72,139,189,233,72,137,124,36,104,137,108,36,100,72,137,165,233,139,157,
63 233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233, 45 233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,
64 41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,239,15,133, 46 41,200,193,232,3,131,192,1,248,27,255,139,105,252,248,129,121,253,252,252,
65 244,31,252,255,165,233,248,32,255,85,87,86,83,72,131,252,236,40,137,205,137, 47 239,15,133,244,28,248,29,137,202,137,114,252,252,139,181,233,139,14,15,182,
66 76,36,96,137,108,36,100,139,189,233,43,189,233,199,68,36,92,0,0,0,0,137,124, 48 252,233,15,182,205,131,198,4,252,255,36,252,235,248,30,85,87,86,83,72,131,
67 36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209,133, 49 252,236,40,137,205,137,76,36,96,137,108,36,100,139,189,233,43,189,233,199,
68 192,15,132,244,21,137,193,190,237,252,233,244,2,248,27,1,209,131,230,252, 50 68,36,92,0,0,0,0,137,124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,
69 248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,72, 51 233,65,252,255,209,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,
70 99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,139,191,233,139, 52 11,1,209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,
71 191,233,252,255,225,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41, 53 139,117,252,244,72,99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,
72 252,233,15,132,244,34,252,247,217,193,252,233,3,65,137,200,139,76,36,96,137, 54 139,191,233,255,139,191,233,252,255,225,248,31,15,182,78,252,255,131,252,
73 145,233,139,80,4,139,0,137,85,4,137,69,0,137,252,234,252,233,244,35,248,36, 55 237,16,141,12,202,41,252,233,15,132,244,32,252,247,217,193,252,233,3,65,137,
74 255,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15, 56 200,139,76,36,96,137,145,233,139,80,4,139,0,137,85,4,137,69,0,137,252,234,
75 133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,37, 57 252,233,244,33,248,34,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,
76 15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141, 58 252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,
77 68,36,80,252,233,244,247,248,38,15,182,70,252,254,141,4,194,248,1,15,182, 59 244,248,248,35,15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,
78 110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73, 60 80,255,72,141,68,36,80,252,233,244,247,248,36,15,182,70,252,254,141,4,194,
79 137,192,137,205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244, 61 248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,
80 249,248,34,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139, 62 252,234,73,137,192,137,205,137,116,36,100,232,251,1,1,139,149,233,133,192,
81 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,139, 63 15,132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,
82 141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,3,0,0,0,252, 64 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
83 255,165,233,248,39,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126, 65 248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,
84 252,252,235,15,133,244,247,141,139,233,255,137,41,199,65,4,237,137,205,252, 66 237,252,233,244,29,248,37,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,
85 233,244,248,248,40,15,182,70,252,254,255,72,141,68,36,80,252,233,244,247, 67 126,252,252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,
86 248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234, 68 252,233,244,248,248,38,15,182,70,252,254,255,72,141,68,36,80,252,233,244,
87 248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,36, 69 247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,
88 100,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139, 70 234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,
89 108,202,4,139,12,202,137,104,4,137,8,248,42,139,6,15,182,204,15,182,232,131, 71 36,100,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,
72 108,202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,
90 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,15, 73 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,15,
91 182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41, 74 182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,
92 214,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,139,108,36,96,137, 75 214,139,105,252,248,184,237,252,233,244,29,248,41,139,108,36,96,137,149,233,
93 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116, 76 68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116,36,100,232,
94 36,100,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255, 77 251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,42,248,4,141,118,4,
95 141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248, 78 15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,
96 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 79 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,43,131,198,
97 45,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120, 80 4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,
98 253,4,239,252,233,244,4,248,47,131,252,238,4,65,137,192,65,137,252,233,139, 81 233,244,4,248,45,131,252,238,4,65,137,192,65,137,252,233,139,108,36,96,137,
99 108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,4,252, 82 149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,252,233,244,3,
100 233,244,3,248,48,255,141,4,199,252,233,244,247,248,49,141,4,199,141,44,252, 83 248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,234,149,252,
101 234,149,252,233,244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141, 84 233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,4,194,248,
102 4,194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182, 85 1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,70,252,252,
103 70,252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137, 86 137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,
104 116,36,100,232,251,1,5,139,149,233,133,192,15,132,244,42,248,44,137,193,41, 87 232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,
105 208,137,113,252,244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,252, 88 252,244,141,176,233,255,184,237,252,233,244,27,248,50,139,108,36,96,137,149,
106 252,239,15,133,244,31,255,252,255,165,233,248,52,139,108,36,96,137,149,233, 89 233,141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149,233,252,233,
107 141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149,233,252,233,244, 90 244,42,248,51,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,252,233,8,
108 44,248,31,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,96,137,149,233, 91 139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137,116,36,100,
109 137,202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,7,139,149,233,139, 92 232,251,1,7,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,131,192,
110 76,36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,15,132,244,53,252, 93 1,57,215,15,132,244,52,137,202,137,114,252,252,139,181,233,139,14,15,182,
111 255,165,233,248,54,139,108,36,96,137,149,233,137,202,137,252,233,137,116, 94 252,233,15,182,205,131,198,4,252,255,36,252,235,248,53,139,108,36,96,137,
112 36,100,232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232, 95 149,233,137,202,137,252,233,137,116,36,100,232,251,1,8,139,149,233,139,70,
113 16,252,255,164,253,252,235,233,248,55,129,252,248,239,15,130,244,56,255,139, 96 252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,248,
114 105,4,129,252,253,239,15,131,244,56,137,68,36,84,137,105,252,252,139,41,137, 97 54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,239,15,131,244,
115 105,252,248,131,232,2,15,132,244,248,137,76,36,80,248,1,131,193,8,139,105, 98 55,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,
116 4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,139,76,36, 99 232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,105,252,252,139,
117 80,248,2,139,68,36,84,252,233,244,57,248,58,129,252,248,239,15,130,244,56, 100 41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,84,252,233,244,
118 139,105,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137, 101 56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237,252,247,213,57,
119 232,248,1,255,139,105,252,248,139,132,253,197,233,199,65,252,252,237,137, 102 232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,106,252,248,139,
120 65,252,248,252,233,244,59,248,60,129,252,248,239,15,130,244,56,139,105,4, 103 132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,233,
121 129,252,253,239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,252,237, 104 244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,139,114,252,252,129,
122 199,65,252,252,237,15,132,244,59,139,65,252,248,139,131,233,199,65,252,252, 105 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,
123 237,137,105,252,248,137,76,36,80,139,141,233,255,35,136,233,105,201,239,3, 106 66,252,252,237,15,132,244,58,139,131,233,199,66,252,252,237,137,106,252,248,
124 141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248, 107 139,141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,
125 4,139,137,233,133,201,15,133,244,3,252,233,244,59,248,5,139,105,4,129,252, 108 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,
126 253,239,15,132,244,59,255,139,1,139,76,36,80,137,105,252,252,137,65,252,248, 109 3,252,233,244,58,248,5,139,105,4,129,252,253,239,15,132,244,58,255,139,1,
127 252,233,244,59,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135, 110 137,106,252,252,137,66,252,248,252,233,244,58,248,6,129,252,253,239,15,132,
128 244,253,189,237,248,7,252,247,213,139,172,253,171,233,252,233,244,2,248,61, 111 244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,
129 129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,255,139,41, 112 171,233,252,233,244,2,248,60,129,252,248,239,15,130,244,55,129,122,253,4,
130 131,189,233,0,15,133,244,56,129,121,253,12,239,15,133,244,56,139,65,8,137, 113 239,15,133,244,55,255,139,42,131,189,233,0,15,133,244,55,129,122,253,12,239,
131 133,233,199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,132,244, 114 15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,
132 247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,244, 115 106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,
133 59,248,62,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 116 137,171,233,137,133,233,248,1,252,233,244,58,248,61,255,129,252,248,239,15,
134 56,137,84,36,80,137,205,139,17,68,141,65,8,139,76,36,96,232,251,1,9,137,252, 117 130,244,55,129,122,253,4,239,15,133,244,55,137,213,68,141,66,8,139,18,139,
135 233,139,84,36,80,139,40,139,64,4,137,105,252,248,137,65,252,252,252,233,244, 118 76,36,96,232,251,1,9,137,252,234,139,40,139,64,4,139,114,252,252,137,106,
136 59,248,63,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,56,255, 119 252,248,137,66,252,252,252,233,244,58,248,62,129,252,248,239,15,133,244,55,
137 252,242,15,16,1,252,233,244,64,255,221,1,252,233,244,65,255,248,66,129,252, 120 129,122,253,4,239,15,135,244,55,255,252,242,15,16,2,252,233,244,63,255,221,
138 248,239,15,130,244,56,129,121,253,4,239,15,133,244,249,139,1,248,2,199,65, 121 2,252,233,244,64,255,248,65,129,252,248,239,15,130,244,55,139,114,252,252,
139 252,252,237,137,65,252,248,252,233,244,59,248,3,129,121,253,4,239,15,135, 122 129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,
140 244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,15,130,244, 123 248,252,233,244,58,248,3,129,122,253,4,239,15,135,244,55,131,187,233,0,15,
141 247,232,244,67,248,1,139,108,36,96,137,141,233,137,113,252,252,137,116,36, 124 133,244,55,139,171,233,59,171,233,255,15,130,244,247,232,244,66,248,1,139,
142 100,137,84,36,80,137,202,137,252,233,232,251,1,10,139,141,233,139,84,36,80, 125 108,36,96,137,149,233,137,116,36,100,137,252,233,232,251,1,10,139,149,233,
143 252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129, 126 252,233,244,2,248,67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,
144 121,253,4,239,15,133,244,56,137,84,36,80,139,17,139,108,36,96,137,141,233, 127 122,253,4,239,15,133,244,55,139,108,36,96,137,149,233,255,139,114,252,252,
145 255,137,113,252,252,68,141,65,8,137,252,233,137,116,36,100,232,251,1,11,139, 128 68,141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,11,139,149,233,133,
146 141,233,139,84,36,80,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252, 129 192,15,132,244,249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,
147 248,137,65,252,252,139,105,16,139,65,20,137,41,137,65,4,248,69,184,237,252, 130 106,16,139,66,20,137,42,137,66,4,248,68,184,237,252,233,244,69,248,2,199,
148 233,244,70,248,2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252, 131 66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,58,248,70,129,
149 233,244,59,248,71,129,252,248,239,15,130,244,56,129,121,253,4,239,255,15, 132 252,248,239,15,130,244,55,139,106,252,248,129,122,253,4,239,255,15,133,244,
150 133,244,56,139,133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184, 133 55,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,
151 237,252,233,244,70,248,72,129,252,248,239,15,130,244,56,129,121,253,4,239, 134 237,184,237,252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,
152 15,133,244,56,129,121,253,12,239,15,135,244,56,255,252,242,15,16,65,8,72, 135 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,
153 189,237,237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242, 136 252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,
154 15,17,65,252,248,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233, 137 242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248,
155 248,1,129,120,253,4,239,15,132,244,73,139,40,139,64,4,137,41,137,65,4,252, 138 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,
156 233,244,69,248,2,131,189,233,0,15,132,244,73,137,84,36,80,135,205,137,194, 139 137,42,137,66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,
157 232,251,1,12,137,252,233,139,84,36,80,133,192,15,133,244,1,248,73,184,237, 140 233,137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,
158 252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,129,121,253,4,239, 141 184,237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,106,252,
159 15,133,244,56,139,133,233,199,65,252,252,237,137,65,252,248,255,15,87,192, 142 248,129,122,253,4,239,15,133,244,55,139,133,233,139,114,252,252,199,66,252,
160 252,242,15,17,65,8,255,217,252,238,221,89,8,255,184,237,252,233,244,70,248, 143 252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,
161 75,129,252,248,239,15,130,244,56,137,113,252,252,190,237,137,202,131,193, 144 90,8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,
162 8,131,232,1,139,105,252,248,248,1,252,246,131,233,235,15,133,244,249,248, 145 74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,
163 2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,131,198,1,252, 146 238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239,
164 233,244,2,248,76,255,129,252,248,239,15,130,244,56,129,121,253,12,239,15, 147 15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,
165 133,244,56,137,113,252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113, 148 106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252,248,
166 8,137,105,8,137,49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248, 149 239,15,130,244,55,139,42,139,114,252,252,137,116,36,100,137,108,36,80,129,
167 9,139,116,36,100,252,233,244,56,248,77,129,252,248,239,15,130,244,56,139, 150 122,253,4,239,15,133,244,55,72,131,189,233,0,15,133,244,55,128,189,233,235,
168 41,137,113,252,252,137,116,36,100,137,108,36,80,129,121,253,4,239,15,133, 151 15,135,244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,
169 244,9,255,72,131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139, 152 1,141,116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,96,
170 181,233,137,116,36,84,15,132,244,247,59,181,233,15,132,244,9,248,1,141,116, 153 137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,15,
171 198,252,240,59,181,233,15,135,244,9,137,181,233,139,108,36,96,137,141,233, 154 132,244,249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,
172 131,193,8,137,141,233,255,139,108,36,84,141,76,193,232,72,41,252,241,57,252, 155 252,238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,
173 238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248, 156 233,237,255,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,
174 131,252,238,8,57,252,238,15,133,244,2,248,3,139,76,36,80,139,84,36,84,232, 157 244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,
175 244,28,199,131,233,237,139,108,36,96,139,116,36,80,139,149,233,129,252,248, 158 244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,
176 239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254, 159 248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,
177 41,206,15,132,244,252,255,141,4,50,193,252,238,3,59,133,233,15,135,244,255, 160 5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,100,137,68,36,84,72,
178 137,213,72,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57, 161 199,193,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244,13,
179 252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,100, 162 252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,142,
180 137,68,36,84,72,199,193,252,248,252,255,252,255,252,255,252,247,198,237,15, 163 233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,76,36,80,
181 132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233,131,252,233, 164 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,
182 8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,255, 165 248,77,139,106,252,248,139,173,233,139,114,252,252,137,116,36,100,137,108,
183 139,76,36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233, 166 36,80,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,135,244,55,139,
184 252,233,244,4,248,9,139,116,36,100,252,233,244,56,248,78,139,173,233,137, 167 141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,116,193,252,248,
185 113,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133,244,9,128, 168 59,181,233,15,135,244,55,137,181,233,139,108,36,96,137,149,233,137,149,233,
186 189,233,235,15,135,244,9,139,181,233,137,116,36,84,15,132,244,247,59,181, 169 141,108,194,252,240,72,41,252,245,57,206,15,132,244,249,248,2,255,139,68,
187 233,255,15,132,244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137, 170 46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,
188 181,233,139,108,36,96,137,141,233,137,141,233,139,108,36,84,141,76,193,252, 171 2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,139,108,36,96,139,
189 240,72,41,252,241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252, 172 116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,
190 252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,139, 173 190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,
191 76,36,80,139,84,36,84,232,244,28,199,131,233,237,139,108,36,96,139,116,36, 174 3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,139,1,137,4,41,139,
192 80,139,149,233,255,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190, 175 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,
193 233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3, 176 116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233,244,
194 59,133,233,15,135,244,255,137,213,72,41,205,248,5,139,1,137,4,41,139,65,4, 177 14,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,76,36,80,137,185,
195 137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116, 178 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,78,
196 36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,17,255,252,233,244, 179 139,108,36,96,72,252,247,133,233,237,15,132,244,55,255,137,149,233,141,68,
197 18,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,76,36,80,137,185, 180 194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,
198 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,79, 181 244,16,255,248,64,139,114,252,252,221,90,252,248,252,233,244,58,248,79,129,
199 139,108,36,96,137,113,252,252,72,252,247,133,233,237,15,132,244,56,137,141, 182 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
200 233,141,68,193,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133, 183 72,184,237,237,102,72,15,110,200,15,84,193,248,63,139,114,252,252,252,242,
201 233,252,233,244,22,255,248,65,221,89,252,248,252,233,244,59,248,80,129,252, 184 15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,253,4,239,
202 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72, 185 15,135,244,55,221,2,217,225,248,63,248,64,139,114,252,252,221,90,252,248,
203 184,237,237,102,72,15,110,200,15,84,193,248,64,252,242,15,17,65,252,248,255, 186 255,248,58,184,237,248,69,137,68,36,84,248,56,252,247,198,237,15,133,244,
204 248,80,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, 187 253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,72,252,247,209,141,
205 1,217,225,248,64,248,65,221,89,252,248,255,248,59,184,237,248,70,137,68,36, 188 20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
206 84,248,57,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252, 189 248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,
207 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,6, 190 248,252,255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,239,15,
208 199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202,72,199,193,252, 191 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,244,63,
209 248,252,255,252,255,252,255,252,233,244,18,255,248,81,129,252,248,239,15, 192 248,81,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
210 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,81,1,252,233,244,64, 193 242,15,16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,130,244,
211 248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252, 194 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,233,244,
212 242,15,16,1,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244, 195 63,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
213 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,85,252,233,244, 196 55,221,2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,244,55,
214 64,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 197 129,122,253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,83,255,
215 56,221,1,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56, 198 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,
216 129,121,253,4,239,15,135,244,56,221,1,232,244,83,252,233,244,65,248,84,255, 199 84,252,233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,122,253,4,
217 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,232,244, 200 239,15,135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,248,86,129,
218 85,252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,121,253,4, 201 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,236,221,
219 239,15,135,244,56,217,252,237,221,1,217,252,241,252,233,244,65,248,87,129, 202 2,217,252,241,252,233,244,64,248,87,129,252,248,239,255,15,130,244,55,129,
220 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252,236,221, 203 122,253,4,239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,89,129,252,
221 1,217,252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129, 204 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,254,252,
222 121,253,4,239,15,135,244,56,221,1,232,244,89,252,233,244,65,248,90,129,252, 205 233,244,64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,4,239,15,
223 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,254,252, 206 135,244,55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,15,130,
224 233,244,65,248,91,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15, 207 244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,233,
225 135,244,56,221,1,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130, 208 244,64,248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,135,
226 244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,242,221,216,252,233, 209 244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
227 244,65,248,93,129,252,248,239,15,130,244,56,255,129,121,253,4,239,15,135, 210 233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
228 244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252, 211 244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
229 233,244,65,248,94,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 212 243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,239,
230 244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252, 213 15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,129,
231 243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,121,253,4,239, 214 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
232 15,135,244,56,255,221,1,217,232,217,252,243,252,233,244,65,255,248,96,129, 215 255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248,96,129,252,248,
233 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1, 216 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,
234 255,137,76,36,80,137,213,232,251,1,14,139,76,36,80,137,252,234,252,233,244, 217 213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129,252,248,239,15,
235 64,255,248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 218 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,137,213,232,
236 56,252,242,15,16,1,255,137,76,36,80,137,213,232,251,1,15,139,76,36,80,137, 219 251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129,252,248,239,15,
237 252,234,252,233,244,64,255,248,98,129,252,248,239,15,130,244,56,129,121,253, 220 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,139,106,252,248,
238 4,239,15,135,244,56,252,242,15,16,1,255,137,76,36,80,137,213,232,251,1,16, 221 252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248,239,15,130,244,
239 139,76,36,80,137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239, 222 55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220,141,233,252,
240 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15, 223 233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
241 89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,121, 224 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217,252,243,252,
242 253,4,239,15,135,244,56,221,1,220,141,233,252,233,244,65,255,248,101,129, 225 233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
243 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12, 226 244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217,252,253,221,
244 239,15,135,244,56,221,1,221,65,8,217,252,243,252,233,244,65,248,102,129,252, 227 217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139,106,4,129,252,
245 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239, 228 253,239,15,135,244,55,139,114,252,252,139,2,137,106,252,252,137,66,252,248,
246 255,15,135,244,56,221,65,8,221,1,217,252,253,221,217,252,233,244,65,248,103, 229 209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,
247 129,252,248,239,15,130,244,56,139,105,4,129,252,253,239,15,135,244,56,139, 230 252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,
248 1,137,105,252,252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131, 231 197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252,
249 244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130, 232 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,
250 244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36, 233 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,69,248,3,255,15,
251 80,219,68,36,80,255,139,105,252,252,129,229,252,255,252,255,15,128,129,205, 234 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,
252 0,0,224,63,137,105,252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237, 235 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,
253 252,233,244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233, 236 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248,
254 244,2,255,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,89, 237 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,
255 193,252,242,15,17,65,252,248,255,221,1,199,68,36,80,0,0,128,90,216,76,36, 238 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,
256 80,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244,1, 239 248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
257 255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 240 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,
258 252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239, 241 244,250,255,15,40,224,232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,
259 15,135,244,56,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255,15, 242 252,248,252,242,15,17,34,255,217,192,232,244,104,220,252,233,248,1,221,90,
260 132,244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242,15, 243 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,
261 17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,220,252,233,248,1, 244 237,252,233,244,69,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,
262 221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, 245 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,
263 248,2,184,237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,105,4,252,233, 246 105,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
264 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 247 253,12,239,15,135,244,55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
265 1,255,248,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 248 138,244,1,221,217,252,233,244,64,255,248,106,129,252,248,239,15,130,244,55,
266 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223, 249 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
267 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15, 250 15,16,2,252,242,15,16,74,8,232,244,107,252,233,244,63,255,248,106,129,252,
268 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 251 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
269 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248, 252 15,135,244,55,221,2,221,66,8,232,244,107,252,233,244,64,255,248,108,129,252,
270 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, 253 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,
271 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248, 254 2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,
272 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 255 244,55,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,
273 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252, 256 244,1,255,248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
274 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, 257 244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,
275 197,1,252,233,244,1,255,248,110,129,252,248,239,15,130,244,56,129,121,253, 258 252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,
276 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64, 259 15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,55,255,248,
277 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252, 260 110,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42,
278 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244, 261 255,252,242,15,42,133,233,252,233,244,63,255,219,133,233,252,233,244,64,255,
279 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 262 248,111,129,252,248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139,
280 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233, 263 42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,
281 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133, 264 15,42,197,252,233,244,63,255,137,108,36,80,219,68,36,80,252,233,244,64,255,
282 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42, 265 248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,252,248,
283 197,252,233,244,64,255,137,108,36,80,219,68,36,80,252,233,244,65,255,248, 266 239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61,
284 113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,239, 267 252,255,0,0,0,15,135,244,55,137,68,36,84,255,221,2,219,92,36,84,129,124,36,
285 15,133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252, 268 84,252,255,0,0,0,15,135,244,55,255,199,68,36,32,1,0,0,0,72,141,68,36,84,248,
286 255,0,0,0,15,135,244,56,137,68,36,84,255,221,1,219,92,36,84,129,124,36,84, 269 113,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233,137,
287 252,255,0,0,0,15,135,244,56,255,199,68,36,32,1,0,0,0,72,141,68,36,84,137, 270 116,36,100,232,251,1,17,139,149,233,139,114,252,252,199,66,252,252,237,137,
288 76,36,80,248,114,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137, 271 66,252,248,252,233,244,58,248,114,139,171,233,59,171,233,15,130,244,247,232,
289 252,233,137,116,36,100,232,251,1,17,139,76,36,80,139,149,233,199,65,252,252, 272 244,66,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,239,
290 237,137,65,252,248,252,233,244,59,248,115,139,171,233,59,171,233,15,130,244, 273 15,130,244,55,15,134,244,247,129,122,253,20,239,255,252,242,15,45,106,16,
291 247,232,244,67,248,1,137,76,36,80,199,68,36,84,252,255,252,255,252,255,252, 274 137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133,
292 255,129,252,248,239,15,130,244,56,15,134,244,247,129,121,253,20,239,255,252, 275 244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,32,139,173,233,
293 242,15,45,105,16,137,108,36,84,255,221,65,16,219,92,36,84,255,248,1,129,121, 276 255,252,242,15,45,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133,201,
294 253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36, 277 15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,115,141,172,253,13,233,
295 32,139,173,233,255,252,242,15,45,73,8,255,139,68,36,84,57,197,15,130,244, 278 131,192,1,248,4,137,68,36,32,137,232,252,233,244,113,248,5,15,140,244,252,
296 251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,116, 279 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,
297 141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,114,248, 280 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,
298 5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248, 281 115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244,55,139,171,233,
299 7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252, 282 59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,
300 233,244,3,248,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244, 283 55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,
301 56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,255,137,76,36,80, 284 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,115,131,189,233,1,15,
302 129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255, 285 130,244,115,15,133,244,117,57,131,233,15,130,244,117,15,182,141,233,139,171,
303 252,242,15,45,65,8,255,221,65,8,219,92,36,84,139,68,36,84,255,133,192,15, 286 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,
304 142,244,116,131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130, 287 233,252,233,244,113,248,118,129,252,248,239,255,15,130,244,55,139,171,233,
305 244,118,15,182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1, 288 59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,
306 131,232,1,15,133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239, 289 139,42,139,133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,129,197,
307 255,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1, 290 239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,15,182,77,0,131,197,
308 137,76,36,80,129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15, 291 1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,84,252,233,244,113,
309 132,244,116,57,131,233,15,130,244,120,129,197,239,137,116,36,84,137,68,36, 292 248,120,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,
310 32,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133, 293 232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,
311 244,1,137,252,240,139,116,36,84,252,233,244,114,248,121,129,252,248,239,15, 294 233,255,15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,
312 130,244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76, 295 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,
313 36,80,129,121,253,4,239,15,133,244,56,139,41,139,133,233,57,131,233,255,15, 296 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,
314 130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244, 297 244,1,137,252,240,139,116,36,84,252,233,244,113,248,121,129,252,248,239,15,
315 249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135, 298 130,244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,
316 244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252, 299 122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119,
317 240,139,116,36,84,252,233,244,114,248,122,129,252,248,239,15,130,244,56,255, 300 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,
318 139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,36,80,129,121, 301 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,
319 253,4,239,15,133,244,56,139,41,139,133,233,57,131,233,15,130,244,120,129, 302 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,
320 197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,15,182, 303 139,116,36,84,252,233,244,113,248,122,129,252,248,239,15,130,244,55,129,122,
321 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131, 304 253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242,
322 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116, 305 15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,244,55,129,122,
323 36,84,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4, 306 253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
324 239,15,133,244,56,137,84,36,80,137,205,139,9,232,251,1,18,137,252,233,139, 307 252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,255,248,
325 84,36,80,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239, 308 124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
326 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237, 309 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,
327 237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197, 310 255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244,125,129,120,253,
328 252,233,244,64,255,248,125,129,252,248,239,15,130,244,56,129,121,253,4,239, 311 4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
329 15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15, 312 33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,130,244,
330 88,193,102,15,126,197,255,137,68,36,84,141,68,193,252,240,255,137,84,36,80, 313 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,
331 255,248,1,57,200,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252, 314 15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,
332 242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,131,232,8,252,233, 315 88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,130,244,55,129,
333 244,1,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 316 122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,
334 244,56,252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193, 317 205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,
335 102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,9,213, 318 102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,55,129,122,253,
336 255,248,129,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 319 4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
337 252,242,15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15, 320 242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,248,130,129,252,
338 126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,49,213,255,248, 321 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,
339 130,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 322 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,247,
340 15,16,1,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197, 323 213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,126,139,68,36,84,
341 255,15,205,252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129, 324 252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,239,
342 121,253,4,239,15,135,244,56,252,242,15,16,1,72,189,237,237,102,72,15,110, 325 15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,
343 205,252,242,15,88,193,102,15,126,197,255,252,247,213,255,248,131,252,242, 326 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
344 15,42,197,252,233,244,64,248,126,252,242,15,42,197,139,84,36,80,252,233,244, 327 202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252,233,244,
345 64,255,248,127,255,139,68,36,84,252,233,244,56,255,248,133,129,252,248,239, 328 125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
346 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 329 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,
347 56,252,242,15,16,1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,
348 242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,
349 211,229,137,193,252,233,244,131,255,248,134,129,252,248,239,15,130,244,56,
350 129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,
351 15,16,1,252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
352 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,
353 137,193,252,233,244,131,255,248,135,129,252,248,239,15,130,244,56,129,121,
354 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,
355 252,242,15,16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
356 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,
357 252,233,244,131,255,248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,
358 15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,
359 16,73,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
360 202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,
361 131,255,248,137,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
362 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,72,
363 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, 330 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
364 102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,244,131,248,118, 331 102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244,125,255,
365 184,237,252,233,244,56,248,120,184,237,248,56,139,108,36,96,41,202,137,113, 332 248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,
366 252,252,137,116,36,100,137,84,36,80,137,141,233,141,68,193,252,248,141,144, 333 122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,
367 233,137,133,233,139,65,252,248,59,149,233,15,135,244,251,137,252,233,252, 334 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
368 255,144,233,133,192,15,133,244,249,248,1,139,141,233,255,139,133,233,41,200, 335 126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,125,255,248,134,
369 193,232,3,131,192,1,139,105,252,248,139,84,36,80,1,202,57,113,252,252,15, 336 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,
370 133,244,248,252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,31,252, 337 12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,
371 255,165,233,248,3,139,141,233,139,84,36,80,1,202,252,233,244,70,248,5,186, 338 72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,
372 237,137,252,233,232,251,1,0,252,233,244,1,248,67,93,72,137,108,36,32,139, 339 102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248,
373 108,36,96,41,202,137,84,36,84,137,113,252,252,137,116,36,100,137,141,233, 340 239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,
374 141,68,193,252,248,137,252,233,137,133,233,255,232,251,1,19,139,141,233,139, 341 244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
375 133,233,41,200,193,232,3,131,192,1,139,113,252,252,139,84,36,84,1,202,72, 342 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,
376 139,108,36,32,85,139,105,252,248,195,248,138,255,15,182,131,233,168,235,15, 343 255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,119,
377 133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,139,233, 344 184,237,248,55,139,108,36,96,139,114,252,252,137,116,36,100,137,149,233,141,
378 252,233,244,247,255,248,139,15,182,131,233,168,235,15,133,244,251,168,235, 345 68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,
379 15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244,251,248, 346 251,137,252,233,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,255,
380 1,139,108,36,96,137,149,233,137,252,242,137,252,233,232,251,1,20,248,3,139, 347 139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,15,
381 149,233,248,4,15,182,78,252,253,248,5,255,15,182,110,252,252,15,183,70,252, 348 133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,
382 254,252,255,164,253,252,235,233,248,140,131,198,4,139,77,232,137,76,36,84, 349 36,252,235,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,
383 252,233,244,4,248,141,255,204,255,248,142,255,248,143,255,248,144,255,139, 350 72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,
384 122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139, 351 248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,
385 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,83, 352 233,252,233,244,1,248,66,93,72,137,108,36,32,139,108,36,96,137,116,36,100,
386 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252, 353 137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,
387 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 354 149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,32,85,195,248,
388 255,248,145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 355 136,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,
389 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252, 356 235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,
390 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110, 357 233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,
391 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1, 358 244,247,168,235,15,132,244,251,248,1,139,108,36,96,137,149,233,137,252,242,
392 195,248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37, 359 137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,
393 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, 360 255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,233,248,
394 68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,184,237,237,102, 361 138,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,139,255,204,255,248,
395 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 362 140,255,248,141,255,248,142,255,139,122,252,248,139,191,233,139,191,233,199,
396 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102, 363 131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,
397 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40, 364 232,16,252,255,36,252,235,255,248,82,255,217,124,36,4,137,68,36,8,102,184,
398 193,248,1,195,248,105,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68, 365 0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
399 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 366 252,252,217,108,36,4,139,68,36,8,195,255,248,143,72,184,237,237,102,72,15,
400 255,248,147,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 367 110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,
401 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15, 368 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
402 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216, 369 15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,
403 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40, 370 194,252,242,15,92,200,15,40,193,248,1,195,248,84,255,217,124,36,4,137,68,
404 193,248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184,237,237,102, 371 36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,
405 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102, 372 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,144,72,184,237,
406 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227, 373 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,
407 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15, 374 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
408 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195, 375 15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,
409 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252, 376 6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124,
410 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137, 377 36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,
411 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255, 378 217,252,252,217,108,36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72,
412 248,89,217,252,234,222,201,248,149,217,84,36,8,129,124,36,8,0,0,128,127,15, 379 15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,
413 132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,248,150,217,192,217, 380 46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,
414 252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217, 381 92,203,72,184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,84,195,
415 248,1,195,248,2,221,216,217,252,238,195,255,248,108,255,248,151,252,242,15, 382 252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,146,255,15,40,232,
416 45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248, 383 252,242,15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,
417 152,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242, 384 15,110,216,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,
418 15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248, 385 208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,102,
419 3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89, 386 72,15,110,208,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,
420 200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15, 387 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,
421 130,244,253,80,72,184,237,237,102,72,15,110,200,252,242,15,94,200,88,15,40, 388 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,
422 193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,72,184,237, 389 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
423 237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12, 390 252,252,217,108,36,4,222,201,222,252,233,195,255,248,88,217,252,234,222,201,
424 72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,72,209,224,15,132, 391 248,147,217,84,36,8,129,124,36,8,0,0,128,127,15,132,244,247,129,124,36,8,
425 244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76, 392 0,0,128,252,255,15,132,244,248,248,148,217,192,217,252,252,220,252,233,217,
426 36,16,252,242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192, 393 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
427 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 394 217,252,238,195,255,248,107,255,248,149,252,242,15,45,193,252,242,15,42,208,
428 217,221,92,36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15, 395 102,15,46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,1,15,142,
429 110,208,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237, 396 244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,
430 237,102,72,15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102, 397 244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,
431 15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224, 398 232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,
432 15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15, 399 252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,72,184,237,
433 80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15, 400 237,102,72,15,110,200,252,242,15,94,200,88,15,40,193,252,247,216,131,252,
434 132,244,3,15,87,192,195,248,153,255,131,252,250,1,15,130,244,83,15,132,244, 401 248,1,15,132,244,5,252,233,244,1,248,7,72,184,237,237,102,72,15,110,192,195,
435 85,131,252,250,3,15,130,244,105,15,135,244,248,252,242,15,81,192,195,248, 402 248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15,
436 2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132, 403 132,244,248,255,102,72,15,126,192,72,209,224,15,132,244,250,72,193,192,12,
437 244,247,232,244,89,80,252,233,244,253,248,1,232,244,149,255,80,252,233,244, 404 72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,15,17,
438 253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201, 405 68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,252,
439 217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,252,233,244, 406 233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,8,252,
440 253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252,236,217,201, 407 242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,
441 217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,253,248,2,131, 408 15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,
442 252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233,244,253,248, 409 102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,
443 1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139, 410 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,
444 84,36,12,221,68,36,4,131,252,250,1,15,130,244,83,15,132,244,85,131,252,250, 411 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,
445 3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130, 412 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,
446 244,89,15,132,244,149,131,252,250,7,15,132,244,247,15,135,244,248,217,252, 413 151,255,131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,
447 237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131, 414 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,8,221,
448 252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241, 415 68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,88,80,252,
449 195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244, 416 233,244,253,248,1,232,244,147,255,80,252,233,244,253,248,2,131,252,250,7,
450 255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,154,255, 417 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,
451 65,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248, 418 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9,
452 1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244, 419 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,
453 248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248, 420 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244,
454 5,15,130,244,148,15,132,244,108,65,131,252,248,7,15,132,244,247,15,135,244, 421 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,
455 248,72,184,237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237, 422 248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4,
456 102,72,15,110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252, 423 131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,104,15,
457 242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132, 424 135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,88,15,132,244,
458 244,247,217,252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217, 425 147,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
459 201,217,252,253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244, 426 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,
460 247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248, 427 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
461 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, 428 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,
462 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, 429 195,248,1,217,252,242,221,216,195,255,248,9,204,248,152,255,65,131,252,248,
463 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 430 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
464 252,248,5,15,130,244,148,15,132,244,108,131,252,248,7,15,132,244,247,15,135, 431 193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,
465 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 432 193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,146,
466 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 433 15,132,244,107,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237,
467 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 434 237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,
468 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 435 200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68,
469 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 436 36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,252,
470 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 437 243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,253,
471 155,137,200,86,72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91, 438 221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,255,
472 94,195,255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135, 439 252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,
473 244,43,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221, 440 20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,
474 4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, 441 193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,
475 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, 442 248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,
476 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 443 15,132,244,107,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,
477 235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253, 444 224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,
478 202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221, 445 244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,
479 4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132, 446 248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,
480 244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15, 447 248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,
481 183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244, 448 132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,
482 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 449 15,133,244,248,217,201,248,2,221,216,195,255,248,153,137,200,86,72,137,214,
483 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 450 83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,255,249,255,129,124,
484 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, 451 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,
485 72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202, 452 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,
486 59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242, 453 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,
487 15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131, 454 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,
488 198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131, 455 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,
489 244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15, 456 4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,
490 183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131, 457 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,
491 198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,139,4,194,137,108,202, 458 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
492 4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 459 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
493 235,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6, 460 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,
494 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124, 461 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,
495 253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237,237,102,72, 462 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,
496 15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, 463 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,72,252,247,208,
497 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, 464 131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,
498 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, 465 198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,
499 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 466 46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131,198,4,57,68,202,4,
500 2,129,124,253,194,4,239,15,133,244,52,139,12,194,137,213,232,251,1,18,255, 467 255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,
501 252,242,15,42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15, 468 244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,
502 182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48,255,252, 469 180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
503 242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129, 470 255,36,252,235,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,
504 124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242,15,88, 471 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,
505 4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135, 472 237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,
506 244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252,234,252, 473 232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,
507 242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252, 474 135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,15,87,
508 242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252, 475 193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,
509 242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252, 476 194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,
510 234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4, 477 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,
511 252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16, 478 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,
512 4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15, 479 4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,
513 16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242, 480 137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,
514 15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252, 481 192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,
515 242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255, 482 252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,
516 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194, 483 239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,
517 255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4, 484 4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,
518 199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4, 485 194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,
519 252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234, 486 221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,
520 221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244,108,255, 487 221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,
521 15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192, 488 255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,
522 65,41,232,248,35,137,205,137,116,36,100,232,251,1,21,139,149,233,133,192, 489 194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,
523 15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44, 490 4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,
524 252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193, 491 4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,
525 232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,68,202,4,237,137, 492 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,
526 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 493 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,
527 255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221, 494 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,
528 28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202, 495 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,
529 255,72,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193, 496 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,
530 232,16,252,255,36,252,235,255,141,76,202,12,141,68,194,4,189,237,137,105, 497 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,
531 252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182, 498 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,154,
532 232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,139,172,253, 499 232,244,146,255,252,233,244,154,255,232,244,107,255,15,182,252,236,15,182,
533 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182, 500 192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,
534 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248, 501 137,116,36,100,232,251,1,21,139,149,233,133,192,15,133,244,42,15,182,110,
535 139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137, 502 252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,
536 77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139, 503 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
537 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129, 504 255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,
538 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135, 505 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,
539 213,141,139,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247, 506 15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,
540 208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199, 507 16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,
541 64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,
542 232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,
543 132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,
544 1,22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,
545 255,139,172,253,141,233,139,141,233,255,72,252,247,208,139,106,252,248,139,
546 172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,
547 4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,
548 189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,23,
549 139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
550 36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,
551 139,20,135,137,252,233,137,116,36,100,232,251,1,24,139,149,233,15,182,78,
552 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,
553 193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248,1,65,137,192,
554 37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,248,2,137,
555 194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,232,251,
556 1,25,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
557 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,
558 252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252,233,244,
559 1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,
560 137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,27,139,
561 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,
562 182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,
563 1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,
564 106,252,248,139,173,233,139,4,135,252,233,244,157,255,72,252,247,208,139,
565 106,252,248,139,173,233,139,4,135,252,233,244,158,255,15,182,252,236,15,182,
566 192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194,
567 4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,
568 42,200,102,15,46,193,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,
569 3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,
570 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 508 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
571 252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235, 509 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,
572 15,132,244,38,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,194,4, 510 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,
573 239,15,133,244,38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192, 511 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,
574 72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252, 512 233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,
575 234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233, 513 131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,
576 239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244, 514 233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,
577 251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139, 515 132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
578 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,15, 516 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,
579 182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244, 517 248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,
580 1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3, 518 255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,
581 252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15, 519 248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,
582 133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129, 520 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
583 120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202, 521 232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,
584 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 522 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,22,137,252,234,252,
585 2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37, 523 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,
586 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139, 524 233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,
587 44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133, 525 252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,
588 233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, 526 232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,
589 1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, 527 36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,
590 4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 528 251,1,23,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
591 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132, 529 16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,
592 244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133, 530 66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,1,24,139,149,233,
593 244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,139,139,233,137,171, 531 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,
594 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182, 532 131,198,4,193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248,
595 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139, 533 1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,
596 44,252,234,248,158,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141, 534 248,2,137,194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,
597 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121, 535 232,251,1,25,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,
598 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248, 536 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,
599 3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182, 537 1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252,
600 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233, 538 233,244,1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,
601 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,39, 539 139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,
602 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, 540 27,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
603 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137, 541 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,
604 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68, 542 232,251,1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,
605 36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233,139,108, 543 208,139,106,252,248,139,173,233,139,4,135,252,233,244,155,255,72,252,247,
606 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, 544 208,139,106,252,248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,
607 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, 545 236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,
608 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133, 546 124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,
609 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 547 252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233,15,131,244,36,
610 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 548 193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,
611 232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244, 549 4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
612 1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,78,252,253,252, 550 252,255,36,252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
613 233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182, 551 233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,
614 78,252,253,252,233,244,2,255,137,124,36,80,255,248,1,141,12,202,139,105,252, 552 194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182,252,236,15,182,
615 248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252,242,15, 553 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,
616 45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,244,251, 554 44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,
617 41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137, 555 185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,
618 111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,204, 556 132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,
619 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,137, 557 194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
620 145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,29,139,149, 558 248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,
621 233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,131,233,137, 559 133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,
622 171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,141,76,202,8,139, 560 244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
623 105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,233,255,141, 561 239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,
624 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,31,248, 562 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,
625 53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137, 563 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
626 68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,4, 564 235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,
627 131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209, 565 244,35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
628 128,189,233,1,15,135,244,251,248,4,139,68,36,84,252,255,165,233,248,5,255, 566 39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,
629 252,247,198,237,15,133,244,4,15,182,70,252,253,72,252,247,208,141,20,194, 567 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
630 139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,244,1, 568 249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,
631 131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,141, 569 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
632 76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65, 570 36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,
633 252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65, 571 235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,
634 252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15, 572 239,15,133,244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,
635 182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, 573 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,
636 36,80,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, 574 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
637 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, 575 244,37,139,44,252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,
638 252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130, 576 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
639 244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124, 577 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
640 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 578 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,
641 248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,255,137,197,193, 579 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,
642 252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244, 580 189,233,0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,
643 253,248,6,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193, 581 244,37,139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,
644 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116, 582 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,
645 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149, 583 248,6,137,68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,
646 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252, 584 76,141,68,36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233,
647 137,68,36,84,252,247,198,237,15,133,244,253,255,248,17,137,215,131,232,1, 585 139,108,36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,
648 15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252, 586 171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,
649 131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248, 587 252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,
650 5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106, 588 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,
651 252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252, 589 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,
652 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204, 590 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,
653 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252, 591 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,
654 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 592 253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,
655 7,15,139,244,18,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245, 593 15,182,78,252,253,252,233,244,2,255,137,124,36,80,255,248,1,141,12,202,139,
656 209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,255,141,12, 594 105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252,
657 202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54, 595 242,15,45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,
658 255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252, 596 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,
659 242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136, 597 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,
660 244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255, 598 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,
661 221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247, 599 76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,
662 255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255, 600 1,29,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
663 15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252, 601 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,129,
664 254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46, 602 124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,
665 193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247, 603 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,
666 255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134, 604 141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,
667 233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139, 605 248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,
668 128,233,139,108,36,96,137,147,233,137,171,233,252,255,224,255,141,180,253, 606 137,68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,
669 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 607 4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,
670 255,254,0 608 36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,
609 15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,
610 244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139,191,
611 233,139,191,233,252,233,244,4,248,7,15,139,244,1,131,230,252,248,41,252,242,
612 137,215,139,114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,
613 252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,
614 139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,
615 237,15,133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,
616 15,182,205,131,198,4,252,255,36,252,235,255,15,182,252,236,139,66,252,248,
617 141,12,202,139,128,233,15,182,128,233,137,124,36,80,141,188,253,194,233,43,
618 122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,
619 131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,
620 131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,
621 131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,
622 182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,
623 0,137,208,41,252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,1,137,
624 108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,139,71,252,
625 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
626 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,
627 36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,
628 252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,
629 198,237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,
630 139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,
631 1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,
632 244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,
633 5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
634 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
635 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,
636 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15,139,244,
637 14,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252,237,129,
638 229,239,102,131,172,253,43,233,1,15,132,244,139,255,141,12,202,255,129,121,
639 253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,105,20,255,
640 129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,15,16,73,8,255,
641 252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,
642 244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,
643 220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,
644 244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248,141,180,
645 253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,
646 244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,
647 12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,
648 137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,
649 137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,
650 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,
651 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,190,233,139,108,
652 36,96,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,244,
653 249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,252,
654 237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,
655 194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,96,141,12,
656 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,
657 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
658 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
659 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
660 16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,
661 244,3,252,233,244,2,255,139,106,252,248,72,139,189,233,139,108,36,96,141,
662 68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,252,
663 233,255,72,137,252,250,137,252,233,255,15,135,244,21,199,131,233,237,255,
664 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,
665 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
671}; 666};
672 667
673enum { 668enum {
674 GLOB_gate_lf, 669 GLOB_vm_returnp,
675 GLOB_gate_lf_growstack, 670 GLOB_cont_dispatch,
676 GLOB_gate_lv,
677 GLOB_gate_lv_growstack,
678 GLOB_gate_cwrap,
679 GLOB_gate_c_growstack,
680 GLOB_vm_returnc, 671 GLOB_vm_returnc,
681 GLOB_BC_RET_Z, 672 GLOB_BC_RET_Z,
682 GLOB_vm_return, 673 GLOB_vm_return,
683 GLOB_gate_c,
684 GLOB_vm_returnp,
685 GLOB_vm_leave_cp, 674 GLOB_vm_leave_cp,
686 GLOB_vm_leave_unw, 675 GLOB_vm_leave_unw,
687 GLOB_vm_unwind_c, 676 GLOB_vm_unwind_c,
688 GLOB_vm_unwind_c_eh, 677 GLOB_vm_unwind_c_eh,
689 GLOB_vm_unwind_ff, 678 GLOB_vm_unwind_ff,
690 GLOB_vm_unwind_ff_eh, 679 GLOB_vm_unwind_ff_eh,
691 GLOB_cont_dispatch, 680 GLOB_vm_growstack_c,
681 GLOB_vm_growstack_v,
682 GLOB_vm_growstack_f,
692 GLOB_vm_resume, 683 GLOB_vm_resume,
693 GLOB_vm_pcall, 684 GLOB_vm_pcall,
694 GLOB_vm_call, 685 GLOB_vm_call,
686 GLOB_vm_call_dispatch,
695 GLOB_vmeta_call, 687 GLOB_vmeta_call,
688 GLOB_vm_call_dispatch_f,
696 GLOB_vm_cpcall, 689 GLOB_vm_cpcall,
697 GLOB_cont_cat, 690 GLOB_cont_cat,
698 GLOB_cont_ra, 691 GLOB_cont_ra,
@@ -714,6 +707,7 @@ enum {
714 GLOB_vmeta_unm, 707 GLOB_vmeta_unm,
715 GLOB_vmeta_arith_vv, 708 GLOB_vmeta_arith_vv,
716 GLOB_vmeta_len, 709 GLOB_vmeta_len,
710 GLOB_vmeta_call_ra,
717 GLOB_BC_CALLT_Z, 711 GLOB_BC_CALLT_Z,
718 GLOB_vmeta_for, 712 GLOB_vmeta_for,
719 GLOB_ff_assert, 713 GLOB_ff_assert,
@@ -787,12 +781,11 @@ enum {
787 GLOB_ff_table_getn, 781 GLOB_ff_table_getn,
788 GLOB_ff_bit_tobit, 782 GLOB_ff_bit_tobit,
789 GLOB_ff_bit_band, 783 GLOB_ff_bit_band,
790 GLOB_fff_resbit_op, 784 GLOB_fff_resbit,
791 GLOB_fff_fallback_bit_op, 785 GLOB_fff_fallback_bit_op,
792 GLOB_ff_bit_bor, 786 GLOB_ff_bit_bor,
793 GLOB_ff_bit_bxor, 787 GLOB_ff_bit_bxor,
794 GLOB_ff_bit_bswap, 788 GLOB_ff_bit_bswap,
795 GLOB_fff_resbit,
796 GLOB_ff_bit_bnot, 789 GLOB_ff_bit_bnot,
797 GLOB_ff_bit_lshift, 790 GLOB_ff_bit_lshift,
798 GLOB_ff_bit_rshift, 791 GLOB_ff_bit_rshift,
@@ -823,28 +816,26 @@ enum {
823 GLOB__MAX 816 GLOB__MAX
824}; 817};
825static const char *const globnames[] = { 818static const char *const globnames[] = {
826 "gate_lf", 819 "vm_returnp",
827 "gate_lf_growstack", 820 "cont_dispatch",
828 "gate_lv",
829 "gate_lv_growstack",
830 "gate_cwrap",
831 "gate_c_growstack",
832 "vm_returnc", 821 "vm_returnc",
833 "BC_RET_Z", 822 "BC_RET_Z",
834 "vm_return", 823 "vm_return",
835 "gate_c",
836 "vm_returnp",
837 "vm_leave_cp", 824 "vm_leave_cp",
838 "vm_leave_unw", 825 "vm_leave_unw",
839 "vm_unwind_c@8", 826 "vm_unwind_c@8",
840 "vm_unwind_c_eh", 827 "vm_unwind_c_eh",
841 "vm_unwind_ff@4", 828 "vm_unwind_ff@4",
842 "vm_unwind_ff_eh", 829 "vm_unwind_ff_eh",
843 "cont_dispatch", 830 "vm_growstack_c",
831 "vm_growstack_v",
832 "vm_growstack_f",
844 "vm_resume", 833 "vm_resume",
845 "vm_pcall", 834 "vm_pcall",
846 "vm_call", 835 "vm_call",
836 "vm_call_dispatch",
847 "vmeta_call", 837 "vmeta_call",
838 "vm_call_dispatch_f",
848 "vm_cpcall", 839 "vm_cpcall",
849 "cont_cat", 840 "cont_cat",
850 "cont_ra", 841 "cont_ra",
@@ -866,6 +857,7 @@ static const char *const globnames[] = {
866 "vmeta_unm", 857 "vmeta_unm",
867 "vmeta_arith_vv", 858 "vmeta_arith_vv",
868 "vmeta_len", 859 "vmeta_len",
860 "vmeta_call_ra",
869 "BC_CALLT_Z", 861 "BC_CALLT_Z",
870 "vmeta_for", 862 "vmeta_for",
871 "ff_assert", 863 "ff_assert",
@@ -939,12 +931,11 @@ static const char *const globnames[] = {
939 "ff_table_getn", 931 "ff_table_getn",
940 "ff_bit_tobit", 932 "ff_bit_tobit",
941 "ff_bit_band", 933 "ff_bit_band",
942 "fff_resbit_op", 934 "fff_resbit",
943 "fff_fallback_bit_op", 935 "fff_fallback_bit_op",
944 "ff_bit_bor", 936 "ff_bit_bor",
945 "ff_bit_bxor", 937 "ff_bit_bxor",
946 "ff_bit_bswap", 938 "ff_bit_bswap",
947 "fff_resbit",
948 "ff_bit_bnot", 939 "ff_bit_bnot",
949 "ff_bit_lshift", 940 "ff_bit_lshift",
950 "ff_bit_rshift", 941 "ff_bit_rshift",
@@ -1030,392 +1021,367 @@ static const char *const extnames[] = {
1030static void build_subroutines(BuildCtx *ctx, int cmov, int sse) 1021static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1031{ 1022{
1032 dasm_put(Dst, 0); 1023 dasm_put(Dst, 0);
1033 dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); 1024 dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
1034#if LJ_HASJIT 1025 dasm_put(Dst, 111, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1035#endif 1026 dasm_put(Dst, 200, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
1036 dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); 1027 dasm_put(Dst, 293, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
1037 dasm_put(Dst, 157, LJ_TNIL, PC2PROTO(k)); 1028 dasm_put(Dst, 359, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1038#if LJ_HASJIT 1029 dasm_put(Dst, 519, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1039#endif 1030 dasm_put(Dst, 625, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
1040 dasm_put(Dst, 192, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1031 dasm_put(Dst, 783, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1041 dasm_put(Dst, 290, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1042 dasm_put(Dst, 373, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1043 dasm_put(Dst, 478, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1044 dasm_put(Dst, 565, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1045 dasm_put(Dst, 663, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
1046 dasm_put(Dst, 754, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1047 dasm_put(Dst, 886, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1048 dasm_put(Dst, 1004, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base));
1049 dasm_put(Dst, 1182, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1050 if (sse) { 1032 if (sse) {
1051 dasm_put(Dst, 1228); 1033 dasm_put(Dst, 893);
1052 } else { 1034 } else {
1053 } 1035 }
1054 dasm_put(Dst, 1241, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1036 dasm_put(Dst, 906, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1055 dasm_put(Dst, 1399, LJ_TTAB); 1037 dasm_put(Dst, 1058, DISPATCH_GL(tmptv), LJ_TTAB);
1056 if (sse) { 1038 if (sse) {
1057 dasm_put(Dst, 1228); 1039 dasm_put(Dst, 893);
1058 } else { 1040 } else {
1059 } 1041 }
1060 dasm_put(Dst, 1419, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1042 dasm_put(Dst, 1081, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1061 dasm_put(Dst, 1615, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1043 dasm_put(Dst, 1264, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1062 dasm_put(Dst, 1724, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1044 dasm_put(Dst, 1364, Dt1(->base), Dt1(->base), FRAME_CONT);
1063 dasm_put(Dst, 1849, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*8, 1+1); 1045 dasm_put(Dst, 1489, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1064 dasm_put(Dst, 2005, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1046 dasm_put(Dst, 1667, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1065 if (cmov) { 1047 if (cmov) {
1066 dasm_put(Dst, 2101); 1048 dasm_put(Dst, 1769);
1067 } else { 1049 } else {
1068 dasm_put(Dst, 2105); 1050 dasm_put(Dst, 1773);
1069 } 1051 }
1070 dasm_put(Dst, 2114, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1052 dasm_put(Dst, 1782, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1071 dasm_put(Dst, 2202, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1053 dasm_put(Dst, 1870, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1072 dasm_put(Dst, 2257, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1054 dasm_put(Dst, 1925, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1073 dasm_put(Dst, 2329, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1055 dasm_put(Dst, 1993, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1074 dasm_put(Dst, 2394, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1056 dasm_put(Dst, 2062, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1075 if (sse) { 1057 if (sse) {
1076 dasm_put(Dst, 2475); 1058 dasm_put(Dst, 2139);
1077 } else { 1059 } else {
1078 dasm_put(Dst, 2485); 1060 dasm_put(Dst, 2149);
1079 } 1061 }
1080 dasm_put(Dst, 2492, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1062 dasm_put(Dst, 2156, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1081 dasm_put(Dst, 2554, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1063 dasm_put(Dst, 2222, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1082 dasm_put(Dst, 2641, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1064 dasm_put(Dst, 2289, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1083 dasm_put(Dst, 2743, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1065 dasm_put(Dst, 2393, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1084 if (sse) { 1066 if (sse) {
1085 dasm_put(Dst, 2798, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1067 dasm_put(Dst, 2456, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1086 } else { 1068 } else {
1087 } 1069 }
1088 dasm_put(Dst, 2831, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1070 dasm_put(Dst, 2489, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1089 dasm_put(Dst, 2917, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1071 dasm_put(Dst, 2570, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1090 if (sse) { 1072 if (sse) {
1091 dasm_put(Dst, 2947); 1073 dasm_put(Dst, 2608);
1092 } else { 1074 } else {
1093 dasm_put(Dst, 2957); 1075 dasm_put(Dst, 2618);
1094 } 1076 }
1095 dasm_put(Dst, 2964, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1077 dasm_put(Dst, 2625, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1096 dasm_put(Dst, 3037, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1078 dasm_put(Dst, 2689, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1097 dasm_put(Dst, 3136, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1079 dasm_put(Dst, 2779, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1098 dasm_put(Dst, 3202, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1080 dasm_put(Dst, 2873, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1099 dasm_put(Dst, 3306, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1081 dasm_put(Dst, 2991, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1100 dasm_put(Dst, 3428, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1082 dasm_put(Dst, 3089, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1101 dasm_put(Dst, 3511, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1083 dasm_put(Dst, 3156, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1102 dasm_put(Dst, 3619, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1084 dasm_put(Dst, 3250, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1103 dasm_put(Dst, 3716, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1085 dasm_put(Dst, 3363, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1104 if (sse) { 1086 if (sse) {
1105 dasm_put(Dst, 3805, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1087 dasm_put(Dst, 3390, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1106 } else { 1088 } else {
1107 dasm_put(Dst, 3861, 1+1, LJ_TISNUM); 1089 dasm_put(Dst, 3454, 1+1, LJ_TISNUM);
1108 } 1090 }
1109 dasm_put(Dst, 3893, 1+1, FRAME_TYPE, LJ_TNIL); 1091 dasm_put(Dst, 3490, 1+1, FRAME_TYPE, LJ_TNIL);
1110 if (sse) { 1092 if (sse) {
1111 dasm_put(Dst, 3977, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1093 dasm_put(Dst, 3584, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1112 dasm_put(Dst, 4039, 1+1, LJ_TISNUM); 1094 dasm_put(Dst, 3646, 1+1, LJ_TISNUM);
1113 } else { 1095 } else {
1114 dasm_put(Dst, 4069, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1096 dasm_put(Dst, 3676, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1115 dasm_put(Dst, 4128, 1+1, LJ_TISNUM); 1097 dasm_put(Dst, 3735, 1+1, LJ_TISNUM);
1116 } 1098 }
1117 dasm_put(Dst, 4155, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1099 dasm_put(Dst, 3762, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1118 dasm_put(Dst, 4224, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1100 dasm_put(Dst, 3831, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1119 dasm_put(Dst, 4281, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1101 dasm_put(Dst, 3888, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1120 dasm_put(Dst, 4344, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1102 dasm_put(Dst, 3951, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1121 dasm_put(Dst, 4434); 1103 dasm_put(Dst, 4041);
1122 if (sse) { 1104 if (sse) {
1123 dasm_put(Dst, 4446, 1+1, LJ_TISNUM); 1105 dasm_put(Dst, 4053, 1+1, LJ_TISNUM);
1124 } else { 1106 } else {
1125 } 1107 }
1126 dasm_put(Dst, 4471); 1108 dasm_put(Dst, 4078);
1127 if (sse) { 1109 if (sse) {
1128 dasm_put(Dst, 4493, 1+1, LJ_TISNUM); 1110 dasm_put(Dst, 4092, 1+1, LJ_TISNUM);
1129 } else { 1111 } else {
1130 } 1112 }
1131 dasm_put(Dst, 4518); 1113 dasm_put(Dst, 4117);
1132 if (sse) { 1114 if (sse) {
1133 dasm_put(Dst, 4540, 1+1, LJ_TISNUM); 1115 dasm_put(Dst, 4131, 1+1, LJ_TISNUM);
1134 } else { 1116 } else {
1135 } 1117 }
1136 dasm_put(Dst, 4565); 1118 dasm_put(Dst, 4156);
1137 if (sse) { 1119 if (sse) {
1138 dasm_put(Dst, 4589, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1120 dasm_put(Dst, 4172, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1139 } else { 1121 } else {
1140 dasm_put(Dst, 4624, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1122 dasm_put(Dst, 4211, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1141 } 1123 }
1142 dasm_put(Dst, 4653, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1124 dasm_put(Dst, 4244, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1143 dasm_put(Dst, 4718, 1+1, LJ_TISNUM); 1125 dasm_put(Dst, 4309, 1+1, LJ_TISNUM);
1144 if (sse) { 1126 if (sse) {
1145 dasm_put(Dst, 4813); 1127 dasm_put(Dst, 4408);
1146 } else { 1128 } else {
1147 dasm_put(Dst, 4819); 1129 dasm_put(Dst, 4414);
1148 } 1130 }
1149 dasm_put(Dst, 4828); 1131 dasm_put(Dst, 4423);
1150 if (sse) { 1132 if (sse) {
1151 dasm_put(Dst, 4853); 1133 dasm_put(Dst, 4448);
1152 } else { 1134 } else {
1153 dasm_put(Dst, 4859); 1135 dasm_put(Dst, 4454);
1154 } 1136 }
1155 dasm_put(Dst, 4862, 1+2); 1137 dasm_put(Dst, 4457, 1+2);
1156 if (sse) { 1138 if (sse) {
1157 dasm_put(Dst, 4871); 1139 dasm_put(Dst, 4466);
1158 } else { 1140 } else {
1159 dasm_put(Dst, 4879); 1141 dasm_put(Dst, 4474);
1160 } 1142 }
1161 dasm_put(Dst, 475); 1143 dasm_put(Dst, 4482);
1162 if (sse) { 1144 if (sse) {
1163 dasm_put(Dst, 4887, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1145 dasm_put(Dst, 4485, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1164 } else { 1146 } else {
1165 dasm_put(Dst, 4914); 1147 dasm_put(Dst, 4512);
1166 } 1148 }
1167 dasm_put(Dst, 4933); 1149 dasm_put(Dst, 4531);
1168 if (sse) { 1150 if (sse) {
1169 dasm_put(Dst, 4949, 1+1, LJ_TISNUM); 1151 dasm_put(Dst, 4547, 1+1, LJ_TISNUM);
1170 } else { 1152 } else {
1171 dasm_put(Dst, 4974, 1+1, LJ_TISNUM); 1153 dasm_put(Dst, 4572, 1+1, LJ_TISNUM);
1172 } 1154 }
1173 dasm_put(Dst, 4996); 1155 dasm_put(Dst, 4594);
1174 if (sse) { 1156 if (sse) {
1175 dasm_put(Dst, 5014); 1157 dasm_put(Dst, 4616);
1176 } else { 1158 } else {
1177 dasm_put(Dst, 5040); 1159 dasm_put(Dst, 4642);
1178 } 1160 }
1179 dasm_put(Dst, 5057, 1+2); 1161 dasm_put(Dst, 4659, 1+2);
1180 if (sse) { 1162 if (sse) {
1181 dasm_put(Dst, 5097); 1163 dasm_put(Dst, 4699);
1182 } else { 1164 } else {
1183 dasm_put(Dst, 5105); 1165 dasm_put(Dst, 4707);
1184 } 1166 }
1185 dasm_put(Dst, 5115, 2+1, LJ_TISNUM, LJ_TISNUM); 1167 dasm_put(Dst, 4717, 2+1, LJ_TISNUM, LJ_TISNUM);
1186 if (sse) { 1168 if (sse) {
1187 dasm_put(Dst, 5167, 1+1, LJ_TISNUM, LJ_TISNUM); 1169 dasm_put(Dst, 4769, 1+1, LJ_TISNUM, LJ_TISNUM);
1188 } else { 1170 } else {
1189 dasm_put(Dst, 5214, 2+1, LJ_TISNUM, LJ_TISNUM); 1171 dasm_put(Dst, 4816, 2+1, LJ_TISNUM, LJ_TISNUM);
1190 } 1172 }
1191 if (sse) { 1173 if (sse) {
1192 dasm_put(Dst, 5255, 1+1, LJ_TISNUM, LJ_TISNUM); 1174 dasm_put(Dst, 4857, 1+1, LJ_TISNUM, LJ_TISNUM);
1193 } else { 1175 } else {
1194 } 1176 }
1195 if (sse) { 1177 if (sse) {
1196 dasm_put(Dst, 5326, 1+1, LJ_TISNUM, LJ_TISNUM); 1178 dasm_put(Dst, 4928, 1+1, LJ_TISNUM, LJ_TISNUM);
1197 } else { 1179 } else {
1198 } 1180 }
1199 if (!sse) { 1181 if (!sse) {
1200 dasm_put(Dst, 5397); 1182 dasm_put(Dst, 4999);
1201 } 1183 }
1202 dasm_put(Dst, 5406, 1+1, LJ_TSTR); 1184 dasm_put(Dst, 5008, 1+1, LJ_TSTR);
1203 if (sse) { 1185 if (sse) {
1204 dasm_put(Dst, 5428, Dt5(->len)); 1186 dasm_put(Dst, 5030, Dt5(->len));
1205 } else { 1187 } else {
1206 dasm_put(Dst, 5439, Dt5(->len)); 1188 dasm_put(Dst, 5041, Dt5(->len));
1207 } 1189 }
1208 dasm_put(Dst, 5447, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1190 dasm_put(Dst, 5049, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1209 if (sse) { 1191 if (sse) {
1210 dasm_put(Dst, 5481); 1192 dasm_put(Dst, 5087);
1211 } else { 1193 } else {
1212 dasm_put(Dst, 5491); 1194 dasm_put(Dst, 5097);
1213 } 1195 }
1214 dasm_put(Dst, 5504, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1196 dasm_put(Dst, 5110, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1215 if (sse) { 1197 if (sse) {
1216 dasm_put(Dst, 5539); 1198 dasm_put(Dst, 5145);
1217 } else { 1199 } else {
1218 dasm_put(Dst, 5559); 1200 dasm_put(Dst, 5165);
1219 } 1201 }
1220 dasm_put(Dst, 5579, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1202 dasm_put(Dst, 5185, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1221 dasm_put(Dst, 2470); 1203 dasm_put(Dst, 2134);
1222 if (sse) { 1204 if (sse) {
1223 dasm_put(Dst, 5695); 1205 dasm_put(Dst, 5293);
1224 } else { 1206 } else {
1225 dasm_put(Dst, 5706); 1207 dasm_put(Dst, 5304);
1226 } 1208 }
1227 dasm_put(Dst, 5714, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1209 dasm_put(Dst, 5312, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1228 if (sse) { 1210 if (sse) {
1229 dasm_put(Dst, 5744); 1211 dasm_put(Dst, 5342);
1230 } else { 1212 } else {
1231 } 1213 }
1232 dasm_put(Dst, 5751, sizeof(GCstr)-1); 1214 dasm_put(Dst, 5349, sizeof(GCstr)-1);
1233 dasm_put(Dst, 5826, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1215 dasm_put(Dst, 5424, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1234 dasm_put(Dst, 5885, LJ_TSTR, LJ_TISNUM); 1216 dasm_put(Dst, 5483, LJ_TSTR, LJ_TISNUM);
1235 if (sse) { 1217 if (sse) {
1236 dasm_put(Dst, 5910); 1218 dasm_put(Dst, 5504);
1237 } else { 1219 } else {
1238 dasm_put(Dst, 5917); 1220 dasm_put(Dst, 5511);
1239 } 1221 }
1240 dasm_put(Dst, 5929, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1222 dasm_put(Dst, 5523, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1241 dasm_put(Dst, 5994, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1223 dasm_put(Dst, 5588, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1242 dasm_put(Dst, 6061, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1224 dasm_put(Dst, 5651, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1243 dasm_put(Dst, 6136, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1225 dasm_put(Dst, 5722, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1244 dasm_put(Dst, 6221, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1226 dasm_put(Dst, 5807, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1245 dasm_put(Dst, 6295, 1+1, LJ_TTAB); 1227 dasm_put(Dst, 5877, 1+1, LJ_TTAB);
1246 if (sse) { 1228 if (sse) {
1247 dasm_put(Dst, 6371); 1229 dasm_put(Dst, 5945);
1248 } else { 1230 } else {
1249 } 1231 }
1250 if (sse) { 1232 if (sse) {
1251 dasm_put(Dst, 6381, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1233 dasm_put(Dst, 5955, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1252 } else { 1234 } else {
1253 } 1235 }
1254 if (sse) { 1236 if (sse) {
1255 dasm_put(Dst, 6433, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1237 dasm_put(Dst, 6007, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1256 } else { 1238 } else {
1257 } 1239 }
1258 dasm_put(Dst, 6476); 1240 dasm_put(Dst, 6050, LJ_TISNUM);
1259 if (sse) {
1260 dasm_put(Dst, 6486);
1261 }
1262 dasm_put(Dst, 6491, LJ_TISNUM);
1263 if (sse) { 1241 if (sse) {
1264 dasm_put(Dst, 6509); 1242 dasm_put(Dst, 6077);
1265 } else { 1243 } else {
1266 } 1244 }
1267 dasm_put(Dst, 6526); 1245 dasm_put(Dst, 6094);
1268 if (sse) { 1246 if (sse) {
1269 dasm_put(Dst, 6534, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1247 dasm_put(Dst, 6102, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1270 } else { 1248 } else {
1271 } 1249 }
1272 dasm_put(Dst, 6476); 1250 dasm_put(Dst, 6050, LJ_TISNUM);
1273 if (sse) {
1274 dasm_put(Dst, 6486);
1275 }
1276 dasm_put(Dst, 6491, LJ_TISNUM);
1277 if (sse) { 1251 if (sse) {
1278 dasm_put(Dst, 6577); 1252 dasm_put(Dst, 6145);
1279 } else { 1253 } else {
1280 } 1254 }
1281 dasm_put(Dst, 6526); 1255 dasm_put(Dst, 6094);
1282 if (sse) { 1256 if (sse) {
1283 dasm_put(Dst, 6594, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1257 dasm_put(Dst, 6162, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1284 } else { 1258 } else {
1285 } 1259 }
1286 dasm_put(Dst, 6476); 1260 dasm_put(Dst, 6050, LJ_TISNUM);
1287 if (sse) {
1288 dasm_put(Dst, 6486);
1289 }
1290 dasm_put(Dst, 6491, LJ_TISNUM);
1291 if (sse) { 1261 if (sse) {
1292 dasm_put(Dst, 6637); 1262 dasm_put(Dst, 6205);
1293 } else { 1263 } else {
1294 } 1264 }
1295 dasm_put(Dst, 6526); 1265 dasm_put(Dst, 6094);
1296 if (sse) { 1266 if (sse) {
1297 dasm_put(Dst, 6654, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1267 dasm_put(Dst, 6222, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1298 } else { 1268 } else {
1299 } 1269 }
1300 dasm_put(Dst, 6697); 1270 dasm_put(Dst, 6265);
1301 if (sse) { 1271 if (sse) {
1302 dasm_put(Dst, 6704, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1272 dasm_put(Dst, 6272, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1303 } else { 1273 } else {
1304 } 1274 }
1305 dasm_put(Dst, 6747); 1275 dasm_put(Dst, 6315);
1306 if (sse) { 1276 if (sse) {
1307 dasm_put(Dst, 6751); 1277 dasm_put(Dst, 6319);
1308 } else { 1278 } else {
1309 } 1279 }
1310 dasm_put(Dst, 6778); 1280 dasm_put(Dst, 6331);
1311 if (sse) {
1312 dasm_put(Dst, 6366);
1313 }
1314 dasm_put(Dst, 6781);
1315 if (sse) { 1281 if (sse) {
1316 dasm_put(Dst, 6790, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1282 dasm_put(Dst, 6342, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1317 } else { 1283 } else {
1318 } 1284 }
1319 dasm_put(Dst, 6859); 1285 dasm_put(Dst, 6411);
1320 if (sse) { 1286 if (sse) {
1321 dasm_put(Dst, 6868, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1287 dasm_put(Dst, 6420, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1322 } else { 1288 } else {
1323 } 1289 }
1324 dasm_put(Dst, 6937); 1290 dasm_put(Dst, 6489);
1325 if (sse) { 1291 if (sse) {
1326 dasm_put(Dst, 6947, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1292 dasm_put(Dst, 6499, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1327 } else { 1293 } else {
1328 } 1294 }
1329 dasm_put(Dst, 7016); 1295 dasm_put(Dst, 6568);
1330 if (sse) { 1296 if (sse) {
1331 dasm_put(Dst, 7026, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1297 dasm_put(Dst, 6578, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1332 } else { 1298 } else {
1333 } 1299 }
1334 dasm_put(Dst, 7095); 1300 dasm_put(Dst, 6647);
1335 if (sse) { 1301 if (sse) {
1336 dasm_put(Dst, 7104, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1302 dasm_put(Dst, 6656, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1337 } else { 1303 } else {
1338 } 1304 }
1339 dasm_put(Dst, 7173, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1305 dasm_put(Dst, 6725, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1340 dasm_put(Dst, 7257, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1306 dasm_put(Dst, 6803, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1341 dasm_put(Dst, 7377, Dt1(->base), Dt1(->top)); 1307 dasm_put(Dst, 6929, Dt1(->top), Dt1(->base), Dt1(->top));
1342#if LJ_HASJIT 1308#if LJ_HASJIT
1343 dasm_put(Dst, 7419, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1309 dasm_put(Dst, 6968, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1344#endif 1310#endif
1345 dasm_put(Dst, 7450, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); 1311 dasm_put(Dst, 6999, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1346 dasm_put(Dst, 7516, BC__MAX*8); 1312 dasm_put(Dst, 7065, GG_DISP2STATIC);
1347#if LJ_HASJIT 1313#if LJ_HASJIT
1348 dasm_put(Dst, 7552); 1314 dasm_put(Dst, 7101);
1349#endif 1315#endif
1350 dasm_put(Dst, 7554); 1316 dasm_put(Dst, 7103);
1351#if LJ_HASJIT 1317#if LJ_HASJIT
1352 dasm_put(Dst, 7552); 1318 dasm_put(Dst, 7101);
1353#endif 1319#endif
1354 dasm_put(Dst, 7557); 1320 dasm_put(Dst, 7106);
1355#if LJ_HASJIT 1321#if LJ_HASJIT
1356 dasm_put(Dst, 7552); 1322 dasm_put(Dst, 7101);
1357#endif 1323#endif
1358 dasm_put(Dst, 7560); 1324 dasm_put(Dst, 7109);
1359#if LJ_HASJIT 1325#if LJ_HASJIT
1360 dasm_put(Dst, 7563, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1326 dasm_put(Dst, 7112, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1361#endif 1327#endif
1362 dasm_put(Dst, 7604); 1328 dasm_put(Dst, 7153);
1363 if (!sse) { 1329 if (!sse) {
1364 dasm_put(Dst, 7607); 1330 dasm_put(Dst, 7156);
1365 } 1331 }
1366 dasm_put(Dst, 7652, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1332 dasm_put(Dst, 7201, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1367 if (!sse) { 1333 if (!sse) {
1368 dasm_put(Dst, 7738); 1334 dasm_put(Dst, 7287);
1369 } 1335 }
1370 dasm_put(Dst, 7783, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); 1336 dasm_put(Dst, 7332, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
1371 if (!sse) { 1337 if (!sse) {
1372 dasm_put(Dst, 7869); 1338 dasm_put(Dst, 7418);
1373 } 1339 }
1374 dasm_put(Dst, 7908, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1340 dasm_put(Dst, 7457, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1375 if (sse) { 1341 if (sse) {
1376 dasm_put(Dst, 7997, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1342 dasm_put(Dst, 7546, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1377 } else { 1343 } else {
1378 dasm_put(Dst, 8111); 1344 dasm_put(Dst, 7660);
1379 } 1345 }
1380 dasm_put(Dst, 8158); 1346 dasm_put(Dst, 7707);
1381 if (!sse) { 1347 if (!sse) {
1382 } else { 1348 } else {
1383 dasm_put(Dst, 8232); 1349 dasm_put(Dst, 7781);
1384 } 1350 }
1385 dasm_put(Dst, 8235); 1351 dasm_put(Dst, 7784);
1386 dasm_put(Dst, 8320, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1352 dasm_put(Dst, 7869, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1387 dasm_put(Dst, 8421, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1353 dasm_put(Dst, 7970, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1388 dasm_put(Dst, 8589); 1354 dasm_put(Dst, 8138);
1389 if (sse) { 1355 if (sse) {
1390 dasm_put(Dst, 8630); 1356 dasm_put(Dst, 8179);
1391 dasm_put(Dst, 8700); 1357 dasm_put(Dst, 8249);
1392 dasm_put(Dst, 8773); 1358 dasm_put(Dst, 8322);
1393 } else { 1359 } else {
1394 dasm_put(Dst, 8823); 1360 dasm_put(Dst, 8372);
1395 dasm_put(Dst, 8915); 1361 dasm_put(Dst, 8464);
1396 } 1362 }
1397 dasm_put(Dst, 8961); 1363 dasm_put(Dst, 8510);
1398 if (sse) { 1364 if (sse) {
1399 dasm_put(Dst, 8967, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1365 dasm_put(Dst, 8516, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1400 dasm_put(Dst, 9056, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1366 dasm_put(Dst, 8605, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1401 } else { 1367 } else {
1402 dasm_put(Dst, 9180); 1368 dasm_put(Dst, 8729);
1403 dasm_put(Dst, 9263); 1369 dasm_put(Dst, 8812);
1404 if (cmov) { 1370 if (cmov) {
1405 dasm_put(Dst, 9318); 1371 dasm_put(Dst, 8867);
1406 } else { 1372 } else {
1407 dasm_put(Dst, 9337); 1373 dasm_put(Dst, 8886);
1408 } 1374 }
1409 dasm_put(Dst, 9176); 1375 dasm_put(Dst, 8725);
1410 } 1376 }
1411 dasm_put(Dst, 9378); 1377 dasm_put(Dst, 8927);
1412} 1378}
1413 1379
1414/* Generate the code for a single instruction. */ 1380/* Generate the code for a single instruction. */
1415static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1381static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1416{ 1382{
1417 int vk = 0; 1383 int vk = 0;
1418 dasm_put(Dst, 155, defop); 1384 dasm_put(Dst, 8953, defop);
1419 1385
1420 switch (op) { 1386 switch (op) {
1421 1387
@@ -1424,602 +1390,602 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1424 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1390 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1425 1391
1426 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1392 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1427 dasm_put(Dst, 9404, LJ_TISNUM, LJ_TISNUM); 1393 dasm_put(Dst, 8955, LJ_TISNUM, LJ_TISNUM);
1428 if (sse) { 1394 if (sse) {
1429 dasm_put(Dst, 9425); 1395 dasm_put(Dst, 8976);
1430 } else { 1396 } else {
1431 dasm_put(Dst, 9440); 1397 dasm_put(Dst, 8991);
1432 if (cmov) { 1398 if (cmov) {
1433 dasm_put(Dst, 9450); 1399 dasm_put(Dst, 9001);
1434 } else { 1400 } else {
1435 dasm_put(Dst, 9456); 1401 dasm_put(Dst, 9007);
1436 } 1402 }
1437 } 1403 }
1438 switch (op) { 1404 switch (op) {
1439 case BC_ISLT: 1405 case BC_ISLT:
1440 dasm_put(Dst, 9463); 1406 dasm_put(Dst, 9014);
1441 break; 1407 break;
1442 case BC_ISGE: 1408 case BC_ISGE:
1443 dasm_put(Dst, 9258); 1409 dasm_put(Dst, 8807);
1444 break; 1410 break;
1445 case BC_ISLE: 1411 case BC_ISLE:
1446 dasm_put(Dst, 6290); 1412 dasm_put(Dst, 5872);
1447 break; 1413 break;
1448 case BC_ISGT: 1414 case BC_ISGT:
1449 dasm_put(Dst, 9468); 1415 dasm_put(Dst, 9019);
1450 break; 1416 break;
1451 default: break; /* Shut up GCC. */ 1417 default: break; /* Shut up GCC. */
1452 } 1418 }
1453 dasm_put(Dst, 9473, -BCBIAS_J*4); 1419 dasm_put(Dst, 9024, -BCBIAS_J*4);
1454 break; 1420 break;
1455 1421
1456 case BC_ISEQV: case BC_ISNEV: 1422 case BC_ISEQV: case BC_ISNEV:
1457 vk = op == BC_ISEQV; 1423 vk = op == BC_ISEQV;
1458 dasm_put(Dst, 9507, LJ_TISNUM, LJ_TISNUM); 1424 dasm_put(Dst, 9058, LJ_TISNUM, LJ_TISNUM);
1459 if (sse) { 1425 if (sse) {
1460 dasm_put(Dst, 9533); 1426 dasm_put(Dst, 9084);
1461 } else { 1427 } else {
1462 dasm_put(Dst, 9545); 1428 dasm_put(Dst, 9096);
1463 if (cmov) { 1429 if (cmov) {
1464 dasm_put(Dst, 9450); 1430 dasm_put(Dst, 9001);
1465 } else { 1431 } else {
1466 dasm_put(Dst, 9456); 1432 dasm_put(Dst, 9007);
1467 } 1433 }
1468 } 1434 }
1469 iseqne_fp: 1435 iseqne_fp:
1470 if (vk) { 1436 if (vk) {
1471 dasm_put(Dst, 9552); 1437 dasm_put(Dst, 9103);
1472 } else { 1438 } else {
1473 dasm_put(Dst, 9561); 1439 dasm_put(Dst, 9112);
1474 } 1440 }
1475 iseqne_end: 1441 iseqne_end:
1476 if (vk) { 1442 if (vk) {
1477 dasm_put(Dst, 9570, -BCBIAS_J*4); 1443 dasm_put(Dst, 9121, -BCBIAS_J*4);
1478 } else { 1444 } else {
1479 dasm_put(Dst, 9585, -BCBIAS_J*4); 1445 dasm_put(Dst, 9136, -BCBIAS_J*4);
1480 } 1446 }
1481 dasm_put(Dst, 7584); 1447 dasm_put(Dst, 7133);
1482 if (op == BC_ISEQV || op == BC_ISNEV) { 1448 if (op == BC_ISEQV || op == BC_ISNEV) {
1483 dasm_put(Dst, 9600, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1449 dasm_put(Dst, 9151, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1484 if (vk) { 1450 if (vk) {
1485 dasm_put(Dst, 9658); 1451 dasm_put(Dst, 9209);
1486 } else { 1452 } else {
1487 dasm_put(Dst, 9662); 1453 dasm_put(Dst, 9213);
1488 } 1454 }
1489 dasm_put(Dst, 9668); 1455 dasm_put(Dst, 9219);
1490 } 1456 }
1491 break; 1457 break;
1492 case BC_ISEQS: case BC_ISNES: 1458 case BC_ISEQS: case BC_ISNES:
1493 vk = op == BC_ISEQS; 1459 vk = op == BC_ISEQS;
1494 dasm_put(Dst, 9673, LJ_TSTR); 1460 dasm_put(Dst, 9224, LJ_TSTR);
1495 iseqne_test: 1461 iseqne_test:
1496 if (vk) { 1462 if (vk) {
1497 dasm_put(Dst, 9556); 1463 dasm_put(Dst, 9107);
1498 } else { 1464 } else {
1499 dasm_put(Dst, 8910); 1465 dasm_put(Dst, 2774);
1500 } 1466 }
1501 goto iseqne_end; 1467 goto iseqne_end;
1502 case BC_ISEQN: case BC_ISNEN: 1468 case BC_ISEQN: case BC_ISNEN:
1503 vk = op == BC_ISEQN; 1469 vk = op == BC_ISEQN;
1504 dasm_put(Dst, 9697, LJ_TISNUM); 1470 dasm_put(Dst, 9248, LJ_TISNUM);
1505 if (sse) { 1471 if (sse) {
1506 dasm_put(Dst, 9711); 1472 dasm_put(Dst, 9262);
1507 } else { 1473 } else {
1508 dasm_put(Dst, 9723); 1474 dasm_put(Dst, 9274);
1509 if (cmov) { 1475 if (cmov) {
1510 dasm_put(Dst, 9450); 1476 dasm_put(Dst, 9001);
1511 } else { 1477 } else {
1512 dasm_put(Dst, 9456); 1478 dasm_put(Dst, 9007);
1513 } 1479 }
1514 } 1480 }
1515 goto iseqne_fp; 1481 goto iseqne_fp;
1516 case BC_ISEQP: case BC_ISNEP: 1482 case BC_ISEQP: case BC_ISNEP:
1517 vk = op == BC_ISEQP; 1483 vk = op == BC_ISEQP;
1518 dasm_put(Dst, 9730); 1484 dasm_put(Dst, 9281);
1519 goto iseqne_test; 1485 goto iseqne_test;
1520 1486
1521 /* -- Unary test and copy ops ------------------------------------------- */ 1487 /* -- Unary test and copy ops ------------------------------------------- */
1522 1488
1523 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1489 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1524 dasm_put(Dst, 9742, LJ_TISTRUECOND); 1490 dasm_put(Dst, 9293, LJ_TISTRUECOND);
1525 if (op == BC_IST || op == BC_ISTC) { 1491 if (op == BC_IST || op == BC_ISTC) {
1526 dasm_put(Dst, 9754); 1492 dasm_put(Dst, 9305);
1527 } else { 1493 } else {
1528 dasm_put(Dst, 9759); 1494 dasm_put(Dst, 9310);
1529 } 1495 }
1530 if (op == BC_ISTC || op == BC_ISFC) { 1496 if (op == BC_ISTC || op == BC_ISFC) {
1531 dasm_put(Dst, 9764); 1497 dasm_put(Dst, 9315);
1532 } 1498 }
1533 dasm_put(Dst, 9775, -BCBIAS_J*4); 1499 dasm_put(Dst, 9326, -BCBIAS_J*4);
1534 break; 1500 break;
1535 1501
1536 /* -- Unary ops --------------------------------------------------------- */ 1502 /* -- Unary ops --------------------------------------------------------- */
1537 1503
1538 case BC_MOV: 1504 case BC_MOV:
1539 dasm_put(Dst, 9807); 1505 dasm_put(Dst, 9358);
1540 break; 1506 break;
1541 case BC_NOT: 1507 case BC_NOT:
1542 dasm_put(Dst, 9841, LJ_TISTRUECOND, LJ_TTRUE); 1508 dasm_put(Dst, 9392, LJ_TISTRUECOND, LJ_TTRUE);
1543 break; 1509 break;
1544 case BC_UNM: 1510 case BC_UNM:
1545 dasm_put(Dst, 9877, LJ_TISNUM); 1511 dasm_put(Dst, 9428, LJ_TISNUM);
1546 if (sse) { 1512 if (sse) {
1547 dasm_put(Dst, 9888, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1513 dasm_put(Dst, 9439, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1548 } else { 1514 } else {
1549 dasm_put(Dst, 9913); 1515 dasm_put(Dst, 9464);
1550 } 1516 }
1551 dasm_put(Dst, 7584); 1517 dasm_put(Dst, 7133);
1552 break; 1518 break;
1553 case BC_LEN: 1519 case BC_LEN:
1554 dasm_put(Dst, 9922, LJ_TSTR); 1520 dasm_put(Dst, 9473, LJ_TSTR);
1555 if (sse) { 1521 if (sse) {
1556 dasm_put(Dst, 9936, Dt5(->len)); 1522 dasm_put(Dst, 9487, Dt5(->len));
1557 } else { 1523 } else {
1558 dasm_put(Dst, 9954, Dt5(->len)); 1524 dasm_put(Dst, 9505, Dt5(->len));
1559 } 1525 }
1560 dasm_put(Dst, 9963, LJ_TTAB); 1526 dasm_put(Dst, 9514, LJ_TTAB);
1561 if (sse) { 1527 if (sse) {
1562 dasm_put(Dst, 10004); 1528 dasm_put(Dst, 9555);
1563 } else { 1529 } else {
1564 } 1530 }
1565 dasm_put(Dst, 10013); 1531 dasm_put(Dst, 9564);
1566 break; 1532 break;
1567 1533
1568 /* -- Binary ops -------------------------------------------------------- */ 1534 /* -- Binary ops -------------------------------------------------------- */
1569 1535
1570 1536
1571 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1537 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1572 dasm_put(Dst, 10023); 1538 dasm_put(Dst, 9574);
1573 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1539 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1574 switch (vk) { 1540 switch (vk) {
1575 case 0: 1541 case 0:
1576 dasm_put(Dst, 10031, LJ_TISNUM); 1542 dasm_put(Dst, 9582, LJ_TISNUM);
1577 if (sse) { 1543 if (sse) {
1578 dasm_put(Dst, 10043); 1544 dasm_put(Dst, 9594);
1579 } else { 1545 } else {
1580 dasm_put(Dst, 10057); 1546 dasm_put(Dst, 9608);
1581 } 1547 }
1582 break; 1548 break;
1583 case 1: 1549 case 1:
1584 dasm_put(Dst, 10065, LJ_TISNUM); 1550 dasm_put(Dst, 9616, LJ_TISNUM);
1585 if (sse) { 1551 if (sse) {
1586 dasm_put(Dst, 10077); 1552 dasm_put(Dst, 9628);
1587 } else { 1553 } else {
1588 dasm_put(Dst, 10091); 1554 dasm_put(Dst, 9642);
1589 } 1555 }
1590 break; 1556 break;
1591 default: 1557 default:
1592 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1558 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1593 if (sse) { 1559 if (sse) {
1594 dasm_put(Dst, 10121); 1560 dasm_put(Dst, 9672);
1595 } else { 1561 } else {
1596 dasm_put(Dst, 10135); 1562 dasm_put(Dst, 9686);
1597 } 1563 }
1598 break; 1564 break;
1599 } 1565 }
1600 if (sse) { 1566 if (sse) {
1601 dasm_put(Dst, 9906); 1567 dasm_put(Dst, 9457);
1602 } else { 1568 } else {
1603 dasm_put(Dst, 9918); 1569 dasm_put(Dst, 9469);
1604 } 1570 }
1605 dasm_put(Dst, 7584); 1571 dasm_put(Dst, 7133);
1606 break; 1572 break;
1607 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1573 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1608 dasm_put(Dst, 10023); 1574 dasm_put(Dst, 9574);
1609 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1575 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1610 switch (vk) { 1576 switch (vk) {
1611 case 0: 1577 case 0:
1612 dasm_put(Dst, 10031, LJ_TISNUM); 1578 dasm_put(Dst, 9582, LJ_TISNUM);
1613 if (sse) { 1579 if (sse) {
1614 dasm_put(Dst, 10143); 1580 dasm_put(Dst, 9694);
1615 } else { 1581 } else {
1616 dasm_put(Dst, 10157); 1582 dasm_put(Dst, 9708);
1617 } 1583 }
1618 break; 1584 break;
1619 case 1: 1585 case 1:
1620 dasm_put(Dst, 10065, LJ_TISNUM); 1586 dasm_put(Dst, 9616, LJ_TISNUM);
1621 if (sse) { 1587 if (sse) {
1622 dasm_put(Dst, 10165); 1588 dasm_put(Dst, 9716);
1623 } else { 1589 } else {
1624 dasm_put(Dst, 10179); 1590 dasm_put(Dst, 9730);
1625 } 1591 }
1626 break; 1592 break;
1627 default: 1593 default:
1628 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1594 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1629 if (sse) { 1595 if (sse) {
1630 dasm_put(Dst, 10187); 1596 dasm_put(Dst, 9738);
1631 } else { 1597 } else {
1632 dasm_put(Dst, 10201); 1598 dasm_put(Dst, 9752);
1633 } 1599 }
1634 break; 1600 break;
1635 } 1601 }
1636 if (sse) { 1602 if (sse) {
1637 dasm_put(Dst, 9906); 1603 dasm_put(Dst, 9457);
1638 } else { 1604 } else {
1639 dasm_put(Dst, 9918); 1605 dasm_put(Dst, 9469);
1640 } 1606 }
1641 dasm_put(Dst, 7584); 1607 dasm_put(Dst, 7133);
1642 break; 1608 break;
1643 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1609 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1644 dasm_put(Dst, 10023); 1610 dasm_put(Dst, 9574);
1645 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1611 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1646 switch (vk) { 1612 switch (vk) {
1647 case 0: 1613 case 0:
1648 dasm_put(Dst, 10031, LJ_TISNUM); 1614 dasm_put(Dst, 9582, LJ_TISNUM);
1649 if (sse) { 1615 if (sse) {
1650 dasm_put(Dst, 10209); 1616 dasm_put(Dst, 9760);
1651 } else { 1617 } else {
1652 dasm_put(Dst, 10223); 1618 dasm_put(Dst, 9774);
1653 } 1619 }
1654 break; 1620 break;
1655 case 1: 1621 case 1:
1656 dasm_put(Dst, 10065, LJ_TISNUM); 1622 dasm_put(Dst, 9616, LJ_TISNUM);
1657 if (sse) { 1623 if (sse) {
1658 dasm_put(Dst, 10231); 1624 dasm_put(Dst, 9782);
1659 } else { 1625 } else {
1660 dasm_put(Dst, 10245); 1626 dasm_put(Dst, 9796);
1661 } 1627 }
1662 break; 1628 break;
1663 default: 1629 default:
1664 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1630 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1665 if (sse) { 1631 if (sse) {
1666 dasm_put(Dst, 10253); 1632 dasm_put(Dst, 9804);
1667 } else { 1633 } else {
1668 dasm_put(Dst, 10267); 1634 dasm_put(Dst, 9818);
1669 } 1635 }
1670 break; 1636 break;
1671 } 1637 }
1672 if (sse) { 1638 if (sse) {
1673 dasm_put(Dst, 9906); 1639 dasm_put(Dst, 9457);
1674 } else { 1640 } else {
1675 dasm_put(Dst, 9918); 1641 dasm_put(Dst, 9469);
1676 } 1642 }
1677 dasm_put(Dst, 7584); 1643 dasm_put(Dst, 7133);
1678 break; 1644 break;
1679 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1645 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1680 dasm_put(Dst, 10023); 1646 dasm_put(Dst, 9574);
1681 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1647 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1682 switch (vk) { 1648 switch (vk) {
1683 case 0: 1649 case 0:
1684 dasm_put(Dst, 10031, LJ_TISNUM); 1650 dasm_put(Dst, 9582, LJ_TISNUM);
1685 if (sse) { 1651 if (sse) {
1686 dasm_put(Dst, 10275); 1652 dasm_put(Dst, 9826);
1687 } else { 1653 } else {
1688 dasm_put(Dst, 10289); 1654 dasm_put(Dst, 9840);
1689 } 1655 }
1690 break; 1656 break;
1691 case 1: 1657 case 1:
1692 dasm_put(Dst, 10065, LJ_TISNUM); 1658 dasm_put(Dst, 9616, LJ_TISNUM);
1693 if (sse) { 1659 if (sse) {
1694 dasm_put(Dst, 10297); 1660 dasm_put(Dst, 9848);
1695 } else { 1661 } else {
1696 dasm_put(Dst, 10311); 1662 dasm_put(Dst, 9862);
1697 } 1663 }
1698 break; 1664 break;
1699 default: 1665 default:
1700 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1666 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1701 if (sse) { 1667 if (sse) {
1702 dasm_put(Dst, 10319); 1668 dasm_put(Dst, 9870);
1703 } else { 1669 } else {
1704 dasm_put(Dst, 10333); 1670 dasm_put(Dst, 9884);
1705 } 1671 }
1706 break; 1672 break;
1707 } 1673 }
1708 if (sse) { 1674 if (sse) {
1709 dasm_put(Dst, 9906); 1675 dasm_put(Dst, 9457);
1710 } else { 1676 } else {
1711 dasm_put(Dst, 9918); 1677 dasm_put(Dst, 9469);
1712 } 1678 }
1713 dasm_put(Dst, 7584); 1679 dasm_put(Dst, 7133);
1714 break; 1680 break;
1715 case BC_MODVN: 1681 case BC_MODVN:
1716 dasm_put(Dst, 10023); 1682 dasm_put(Dst, 9574);
1717 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1683 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1718 switch (vk) { 1684 switch (vk) {
1719 case 0: 1685 case 0:
1720 dasm_put(Dst, 10031, LJ_TISNUM); 1686 dasm_put(Dst, 9582, LJ_TISNUM);
1721 if (sse) { 1687 if (sse) {
1722 dasm_put(Dst, 10341); 1688 dasm_put(Dst, 9892);
1723 } else { 1689 } else {
1724 dasm_put(Dst, 10355); 1690 dasm_put(Dst, 9906);
1725 } 1691 }
1726 break; 1692 break;
1727 case 1: 1693 case 1:
1728 dasm_put(Dst, 10065, LJ_TISNUM); 1694 dasm_put(Dst, 9616, LJ_TISNUM);
1729 if (sse) { 1695 if (sse) {
1730 dasm_put(Dst, 10363); 1696 dasm_put(Dst, 9914);
1731 } else { 1697 } else {
1732 dasm_put(Dst, 10377); 1698 dasm_put(Dst, 9928);
1733 } 1699 }
1734 break; 1700 break;
1735 default: 1701 default:
1736 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1702 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1737 if (sse) { 1703 if (sse) {
1738 dasm_put(Dst, 10385); 1704 dasm_put(Dst, 9936);
1739 } else { 1705 } else {
1740 dasm_put(Dst, 10399); 1706 dasm_put(Dst, 9950);
1741 } 1707 }
1742 break; 1708 break;
1743 } 1709 }
1744 dasm_put(Dst, 10407); 1710 dasm_put(Dst, 9958);
1745 if (sse) { 1711 if (sse) {
1746 dasm_put(Dst, 9906); 1712 dasm_put(Dst, 9457);
1747 } else { 1713 } else {
1748 dasm_put(Dst, 9918); 1714 dasm_put(Dst, 9469);
1749 } 1715 }
1750 dasm_put(Dst, 7584); 1716 dasm_put(Dst, 7133);
1751 break; 1717 break;
1752 case BC_MODNV: case BC_MODVV: 1718 case BC_MODNV: case BC_MODVV:
1753 dasm_put(Dst, 10023); 1719 dasm_put(Dst, 9574);
1754 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1720 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1755 switch (vk) { 1721 switch (vk) {
1756 case 0: 1722 case 0:
1757 dasm_put(Dst, 10031, LJ_TISNUM); 1723 dasm_put(Dst, 9582, LJ_TISNUM);
1758 if (sse) { 1724 if (sse) {
1759 dasm_put(Dst, 10341); 1725 dasm_put(Dst, 9892);
1760 } else { 1726 } else {
1761 dasm_put(Dst, 10355); 1727 dasm_put(Dst, 9906);
1762 } 1728 }
1763 break; 1729 break;
1764 case 1: 1730 case 1:
1765 dasm_put(Dst, 10065, LJ_TISNUM); 1731 dasm_put(Dst, 9616, LJ_TISNUM);
1766 if (sse) { 1732 if (sse) {
1767 dasm_put(Dst, 10363); 1733 dasm_put(Dst, 9914);
1768 } else { 1734 } else {
1769 dasm_put(Dst, 10377); 1735 dasm_put(Dst, 9928);
1770 } 1736 }
1771 break; 1737 break;
1772 default: 1738 default:
1773 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1739 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1774 if (sse) { 1740 if (sse) {
1775 dasm_put(Dst, 10385); 1741 dasm_put(Dst, 9936);
1776 } else { 1742 } else {
1777 dasm_put(Dst, 10399); 1743 dasm_put(Dst, 9950);
1778 } 1744 }
1779 break; 1745 break;
1780 } 1746 }
1781 dasm_put(Dst, 10413); 1747 dasm_put(Dst, 9964);
1782 break; 1748 break;
1783 case BC_POW: 1749 case BC_POW:
1784 dasm_put(Dst, 10023); 1750 dasm_put(Dst, 9574);
1785 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1751 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1786 switch (vk) { 1752 switch (vk) {
1787 case 0: 1753 case 0:
1788 dasm_put(Dst, 10031, LJ_TISNUM); 1754 dasm_put(Dst, 9582, LJ_TISNUM);
1789 if (sse) { 1755 if (sse) {
1790 dasm_put(Dst, 10341); 1756 dasm_put(Dst, 9892);
1791 } else { 1757 } else {
1792 dasm_put(Dst, 10355); 1758 dasm_put(Dst, 9906);
1793 } 1759 }
1794 break; 1760 break;
1795 case 1: 1761 case 1:
1796 dasm_put(Dst, 10065, LJ_TISNUM); 1762 dasm_put(Dst, 9616, LJ_TISNUM);
1797 if (sse) { 1763 if (sse) {
1798 dasm_put(Dst, 10363); 1764 dasm_put(Dst, 9914);
1799 } else { 1765 } else {
1800 dasm_put(Dst, 10377); 1766 dasm_put(Dst, 9928);
1801 } 1767 }
1802 break; 1768 break;
1803 default: 1769 default:
1804 dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); 1770 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM);
1805 if (sse) { 1771 if (sse) {
1806 dasm_put(Dst, 10385); 1772 dasm_put(Dst, 9936);
1807 } else { 1773 } else {
1808 dasm_put(Dst, 10399); 1774 dasm_put(Dst, 9950);
1809 } 1775 }
1810 break; 1776 break;
1811 } 1777 }
1812 dasm_put(Dst, 10418); 1778 dasm_put(Dst, 9969);
1813 if (sse) { 1779 if (sse) {
1814 dasm_put(Dst, 9906); 1780 dasm_put(Dst, 9457);
1815 } else { 1781 } else {
1816 dasm_put(Dst, 9918); 1782 dasm_put(Dst, 9469);
1817 } 1783 }
1818 dasm_put(Dst, 7584); 1784 dasm_put(Dst, 7133);
1819 break; 1785 break;
1820 1786
1821 case BC_CAT: 1787 case BC_CAT:
1822 dasm_put(Dst, 10422, Dt1(->base), Dt1(->base)); 1788 dasm_put(Dst, 9973, Dt1(->base), Dt1(->base));
1823 break; 1789 break;
1824 1790
1825 /* -- Constant ops ------------------------------------------------------ */ 1791 /* -- Constant ops ------------------------------------------------------ */
1826 1792
1827 case BC_KSTR: 1793 case BC_KSTR:
1828 dasm_put(Dst, 10512, LJ_TSTR); 1794 dasm_put(Dst, 10063, LJ_TSTR);
1829 break; 1795 break;
1830 case BC_KSHORT: 1796 case BC_KSHORT:
1831 if (sse) { 1797 if (sse) {
1832 dasm_put(Dst, 10547); 1798 dasm_put(Dst, 10098);
1833 } else { 1799 } else {
1834 dasm_put(Dst, 10562); 1800 dasm_put(Dst, 10113);
1835 } 1801 }
1836 dasm_put(Dst, 7584); 1802 dasm_put(Dst, 7133);
1837 break; 1803 break;
1838 case BC_KNUM: 1804 case BC_KNUM:
1839 if (sse) { 1805 if (sse) {
1840 dasm_put(Dst, 10570); 1806 dasm_put(Dst, 10121);
1841 } else { 1807 } else {
1842 dasm_put(Dst, 10583); 1808 dasm_put(Dst, 10134);
1843 } 1809 }
1844 dasm_put(Dst, 7584); 1810 dasm_put(Dst, 7133);
1845 break; 1811 break;
1846 case BC_KPRI: 1812 case BC_KPRI:
1847 dasm_put(Dst, 10590); 1813 dasm_put(Dst, 10141);
1848 break; 1814 break;
1849 case BC_KNIL: 1815 case BC_KNIL:
1850 dasm_put(Dst, 10618, LJ_TNIL); 1816 dasm_put(Dst, 10169, LJ_TNIL);
1851 break; 1817 break;
1852 1818
1853 /* -- Upvalue and function ops ------------------------------------------ */ 1819 /* -- Upvalue and function ops ------------------------------------------ */
1854 1820
1855 case BC_UGET: 1821 case BC_UGET:
1856 dasm_put(Dst, 10665, offsetof(GCfuncL, uvptr), DtA(->v)); 1822 dasm_put(Dst, 10216, offsetof(GCfuncL, uvptr), DtA(->v));
1857 break; 1823 break;
1858 case BC_USETV: 1824 case BC_USETV:
1859#define TV2MARKOFS \ 1825#define TV2MARKOFS \
1860 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1826 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1861 dasm_put(Dst, 10710, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1827 dasm_put(Dst, 10261, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1862 dasm_put(Dst, 10801); 1828 dasm_put(Dst, 10352);
1863 break; 1829 break;
1864#undef TV2MARKOFS 1830#undef TV2MARKOFS
1865 case BC_USETS: 1831 case BC_USETS:
1866 dasm_put(Dst, 10813, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1832 dasm_put(Dst, 10364, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1867 break; 1833 break;
1868 case BC_USETN: 1834 case BC_USETN:
1869 dasm_put(Dst, 10906); 1835 dasm_put(Dst, 10457);
1870 if (sse) { 1836 if (sse) {
1871 dasm_put(Dst, 10911); 1837 dasm_put(Dst, 10462);
1872 } else { 1838 } else {
1873 dasm_put(Dst, 9726); 1839 dasm_put(Dst, 9277);
1874 } 1840 }
1875 dasm_put(Dst, 10918, offsetof(GCfuncL, uvptr), DtA(->v)); 1841 dasm_put(Dst, 10469, offsetof(GCfuncL, uvptr), DtA(->v));
1876 if (sse) { 1842 if (sse) {
1877 dasm_put(Dst, 4853); 1843 dasm_put(Dst, 10478);
1878 } else { 1844 } else {
1879 dasm_put(Dst, 4859); 1845 dasm_put(Dst, 10484);
1880 } 1846 }
1881 dasm_put(Dst, 7584); 1847 dasm_put(Dst, 7133);
1882 break; 1848 break;
1883 case BC_USETP: 1849 case BC_USETP:
1884 dasm_put(Dst, 10927, offsetof(GCfuncL, uvptr), DtA(->v)); 1850 dasm_put(Dst, 10487, offsetof(GCfuncL, uvptr), DtA(->v));
1885 break; 1851 break;
1886 case BC_UCLO: 1852 case BC_UCLO:
1887 dasm_put(Dst, 10966, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1853 dasm_put(Dst, 10526, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1888 break; 1854 break;
1889 1855
1890 case BC_FNEW: 1856 case BC_FNEW:
1891 dasm_put(Dst, 11021, Dt1(->base), Dt1(->base), LJ_TFUNC); 1857 dasm_put(Dst, 10581, Dt1(->base), Dt1(->base), LJ_TFUNC);
1892 break; 1858 break;
1893 1859
1894 /* -- Table ops --------------------------------------------------------- */ 1860 /* -- Table ops --------------------------------------------------------- */
1895 1861
1896 case BC_TNEW: 1862 case BC_TNEW:
1897 dasm_put(Dst, 11087, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1863 dasm_put(Dst, 10647, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1898 break; 1864 break;
1899 case BC_TDUP: 1865 case BC_TDUP:
1900 dasm_put(Dst, 11208, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1866 dasm_put(Dst, 10768, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1901 break; 1867 break;
1902 1868
1903 case BC_GGET: 1869 case BC_GGET:
1904 dasm_put(Dst, 11303, Dt7(->env)); 1870 dasm_put(Dst, 10863, Dt7(->env));
1905 break; 1871 break;
1906 case BC_GSET: 1872 case BC_GSET:
1907 dasm_put(Dst, 11322, Dt7(->env)); 1873 dasm_put(Dst, 10882, Dt7(->env));
1908 break; 1874 break;
1909 1875
1910 case BC_TGETV: 1876 case BC_TGETV:
1911 dasm_put(Dst, 11341, LJ_TTAB, LJ_TISNUM); 1877 dasm_put(Dst, 10901, LJ_TTAB, LJ_TISNUM);
1912 if (sse) { 1878 if (sse) {
1913 dasm_put(Dst, 11374); 1879 dasm_put(Dst, 10934);
1914 } else { 1880 } else {
1915 } 1881 }
1916 dasm_put(Dst, 11395, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1882 dasm_put(Dst, 10955, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1917 dasm_put(Dst, 11488, LJ_TSTR); 1883 dasm_put(Dst, 11048, LJ_TSTR);
1918 break; 1884 break;
1919 case BC_TGETS: 1885 case BC_TGETS:
1920 dasm_put(Dst, 11506, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1886 dasm_put(Dst, 11066, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1921 dasm_put(Dst, 11591, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1887 dasm_put(Dst, 11151, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1922 break; 1888 break;
1923 case BC_TGETB: 1889 case BC_TGETB:
1924 dasm_put(Dst, 11663, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1890 dasm_put(Dst, 11223, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1925 dasm_put(Dst, 10013); 1891 dasm_put(Dst, 9564);
1926 break; 1892 break;
1927 1893
1928 case BC_TSETV: 1894 case BC_TSETV:
1929 dasm_put(Dst, 11763, LJ_TTAB, LJ_TISNUM); 1895 dasm_put(Dst, 11323, LJ_TTAB, LJ_TISNUM);
1930 if (sse) { 1896 if (sse) {
1931 dasm_put(Dst, 11374); 1897 dasm_put(Dst, 10934);
1932 } else { 1898 } else {
1933 } 1899 }
1934 dasm_put(Dst, 11796, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1900 dasm_put(Dst, 11356, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1935 dasm_put(Dst, 11880, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1901 dasm_put(Dst, 11440, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1936 break; 1902 break;
1937 case BC_TSETS: 1903 case BC_TSETS:
1938 dasm_put(Dst, 11942, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1904 dasm_put(Dst, 11502, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1939 dasm_put(Dst, 12018, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1905 dasm_put(Dst, 11578, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1940 dasm_put(Dst, 12111, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1906 dasm_put(Dst, 11671, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1941 break; 1907 break;
1942 case BC_TSETB: 1908 case BC_TSETB:
1943 dasm_put(Dst, 12202, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1909 dasm_put(Dst, 11762, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1944 dasm_put(Dst, 12301, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1910 dasm_put(Dst, 11861, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1945 break; 1911 break;
1946 1912
1947 case BC_TSETM: 1913 case BC_TSETM:
1948 dasm_put(Dst, 12347); 1914 dasm_put(Dst, 11907);
1949 if (sse) { 1915 if (sse) {
1950 dasm_put(Dst, 10911); 1916 dasm_put(Dst, 10462);
1951 } else { 1917 } else {
1952 } 1918 }
1953 dasm_put(Dst, 12352, Dt6(->marked), LJ_GC_BLACK); 1919 dasm_put(Dst, 11912, Dt6(->marked), LJ_GC_BLACK);
1954 if (sse) { 1920 if (sse) {
1955 dasm_put(Dst, 12377); 1921 dasm_put(Dst, 11937);
1956 } else { 1922 } else {
1957 } 1923 }
1958 dasm_put(Dst, 12384, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 1924 dasm_put(Dst, 11944, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
1959 dasm_put(Dst, 12510, Dt6(->gclist)); 1925 dasm_put(Dst, 12070, Dt6(->gclist));
1960 break; 1926 break;
1961 1927
1962 /* -- Calls and vararg handling ----------------------------------------- */ 1928 /* -- Calls and vararg handling ----------------------------------------- */
1963 1929
1964 case BC_CALL: case BC_CALLM: 1930 case BC_CALL: case BC_CALLM:
1965 dasm_put(Dst, 10027); 1931 dasm_put(Dst, 9578);
1966 if (op == BC_CALLM) { 1932 if (op == BC_CALLM) {
1967 dasm_put(Dst, 12518); 1933 dasm_put(Dst, 12078);
1968 } 1934 }
1969 dasm_put(Dst, 12523, LJ_TFUNC, Dt7(->gate)); 1935 dasm_put(Dst, 12083, LJ_TFUNC, Dt7(->pc));
1970 break; 1936 break;
1971 1937
1972 case BC_CALLMT: 1938 case BC_CALLMT:
1973 dasm_put(Dst, 12518); 1939 dasm_put(Dst, 12078);
1974 break; 1940 break;
1975 case BC_CALLT: 1941 case BC_CALLT:
1976 dasm_put(Dst, 12546, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 1942 dasm_put(Dst, 12125, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
1977 dasm_put(Dst, 12651, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 1943 dasm_put(Dst, 12244, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
1978 break; 1944 break;
1979 1945
1980 case BC_ITERC: 1946 case BC_ITERC:
1981 dasm_put(Dst, 12709, LJ_TFUNC, Dt7(->gate)); 1947 dasm_put(Dst, 12302, LJ_TFUNC, 2+1, Dt7(->pc));
1982 break; 1948 break;
1983 1949
1984 case BC_VARG: 1950 case BC_VARG:
1985 dasm_put(Dst, 12771, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 1951 dasm_put(Dst, 12383, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
1986 dasm_put(Dst, 12916, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 1952 dasm_put(Dst, 12528, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1987 break; 1953 break;
1988 1954
1989 /* -- Returns ----------------------------------------------------------- */ 1955 /* -- Returns ----------------------------------------------------------- */
1990 1956
1991 case BC_RETM: 1957 case BC_RETM:
1992 dasm_put(Dst, 12518); 1958 dasm_put(Dst, 12078);
1993 break; 1959 break;
1994 1960
1995 case BC_RET: case BC_RET0: case BC_RET1: 1961 case BC_RET: case BC_RET0: case BC_RET1:
1996 if (op != BC_RET0) { 1962 if (op != BC_RET0) {
1997 dasm_put(Dst, 13015); 1963 dasm_put(Dst, 12627);
1998 } 1964 }
1999 dasm_put(Dst, 13019, FRAME_TYPE); 1965 dasm_put(Dst, 12631, FRAME_TYPE);
2000 switch (op) { 1966 switch (op) {
2001 case BC_RET: 1967 case BC_RET:
2002 dasm_put(Dst, 13038); 1968 dasm_put(Dst, 12650);
2003 break; 1969 break;
2004 case BC_RET1: 1970 case BC_RET1:
2005 dasm_put(Dst, 13096); 1971 dasm_put(Dst, 12708);
2006 /* fallthrough */ 1972 /* fallthrough */
2007 case BC_RET0: 1973 case BC_RET0:
2008 dasm_put(Dst, 13112); 1974 dasm_put(Dst, 12724);
2009 default: 1975 default:
2010 break; 1976 break;
2011 } 1977 }
2012 dasm_put(Dst, 13123, Dt7(->pc), PC2PROTO(k)); 1978 dasm_put(Dst, 12735, Dt7(->pc), PC2PROTO(k));
2013 if (op == BC_RET) { 1979 if (op == BC_RET) {
2014 dasm_put(Dst, 13167, LJ_TNIL); 1980 dasm_put(Dst, 12779, LJ_TNIL);
2015 } else { 1981 } else {
2016 dasm_put(Dst, 13176, LJ_TNIL); 1982 dasm_put(Dst, 12788, LJ_TNIL);
2017 } 1983 }
2018 dasm_put(Dst, 13183); 1984 dasm_put(Dst, 12795);
2019 if (op != BC_RET0) { 1985 if (op != BC_RET0) {
2020 dasm_put(Dst, 13204); 1986 dasm_put(Dst, 12816);
2021 } 1987 }
2022 dasm_put(Dst, 4944); 1988 dasm_put(Dst, 4542);
2023 break; 1989 break;
2024 1990
2025 /* -- Loops and branches ------------------------------------------------ */ 1991 /* -- Loops and branches ------------------------------------------------ */
@@ -2027,7 +1993,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2027 1993
2028 case BC_FORL: 1994 case BC_FORL:
2029#if LJ_HASJIT 1995#if LJ_HASJIT
2030 dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); 1996 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
2031#endif 1997#endif
2032 break; 1998 break;
2033 1999
@@ -2039,57 +2005,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2039 case BC_FORI: 2005 case BC_FORI:
2040 case BC_IFORL: 2006 case BC_IFORL:
2041 vk = (op == BC_IFORL || op == BC_JFORL); 2007 vk = (op == BC_IFORL || op == BC_JFORL);
2042 dasm_put(Dst, 13229); 2008 dasm_put(Dst, 12841);
2043 if (!vk) { 2009 if (!vk) {
2044 dasm_put(Dst, 13233, LJ_TISNUM, LJ_TISNUM); 2010 dasm_put(Dst, 12845, LJ_TISNUM, LJ_TISNUM);
2045 } 2011 }
2046 dasm_put(Dst, 13252); 2012 dasm_put(Dst, 12864);
2047 if (!vk) { 2013 if (!vk) {
2048 dasm_put(Dst, 13256, LJ_TISNUM); 2014 dasm_put(Dst, 12868, LJ_TISNUM);
2049 } 2015 }
2050 if (sse) { 2016 if (sse) {
2051 dasm_put(Dst, 13265); 2017 dasm_put(Dst, 12877);
2052 if (vk) { 2018 if (vk) {
2053 dasm_put(Dst, 13277); 2019 dasm_put(Dst, 12889);
2054 } else { 2020 } else {
2055 dasm_put(Dst, 13296); 2021 dasm_put(Dst, 12908);
2056 } 2022 }
2057 dasm_put(Dst, 13301); 2023 dasm_put(Dst, 12913);
2058 } else { 2024 } else {
2059 dasm_put(Dst, 13314); 2025 dasm_put(Dst, 12926);
2060 if (vk) { 2026 if (vk) {
2061 dasm_put(Dst, 13320); 2027 dasm_put(Dst, 12932);
2062 } else { 2028 } else {
2063 dasm_put(Dst, 13336); 2029 dasm_put(Dst, 12948);
2064 } 2030 }
2065 dasm_put(Dst, 13344); 2031 dasm_put(Dst, 12956);
2066 if (cmov) { 2032 if (cmov) {
2067 dasm_put(Dst, 9450); 2033 dasm_put(Dst, 9001);
2068 } else { 2034 } else {
2069 dasm_put(Dst, 9456); 2035 dasm_put(Dst, 9007);
2070 } 2036 }
2071 if (!cmov) { 2037 if (!cmov) {
2072 dasm_put(Dst, 13349); 2038 dasm_put(Dst, 12961);
2073 } 2039 }
2074 } 2040 }
2075 if (op == BC_FORI) { 2041 if (op == BC_FORI) {
2076 dasm_put(Dst, 13355, -BCBIAS_J*4); 2042 dasm_put(Dst, 12967, -BCBIAS_J*4);
2077 } else if (op == BC_JFORI) { 2043 } else if (op == BC_JFORI) {
2078 dasm_put(Dst, 13365, -BCBIAS_J*4, BC_JLOOP); 2044 dasm_put(Dst, 12977, -BCBIAS_J*4, BC_JLOOP);
2079 } else if (op == BC_IFORL) { 2045 } else if (op == BC_IFORL) {
2080 dasm_put(Dst, 13379, -BCBIAS_J*4); 2046 dasm_put(Dst, 12991, -BCBIAS_J*4);
2081 } else { 2047 } else {
2082 dasm_put(Dst, 13375, BC_JLOOP); 2048 dasm_put(Dst, 12987, BC_JLOOP);
2083 } 2049 }
2084 dasm_put(Dst, 9485); 2050 dasm_put(Dst, 9036);
2085 if (sse) { 2051 if (sse) {
2086 dasm_put(Dst, 13389); 2052 dasm_put(Dst, 13001);
2087 } 2053 }
2088 break; 2054 break;
2089 2055
2090 case BC_ITERL: 2056 case BC_ITERL:
2091#if LJ_HASJIT 2057#if LJ_HASJIT
2092 dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); 2058 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
2093#endif 2059#endif
2094 break; 2060 break;
2095 2061
@@ -2098,33 +2064,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2098 break; 2064 break;
2099#endif 2065#endif
2100 case BC_IITERL: 2066 case BC_IITERL:
2101 dasm_put(Dst, 13400, LJ_TNIL); 2067 dasm_put(Dst, 13012, LJ_TNIL);
2102 if (op == BC_JITERL) { 2068 if (op == BC_JITERL) {
2103 dasm_put(Dst, 13415, BC_JLOOP); 2069 dasm_put(Dst, 13027, BC_JLOOP);
2104 } else { 2070 } else {
2105 dasm_put(Dst, 13429, -BCBIAS_J*4); 2071 dasm_put(Dst, 13041, -BCBIAS_J*4);
2106 } 2072 }
2107 dasm_put(Dst, 9785); 2073 dasm_put(Dst, 9336);
2108 break; 2074 break;
2109 2075
2110 case BC_LOOP: 2076 case BC_LOOP:
2111#if LJ_HASJIT 2077#if LJ_HASJIT
2112 dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); 2078 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT);
2113#endif 2079#endif
2114 break; 2080 break;
2115 2081
2116 case BC_ILOOP: 2082 case BC_ILOOP:
2117 dasm_put(Dst, 7584); 2083 dasm_put(Dst, 7133);
2118 break; 2084 break;
2119 2085
2120 case BC_JLOOP: 2086 case BC_JLOOP:
2121#if LJ_HASJIT 2087#if LJ_HASJIT
2122 dasm_put(Dst, 13445, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2088 dasm_put(Dst, 13057, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2123#endif 2089#endif
2124 break; 2090 break;
2125 2091
2126 case BC_JMP: 2092 case BC_JMP:
2127 dasm_put(Dst, 13469, -BCBIAS_J*4); 2093 dasm_put(Dst, 13081, -BCBIAS_J*4);
2094 break;
2095
2096 /* -- Function headers -------------------------------------------------- */
2097
2098 /*
2099 ** Reminder: A function may be called with func/args above L->maxstack,
2100 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
2101 ** too. This means all FUNC* ops (including fast functions) must check
2102 ** for stack overflow _before_ adding more slots!
2103 */
2104
2105 case BC_FUNCF:
2106#if LJ_HASJIT
2107#endif
2108 case BC_FUNCV: /* NYI: compiled vararg functions. */
2109 break;
2110
2111 case BC_JFUNCF:
2112#if !LJ_HASJIT
2113 break;
2114#endif
2115 case BC_IFUNCF:
2116 dasm_put(Dst, 13106, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2117 if (op == BC_JFUNCF) {
2118 dasm_put(Dst, 13136, BC_JLOOP);
2119 } else {
2120 dasm_put(Dst, 7133);
2121 }
2122 dasm_put(Dst, 13145, LJ_TNIL);
2123 break;
2124
2125 case BC_JFUNCV:
2126#if !LJ_HASJIT
2127 break;
2128#endif
2129 dasm_put(Dst, 7101);
2130 break; /* NYI: compiled vararg functions. */
2131
2132 case BC_IFUNCV:
2133 dasm_put(Dst, 13167, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2134 if (op == BC_JFUNCV) {
2135 dasm_put(Dst, 13136, BC_JLOOP);
2136 } else {
2137 dasm_put(Dst, 13258, -4+PC2PROTO(k));
2138 }
2139 dasm_put(Dst, 13281, LJ_TNIL);
2140 break;
2141
2142 case BC_FUNCC:
2143 case BC_FUNCCW:
2144 dasm_put(Dst, 13303, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2145 if (op == BC_FUNCC) {
2146 dasm_put(Dst, 13333);
2147 } else {
2148 dasm_put(Dst, 13337);
2149 }
2150 dasm_put(Dst, 13345, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2151 if (op == BC_FUNCC) {
2152 dasm_put(Dst, 13354);
2153 } else {
2154 dasm_put(Dst, 13358, DISPATCH_GL(wrapf));
2155 }
2156 dasm_put(Dst, 13363, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2128 break; 2157 break;
2129 2158
2130 /* ---------------------------------------------------------------------- */ 2159 /* ---------------------------------------------------------------------- */
@@ -2152,7 +2181,7 @@ static int build_backend(BuildCtx *ctx)
2152 2181
2153 build_subroutines(ctx, cmov, sse); 2182 build_subroutines(ctx, cmov, sse);
2154 2183
2155 dasm_put(Dst, 13494); 2184 dasm_put(Dst, 13388);
2156 for (op = 0; op < BC__MAX; op++) 2185 for (op = 0; op < BC__MAX; op++)
2157 build_ins(ctx, (BCOp)op, op, cmov, sse); 2186 build_ins(ctx, (BCOp)op, op, cmov, sse);
2158 2187
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index fdbefb83..b970278e 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -40,6 +40,7 @@
40|.endif 40|.endif
41| 41|
42|.define RA, ecx 42|.define RA, ecx
43|.define RAH, ch
43|.define RAL, cl 44|.define RAL, cl
44|.define RB, ebp // Must be ebp (C callee-save). 45|.define RB, ebp // Must be ebp (C callee-save).
45|.define RC, eax // Must be eax (fcomparepp and others). 46|.define RC, eax // Must be eax (fcomparepp and others).
@@ -282,6 +283,27 @@
282| .endmacro 283| .endmacro
283|.endif 284|.endif
284| 285|
286|// Call decode and dispatch.
287|.macro ins_callt
288| // BASE = new base, RB = LFUNC, RD = nargs+1, [BASE-4] = PC
289| mov PC, LFUNC:RB->pc
290| mov RA, [PC]
291| movzx OP, RAL
292| movzx RA, RAH
293| add PC, 4
294|.if X64
295| jmp aword [DISPATCH+OP*8]
296|.else
297| jmp aword [DISPATCH+OP*4]
298|.endif
299|.endmacro
300|
301|.macro ins_call
302| // BASE = new base, RB = LFUNC, RD = nargs+1
303| mov [BASE-4], PC
304| ins_callt
305|.endmacro
306|
285|//----------------------------------------------------------------------- 307|//-----------------------------------------------------------------------
286| 308|
287|// Macros to test operand types. 309|// Macros to test operand types.
@@ -394,156 +416,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
394 |.code_sub 416 |.code_sub
395 | 417 |
396 |//----------------------------------------------------------------------- 418 |//-----------------------------------------------------------------------
397 |//-- Call and return handling ------------------------------------------- 419 |//-- Return handling ----------------------------------------------------
398 |//----------------------------------------------------------------------- 420 |//-----------------------------------------------------------------------
399 | 421 |
400 |// Reminder: A call gate may be called with func/args above L->maxstack, 422 |->vm_returnp:
401 |// i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot, 423 | test PC, FRAME_P
402 |// too. This means all call gates (L*, C and fast functions) must check 424 | jz ->cont_dispatch
403 |// for stack overflow _before_ adding more slots!
404 |
405 |//-- Call gates ---------------------------------------------------------
406 |
407 |->gate_lf: // Call gate for fixarg Lua functions.
408 | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = old base), PC = return
409 | // DISPATCH initialized
410 | mov BASE, RA
411 | mov [BASE-4], PC // Store caller PC.
412 | mov PC, LFUNC:RB->pc
413 | movzx RA, byte [PC+PC2PROTO(framesize)]
414 | mov KBASE, [PC+PC2PROTO(k)]
415 | mov L:RB, SAVE_L
416 | lea RA, [BASE+RA*8] // Top of frame.
417 | cmp RA, L:RB->maxstack
418 | ja ->gate_lf_growstack
419 | movzx RA, byte [PC+PC2PROTO(numparams)]
420 | cmp NARGS:RC, RA // Check for missing parameters.
421 | jbe >3
422 |2:
423#if LJ_HASJIT
424 | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
425 | // hotcall RB
426#endif
427 | ins_next
428 |
429 |3: // Clear missing parameters.
430 | mov dword [BASE+NARGS:RC*8-4], LJ_TNIL
431 | add NARGS:RC, 1
432 | cmp NARGS:RC, RA // Check for missing parameters.
433 | jbe <3
434 | jmp <2
435 |
436 |->gate_lv: // Call gate for vararg Lua functions.
437 | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = old base), PC = return
438 | // DISPATCH initialized
439 | mov [RA-4], PC // Store caller PC.
440 | lea PC, [NARGS:RC*8+FRAME_VARG]
441 | lea BASE, [RA+PC-FRAME_VARG]
442 | mov [BASE-8], LFUNC:RB // Store copy of LFUNC.
443 | mov [BASE-4], PC // Store delta + FRAME_VARG.
444 | mov PC, LFUNC:RB->pc
445 | movzx RB, byte [PC+PC2PROTO(framesize)]
446 | lea KBASE, [BASE+RB*8]
447 | mov L:RB, SAVE_L
448 | cmp KBASE, L:RB->maxstack
449 | ja ->gate_lv_growstack // Need to grow stack.
450 | mov RC, BASE
451 | movzx RB, byte [PC+PC2PROTO(numparams)]
452 | test RB, RB
453 | jz >2
454 |1: // Copy fixarg slots up to new frame.
455 | add RA, 8
456 | cmp RA, BASE
457 | jnb >3 // Less args than parameters?
458 | mov KBASE, [RA-8]
459 | mov [RC], KBASE
460 | mov KBASE, [RA-4]
461 | mov [RC+4], KBASE
462 | add RC, 8
463 | mov dword [RA-4], LJ_TNIL // Clear old fixarg slot (help the GC).
464 | sub RB, 1
465 | jnz <1
466 |2:
467 | mov KBASE, [PC+PC2PROTO(k)]
468#if LJ_HASJIT
469 | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
470 | // hotcall RB
471#endif
472 | ins_next
473 |
474 |3: // Clear missing parameters.
475 | mov dword [RC+4], LJ_TNIL
476 | add RC, 8
477 | sub RB, 1
478 | jnz <3
479 | jmp <2
480 | 425 |
481 |->gate_cwrap: // Call gate for wrapped C functions. 426 | // Return from pcall or xpcall fast func.
482 | // RA = new base, RB = CFUNC, RC = nargs+1, (BASE = old base), PC = return 427 | and PC, -8
483 | mov [RA-4], PC 428 | sub BASE, PC // Restore caller base.
484 | mov KBASEa, CFUNC:RB->f 429 | lea RAa, [RA+PC-8] // Rebase RA and prepend one result.
485 | mov L:RB, SAVE_L 430 | mov PC, [BASE-4] // Fetch PC of previous frame.
486 | lea RC, [RA+NARGS:RC*8-8] 431 | // Prepending may overwrite the pcall frame, so do it at the end.
487 | mov L:RB->base, RA 432 | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results.
488 | lea RA, [RC+8*LUA_MINSTACK]
489 | mov L:RB->top, RC
490 | cmp RA, L:RB->maxstack
491 |.if X64
492 | mov CARG2, KBASEa
493 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
494 |.else
495 | mov ARG2, KBASEa
496 | mov ARG1, L:RB
497 |.endif
498 | ja ->gate_c_growstack // Need to grow stack.
499 | set_vmstate C
500 | // (lua_State *L, lua_CFunction f)
501 | call aword [DISPATCH+DISPATCH_GL(wrapf)]
502 | set_vmstate INTERP
503 | // nresults returned in eax (RD).
504 | mov BASE, L:RB->base
505 | lea RA, [BASE+RD*8]
506 | neg RA
507 | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
508 |->vm_returnc:
509 | add RD, 1 // RD = nresults+1
510 | mov MULTRES, RD
511 | test PC, FRAME_TYPE
512 | jz ->BC_RET_Z // Handle regular return to Lua.
513 | jmp ->vm_return
514 | 433 |
515 |->gate_c: // Call gate for C functions.
516 | // RA = new base, RB = CFUNC, RC = nargs+1, (BASE = old base), PC = return
517 | mov [RA-4], PC
518 | mov KBASEa, CFUNC:RB->f
519 | mov L:RB, SAVE_L
520 | lea RC, [RA+NARGS:RC*8-8]
521 | mov L:RB->base, RA
522 | lea RA, [RC+8*LUA_MINSTACK]
523 | mov L:RB->top, RC
524 | cmp RA, L:RB->maxstack
525 |.if X64
526 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
527 |.else
528 | mov ARG1, L:RB
529 |.endif
530 | ja ->gate_c_growstack // Need to grow stack.
531 | set_vmstate C
532 | call KBASEa // (lua_State *L)
533 | set_vmstate INTERP
534 | // nresults returned in eax (RD).
535 | mov BASE, L:RB->base
536 | lea RA, [BASE+RD*8]
537 | neg RA
538 | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
539 |->vm_returnc: 434 |->vm_returnc:
540 | add RD, 1 // RD = nresults+1 435 | add RD, 1 // RD = nresults+1
541 | mov MULTRES, RD 436 | mov MULTRES, RD
542 | test PC, FRAME_TYPE 437 | test PC, FRAME_TYPE
543 | jz ->BC_RET_Z // Handle regular return to Lua. 438 | jz ->BC_RET_Z // Handle regular return to Lua.
544 | // Fallthrough.
545 |
546 |//-- Return handling (non-inline) ---------------------------------------
547 | 439 |
548 |->vm_return: 440 |->vm_return:
549 | // BASE = base, RA = resultofs, RD = nresults+1 (= MULTRES), PC = return 441 | // BASE = base, RA = resultofs, RD = nresults+1 (= MULTRES), PC = return
@@ -654,51 +546,41 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
654 | set_vmstate INTERP 546 | set_vmstate INTERP
655 | jmp ->vm_returnc // Increments RD/MULTRES and returns. 547 | jmp ->vm_returnc // Increments RD/MULTRES and returns.
656 | 548 |
657 |->vm_returnp: 549 |//-----------------------------------------------------------------------
658 | test PC, FRAME_P 550 |//-- Grow stack for calls -----------------------------------------------
659 | jz ->cont_dispatch 551 |//-----------------------------------------------------------------------
660 |
661 | // Return from pcall or xpcall fast func.
662 | and PC, -8
663 | sub BASE, PC // Restore caller base.
664 | lea RAa, [RA+PC-8] // Rebase RA and prepend one result.
665 | mov PC, [BASE-4] // Fetch PC of previous frame.
666 | // Prepending may overwrite the pcall frame, so do it at the end.
667 | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results.
668 | jmp ->vm_returnc // Increments RD/MULTRES and returns.
669 |
670 |//-- Grow stack on-demand -----------------------------------------------
671 | 552 |
672 |->gate_c_growstack: // Grow stack for C function. 553 |->vm_growstack_c: // Grow stack for C function.
673 | mov FCARG2, LUA_MINSTACK 554 | mov FCARG2, LUA_MINSTACK
674 | jmp >1 555 | jmp >2
675 | 556 |
676 |->gate_lv_growstack: // Grow stack for vararg Lua function. 557 |->vm_growstack_v: // Grow stack for vararg Lua function.
677 | mov BASE, RA // Drop vararg frame again. 558 | sub RD, 8
559 | jmp >1
678 | 560 |
679 |->gate_lf_growstack: // Grow stack for fixarg Lua function. 561 |->vm_growstack_f: // Grow stack for fixarg Lua function.
680 | // BASE = new base, RC = nargs+1, RB = L, PC = first PC 562 | // BASE = new base, RD = nargs+1, RB = L, PC = first PC
681 | lea RC, [BASE+NARGS:RC*8-8] 563 | lea RD, [BASE+NARGS:RD*8-8]
682 | movzx RA, byte [PC+PC2PROTO(framesize)] 564 |1:
565 | movzx RA, byte [PC-4+PC2PROTO(framesize)]
683 | add PC, 4 // Must point after first instruction. 566 | add PC, 4 // Must point after first instruction.
684 | mov L:RB->base, BASE 567 | mov L:RB->base, BASE
685 | mov L:RB->top, RC 568 | mov L:RB->top, RD
686 | mov SAVE_PC, PC 569 | mov SAVE_PC, PC
687 | mov FCARG2, RA 570 | mov FCARG2, RA
688 |1: 571 |2:
572 | // RB = L, L->base = new base, L->top = top
689 | mov FCARG1, L:RB 573 | mov FCARG1, L:RB
690 | // L:RB = L, L->base = new base, L->top = top
691 | // SAVE_PC = initial PC+1 (undefined for C functions)
692 | call extern lj_state_growstack@8 // (lua_State *L, int n) 574 | call extern lj_state_growstack@8 // (lua_State *L, int n)
693 | mov RA, L:RB->base 575 | mov BASE, L:RB->base
694 | mov RC, L:RB->top 576 | mov RD, L:RB->top
695 | mov LFUNC:RB, [RA-8] 577 | mov LFUNC:RB, [BASE-8]
696 | mov PC, [RA-4] 578 | mov PC, [BASE-4]
697 | sub RC, RA 579 | sub RD, BASE
698 | shr RC, 3 580 | shr RD, 3
699 | add NARGS:RC, 1 581 | add NARGS:RD, 1
700 | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = invalid), PC restored. 582 | // BASE = new base, RB = LFUNC, RD = nargs+1, PC restored.
701 | jmp aword LFUNC:RB->gate // Just retry call. 583 | ins_callt // Just retry the call.
702 | 584 |
703 |//----------------------------------------------------------------------- 585 |//-----------------------------------------------------------------------
704 |//-- Entry points into the assembler VM --------------------------------- 586 |//-- Entry points into the assembler VM ---------------------------------
@@ -789,16 +671,20 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
789 | add PC, RA 671 | add PC, RA
790 | sub PC, BASE // PC = frame delta + frame type 672 | sub PC, BASE // PC = frame delta + frame type
791 | 673 |
792 | mov RC, L:RB->top 674 | mov RD, L:RB->top
793 | sub RC, RA 675 | sub RD, RA
794 | shr NARGS:RC, 3 676 | shr NARGS:RD, 3
795 | add NARGS:RC, 1 // RC = nargs+1 677 | add NARGS:RD, 1 // RD = nargs+1
796 | 678 |
679 |->vm_call_dispatch:
797 | mov LFUNC:RB, [RA-8] 680 | mov LFUNC:RB, [RA-8]
798 | cmp dword [RA-4], LJ_TFUNC 681 | cmp dword [RA-4], LJ_TFUNC
799 | jne ->vmeta_call // Ensure KBASE defined and != BASE. 682 | jne ->vmeta_call // Ensure KBASE defined and != BASE.
800 | jmp aword LFUNC:RB->gate 683 |
801 | // RA = new base, RB = LFUNC/CFUNC, RC = nargs+1. 684 |->vm_call_dispatch_f:
685 | mov BASE, RA
686 | ins_call
687 | // BASE = new base, RD = nargs+1
802 | 688 |
803 |->vm_cpcall: // Setup protected C frame, call C. 689 |->vm_cpcall: // Setup protected C frame, call C.
804 | // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp) 690 | // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp)
@@ -979,8 +865,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
979 | lea PC, [RA+FRAME_CONT] 865 | lea PC, [RA+FRAME_CONT]
980 | sub PC, BASE 866 | sub PC, BASE
981 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here. 867 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here.
982 | mov NARGS:RC, 3 // 2+1 args for func(t, k). 868 | mov NARGS:RD, 2+1 // 2 args for func(t, k).
983 | jmp aword LFUNC:RB->gate 869 | jmp ->vm_call_dispatch_f
984 | 870 |
985 |//----------------------------------------------------------------------- 871 |//-----------------------------------------------------------------------
986 | 872 |
@@ -1058,8 +944,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1058 | lea PC, [RA+FRAME_CONT] 944 | lea PC, [RA+FRAME_CONT]
1059 | sub PC, BASE 945 | sub PC, BASE
1060 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here. 946 | mov LFUNC:RB, [RA-8] // Guaranteed to be a function here.
1061 | mov NARGS:RC, 4 // 3+1 args for func(t, k, v). 947 | mov NARGS:RD, 3+1 // 3 args for func(t, k, v).
1062 | jmp aword LFUNC:RB->gate 948 | jmp ->vm_call_dispatch_f
1063 | 949 |
1064 |//-- Comparison metamethods --------------------------------------------- 950 |//-- Comparison metamethods ---------------------------------------------
1065 | 951 |
@@ -1206,11 +1092,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1206 | sub RC, BASE 1092 | sub RC, BASE
1207 | mov [RA-12], PC // [cont|PC] 1093 | mov [RA-12], PC // [cont|PC]
1208 | lea PC, [RC+FRAME_CONT] 1094 | lea PC, [RC+FRAME_CONT]
1209 | mov LFUNC:RB, [RA-8] 1095 | mov NARGS:RD, 2+1 // 2 args for func(o1, o2).
1210 | mov NARGS:RC, 3 // 2+1 args for func(o1, o2). 1096 | jmp ->vm_call_dispatch
1211 | cmp dword [RA-4], LJ_TFUNC
1212 | jne ->vmeta_call
1213 | jmp aword LFUNC:RB->gate
1214 | 1097 |
1215 |->vmeta_len: 1098 |->vmeta_len:
1216 | mov L:RB, SAVE_L 1099 | mov L:RB, SAVE_L
@@ -1225,19 +1108,21 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1225 | 1108 |
1226 |//-- Call metamethod ---------------------------------------------------- 1109 |//-- Call metamethod ----------------------------------------------------
1227 | 1110 |
1111 |->vmeta_call_ra:
1112 | lea RA, [BASE+RA*8+8]
1228 |->vmeta_call: // Resolve and call __call metamethod. 1113 |->vmeta_call: // Resolve and call __call metamethod.
1229 | // RA = new base, RC = nargs+1, BASE = old base, PC = return 1114 | // BASE = old base, RA = new base, RC = nargs+1, PC = return
1230 | mov TMP2, RA // Save RA, RC for us. 1115 | mov TMP2, RA // Save RA, RC for us.
1231 | mov TMP1, NARGS:RC 1116 | mov TMP1, NARGS:RD
1232 | sub RA, 8 1117 | sub RA, 8
1233 |.if X64 1118 |.if X64
1234 | mov L:RB, SAVE_L 1119 | mov L:RB, SAVE_L
1235 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE. 1120 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
1236 | mov CARG2d, RA 1121 | mov CARG2d, RA
1237 | lea CARG3d, [RA+NARGS:RC*8] 1122 | lea CARG3d, [RA+NARGS:RD*8]
1238 | mov CARG1d, L:RB // Caveat: CARG1d may be RA. 1123 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
1239 |.else 1124 |.else
1240 | lea RC, [RA+NARGS:RC*8] 1125 | lea RC, [RA+NARGS:RD*8]
1241 | mov L:RB, SAVE_L 1126 | mov L:RB, SAVE_L
1242 | mov ARG2, RA 1127 | mov ARG2, RA
1243 | mov ARG3, RC 1128 | mov ARG3, RC
@@ -1248,13 +1133,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1248 | call extern lj_meta_call // (lua_State *L, TValue *func, TValue *top) 1133 | call extern lj_meta_call // (lua_State *L, TValue *func, TValue *top)
1249 | mov BASE, L:RB->base 1134 | mov BASE, L:RB->base
1250 | mov RA, TMP2 1135 | mov RA, TMP2
1251 | mov NARGS:RC, TMP1 1136 | mov NARGS:RD, TMP1
1252 | mov LFUNC:RB, [RA-8] 1137 | mov LFUNC:RB, [RA-8]
1253 | add NARGS:RC, 1 1138 | add NARGS:RD, 1
1254 | // This is fragile. L->base must not move, KBASE must always be defined. 1139 | // This is fragile. L->base must not move, KBASE must always be defined.
1255 | cmp KBASE, BASE // Continue with CALLT if flag set. 1140 | cmp KBASE, BASE // Continue with CALLT if flag set.
1256 | je ->BC_CALLT_Z 1141 | je ->BC_CALLT_Z
1257 | jmp aword LFUNC:RB->gate // Otherwise call resolved metamethod. 1142 | mov BASE, RA
1143 | ins_call // Otherwise call resolved metamethod.
1258 | 1144 |
1259 |//-- Argument coercion for 'for' statement ------------------------------ 1145 |//-- Argument coercion for 'for' statement ------------------------------
1260 | 1146 |
@@ -1271,9 +1157,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1271 | movzx OP, RCL 1157 | movzx OP, RCL
1272 | shr RC, 16 1158 | shr RC, 16
1273 |.if X64 1159 |.if X64
1274 | jmp aword [DISPATCH+OP*8+BC__MAX*8] // Retry FORI or JFORI. 1160 | jmp aword [DISPATCH+OP*8+GG_DISP2STATIC] // Retry FORI or JFORI.
1275 |.else 1161 |.else
1276 | jmp aword [DISPATCH+OP*4+BC__MAX*4] // Retry FORI or JFORI. 1162 | jmp aword [DISPATCH+OP*4+GG_DISP2STATIC] // Retry FORI or JFORI.
1277 |.endif 1163 |.endif
1278 | 1164 |
1279 |//----------------------------------------------------------------------- 1165 |//-----------------------------------------------------------------------
@@ -1286,31 +1172,31 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1286 | 1172 |
1287 |.macro .ffunc_1, name 1173 |.macro .ffunc_1, name
1288 |->ff_ .. name: 1174 |->ff_ .. name:
1289 | cmp NARGS:RC, 1+1; jb ->fff_fallback 1175 | cmp NARGS:RD, 1+1; jb ->fff_fallback
1290 |.endmacro 1176 |.endmacro
1291 | 1177 |
1292 |.macro .ffunc_2, name 1178 |.macro .ffunc_2, name
1293 |->ff_ .. name: 1179 |->ff_ .. name:
1294 | cmp NARGS:RC, 2+1; jb ->fff_fallback 1180 | cmp NARGS:RD, 2+1; jb ->fff_fallback
1295 |.endmacro 1181 |.endmacro
1296 | 1182 |
1297 |.macro .ffunc_n, name 1183 |.macro .ffunc_n, name
1298 | .ffunc_1 name 1184 | .ffunc_1 name
1299 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1185 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1300 | fld qword [RA] 1186 | fld qword [BASE]
1301 |.endmacro 1187 |.endmacro
1302 | 1188 |
1303 |.macro .ffunc_n, name, op 1189 |.macro .ffunc_n, name, op
1304 | .ffunc_1 name 1190 | .ffunc_1 name
1305 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1191 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1306 | op 1192 | op
1307 | fld qword [RA] 1193 | fld qword [BASE]
1308 |.endmacro 1194 |.endmacro
1309 | 1195 |
1310 |.macro .ffunc_nsse, name, op 1196 |.macro .ffunc_nsse, name, op
1311 | .ffunc_1 name 1197 | .ffunc_1 name
1312 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1198 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1313 | op xmm0, qword [RA] 1199 | op xmm0, qword [BASE]
1314 |.endmacro 1200 |.endmacro
1315 | 1201 |
1316 |.macro .ffunc_nsse, name 1202 |.macro .ffunc_nsse, name
@@ -1319,26 +1205,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1319 | 1205 |
1320 |.macro .ffunc_nn, name 1206 |.macro .ffunc_nn, name
1321 | .ffunc_2 name 1207 | .ffunc_2 name
1322 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1208 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1323 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1209 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1324 | fld qword [RA] 1210 | fld qword [BASE]
1325 | fld qword [RA+8] 1211 | fld qword [BASE+8]
1326 |.endmacro 1212 |.endmacro
1327 | 1213 |
1328 |.macro .ffunc_nnsse, name 1214 |.macro .ffunc_nnsse, name
1329 | .ffunc_1 name 1215 | .ffunc_1 name
1330 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1216 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1331 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1217 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1332 | movsd xmm0, qword [RA] 1218 | movsd xmm0, qword [BASE]
1333 | movsd xmm1, qword [RA+8] 1219 | movsd xmm1, qword [BASE+8]
1334 |.endmacro 1220 |.endmacro
1335 | 1221 |
1336 |.macro .ffunc_nnr, name 1222 |.macro .ffunc_nnr, name
1337 | .ffunc_2 name 1223 | .ffunc_2 name
1338 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1224 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1339 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1225 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1340 | fld qword [RA+8] 1226 | fld qword [BASE+8]
1341 | fld qword [RA] 1227 | fld qword [BASE]
1342 |.endmacro 1228 |.endmacro
1343 | 1229 |
1344 |// Inlined GC threshold check. Caveat: uses label 1. 1230 |// Inlined GC threshold check. Caveat: uses label 1.
@@ -1353,15 +1239,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1353 |//-- Base library: checks ----------------------------------------------- 1239 |//-- Base library: checks -----------------------------------------------
1354 | 1240 |
1355 |.ffunc_1 assert 1241 |.ffunc_1 assert
1356 | mov RB, [RA+4] 1242 | mov RB, [BASE+4]
1357 | cmp RB, LJ_TISTRUECOND; jae ->fff_fallback 1243 | cmp RB, LJ_TISTRUECOND; jae ->fff_fallback
1244 | mov PC, [BASE-4]
1358 | mov MULTRES, RD 1245 | mov MULTRES, RD
1359 | mov [RA-4], RB 1246 | mov [BASE-4], RB
1360 | mov RB, [RA] 1247 | mov RB, [BASE]
1361 | mov [RA-8], RB 1248 | mov [BASE-8], RB
1362 | sub RD, 2 1249 | sub RD, 2
1363 | jz >2 1250 | jz >2
1364 | mov TMP1, RA 1251 | mov RA, BASE
1365 |1: 1252 |1:
1366 | add RA, 8 1253 | add RA, 8
1367 | mov RB, [RA+4] 1254 | mov RB, [RA+4]
@@ -1370,13 +1257,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1370 | mov [RA-8], RB 1257 | mov [RA-8], RB
1371 | sub RD, 1 1258 | sub RD, 1
1372 | jnz <1 1259 | jnz <1
1373 | mov RA, TMP1
1374 |2: 1260 |2:
1375 | mov RD, MULTRES 1261 | mov RD, MULTRES
1376 | jmp ->fff_res_ 1262 | jmp ->fff_res_
1377 | 1263 |
1378 |.ffunc_1 type 1264 |.ffunc_1 type
1379 | mov RB, [RA+4] 1265 | mov RB, [BASE+4]
1380 | mov RC, ~LJ_TNUMX 1266 | mov RC, ~LJ_TNUMX
1381 | not RB 1267 | not RB
1382 | cmp RC, RB 1268 | cmp RC, RB
@@ -1385,29 +1271,29 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1385 ||} else { 1271 ||} else {
1386 | jbe >1; mov RC, RB; 1: 1272 | jbe >1; mov RC, RB; 1:
1387 ||} 1273 ||}
1388 | mov CFUNC:RB, [RA-8] 1274 | mov CFUNC:RB, [BASE-8]
1389 | mov STR:RC, [CFUNC:RB+RC*8+((char *)(&((GCfuncC *)0)->upvalue))] 1275 | mov STR:RC, [CFUNC:RB+RC*8+((char *)(&((GCfuncC *)0)->upvalue))]
1390 | mov dword [RA-4], LJ_TSTR 1276 | mov PC, [BASE-4]
1391 | mov [RA-8], STR:RC 1277 | mov dword [BASE-4], LJ_TSTR
1278 | mov [BASE-8], STR:RC
1392 | jmp ->fff_res1 1279 | jmp ->fff_res1
1393 | 1280 |
1394 |//-- Base library: getters and setters --------------------------------- 1281 |//-- Base library: getters and setters ---------------------------------
1395 | 1282 |
1396 |.ffunc_1 getmetatable 1283 |.ffunc_1 getmetatable
1397 | mov RB, [RA+4] 1284 | mov RB, [BASE+4]
1285 | mov PC, [BASE-4]
1398 | cmp RB, LJ_TTAB; jne >6 1286 | cmp RB, LJ_TTAB; jne >6
1399 |1: // Field metatable must be at same offset for GCtab and GCudata! 1287 |1: // Field metatable must be at same offset for GCtab and GCudata!
1400 | mov TAB:RB, [RA] 1288 | mov TAB:RB, [BASE]
1401 | mov TAB:RB, TAB:RB->metatable 1289 | mov TAB:RB, TAB:RB->metatable
1402 |2: 1290 |2:
1403 | test TAB:RB, TAB:RB 1291 | test TAB:RB, TAB:RB
1404 | mov dword [RA-4], LJ_TNIL 1292 | mov dword [BASE-4], LJ_TNIL
1405 | jz ->fff_res1 1293 | jz ->fff_res1
1406 | mov CFUNC:RC, [RA-8]
1407 | mov STR:RC, [DISPATCH+DISPATCH_GL(mmname)+4*MM_metatable] 1294 | mov STR:RC, [DISPATCH+DISPATCH_GL(mmname)+4*MM_metatable]
1408 | mov dword [RA-4], LJ_TTAB // Store metatable as default result. 1295 | mov dword [BASE-4], LJ_TTAB // Store metatable as default result.
1409 | mov [RA-8], TAB:RB 1296 | mov [BASE-8], TAB:RB
1410 | mov TMP1, RA // Save result pointer.
1411 | mov RA, TAB:RB->hmask 1297 | mov RA, TAB:RB->hmask
1412 | and RA, STR:RC->hash 1298 | and RA, STR:RC->hash
1413 | imul RA, #NODE 1299 | imul RA, #NODE
@@ -1424,11 +1310,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1424 | jmp ->fff_res1 // Not found, keep default result. 1310 | jmp ->fff_res1 // Not found, keep default result.
1425 |5: 1311 |5:
1426 | mov RB, [RA+4] 1312 | mov RB, [RA+4]
1427 | cmp RB, LJ_TNIL; je ->fff_res1 // Dito for nil value. 1313 | cmp RB, LJ_TNIL; je ->fff_res1 // Ditto for nil value.
1428 | mov RC, [RA] 1314 | mov RC, [RA]
1429 | mov RA, TMP1 // Restore result pointer. 1315 | mov [BASE-4], RB // Return value of mt.__metatable.
1430 | mov [RA-4], RB // Return value of mt.__metatable. 1316 | mov [BASE-8], RC
1431 | mov [RA-8], RC
1432 | jmp ->fff_res1 1317 | jmp ->fff_res1
1433 | 1318 |
1434 |6: 1319 |6:
@@ -1441,15 +1326,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1441 | jmp <2 1326 | jmp <2
1442 | 1327 |
1443 |.ffunc_2 setmetatable 1328 |.ffunc_2 setmetatable
1444 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1329 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1445 | // Fast path: no mt for table yet and not clearing the mt. 1330 | // Fast path: no mt for table yet and not clearing the mt.
1446 | mov TAB:RB, [RA] 1331 | mov TAB:RB, [BASE]
1447 | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback 1332 | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback
1448 | cmp dword [RA+12], LJ_TTAB; jne ->fff_fallback 1333 | cmp dword [BASE+12], LJ_TTAB; jne ->fff_fallback
1449 | mov TAB:RC, [RA+8] 1334 | mov TAB:RC, [BASE+8]
1450 | mov TAB:RB->metatable, TAB:RC 1335 | mov TAB:RB->metatable, TAB:RC
1451 | mov dword [RA-4], LJ_TTAB // Return original table. 1336 | mov PC, [BASE-4]
1452 | mov [RA-8], TAB:RB 1337 | mov dword [BASE-4], LJ_TTAB // Return original table.
1338 | mov [BASE-8], TAB:RB
1453 | test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table) 1339 | test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table)
1454 | jz >1 1340 | jz >1
1455 | // Possible write barrier. Table is black, but skip iswhite(mt) check. 1341 | // Possible write barrier. Table is black, but skip iswhite(mt) check.
@@ -1458,70 +1344,73 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1458 | jmp ->fff_res1 1344 | jmp ->fff_res1
1459 | 1345 |
1460 |.ffunc_2 rawget 1346 |.ffunc_2 rawget
1461 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1347 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1462 |.if X64 1348 |.if X64WIN
1463 | mov TMP1, BASE // Save BASE and RA. 1349 | mov RB, BASE // Save BASE.
1464 | mov RB, RA 1350 | lea CARG3d, [BASE+8]
1465 | mov CARG2d, [RA] 1351 | mov CARG2d, [BASE] // Caveat: CARG2d == BASE.
1466 | lea CARG3d, [RA+8] 1352 | mov CARG1d, SAVE_L
1467 | mov CARG1d, SAVE_L // Caveat: CARG1d may be RA. 1353 |.elif X64
1354 | mov RB, BASE // Save BASE.
1355 | mov CARG2d, [BASE]
1356 | lea CARG3d, [BASE+8] // Caveat: CARG3d == BASE.
1357 | mov CARG1d, SAVE_L
1468 |.else 1358 |.else
1469 | mov TAB:RC, [RA] 1359 | mov TAB:RD, [BASE]
1470 | mov L:RB, SAVE_L 1360 | mov L:RB, SAVE_L
1471 | mov ARG2, TAB:RC 1361 | mov ARG2, TAB:RD
1472 | mov ARG1, L:RB 1362 | mov ARG1, L:RB
1473 | mov RB, RA 1363 | mov RB, BASE // Save BASE.
1474 | mov TMP1, BASE // Save BASE and RA. 1364 | add BASE, 8
1475 | add RA, 8 1365 | mov ARG3, BASE
1476 | mov ARG3, RA
1477 |.endif 1366 |.endif
1478 | call extern lj_tab_get // (lua_State *L, GCtab *t, cTValue *key) 1367 | call extern lj_tab_get // (lua_State *L, GCtab *t, cTValue *key)
1479 | // cTValue * returned in eax (RC). 1368 | // cTValue * returned in eax (RD).
1480 | mov RA, RB 1369 | mov BASE, RB // Restore BASE.
1481 | mov BASE, TMP1 1370 | mov RB, [RD] // Copy table slot.
1482 | mov RB, [RC] // Copy table slot. 1371 | mov RD, [RD+4]
1483 | mov RC, [RC+4] 1372 | mov PC, [BASE-4]
1484 | mov [RA-8], RB 1373 | mov [BASE-8], RB
1485 | mov [RA-4], RC 1374 | mov [BASE-4], RD
1486 | jmp ->fff_res1 1375 | jmp ->fff_res1
1487 | 1376 |
1488 |//-- Base library: conversions ------------------------------------------ 1377 |//-- Base library: conversions ------------------------------------------
1489 | 1378 |
1490 |.ffunc tonumber 1379 |.ffunc tonumber
1491 | // Only handles the number case inline (without a base argument). 1380 | // Only handles the number case inline (without a base argument).
1492 | cmp NARGS:RC, 1+1; jne ->fff_fallback // Exactly one argument. 1381 | cmp NARGS:RD, 1+1; jne ->fff_fallback // Exactly one argument.
1493 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1382 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1494 if (sse) { 1383 if (sse) {
1495 | movsd xmm0, qword [RA]; jmp ->fff_resxmm0 1384 | movsd xmm0, qword [BASE]; jmp ->fff_resxmm0
1496 } else { 1385 } else {
1497 | fld qword [RA]; jmp ->fff_resn 1386 | fld qword [BASE]; jmp ->fff_resn
1498 } 1387 }
1499 | 1388 |
1500 |.ffunc_1 tostring 1389 |.ffunc_1 tostring
1501 | // Only handles the string or number case inline. 1390 | // Only handles the string or number case inline.
1502 | cmp dword [RA+4], LJ_TSTR; jne >3 1391 | mov PC, [BASE-4]
1392 | cmp dword [BASE+4], LJ_TSTR; jne >3
1503 | // A __tostring method in the string base metatable is ignored. 1393 | // A __tostring method in the string base metatable is ignored.
1504 | mov STR:RC, [RA] 1394 | mov STR:RD, [BASE]
1505 |2: 1395 |2:
1506 | mov dword [RA-4], LJ_TSTR 1396 | mov dword [BASE-4], LJ_TSTR
1507 | mov [RA-8], STR:RC 1397 | mov [BASE-8], STR:RD
1508 | jmp ->fff_res1 1398 | jmp ->fff_res1
1509 |3: // Handle numbers inline, unless a number base metatable is present. 1399 |3: // Handle numbers inline, unless a number base metatable is present.
1510 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 1400 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
1511 | cmp dword [DISPATCH+DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM])], 0 1401 | cmp dword [DISPATCH+DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM])], 0
1512 | jne ->fff_fallback 1402 | jne ->fff_fallback
1513 | ffgccheck // Caveat: uses label 1. 1403 | ffgccheck // Caveat: uses label 1.
1514 | mov L:RB, SAVE_L 1404 | mov L:RB, SAVE_L
1515 | mov L:RB->base, RA // Add frame since C call can throw. 1405 | mov L:RB->base, BASE // Add frame since C call can throw.
1516 | mov [RA-4], PC
1517 | mov SAVE_PC, PC // Redundant (but a defined value). 1406 | mov SAVE_PC, PC // Redundant (but a defined value).
1518 | mov TMP1, BASE // Save BASE. 1407 |.if X64 and not X64WIN
1519 | mov FCARG2, RA // Caveat: FCARG2 == BASE 1408 | mov FCARG2, BASE // Otherwise: FCARG2 == BASE
1520 | mov L:FCARG1, L:RB // Caveat: FCARG1 == RA 1409 |.endif
1410 | mov L:FCARG1, L:RB
1521 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np) 1411 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np)
1522 | // GCstr returned in eax (RC). 1412 | // GCstr returned in eax (RD).
1523 | mov RA, L:RB->base 1413 | mov BASE, L:RB->base
1524 | mov BASE, TMP1
1525 | jmp <2 1414 | jmp <2
1526 | 1415 |
1527 |//-- Base library: iterators ------------------------------------------- 1416 |//-- Base library: iterators -------------------------------------------
@@ -1529,120 +1418,117 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1529 |.ffunc_1 next 1418 |.ffunc_1 next
1530 | je >2 // Missing 2nd arg? 1419 | je >2 // Missing 2nd arg?
1531 |1: 1420 |1:
1532 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1421 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1533 |.if X64
1534 | mov TMP1, BASE // Save BASE.
1535 | mov CARG2d, [RA]
1536 | mov L:RB, SAVE_L 1422 | mov L:RB, SAVE_L
1537 | mov L:RB->base, RA // Add frame since C call can throw. 1423 | mov L:RB->base, BASE // Add frame since C call can throw.
1538 | mov [RA-4], PC 1424 | mov PC, [BASE-4]
1539 | lea CARG3d, [RA+8] 1425 |.if X64WIN
1540 | mov CARG1d, L:RB // Caveat: CARG1d may be RA. 1426 | lea CARG3d, [BASE+8]
1427 | mov CARG2d, [BASE] // Caveat: CARG2d == BASE.
1428 | mov CARG1d, L:RB
1429 |.elif X64
1430 | mov CARG2d, [BASE]
1431 | lea CARG3d, [BASE+8] // Caveat: CARG3d == BASE.
1432 | mov CARG1d, L:RB
1541 |.else 1433 |.else
1542 | mov TAB:RB, [RA] 1434 | mov TAB:RD, [BASE]
1543 | mov ARG2, TAB:RB 1435 | mov ARG2, TAB:RD
1544 | mov L:RB, SAVE_L
1545 | mov ARG1, L:RB 1436 | mov ARG1, L:RB
1546 | mov L:RB->base, RA // Add frame since C call can throw. 1437 | add BASE, 8
1547 | mov [RA-4], PC 1438 | mov ARG3, BASE
1548 | mov TMP1, BASE // Save BASE.
1549 | add RA, 8
1550 | mov ARG3, RA
1551 |.endif 1439 |.endif
1552 | mov SAVE_PC, PC // Redundant (but a defined value). 1440 | mov SAVE_PC, PC // Redundant (but a defined value).
1553 | call extern lj_tab_next // (lua_State *L, GCtab *t, TValue *key) 1441 | call extern lj_tab_next // (lua_State *L, GCtab *t, TValue *key)
1554 | // Flag returned in eax (RC). 1442 | // Flag returned in eax (RD).
1555 | mov RA, L:RB->base 1443 | mov BASE, L:RB->base
1556 | mov BASE, TMP1 1444 | test RD, RD; jz >3 // End of traversal?
1557 | test RC, RC; jz >3 // End of traversal? 1445 | mov RB, [BASE+8] // Copy key and value to results.
1558 | mov RB, [RA+8] // Copy key and value to results. 1446 | mov RD, [BASE+12]
1559 | mov RC, [RA+12] 1447 | mov [BASE-8], RB
1560 | mov [RA-8], RB 1448 | mov [BASE-4], RD
1561 | mov [RA-4], RC 1449 | mov RB, [BASE+16]
1562 | mov RB, [RA+16] 1450 | mov RD, [BASE+20]
1563 | mov RC, [RA+20] 1451 | mov [BASE], RB
1564 | mov [RA], RB 1452 | mov [BASE+4], RD
1565 | mov [RA+4], RC
1566 |->fff_res2: 1453 |->fff_res2:
1567 | mov RD, 1+2 1454 | mov RD, 1+2
1568 | jmp ->fff_res 1455 | jmp ->fff_res
1569 |2: // Set missing 2nd arg to nil. 1456 |2: // Set missing 2nd arg to nil.
1570 | mov dword [RA+12], LJ_TNIL 1457 | mov dword [BASE+12], LJ_TNIL
1571 | jmp <1 1458 | jmp <1
1572 |3: // End of traversal: return nil. 1459 |3: // End of traversal: return nil.
1573 | mov dword [RA-4], LJ_TNIL 1460 | mov dword [BASE-4], LJ_TNIL
1574 | jmp ->fff_res1 1461 | jmp ->fff_res1
1575 | 1462 |
1576 |.ffunc_1 pairs 1463 |.ffunc_1 pairs
1577 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1464 | mov CFUNC:RB, [BASE-8]
1578 | mov CFUNC:RC, CFUNC:RB->upvalue[0] 1465 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1579 | mov dword [RA-4], LJ_TFUNC 1466 | mov CFUNC:RD, CFUNC:RB->upvalue[0]
1580 | mov [RA-8], CFUNC:RC 1467 | mov PC, [BASE-4]
1581 | mov dword [RA+12], LJ_TNIL 1468 | mov dword [BASE-4], LJ_TFUNC
1469 | mov [BASE-8], CFUNC:RD
1470 | mov dword [BASE+12], LJ_TNIL
1582 | mov RD, 1+3 1471 | mov RD, 1+3
1583 | jmp ->fff_res 1472 | jmp ->fff_res
1584 | 1473 |
1585 |.ffunc_1 ipairs_aux 1474 |.ffunc_1 ipairs_aux
1586 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1475 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1587 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 1476 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
1477 | mov PC, [BASE-4]
1588 if (sse) { 1478 if (sse) {
1589 | movsd xmm0, qword [RA+8] 1479 | movsd xmm0, qword [BASE+8]
1590 | sseconst_1 xmm1, RBa 1480 | sseconst_1 xmm1, RBa
1591 | addsd xmm0, xmm1 1481 | addsd xmm0, xmm1
1592 | cvtsd2si RC, xmm0 1482 | cvtsd2si RD, xmm0
1593 | movsd qword [RA-8], xmm0 1483 | movsd qword [BASE-8], xmm0
1594 } else { 1484 } else {
1595 |.if not X64 1485 |.if not X64
1596 | fld qword [RA+8] 1486 | fld qword [BASE+8]
1597 | fld1 1487 | fld1
1598 | faddp st1 1488 | faddp st1
1599 | fist ARG1 1489 | fist ARG1
1600 | fstp qword [RA-8] 1490 | fstp qword [BASE-8]
1601 | mov RC, ARG1 1491 | mov RD, ARG1
1602 |.endif 1492 |.endif
1603 } 1493 }
1604 | mov TAB:RB, [RA] 1494 | mov TAB:RB, [BASE]
1605 | cmp RC, TAB:RB->asize; jae >2 // Not in array part? 1495 | cmp RD, TAB:RB->asize; jae >2 // Not in array part?
1606 | shl RC, 3 1496 | shl RD, 3
1607 | add RC, TAB:RB->array 1497 | add RD, TAB:RB->array
1608 |1: 1498 |1:
1609 | cmp dword [RC+4], LJ_TNIL; je ->fff_res0 1499 | cmp dword [RD+4], LJ_TNIL; je ->fff_res0
1610 | mov RB, [RC] // Copy array slot. 1500 | mov RB, [RD] // Copy array slot.
1611 | mov RC, [RC+4] 1501 | mov RD, [RD+4]
1612 | mov [RA], RB 1502 | mov [BASE], RB
1613 | mov [RA+4], RC 1503 | mov [BASE+4], RD
1614 | jmp ->fff_res2 1504 | jmp ->fff_res2
1615 |2: // Check for empty hash part first. Otherwise call C function. 1505 |2: // Check for empty hash part first. Otherwise call C function.
1616 | cmp dword TAB:RB->hmask, 0; je ->fff_res0 1506 | cmp dword TAB:RB->hmask, 0; je ->fff_res0
1617 | mov TMP1, BASE // Save BASE and RA.
1618 |.if X64 and not X64WIN
1619 | mov FCARG1, TAB:RB 1507 | mov FCARG1, TAB:RB
1620 | mov RB, RA 1508 | mov RB, BASE // Save BASE.
1621 |.else 1509 | mov FCARG2, RD // Caveat: FCARG2 == BASE
1622 | xchg FCARG1, TAB:RB // Caveat: FCARG1 == RA
1623 |.endif
1624 | mov FCARG2, RC
1625 | call extern lj_tab_getinth@8 // (GCtab *t, int32_t key) 1510 | call extern lj_tab_getinth@8 // (GCtab *t, int32_t key)
1626 | // cTValue * or NULL returned in eax (RC). 1511 | // cTValue * or NULL returned in eax (RD).
1627 | mov RA, RB 1512 | mov BASE, RB
1628 | mov BASE, TMP1 1513 | test RD, RD
1629 | test RC, RC
1630 | jnz <1 1514 | jnz <1
1631 |->fff_res0: 1515 |->fff_res0:
1632 | mov RD, 1+0 1516 | mov RD, 1+0
1633 | jmp ->fff_res 1517 | jmp ->fff_res
1634 | 1518 |
1635 |.ffunc_1 ipairs 1519 |.ffunc_1 ipairs
1636 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1520 | mov CFUNC:RB, [BASE-8]
1637 | mov CFUNC:RC, CFUNC:RB->upvalue[0] 1521 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1638 | mov dword [RA-4], LJ_TFUNC 1522 | mov CFUNC:RD, CFUNC:RB->upvalue[0]
1639 | mov [RA-8], CFUNC:RC 1523 | mov PC, [BASE-4]
1524 | mov dword [BASE-4], LJ_TFUNC
1525 | mov [BASE-8], CFUNC:RD
1640 if (sse) { 1526 if (sse) {
1641 | xorps xmm0, xmm0 1527 | xorps xmm0, xmm0
1642 | movsd qword [RA+8], xmm0 1528 | movsd qword [BASE+8], xmm0
1643 } else { 1529 } else {
1644 | fldz 1530 | fldz
1645 | fstp qword [RA+8] 1531 | fstp qword [BASE+8]
1646 } 1532 }
1647 | mov RD, 1+3 1533 | mov RD, 1+3
1648 | jmp ->fff_res 1534 | jmp ->fff_res
@@ -1650,54 +1536,42 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1650 |//-- Base library: catch errors ---------------------------------------- 1536 |//-- Base library: catch errors ----------------------------------------
1651 | 1537 |
1652 |.ffunc_1 pcall 1538 |.ffunc_1 pcall
1653 | mov [RA-4], PC 1539 | lea RA, [BASE+8]
1540 | sub NARGS:RD, 1
1654 | mov PC, 8+FRAME_PCALL 1541 | mov PC, 8+FRAME_PCALL
1655 | mov BASE, RA
1656 | add RA, 8
1657 | sub NARGS:RC, 1
1658 | mov LFUNC:RB, [RA-8]
1659 |1: 1542 |1:
1660 | test byte [DISPATCH+DISPATCH_GL(hookmask)], HOOK_ACTIVE 1543 | movzx RB, byte [DISPATCH+DISPATCH_GL(hookmask)]
1661 | jnz >3 // Hook active before pcall? 1544 | shr RB, HOOK_ACTIVE_SHIFT
1662 |2: 1545 | and RB, 1
1663 | cmp dword [RA-4], LJ_TFUNC 1546 | add PC, RB // Remember active hook before pcall.
1664 | jne ->vmeta_call // Ensure KBASE defined and != BASE. 1547 | jmp ->vm_call_dispatch
1665 | jmp aword LFUNC:RB->gate
1666 |3:
1667 | add PC, 1 // Use FRAME_PCALLH if hook was active.
1668 | jmp <2
1669 | 1548 |
1670 |.ffunc_2 xpcall 1549 |.ffunc_2 xpcall
1671 | cmp dword [RA+12], LJ_TFUNC; jne ->fff_fallback 1550 | cmp dword [BASE+12], LJ_TFUNC; jne ->fff_fallback
1672 | mov [RA-4], PC 1551 | mov RB, [BASE+4] // Swap function and traceback.
1673 | mov RB, [RA+4] // Swap function and traceback. 1552 | mov [BASE+12], RB
1674 | mov [RA+12], RB 1553 | mov dword [BASE+4], LJ_TFUNC
1675 | mov dword [RA+4], LJ_TFUNC 1554 | mov LFUNC:RB, [BASE]
1676 | mov LFUNC:RB, [RA] 1555 | mov PC, [BASE+8]
1677 | mov PC, [RA+8] 1556 | mov [BASE+8], LFUNC:RB
1678 | mov [RA+8], LFUNC:RB 1557 | mov [BASE], PC
1679 | mov [RA], PC 1558 | lea RA, [BASE+16]
1680 | mov PC, 2*8+FRAME_PCALL 1559 | sub NARGS:RD, 2
1681 | mov BASE, RA 1560 | mov PC, 16+FRAME_PCALL
1682 | add RA, 2*8
1683 | sub NARGS:RC, 2
1684 | jmp <1 1561 | jmp <1
1685 | 1562 |
1686 |//-- Coroutine library -------------------------------------------------- 1563 |//-- Coroutine library --------------------------------------------------
1687 | 1564 |
1688 |.macro coroutine_resume_wrap, resume 1565 |.macro coroutine_resume_wrap, resume
1689 |9: // Need to restore PC for fallback handler.
1690 | mov PC, SAVE_PC
1691 | jmp ->fff_fallback
1692 |
1693 |.if resume 1566 |.if resume
1694 |.ffunc_1 coroutine_resume 1567 |.ffunc_1 coroutine_resume
1695 | mov L:RB, [RA] 1568 | mov L:RB, [BASE]
1696 |.else 1569 |.else
1697 |.ffunc coroutine_wrap_aux 1570 |.ffunc coroutine_wrap_aux
1571 | mov CFUNC:RB, [BASE-8]
1698 | mov L:RB, CFUNC:RB->upvalue[0].gcr 1572 | mov L:RB, CFUNC:RB->upvalue[0].gcr
1699 |.endif 1573 |.endif
1700 | mov [RA-4], PC 1574 | mov PC, [BASE-4]
1701 | mov SAVE_PC, PC 1575 | mov SAVE_PC, PC
1702 |.if X64 1576 |.if X64
1703 | mov TMP1, L:RB 1577 | mov TMP1, L:RB
@@ -1705,60 +1579,52 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1705 | mov ARG1, L:RB 1579 | mov ARG1, L:RB
1706 |.endif 1580 |.endif
1707 |.if resume 1581 |.if resume
1708 | cmp dword [RA+4], LJ_TTHREAD; jne <9 1582 | cmp dword [BASE+4], LJ_TTHREAD; jne ->fff_fallback
1709 |.endif
1710 | cmp aword L:RB->cframe, 0; jne <9
1711 | cmp byte L:RB->status, LUA_YIELD; ja <9
1712 | mov PC, L:RB->top
1713 |.if X64
1714 | mov TMP2, PC
1715 |.else
1716 | mov ARG2, PC
1717 |.endif 1583 |.endif
1584 | cmp aword L:RB->cframe, 0; jne ->fff_fallback
1585 | cmp byte L:RB->status, LUA_YIELD; ja ->fff_fallback
1586 | mov RA, L:RB->top
1718 | je >1 // Status != LUA_YIELD (i.e. 0)? 1587 | je >1 // Status != LUA_YIELD (i.e. 0)?
1719 | cmp PC, L:RB->base; je <9 // Check for presence of initial func. 1588 | cmp RA, L:RB->base // Check for presence of initial func.
1589 | je ->fff_fallback
1720 |1: 1590 |1:
1721 |.if resume 1591 |.if resume
1722 | lea PC, [PC+NARGS:RC*8-16] // Check stack space (-1-thread). 1592 | lea PC, [RA+NARGS:RD*8-16] // Check stack space (-1-thread).
1723 |.else 1593 |.else
1724 | lea PC, [PC+NARGS:RC*8-8] // Check stack space (-1). 1594 | lea PC, [RA+NARGS:RD*8-8] // Check stack space (-1).
1725 |.endif 1595 |.endif
1726 | cmp PC, L:RB->maxstack; ja <9 1596 | cmp PC, L:RB->maxstack; ja ->fff_fallback
1727 | mov L:RB->top, PC 1597 | mov L:RB->top, PC
1728 | 1598 |
1729 | mov L:RB, SAVE_L 1599 | mov L:RB, SAVE_L
1730 | mov L:RB->base, RA 1600 | mov L:RB->base, BASE
1731 |.if resume 1601 |.if resume
1732 | add RA, 8 // Keep resumed thread in stack for GC. 1602 | add BASE, 8 // Keep resumed thread in stack for GC.
1733 |.endif
1734 | mov L:RB->top, RA
1735 |.if X64
1736 | mov RB, TMP2
1737 |.else
1738 | mov RB, ARG2
1739 |.endif 1603 |.endif
1604 | mov L:RB->top, BASE
1740 |.if resume 1605 |.if resume
1741 | lea RA, [RA+NARGS:RC*8-24] // RA = end of source for stack move. 1606 | lea RB, [BASE+NARGS:RD*8-24] // RB = end of source for stack move.
1742 |.else 1607 |.else
1743 | lea RA, [RA+NARGS:RC*8-16] // RA = end of source for stack move. 1608 | lea RB, [BASE+NARGS:RD*8-16] // RB = end of source for stack move.
1744 |.endif 1609 |.endif
1745 | sub RAa, PCa // Relative to PC. 1610 | sub RBa, PCa // Relative to PC.
1746 | 1611 |
1747 | cmp PC, RB 1612 | cmp PC, RA
1748 | je >3 1613 | je >3
1749 |2: // Move args to coroutine. 1614 |2: // Move args to coroutine.
1750 | mov RC, [PC+RA+4] 1615 | mov RC, [PC+RB+4]
1751 | mov [PC-4], RC 1616 | mov [PC-4], RC
1752 | mov RC, [PC+RA] 1617 | mov RC, [PC+RB]
1753 | mov [PC-8], RC 1618 | mov [PC-8], RC
1754 | sub PC, 8 1619 | sub PC, 8
1755 | cmp PC, RB 1620 | cmp PC, RA
1756 | jne <2 1621 | jne <2
1757 |3: 1622 |3:
1758 |.if X64 1623 |.if X64
1624 | mov CARG2d, RA
1759 | mov CARG1d, TMP1 1625 | mov CARG1d, TMP1
1760 | mov CARG2d, TMP2
1761 |.else 1626 |.else
1627 | mov ARG2, RA
1762 | xor RA, RA 1628 | xor RA, RA
1763 | mov ARG4, RA 1629 | mov ARG4, RA
1764 | mov ARG3, RA 1630 | mov ARG3, RA
@@ -1854,12 +1720,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1854 | 1720 |
1855 |.ffunc coroutine_yield 1721 |.ffunc coroutine_yield
1856 | mov L:RB, SAVE_L 1722 | mov L:RB, SAVE_L
1857 | mov [RA-4], PC
1858 | test aword L:RB->cframe, CFRAME_RESUME 1723 | test aword L:RB->cframe, CFRAME_RESUME
1859 | jz ->fff_fallback 1724 | jz ->fff_fallback
1860 | mov L:RB->base, RA 1725 | mov L:RB->base, BASE
1861 | lea RC, [RA+NARGS:RC*8-8] 1726 | lea RD, [BASE+NARGS:RD*8-8]
1862 | mov L:RB->top, RC 1727 | mov L:RB->top, RD
1863 | xor RD, RD 1728 | xor RD, RD
1864 | mov aword L:RB->cframe, RDa 1729 | mov aword L:RB->cframe, RDa
1865 | mov al, LUA_YIELD 1730 | mov al, LUA_YIELD
@@ -1870,14 +1735,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1870 | 1735 |
1871 if (sse) { 1736 if (sse) {
1872 |->fff_resn: 1737 |->fff_resn:
1873 | fstp qword [RA-8] 1738 | mov PC, [BASE-4]
1739 | fstp qword [BASE-8]
1874 | jmp ->fff_res1 1740 | jmp ->fff_res1
1875 | 1741 |
1876 |.ffunc_nsse math_abs 1742 |.ffunc_nsse math_abs
1877 | sseconst_abs xmm1, RDa 1743 | sseconst_abs xmm1, RDa
1878 | andps xmm0, xmm1 1744 | andps xmm0, xmm1
1879 |->fff_resxmm0: 1745 |->fff_resxmm0:
1880 | movsd qword [RA-8], xmm0 1746 | mov PC, [BASE-4]
1747 | movsd qword [BASE-8], xmm0
1881 | // fallthrough 1748 | // fallthrough
1882 } else { 1749 } else {
1883 |.ffunc_n math_abs 1750 |.ffunc_n math_abs
@@ -1885,7 +1752,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1885 | // fallthrough 1752 | // fallthrough
1886 |->fff_resxmm0: // Dummy. 1753 |->fff_resxmm0: // Dummy.
1887 |->fff_resn: 1754 |->fff_resn:
1888 | fstp qword [RA-8] 1755 | mov PC, [BASE-4]
1756 | fstp qword [BASE-8]
1889 } 1757 }
1890 |->fff_res1: 1758 |->fff_res1:
1891 | mov RD, 1+1 1759 | mov RD, 1+1
@@ -1897,16 +1765,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1897 |5: 1765 |5:
1898 | cmp PC_RB, RDL // More results expected? 1766 | cmp PC_RB, RDL // More results expected?
1899 | ja >6 1767 | ja >6
1900 | // BASE and KBASE are assumed to be set for the calling frame. 1768 | // Adjust BASE. KBASE is assumed to be set for the calling frame.
1769 | movzx RA, PC_RA
1770 | not RAa // Note: ~RA = -(RA+1)
1771 | lea BASE, [BASE+RA*8] // base = base - (RA+1)*8
1901 | ins_next 1772 | ins_next
1902 | 1773 |
1903 |6: // Fill up results with nil. 1774 |6: // Fill up results with nil.
1904 | mov dword [RA+RD*8-12], LJ_TNIL 1775 | mov dword [BASE+RD*8-12], LJ_TNIL
1905 | add RD, 1 1776 | add RD, 1
1906 | jmp <5 1777 | jmp <5
1907 | 1778 |
1908 |7: // Non-standard return case. 1779 |7: // Non-standard return case.
1909 | mov BASE, RA
1910 | mov RAa, -8 // Results start at BASE+RA = BASE-8. 1780 | mov RAa, -8 // Results start at BASE+RA = BASE-8.
1911 | jmp ->vm_return 1781 | jmp ->vm_return
1912 | 1782 |
@@ -1948,10 +1818,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1948 | fstp FPARG1 1818 | fstp FPARG1
1949 | .endif 1819 | .endif
1950 ||} 1820 ||}
1951 | mov TMP1, RA
1952 | mov RB, BASE 1821 | mov RB, BASE
1953 | call extern lj_wrapper_ .. func 1822 | call extern lj_wrapper_ .. func
1954 | mov RA, TMP1
1955 | mov BASE, RB 1823 | mov BASE, RB
1956 | .if X64 1824 | .if X64
1957 | jmp ->fff_resxmm0 1825 | jmp ->fff_resxmm0
@@ -1967,10 +1835,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1967 |->ff_math_deg: 1835 |->ff_math_deg:
1968 if (sse) { 1836 if (sse) {
1969 |.ffunc_nsse math_rad 1837 |.ffunc_nsse math_rad
1838 | mov CFUNC:RB, [BASE-8]
1970 | mulsd xmm0, qword CFUNC:RB->upvalue[0] 1839 | mulsd xmm0, qword CFUNC:RB->upvalue[0]
1971 | jmp ->fff_resxmm0 1840 | jmp ->fff_resxmm0
1972 } else { 1841 } else {
1973 |.ffunc_n math_rad 1842 |.ffunc_n math_rad
1843 | mov CFUNC:RB, [BASE-8]
1974 | fmul qword CFUNC:RB->upvalue[0] 1844 | fmul qword CFUNC:RB->upvalue[0]
1975 | jmp ->fff_resn 1845 | jmp ->fff_resn
1976 } 1846 }
@@ -1979,10 +1849,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1979 |.ffunc_nnr math_ldexp; fscale; fpop1; jmp ->fff_resn 1849 |.ffunc_nnr math_ldexp; fscale; fpop1; jmp ->fff_resn
1980 | 1850 |
1981 |.ffunc_1 math_frexp 1851 |.ffunc_1 math_frexp
1982 | mov RB, [RA+4] 1852 | mov RB, [BASE+4]
1983 | cmp RB, LJ_TISNUM; ja ->fff_fallback 1853 | cmp RB, LJ_TISNUM; ja ->fff_fallback
1984 | mov RC, [RA] 1854 | mov PC, [BASE-4]
1985 | mov [RA-4], RB; mov [RA-8], RC 1855 | mov RC, [BASE]
1856 | mov [BASE-4], RB; mov [BASE-8], RC
1986 | shl RB, 1; cmp RB, 0xffe00000; jae >3 1857 | shl RB, 1; cmp RB, 0xffe00000; jae >3
1987 | or RC, RB; jz >3 1858 | or RC, RB; jz >3
1988 | mov RC, 1022 1859 | mov RC, 1022
@@ -1994,15 +1865,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1994 } else { 1865 } else {
1995 | mov TMP1, RB; fild TMP1 1866 | mov TMP1, RB; fild TMP1
1996 } 1867 }
1997 | mov RB, [RA-4] 1868 | mov RB, [BASE-4]
1998 | and RB, 0x800fffff // Mask off exponent. 1869 | and RB, 0x800fffff // Mask off exponent.
1999 | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0. 1870 | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0.
2000 | mov [RA-4], RB 1871 | mov [BASE-4], RB
2001 |2: 1872 |2:
2002 if (sse) { 1873 if (sse) {
2003 | movsd qword [RA], xmm0 1874 | movsd qword [BASE], xmm0
2004 } else { 1875 } else {
2005 | fstp qword [RA] 1876 | fstp qword [BASE]
2006 } 1877 }
2007 | mov RD, 1+2 1878 | mov RD, 1+2
2008 | jmp ->fff_res 1879 | jmp ->fff_res
@@ -2014,46 +1885,48 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2014 } 1885 }
2015 |4: // Handle denormals by multiplying with 2^54 and adjusting the bias. 1886 |4: // Handle denormals by multiplying with 2^54 and adjusting the bias.
2016 if (sse) { 1887 if (sse) {
2017 | movsd xmm0, qword [RA] 1888 | movsd xmm0, qword [BASE]
2018 | sseconst_hi xmm1, RBa, 43500000 // 2^54. 1889 | sseconst_hi xmm1, RBa, 43500000 // 2^54.
2019 | mulsd xmm0, xmm1 1890 | mulsd xmm0, xmm1
2020 | movsd qword [RA-8], xmm0 1891 | movsd qword [BASE-8], xmm0
2021 } else { 1892 } else {
2022 | fld qword [RA] 1893 | fld qword [BASE]
2023 | mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54 1894 | mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54
2024 | fstp qword [RA-8] 1895 | fstp qword [BASE-8]
2025 } 1896 }
2026 | mov RB, [RA-4]; mov RC, 1076; shl RB, 1; jmp <1 1897 | mov RB, [BASE-4]; mov RC, 1076; shl RB, 1; jmp <1
2027 | 1898 |
2028 if (sse) { 1899 if (sse) {
2029 |.ffunc_nsse math_modf 1900 |.ffunc_nsse math_modf
2030 } else { 1901 } else {
2031 |.ffunc_n math_modf 1902 |.ffunc_n math_modf
2032 } 1903 }
2033 | mov RB, [RA+4] 1904 | mov RB, [BASE+4]
1905 | mov PC, [BASE-4]
2034 | shl RB, 1; cmp RB, 0xffe00000; je >4 // +-Inf? 1906 | shl RB, 1; cmp RB, 0xffe00000; je >4 // +-Inf?
2035 if (sse) { 1907 if (sse) {
2036 | movaps xmm4, xmm0 1908 | movaps xmm4, xmm0
2037 | call ->vm_trunc 1909 | call ->vm_trunc
2038 | subsd xmm4, xmm0 1910 | subsd xmm4, xmm0
2039 |1: 1911 |1:
2040 | movsd qword [RA-8], xmm0 1912 | movsd qword [BASE-8], xmm0
2041 | movsd qword [RA], xmm4 1913 | movsd qword [BASE], xmm4
2042 } else { 1914 } else {
2043 | fdup 1915 | fdup
2044 | call ->vm_trunc 1916 | call ->vm_trunc
2045 | fsub st1, st0 1917 | fsub st1, st0
2046 |1: 1918 |1:
2047 | fstp qword [RA-8] 1919 | fstp qword [BASE-8]
2048 | fstp qword [RA] 1920 | fstp qword [BASE]
2049 } 1921 }
2050 | mov RC, [RA-4]; mov RB, [RA+4] 1922 | mov RC, [BASE-4]; mov RB, [BASE+4]
2051 | xor RC, RB; js >3 // Need to adjust sign? 1923 | xor RC, RB; js >3 // Need to adjust sign?
2052 |2: 1924 |2:
2053 | mov RD, 1+2 1925 | mov RD, 1+2
2054 | jmp ->fff_res 1926 | jmp ->fff_res
2055 |3: 1927 |3:
2056 | xor RB, 0x80000000; mov [RA+4], RB; jmp <2 // Flip sign of fraction. 1928 | xor RB, 0x80000000; mov [BASE+4], RB // Flip sign of fraction.
1929 | jmp <2
2057 |4: 1930 |4:
2058 if (sse) { 1931 if (sse) {
2059 | xorps xmm4, xmm4; jmp <1 // Return +-Inf and +-0. 1932 | xorps xmm4, xmm4; jmp <1 // Return +-Inf and +-0.
@@ -2079,8 +1952,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2079 |1: 1952 |1:
2080 | cmp RB, RD 1953 | cmp RB, RD
2081 | jae ->fff_resxmm0 1954 | jae ->fff_resxmm0
2082 | cmp dword [RA+RB*8-4], LJ_TISNUM; ja ->fff_fallback 1955 | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja ->fff_fallback
2083 | movsd xmm1, qword [RA+RB*8-8] 1956 | movsd xmm1, qword [BASE+RB*8-8]
2084 | sseop xmm0, xmm1 1957 | sseop xmm0, xmm1
2085 | add RB, 1 1958 | add RB, 1
2086 | jmp <1 1959 | jmp <1
@@ -2091,8 +1964,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2091 |1: 1964 |1:
2092 | cmp RB, RD 1965 | cmp RB, RD
2093 | jae ->fff_resn 1966 | jae ->fff_resn
2094 | cmp dword [RA+RB*8-4], LJ_TISNUM; ja >5 1967 | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja >5
2095 | fld qword [RA+RB*8-8] 1968 | fld qword [BASE+RB*8-8]
2096 ||if (cmov) { 1969 ||if (cmov) {
2097 | fucomi st1; cmovop st1; fpop1 1970 | fucomi st1; cmovop st1; fpop1
2098 ||} else { 1971 ||} else {
@@ -2116,8 +1989,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2116 |//-- String library ----------------------------------------------------- 1989 |//-- String library -----------------------------------------------------
2117 | 1990 |
2118 |.ffunc_1 string_len 1991 |.ffunc_1 string_len
2119 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 1992 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2120 | mov STR:RB, [RA] 1993 | mov STR:RB, [BASE]
2121 if (sse) { 1994 if (sse) {
2122 | cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0 1995 | cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0
2123 } else { 1996 } else {
@@ -2125,9 +1998,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2125 } 1998 }
2126 | 1999 |
2127 |.ffunc string_byte // Only handle the 1-arg case here. 2000 |.ffunc string_byte // Only handle the 1-arg case here.
2128 | cmp NARGS:RC, 1+1; jne ->fff_fallback 2001 | cmp NARGS:RD, 1+1; jne ->fff_fallback
2129 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2002 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2130 | mov STR:RB, [RA] 2003 | mov STR:RB, [BASE]
2004 | mov PC, [BASE-4]
2131 | cmp dword STR:RB->len, 1 2005 | cmp dword STR:RB->len, 1
2132 | jb ->fff_res0 // Return no results for empty string. 2006 | jb ->fff_res0 // Return no results for empty string.
2133 | movzx RB, byte STR:RB[1] 2007 | movzx RB, byte STR:RB[1]
@@ -2139,14 +2013,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2139 | 2013 |
2140 |.ffunc string_char // Only handle the 1-arg case here. 2014 |.ffunc string_char // Only handle the 1-arg case here.
2141 | ffgccheck 2015 | ffgccheck
2142 | cmp NARGS:RC, 1+1; jne ->fff_fallback // *Exactly* 1 arg. 2016 | cmp NARGS:RD, 1+1; jne ->fff_fallback // *Exactly* 1 arg.
2143 | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback 2017 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
2144 if (sse) { 2018 if (sse) {
2145 | cvtsd2si RC, qword [RA] 2019 | cvtsd2si RC, qword [BASE]
2146 | cmp RC, 255; ja ->fff_fallback 2020 | cmp RC, 255; ja ->fff_fallback
2147 | mov TMP2, RC 2021 | mov TMP2, RC
2148 } else { 2022 } else {
2149 | fld qword [RA] 2023 | fld qword [BASE]
2150 | fistp TMP2 2024 | fistp TMP2
2151 | cmp TMP2, 255; ja ->fff_fallback 2025 | cmp TMP2, 255; ja ->fff_fallback
2152 } 2026 }
@@ -2156,7 +2030,6 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2156 | mov ARG3, 1 2030 | mov ARG3, 1
2157 |.endif 2031 |.endif
2158 | lea RDa, TMP2 // Points to stack. Little-endian. 2032 | lea RDa, TMP2 // Points to stack. Little-endian.
2159 | mov TMP1, RA // Save RA.
2160 |->fff_newstr: 2033 |->fff_newstr:
2161 | mov L:RB, SAVE_L 2034 | mov L:RB, SAVE_L
2162 | mov L:RB->base, BASE 2035 | mov L:RB->base, BASE
@@ -2170,38 +2043,37 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2170 |.endif 2043 |.endif
2171 | mov SAVE_PC, PC 2044 | mov SAVE_PC, PC
2172 | call extern lj_str_new // (lua_State *L, char *str, size_t l) 2045 | call extern lj_str_new // (lua_State *L, char *str, size_t l)
2173 | // GCstr * returned in eax (RC). 2046 | // GCstr * returned in eax (RD).
2174 | mov RA, TMP1
2175 | mov BASE, L:RB->base 2047 | mov BASE, L:RB->base
2176 | mov dword [RA-4], LJ_TSTR 2048 | mov PC, [BASE-4]
2177 | mov [RA-8], STR:RC 2049 | mov dword [BASE-4], LJ_TSTR
2050 | mov [BASE-8], STR:RD
2178 | jmp ->fff_res1 2051 | jmp ->fff_res1
2179 | 2052 |
2180 |.ffunc string_sub 2053 |.ffunc string_sub
2181 | ffgccheck 2054 | ffgccheck
2182 | mov TMP1, RA // Save RA.
2183 | mov TMP2, -1 2055 | mov TMP2, -1
2184 | cmp NARGS:RC, 1+2; jb ->fff_fallback 2056 | cmp NARGS:RD, 1+2; jb ->fff_fallback
2185 | jna >1 2057 | jna >1
2186 | cmp dword [RA+20], LJ_TISNUM; ja ->fff_fallback 2058 | cmp dword [BASE+20], LJ_TISNUM; ja ->fff_fallback
2187 if (sse) { 2059 if (sse) {
2188 | cvtsd2si RB, qword [RA+16] 2060 | cvtsd2si RB, qword [BASE+16]
2189 | mov TMP2, RB 2061 | mov TMP2, RB
2190 } else { 2062 } else {
2191 | fld qword [RA+16] 2063 | fld qword [BASE+16]
2192 | fistp TMP2 2064 | fistp TMP2
2193 } 2065 }
2194 |1: 2066 |1:
2195 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2067 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2196 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 2068 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
2197 | mov STR:RB, [RA] 2069 | mov STR:RB, [BASE]
2198 | mov TMP3, STR:RB 2070 | mov TMP3, STR:RB
2199 | mov RB, STR:RB->len 2071 | mov RB, STR:RB->len
2200 if (sse) { 2072 if (sse) {
2201 | cvtsd2si RA, qword [RA+8] 2073 | cvtsd2si RA, qword [BASE+8]
2202 } else { 2074 } else {
2203 |.if not X64 2075 |.if not X64
2204 | fld qword [RA+8] 2076 | fld qword [BASE+8]
2205 | fistp ARG3 2077 | fistp ARG3
2206 | mov RA, ARG3 2078 | mov RA, ARG3
2207 |.endif 2079 |.endif
@@ -2250,14 +2122,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2250 | 2122 |
2251 |.ffunc_2 string_rep // Only handle the 1-char case inline. 2123 |.ffunc_2 string_rep // Only handle the 1-char case inline.
2252 | ffgccheck 2124 | ffgccheck
2253 | mov TMP1, RA // Save RA. 2125 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2254 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2126 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
2255 | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback 2127 | mov STR:RB, [BASE]
2256 | mov STR:RB, [RA]
2257 if (sse) { 2128 if (sse) {
2258 | cvtsd2si RC, qword [RA+8] 2129 | cvtsd2si RC, qword [BASE+8]
2259 } else { 2130 } else {
2260 | fld qword [RA+8] 2131 | fld qword [BASE+8]
2261 | fistp TMP2 2132 | fistp TMP2
2262 | mov RC, TMP2 2133 | mov RC, TMP2
2263 } 2134 }
@@ -2284,9 +2155,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2284 | 2155 |
2285 |.ffunc_1 string_reverse 2156 |.ffunc_1 string_reverse
2286 | ffgccheck 2157 | ffgccheck
2287 | mov TMP1, RA // Save RA. 2158 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2288 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2159 | mov STR:RB, [BASE]
2289 | mov STR:RB, [RA]
2290 | mov RC, STR:RB->len 2160 | mov RC, STR:RB->len
2291 | test RC, RC 2161 | test RC, RC
2292 | jz ->fff_emptystr // Zero length string? 2162 | jz ->fff_emptystr // Zero length string?
@@ -2312,9 +2182,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2312 |.macro ffstring_case, name, lo, hi 2182 |.macro ffstring_case, name, lo, hi
2313 | .ffunc_1 name 2183 | .ffunc_1 name
2314 | ffgccheck 2184 | ffgccheck
2315 | mov TMP1, RA // Save RA. 2185 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2316 | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback 2186 | mov STR:RB, [BASE]
2317 | mov STR:RB, [RA]
2318 | mov RC, STR:RB->len 2187 | mov RC, STR:RB->len
2319 | cmp [DISPATCH+DISPATCH_GL(tmpbuf.sz)], RC; jb ->fff_fallback_1 2188 | cmp [DISPATCH+DISPATCH_GL(tmpbuf.sz)], RC; jb ->fff_fallback_1
2320 | add RB, #STR 2189 | add RB, #STR
@@ -2349,19 +2218,17 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2349 |//-- Table library ------------------------------------------------------ 2218 |//-- Table library ------------------------------------------------------
2350 | 2219 |
2351 |.ffunc_1 table_getn 2220 |.ffunc_1 table_getn
2352 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 2221 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
2353 | mov TMP1, BASE // Save RA and BASE. 2222 | mov RB, BASE // Save BASE.
2354 | mov RB, RA 2223 | mov TAB:FCARG1, [BASE]
2355 | mov TAB:FCARG1, [RA] // Caveat: FCARG1 == RA
2356 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t) 2224 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t)
2357 | // Length of table returned in eax (RC). 2225 | // Length of table returned in eax (RD).
2358 | mov RA, RB // Restore RA and BASE. 2226 | mov BASE, RB // Restore BASE.
2359 | mov BASE, TMP1
2360 if (sse) { 2227 if (sse) {
2361 | cvtsi2sd xmm0, RC; jmp ->fff_resxmm0 2228 | cvtsi2sd xmm0, RD; jmp ->fff_resxmm0
2362 } else { 2229 } else {
2363 |.if not X64 2230 |.if not X64
2364 | mov ARG1, RC; fild ARG1; jmp ->fff_resn 2231 | mov ARG1, RD; fild ARG1; jmp ->fff_resn
2365 |.endif 2232 |.endif
2366 } 2233 }
2367 | 2234 |
@@ -2406,29 +2273,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2406 | 2273 |
2407 |.macro .ffunc_bit_op, name, ins 2274 |.macro .ffunc_bit_op, name, ins
2408 | .ffunc_bit name 2275 | .ffunc_bit name
2409 | mov TMP2, NARGS:RC // Save for fallback. 2276 | mov TMP2, NARGS:RD // Save for fallback.
2410 | lea RC, [RA+NARGS:RC*8-16] 2277 | lea RD, [BASE+NARGS:RD*8-16]
2411 ||if (sse) {
2412 | mov TMP1, BASE // Need BASE as a scratch register.
2413 ||}
2414 |1: 2278 |1:
2415 | cmp RC, RA 2279 | cmp RD, BASE
2416 | jbe ->fff_resbit_op 2280 | jbe ->fff_resbit
2417 | cmp dword [RC+4], LJ_TISNUM; ja ->fff_fallback_bit_op 2281 | cmp dword [RD+4], LJ_TISNUM; ja ->fff_fallback_bit_op
2418 ||if (sse) { 2282 ||if (sse) {
2419 | movsd xmm0, qword [RC] 2283 | movsd xmm0, qword [RD]
2420 | addsd xmm0, xmm1 2284 | addsd xmm0, xmm1
2421 | movd BASE, xmm0 2285 | movd RA, xmm0
2422 | ins RB, BASE 2286 | ins RB, RA
2423 ||} else { 2287 ||} else {
2424 |.if not X64 2288 |.if not X64
2425 | fld qword [RC] 2289 | fld qword [RD]
2426 | fadd TMP1 2290 | fadd TMP1
2427 | fstp FPARG1 2291 | fstp FPARG1
2428 | ins RB, ARG1 2292 | ins RB, ARG1
2429 |.endif 2293 |.endif
2430 ||} 2294 ||}
2431 | sub RC, 8 2295 | sub RD, 8
2432 | jmp <1 2296 | jmp <1
2433 |.endmacro 2297 |.endmacro
2434 | 2298 |
@@ -2446,14 +2310,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2446 |->fff_resbit: 2310 |->fff_resbit:
2447 | cvtsi2sd xmm0, RB 2311 | cvtsi2sd xmm0, RB
2448 | jmp ->fff_resxmm0 2312 | jmp ->fff_resxmm0
2449 |->fff_resbit_op:
2450 | cvtsi2sd xmm0, RB
2451 | mov BASE, TMP1
2452 | jmp ->fff_resxmm0
2453 } else { 2313 } else {
2454 |.if not X64 2314 |.if not X64
2455 |->fff_resbit: 2315 |->fff_resbit:
2456 |->fff_resbit_op:
2457 | mov ARG1, RB 2316 | mov ARG1, RB
2458 | fild ARG1 2317 | fild ARG1
2459 | jmp ->fff_resn 2318 | jmp ->fff_resn
@@ -2461,10 +2320,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2461 } 2320 }
2462 | 2321 |
2463 |->fff_fallback_bit_op: 2322 |->fff_fallback_bit_op:
2464 if (sse) { 2323 | mov NARGS:RD, TMP2 // Restore for fallback
2465 | mov BASE, TMP1
2466 }
2467 | mov NARGS:RC, TMP2 // Restore for fallback
2468 | jmp ->fff_fallback 2324 | jmp ->fff_fallback
2469 | 2325 |
2470 |.macro .ffunc_bit_sh, name, ins 2326 |.macro .ffunc_bit_sh, name, ins
@@ -2503,86 +2359,80 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2503 |//----------------------------------------------------------------------- 2359 |//-----------------------------------------------------------------------
2504 | 2360 |
2505 |->fff_fallback_2: 2361 |->fff_fallback_2:
2506 | mov NARGS:RC, 1+2 // Other args are ignored, anyway. 2362 | mov NARGS:RD, 1+2 // Other args are ignored, anyway.
2507 | jmp ->fff_fallback 2363 | jmp ->fff_fallback
2508 |->fff_fallback_1: 2364 |->fff_fallback_1:
2509 | mov NARGS:RC, 1+1 // Other args are ignored, anyway. 2365 | mov NARGS:RD, 1+1 // Other args are ignored, anyway.
2510 |->fff_fallback: // Call fast function fallback handler. 2366 |->fff_fallback: // Call fast function fallback handler.
2511 | // RA = new base, RC = nargs+1 2367 | // BASE = new base, RD = nargs+1
2512 | mov L:RB, SAVE_L 2368 | mov L:RB, SAVE_L
2513 | sub BASE, RA 2369 | mov PC, [BASE-4] // Fallback may overwrite PC.
2514 | mov [RA-4], PC
2515 | mov SAVE_PC, PC // Redundant (but a defined value). 2370 | mov SAVE_PC, PC // Redundant (but a defined value).
2516 | mov TMP1, BASE // Save old BASE (relative). 2371 | mov L:RB->base, BASE
2517 | mov L:RB->base, RA 2372 | lea RD, [BASE+NARGS:RD*8-8]
2518 | lea RC, [RA+NARGS:RC*8-8] 2373 | lea RA, [RD+8*LUA_MINSTACK] // Ensure enough space for handler.
2519 | lea BASE, [RC+8*LUA_MINSTACK] // Ensure enough space for handler. 2374 | mov L:RB->top, RD
2520 | mov L:RB->top, RC 2375 | mov CFUNC:RD, [BASE-8]
2521 | mov CFUNC:RC, [RA-8] 2376 | cmp RA, L:RB->maxstack
2522 | cmp BASE, L:RB->maxstack
2523 | ja >5 // Need to grow stack. 2377 | ja >5 // Need to grow stack.
2524 |.if X64 2378 |.if X64
2525 | mov CARG1d, L:RB 2379 | mov CARG1d, L:RB
2526 |.else 2380 |.else
2527 | mov ARG1, L:RB 2381 | mov ARG1, L:RB
2528 |.endif 2382 |.endif
2529 | call aword CFUNC:RC->f // (lua_State *L) 2383 | call aword CFUNC:RD->f // (lua_State *L)
2384 | mov BASE, L:RB->base
2530 | // Either throws an error or recovers and returns 0 or MULTRES (+1). 2385 | // Either throws an error or recovers and returns 0 or MULTRES (+1).
2531 | test RC, RC; jnz >3 2386 | test RD, RD; jnz ->fff_res // Returned MULTRES (already in RD).
2532 |1: // Returned 0: retry fast path. 2387 |1: // Returned 0: retry fast path.
2533 | mov RA, L:RB->base 2388 | mov RD, L:RB->top
2534 | mov RC, L:RB->top 2389 | sub RD, BASE
2535 | sub RC, RA 2390 | shr RD, 3
2536 | shr RC, 3 2391 | add NARGS:RD, 1
2537 | add NARGS:RC, 1 2392 | mov LFUNC:RB, [BASE-8]
2538 | mov LFUNC:RB, [RA-8] 2393 | cmp dword [BASE-4], PC
2539 | mov BASE, TMP1 // Restore old BASE. 2394 | jne >2 // Tailcalled?
2540 | add BASE, RA 2395 | ins_callt // Retry the call.
2541 | cmp [RA-4], PC; jne >2 // Callable modified by handler? 2396 |
2542 | jmp aword LFUNC:RB->gate // Retry the call. 2397 |2: // Reconstruct previous base for vmeta_call.
2543 | 2398 | mov RA, BASE
2544 |2: // Run modified callable. 2399 | test PC, FRAME_TYPE
2545 | cmp dword [RA-4], LJ_TFUNC 2400 | jnz >3
2546 | jne ->vmeta_call 2401 | movzx RB, PC_RA
2547 | jmp aword LFUNC:RB->gate // Retry the call. 2402 | not RBa // Note: ~RB = -(RB+1)
2548 | 2403 | lea BASE, [BASE+RB*8] // base = base - (RB+1)*8
2549 |3: // Returned MULTRES (already in RC/RD). 2404 | jmp ->vm_call_dispatch // Resolve again.
2550 | mov RA, L:RB->base 2405 |3:
2551 | mov BASE, TMP1 // Restore old BASE. 2406 | mov RB, PC
2552 | add BASE, RA 2407 | and RB, -8
2553 | jmp ->fff_res 2408 | sub BASE, RB
2409 | jmp ->vm_call_dispatch // Resolve again.
2554 | 2410 |
2555 |5: // Grow stack for fallback handler. 2411 |5: // Grow stack for fallback handler.
2556 | mov FCARG2, LUA_MINSTACK 2412 | mov FCARG2, LUA_MINSTACK
2557 | mov FCARG1, L:RB 2413 | mov FCARG1, L:RB
2558 | call extern lj_state_growstack@8 // (lua_State *L, int n) 2414 | call extern lj_state_growstack@8 // (lua_State *L, int n)
2415 | mov BASE, L:RB->base
2559 | jmp <1 // Dumb retry (goes through ff first). 2416 | jmp <1 // Dumb retry (goes through ff first).
2560 | 2417 |
2561 |->fff_gcstep: // Call GC step function. 2418 |->fff_gcstep: // Call GC step function.
2562 | // RA = new base, RC = nargs+1 2419 | // BASE = new base, RD = nargs+1
2563 | pop RBa // Must keep stack at same level. 2420 | pop RBa // Must keep stack at same level.
2564 | mov TMPa, RBa // Save return address 2421 | mov TMPa, RBa // Save return address
2565 | mov L:RB, SAVE_L 2422 | mov L:RB, SAVE_L
2566 | sub BASE, RA
2567 | mov TMP2, BASE // Save old BASE (relative).
2568 | mov [RA-4], PC
2569 | mov SAVE_PC, PC // Redundant (but a defined value). 2423 | mov SAVE_PC, PC // Redundant (but a defined value).
2570 | mov L:RB->base, RA 2424 | mov L:RB->base, BASE
2571 | lea RC, [RA+NARGS:RC*8-8] 2425 | lea RD, [BASE+NARGS:RD*8-8]
2572 | mov FCARG1, L:RB 2426 | mov FCARG1, L:RB
2573 | mov L:RB->top, RC 2427 | mov L:RB->top, RD
2574 | call extern lj_gc_step@4 // (lua_State *L) 2428 | call extern lj_gc_step@4 // (lua_State *L)
2575 | mov RA, L:RB->base 2429 | mov BASE, L:RB->base
2576 | mov RC, L:RB->top 2430 | mov RD, L:RB->top
2577 | sub RC, RA 2431 | sub RD, BASE
2578 | shr RC, 3 2432 | shr RD, 3
2579 | add NARGS:RC, 1 2433 | add NARGS:RD, 1
2580 | mov PC, [RA-4]
2581 | mov BASE, TMP2 // Restore old BASE.
2582 | add BASE, RA
2583 | mov RBa, TMPa 2434 | mov RBa, TMPa
2584 | push RBa // Restore return address. 2435 | push RBa // Restore return address.
2585 | mov LFUNC:RB, [RA-8]
2586 | ret 2436 | ret
2587 | 2437 |
2588 |//----------------------------------------------------------------------- 2438 |//-----------------------------------------------------------------------
@@ -2629,9 +2479,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2629 | movzx OP, PC_OP 2479 | movzx OP, PC_OP
2630 | movzx RD, PC_RD 2480 | movzx RD, PC_RD
2631 |.if X64 2481 |.if X64
2632 | jmp aword [DISPATCH+OP*8+BC__MAX*8] // Re-dispatch to static ins. 2482 | jmp aword [DISPATCH+OP*8+GG_DISP2STATIC] // Re-dispatch to static ins.
2633 |.else 2483 |.else
2634 | jmp aword [DISPATCH+OP*4+BC__MAX*4] // Re-dispatch to static ins. 2484 | jmp aword [DISPATCH+OP*4+GG_DISP2STATIC] // Re-dispatch to static ins.
2635 |.endif 2485 |.endif
2636 | 2486 |
2637 |->cont_hook: // Continue from hook yield. 2487 |->cont_hook: // Continue from hook yield.
@@ -2645,8 +2495,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2645 |.if X64 2495 |.if X64
2646 | int3 // NYI 2496 | int3 // NYI
2647 |.else 2497 |.else
2498 | mov LFUNC:RB, [BASE-8] // Same as curr_topL(L).
2499 | mov RB, LFUNC:RB->pc
2500 | movzx RD, byte [RB+PC2PROTO(framesize)]
2501 | lea RD, [BASE+RD*8]
2648 | mov L:RB, SAVE_L 2502 | mov L:RB, SAVE_L
2649 | mov L:RB->base, BASE 2503 | mov L:RB->base, BASE
2504 | mov L:RB->top, RD
2650 | mov FCARG2, PC 2505 | mov FCARG2, PC
2651 | lea FCARG1, [DISPATCH+GG_DISP2J] 2506 | lea FCARG1, [DISPATCH+GG_DISP2J]
2652 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2507 | mov [DISPATCH+DISPATCH_J(L)], L:RB
@@ -2661,16 +2516,22 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2661 |.if X64 2516 |.if X64
2662 | int3 // NYI 2517 | int3 // NYI
2663 |.else 2518 |.else
2519 | lea RD, [BASE+NARGS:RD*8-8]
2664 | mov L:RB, SAVE_L 2520 | mov L:RB, SAVE_L
2665 | mov L:RB->base, BASE 2521 | mov L:RB->base, BASE
2522 | mov L:RB->top, RD
2666 | mov FCARG2, PC 2523 | mov FCARG2, PC
2667 | lea FCARG1, [DISPATCH+GG_DISP2J] 2524 | lea FCARG1, [DISPATCH+GG_DISP2J]
2668 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2525 | mov [DISPATCH+DISPATCH_J(L)], L:RB
2669 | mov SAVE_PC, PC 2526 | mov SAVE_PC, PC
2670 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc) 2527 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc)
2671 | mov BASE, L:RB->base 2528 | mov BASE, L:RB->base
2672 | // Dispatch the first instruction and optionally record it. 2529 | mov RD, L:RB->top
2673 | ins_next 2530 | sub RD, BASE
2531 | shr RD, 3
2532 | add NARGS:RD, 1
2533 | mov LFUNC:RB, [BASE-8]
2534 | ins_callt
2674 |.endif 2535 |.endif
2675#endif 2536#endif
2676 | 2537 |
@@ -4403,13 +4264,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4403 case BC_CALL: case BC_CALLM: 4264 case BC_CALL: case BC_CALLM:
4404 | ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs 4265 | ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs
4405 if (op == BC_CALLM) { 4266 if (op == BC_CALLM) {
4406 | add NARGS:RC, MULTRES 4267 | add NARGS:RD, MULTRES
4407 } 4268 }
4408 | lea RA, [BASE+RA*8+8] 4269 | cmp dword [BASE+RA*8+4], LJ_TFUNC
4409 | mov LFUNC:RB, [RA-8] 4270 | mov LFUNC:RB, [BASE+RA*8]
4410 | cmp dword [RA-4], LJ_TFUNC 4271 | jne ->vmeta_call_ra
4411 | jne ->vmeta_call 4272 | lea BASE, [BASE+RA*8+8]
4412 | jmp aword LFUNC:RB->gate 4273 | ins_call
4413 break; 4274 break;
4414 4275
4415 case BC_CALLMT: 4276 case BC_CALLMT:
@@ -4445,20 +4306,19 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4445 | 4306 |
4446 | mov LFUNC:RB, [BASE-8] 4307 | mov LFUNC:RB, [BASE-8]
4447 |3: 4308 |3:
4448 | mov RA, BASE // BASE is ignored, except when ... 4309 | mov NARGS:RD, MULTRES
4449 | cmp byte LFUNC:RB->ffid, 1 // (> FF_C) Calling a fast function? 4310 | cmp byte LFUNC:RB->ffid, 1 // (> FF_C) Calling a fast function?
4450 | ja >5 4311 | ja >5
4451 |4: 4312 |4:
4452 | mov NARGS:RD, MULTRES 4313 | ins_callt
4453 | jmp aword LFUNC:RB->gate
4454 | 4314 |
4455 |5: // Tailcall to a fast function. 4315 |5: // Tailcall to a fast function.
4456 | test PC, FRAME_TYPE // Lua frame below? 4316 | test PC, FRAME_TYPE // Lua frame below?
4457 | jnz <4 4317 | jnz <4
4458 | movzx RD, PC_RA // Need to prepare BASE/KBASE. 4318 | movzx RA, PC_RA
4459 | not RDa 4319 | not RAa
4460 | lea BASE, [BASE+RD*8] 4320 | lea RA, [BASE+RA*8]
4461 | mov LFUNC:KBASE, [BASE-8] 4321 | mov LFUNC:KBASE, [RA-8] // Need to prepare KBASE.
4462 | mov KBASE, LFUNC:KBASE->pc 4322 | mov KBASE, LFUNC:KBASE->pc
4463 | mov KBASE, [KBASE+PC2PROTO(k)] 4323 | mov KBASE, [KBASE+PC2PROTO(k)]
4464 | jmp <4 4324 | jmp <4
@@ -4488,9 +4348,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4488 | mov [RA-8], LFUNC:RB 4348 | mov [RA-8], LFUNC:RB
4489 | mov [RA-4], RC 4349 | mov [RA-4], RC
4490 | cmp RC, LJ_TFUNC // Handle like a regular 2-arg call. 4350 | cmp RC, LJ_TFUNC // Handle like a regular 2-arg call.
4491 | mov NARGS:RC, 3 4351 | mov NARGS:RD, 2+1
4492 | jne ->vmeta_call 4352 | jne ->vmeta_call
4493 | jmp aword LFUNC:RB->gate 4353 | mov BASE, RA
4354 | ins_call
4494 break; 4355 break;
4495 4356
4496 case BC_VARG: 4357 case BC_VARG:
@@ -4799,6 +4660,150 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4799 | ins_next 4660 | ins_next
4800 break; 4661 break;
4801 4662
4663 /* -- Function headers -------------------------------------------------- */
4664
4665 /*
4666 ** Reminder: A function may be called with func/args above L->maxstack,
4667 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
4668 ** too. This means all FUNC* ops (including fast functions) must check
4669 ** for stack overflow _before_ adding more slots!
4670 */
4671
4672 case BC_FUNCF:
4673#if LJ_HASJIT
4674 | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves.
4675 | // hotcall RB
4676#endif
4677 case BC_FUNCV: /* NYI: compiled vararg functions. */
4678 | // Fall through. Assumes BC_IFUNCF/BC_IFUNCV follow and ins_AD is a no-op.
4679 break;
4680
4681 case BC_JFUNCF:
4682#if !LJ_HASJIT
4683 break;
4684#endif
4685 case BC_IFUNCF:
4686 | ins_AD // BASE = new base, RA = framesize, RD = nargs+1
4687 | mov KBASE, [PC-4+PC2PROTO(k)]
4688 | mov L:RB, SAVE_L
4689 | lea RA, [BASE+RA*8] // Top of frame.
4690 | cmp RA, L:RB->maxstack
4691 | ja ->vm_growstack_f
4692 | movzx RA, byte [PC-4+PC2PROTO(numparams)]
4693 | cmp NARGS:RD, RA // Check for missing parameters.
4694 | jbe >3
4695 |2:
4696 if (op == BC_JFUNCF) {
4697 | movzx RD, PC_RD
4698 | jmp =>BC_JLOOP
4699 } else {
4700 | ins_next
4701 }
4702 |
4703 |3: // Clear missing parameters.
4704 | mov dword [BASE+NARGS:RD*8-4], LJ_TNIL
4705 | add NARGS:RD, 1
4706 | cmp NARGS:RD, RA
4707 | jbe <3
4708 | jmp <2
4709 break;
4710
4711 case BC_JFUNCV:
4712#if !LJ_HASJIT
4713 break;
4714#endif
4715 | int3 // NYI: compiled vararg functions
4716 break; /* NYI: compiled vararg functions. */
4717
4718 case BC_IFUNCV:
4719 | ins_AD // BASE = new base, RA = framesize, RD = nargs+1
4720 | lea RB, [NARGS:RD*8+FRAME_VARG]
4721 | lea RD, [BASE+NARGS:RD*8]
4722 | mov LFUNC:KBASE, [BASE-8]
4723 | mov [RD-4], RB // Store delta + FRAME_VARG.
4724 | mov [RD-8], LFUNC:KBASE // Store copy of LFUNC.
4725 | mov L:RB, SAVE_L
4726 | lea RA, [RD+RA*8]
4727 | cmp RA, L:RB->maxstack
4728 | ja ->vm_growstack_v // Need to grow stack.
4729 | mov RA, BASE
4730 | mov BASE, RD
4731 | movzx RB, byte [PC-4+PC2PROTO(numparams)]
4732 | test RB, RB
4733 | jz >2
4734 |1: // Copy fixarg slots up to new frame.
4735 | add RA, 8
4736 | cmp RA, BASE
4737 | jnb >3 // Less args than parameters?
4738 | mov KBASE, [RA-8]
4739 | mov [RD], KBASE
4740 | mov KBASE, [RA-4]
4741 | mov [RD+4], KBASE
4742 | add RD, 8
4743 | mov dword [RA-4], LJ_TNIL // Clear old fixarg slot (help the GC).
4744 | sub RB, 1
4745 | jnz <1
4746 |2:
4747 if (op == BC_JFUNCV) {
4748 | movzx RD, PC_RD
4749 | jmp =>BC_JLOOP
4750 } else {
4751 | mov KBASE, [PC-4+PC2PROTO(k)]
4752 | ins_next
4753 }
4754 |
4755 |3: // Clear missing parameters.
4756 | mov dword [RD+4], LJ_TNIL
4757 | add RD, 8
4758 | sub RB, 1
4759 | jnz <3
4760 | jmp <2
4761 break;
4762
4763 case BC_FUNCC:
4764 case BC_FUNCCW:
4765 | ins_AD // BASE = new base, RA = ins RA|RD (unused), RD = nargs+1
4766 | mov CFUNC:RB, [BASE-8]
4767 | mov KBASEa, CFUNC:RB->f
4768 | mov L:RB, SAVE_L
4769 | lea RD, [BASE+NARGS:RD*8-8]
4770 | mov L:RB->base, BASE
4771 | lea RA, [RD+8*LUA_MINSTACK]
4772 | cmp RA, L:RB->maxstack
4773 | mov L:RB->top, RD
4774 if (op == BC_FUNCC) {
4775 |.if X64
4776 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
4777 |.else
4778 | mov ARG1, L:RB
4779 |.endif
4780 } else {
4781 |.if X64
4782 | mov CARG2, KBASEa
4783 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
4784 |.else
4785 | mov ARG2, KBASEa
4786 | mov ARG1, L:RB
4787 |.endif
4788 }
4789 | ja ->vm_growstack_c // Need to grow stack.
4790 | set_vmstate C
4791 if (op == BC_FUNCC) {
4792 | call KBASEa // (lua_State *L)
4793 } else {
4794 | // (lua_State *L, lua_CFunction f)
4795 | call aword [DISPATCH+DISPATCH_GL(wrapf)]
4796 }
4797 | set_vmstate INTERP
4798 | // nresults returned in eax (RD).
4799 | mov BASE, L:RB->base
4800 | lea RA, [BASE+RD*8]
4801 | neg RA
4802 | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8
4803 | mov PC, [BASE-4] // Fetch PC of caller.
4804 | jmp ->vm_returnc
4805 break;
4806
4802 /* ---------------------------------------------------------------------- */ 4807 /* ---------------------------------------------------------------------- */
4803 4808
4804 default: 4809 default:
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 6fd8eb00..f50d16b8 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,575 +12,557 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[15199] = { 15static const unsigned char build_actionlist[15137] = {
16 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
17 139,108,36,48,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15, 17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
18 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 18 20,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,199,
19 255,36,171,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252, 19 131,233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,
20 233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137,106, 20 1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
21 252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139,108, 21 1,15,133,244,1,248,2,255,139,108,36,48,137,181,233,248,3,139,68,36,20,139,
22 36,48,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15,132, 22 76,36,56,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,
23 244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137,56, 23 15,139,76,36,52,137,141,233,49,192,248,16,131,196,28,91,94,95,93,195,248,
24 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
25 244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193,232,
26 16,252,255,36,171,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,
27 252,233,244,2,248,14,137,113,252,252,139,189,233,139,108,36,48,141,68,193,
28 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,124,36,4,137,44,
29 36,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233,237,139,149,
30 233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,252,
31 247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252,252,139,189,233,
32 139,108,36,48,141,68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,
33 233,137,44,36,15,135,244,15,199,131,233,237,252,255,215,199,131,233,237,139,
34 149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,
35 252,247,198,237,15,132,244,17,248,18,252,247,198,237,15,132,244,20,199,131,
36 233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,1,
37 139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,
38 1,15,133,244,1,248,2,139,108,36,48,137,181,233,248,3,139,68,36,20,139,76,
39 36,56,248,4,255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,
40 21,139,76,36,52,137,141,233,49,192,248,22,131,196,28,91,94,95,93,195,248,
41 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131, 24 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131,
42 192,1,252,233,244,4,248,7,133,201,15,132,244,5,41,193,141,20,202,252,233, 25 192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,20,202,252,
43 244,5,248,8,255,137,149,233,137,68,36,20,137,202,137,252,233,232,251,1,0, 26 233,244,5,248,8,137,149,233,137,68,36,20,137,202,137,252,233,232,251,1,0,
44 139,149,233,252,233,244,3,248,23,137,208,137,204,248,24,139,108,36,48,139, 27 139,149,233,252,233,244,3,248,17,137,208,137,204,248,18,139,108,36,48,139,
45 173,233,199,133,233,237,252,233,244,22,248,25,129,225,239,137,204,248,26, 28 173,233,199,133,233,237,252,233,244,16,248,19,129,225,239,137,204,248,20,
46 139,108,36,48,185,252,248,252,255,252,255,252,255,184,237,139,149,233,139, 29 139,108,36,48,185,252,248,252,255,252,255,252,255,184,237,255,139,149,233,
47 157,233,129,195,239,139,114,252,252,199,66,252,252,237,199,131,233,237,255, 30 139,157,233,129,195,239,139,114,252,252,199,66,252,252,237,199,131,233,237,
48 252,233,244,16,248,20,252,247,198,237,15,132,244,27,131,230,252,248,41,252, 31 252,233,244,12,248,21,186,237,252,233,244,248,248,22,131,232,8,252,233,244,
49 242,141,76,49,252,248,139,114,252,252,199,68,10,4,237,252,233,244,16,248, 32 247,248,23,141,68,194,252,248,248,1,15,182,142,233,131,198,4,137,149,233,
50 15,186,237,252,233,244,247,248,13,137,202,248,11,141,68,194,252,248,15,182, 33 137,133,233,255,137,116,36,24,137,202,248,2,137,252,233,232,251,1,0,139,149,
51 142,233,131,198,4,137,149,233,137,133,233,137,116,36,24,137,202,248,1,137, 34 233,139,133,233,139,106,252,248,139,114,252,252,41,208,193,232,3,131,192,
52 252,233,232,251,1,0,139,141,233,255,139,133,233,139,105,252,248,139,113,252, 35 1,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,
53 252,41,200,193,232,3,131,192,1,252,255,165,233,248,28,85,87,86,83,131,252, 36 24,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192,141,
54 236,28,139,108,36,48,139,76,36,52,190,237,49,192,141,188,253,36,233,139,157, 37 188,253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68,36,
55 233,129,195,239,137,189,233,137,68,36,24,137,68,36,52,56,133,233,15,132,244, 38 52,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,
56 249,199,131,233,237,136,133,233,139,149,233,139,133,233,41,200,193,232,3, 39 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252,
57 131,192,1,41,209,139,114,252,252,137,68,36,20,252,247,198,237,15,132,244, 40 247,198,237,15,132,244,13,255,252,233,244,14,248,25,85,87,86,83,131,252,236,
58 17,252,233,244,18,248,29,255,85,87,86,83,131,252,236,28,190,237,252,233,244, 41 28,190,237,252,233,244,247,248,26,85,87,86,83,131,252,236,28,190,237,248,
59 247,248,30,85,87,86,83,131,252,236,28,190,237,248,1,139,108,36,48,139,76, 42 1,139,108,36,48,139,76,36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,
60 36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,137,165,233,139,157,233, 43 137,165,233,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,
61 129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,41, 44 41,214,139,133,233,41,200,193,232,3,131,192,1,248,27,255,139,105,252,248,
62 200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,239,15,133,244, 45 129,121,253,252,252,239,15,133,244,28,248,29,137,202,137,114,252,252,139,
63 31,252,255,165,233,248,32,255,85,87,86,83,131,252,236,28,139,108,36,48,139, 46 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,30,
64 68,36,56,139,76,36,52,139,84,36,60,137,108,36,24,139,189,233,43,189,233,199, 47 85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,
65 68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137,76,36,4,137,44,36,139,189, 48 36,60,137,108,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,
66 233,137,124,36,52,137,165,233,252,255,210,133,192,15,132,244,21,137,193,190, 49 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,
67 237,252,233,244,2,248,27,1,209,131,230,252,248,137,213,41,252,242,199,68, 50 252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,
68 193,252,252,237,137,200,139,117,252,244,139,77,252,240,139,122,252,248,139, 51 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,
69 191,233,139,191,233,252,255,225,248,33,15,182,78,252,255,131,252,237,16,141, 52 117,252,244,139,77,252,240,139,122,252,248,139,191,233,139,191,233,252,255,
70 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,137,76,36,8,139, 53 225,248,31,255,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,
71 72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,233,244,35,248,36,137,68,36, 54 132,244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,
72 16,199,68,36,20,237,255,141,68,36,16,128,126,252,252,235,15,133,244,247,141, 55 137,69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20,237,
73 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,37,15,182,70,252, 56 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,
74 254,255,252,242,15,42,192,252,242,15,17,68,36,16,255,137,68,36,12,219,68, 57 4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,255,252,242,15,42,
75 36,12,221,92,36,16,255,141,68,36,16,252,233,244,247,248,38,15,182,70,252, 58 192,252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,
76 254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4, 59 141,68,36,16,252,233,244,247,248,36,15,182,70,252,254,141,4,194,248,1,15,
77 139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,1, 60 182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,
78 139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,139,104,4,139, 61 8,137,44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15,
79 0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 62 132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,
80 252,255,36,171,248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105, 63 202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,
81 252,248,184,3,0,0,0,252,255,165,233,248,39,137,68,36,16,199,68,36,20,237, 64 139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252,
82 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,255,137,41,199, 65 233,244,29,248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,
83 65,4,237,137,205,252,233,244,248,248,40,15,182,70,252,254,255,141,68,36,16, 66 252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233,
84 252,233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255, 67 244,248,248,38,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,39,
85 141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137, 68 15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,
86 149,233,137,116,36,24,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182, 69 137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,
87 78,252,253,139,108,202,4,139,12,202,137,104,4,137,8,248,42,139,6,15,182,204, 70 232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108,
88 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113, 71 202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198,
89 252,244,15,182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141, 72 4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,
90 177,233,41,214,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,15,182, 73 253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,
91 110,252,252,141,4,194,141,12,202,137,108,36,12,139,108,36,48,137,68,36,8, 74 252,248,184,237,252,233,244,29,248,41,15,182,110,252,252,141,4,194,141,12,
92 137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139,149, 75 202,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,
93 233,131,252,248,1,15,135,244,44,248,4,255,141,118,4,15,130,244,252,248,5, 76 233,137,116,36,24,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,
94 15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131, 77 244,42,248,4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,
95 198,4,193,232,16,252,255,36,171,248,45,131,198,4,129,120,253,4,239,15,130, 78 134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
96 244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131,252, 79 171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,
97 238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149, 80 129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,108,
98 233,137,116,36,24,232,251,1,4,252,233,244,3,248,48,255,141,4,199,252,233, 81 36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,
99 244,247,248,49,141,4,199,141,44,252,234,149,252,233,244,248,248,50,141,4, 82 251,1,4,252,233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,
100 194,137,197,252,233,244,248,248,51,141,4,194,248,1,141,44,252,234,248,2,141, 83 44,252,234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,
101 12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36, 84 49,141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,
102 4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,251,1,5,139,149,233, 85 48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,
103 133,192,15,132,244,42,248,44,137,193,41,208,137,113,252,244,141,176,233,139, 86 149,233,137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,
104 105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,244,31,255,252,255, 87 137,193,41,208,137,113,252,244,141,176,233,255,184,237,252,233,244,27,248,
105 165,233,248,52,139,108,36,48,137,149,233,141,20,194,137,252,233,137,116,36, 88 50,139,108,36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,
106 24,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76,36,20,137,68,36,16, 89 1,6,139,149,233,252,233,244,42,248,51,141,76,202,8,248,28,137,76,36,20,137,
107 131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137, 90 68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,
108 149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139,68,36,16,139, 91 44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139,
109 105,252,248,131,192,1,57,215,15,132,244,53,252,255,165,233,248,54,139,108, 92 68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,52,137,202,137,114,252,
110 36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,1,8,139,149,233, 93 252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
111 139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248, 94 248,53,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,
112 55,129,252,248,239,15,130,244,56,255,139,105,4,129,252,253,239,15,131,244, 95 1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,
113 56,137,68,36,20,137,105,252,252,139,41,137,105,252,248,131,232,2,15,132,244, 96 253,171,233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,
114 248,137,76,36,16,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,105, 97 239,15,131,244,55,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137,
115 252,248,131,232,1,15,133,244,1,139,76,36,16,248,2,139,68,36,20,252,233,244, 98 106,252,248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,
116 57,248,58,129,252,248,239,15,130,244,56,139,105,4,184,237,252,247,213,57, 99 105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
117 232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,105,252,248,139, 100 20,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237,
118 132,253,197,233,199,65,252,252,237,137,65,252,248,252,233,244,59,248,60,129, 101 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,
119 252,248,239,15,130,244,56,139,105,4,129,252,253,239,15,133,244,252,248,1, 102 106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,
120 139,41,139,173,233,248,2,133,252,237,199,65,252,252,237,15,132,244,59,139, 103 252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106,4,139,
121 65,252,248,139,131,233,199,65,252,252,237,137,105,252,248,137,76,36,16,139, 104 114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,
122 141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133, 105 133,252,237,199,66,252,252,237,15,132,244,58,139,131,233,199,66,252,252,237,
123 244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3, 106 137,106,252,248,139,141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,
124 252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,255,139,1,139, 107 185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,
125 76,36,16,137,105,252,252,137,65,252,248,252,233,244,59,248,6,129,252,253, 108 201,15,133,244,3,252,233,244,58,248,5,139,105,4,129,252,253,239,15,132,244,
126 239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213, 109 58,255,139,1,137,106,252,252,137,66,252,248,252,233,244,58,248,6,129,252,
127 139,172,253,171,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,129, 110 253,239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,
128 121,253,4,239,15,133,244,56,255,139,41,131,189,233,0,15,133,244,56,129,121, 111 213,139,172,253,171,233,252,233,244,2,248,60,129,252,248,239,15,130,244,55,
129 253,12,239,15,133,244,56,139,65,8,137,133,233,199,65,252,252,237,137,105, 112 129,122,253,4,239,15,133,244,55,255,139,42,131,189,233,0,15,133,244,55,129,
130 252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,137, 113 122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,
131 171,233,137,133,233,248,1,252,233,244,59,248,62,255,129,252,248,239,15,130, 114 252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,
132 244,56,129,121,253,4,239,15,133,244,56,139,1,139,108,36,48,137,68,36,4,137, 115 235,139,131,233,137,171,233,137,133,233,248,1,252,233,244,58,248,61,255,129,
133 44,36,137,205,137,84,36,16,131,193,8,137,76,36,8,232,251,1,9,137,252,233, 116 252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,2,139,108,36,
134 139,84,36,16,139,40,139,64,4,137,105,252,248,137,65,252,252,252,233,244,59, 117 48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,1,9,137,252,
135 248,63,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,56,255, 118 234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252,252,252,233,
136 252,242,15,16,1,252,233,244,64,255,221,1,252,233,244,65,255,248,66,129,252, 119 244,58,248,62,129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,
137 248,239,15,130,244,56,129,121,253,4,239,15,133,244,249,139,1,248,2,199,65, 120 55,255,252,242,15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,
138 252,252,237,137,65,252,248,252,233,244,59,248,3,129,121,253,4,239,15,135, 121 129,252,248,239,15,130,244,55,139,114,252,252,129,122,253,4,239,15,133,244,
139 244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,15,130,244, 122 249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,
140 247,232,244,67,248,1,139,108,36,48,137,141,233,137,113,252,252,137,116,36, 123 122,253,4,239,15,135,244,55,131,187,233,0,15,133,244,55,139,171,233,59,171,
141 24,137,84,36,16,137,202,137,252,233,232,251,1,10,139,141,233,139,84,36,16, 124 233,255,15,130,244,247,232,244,66,248,1,139,108,36,48,137,149,233,137,116,
142 252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129, 125 36,24,137,252,233,232,251,1,10,139,149,233,252,233,244,2,248,67,129,252,248,
143 121,253,4,239,15,133,244,56,139,41,137,108,36,4,139,108,36,48,137,44,36,137, 126 239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15,133,244,55,139,
144 141,233,255,137,113,252,252,137,84,36,16,131,193,8,137,76,36,8,137,116,36, 127 108,36,48,137,149,233,255,139,114,252,252,139,2,137,68,36,4,137,44,36,131,
145 24,232,251,1,11,139,141,233,139,84,36,16,133,192,15,132,244,249,139,105,8, 128 194,8,137,84,36,8,137,116,36,24,232,251,1,11,139,149,233,133,192,15,132,244,
146 139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,20,137,41,137, 129 249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,
147 65,4,248,69,184,237,252,233,244,70,248,2,199,65,12,237,252,233,244,1,248, 130 20,137,42,137,66,4,248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,
148 3,199,65,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56, 131 233,244,1,248,3,199,66,252,252,237,252,233,244,58,248,70,129,252,248,239,
149 129,121,253,4,239,255,15,133,244,56,139,133,233,199,65,252,252,237,137,65, 132 15,130,244,55,139,106,252,248,129,122,253,4,239,255,15,133,244,55,139,133,
150 252,248,199,65,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130, 133 233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,
151 244,56,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,255, 134 252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
152 252,242,15,16,65,8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252, 135 133,244,55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,252,242,15,
153 242,15,88,193,252,242,15,45,192,252,242,15,17,65,252,248,255,221,65,8,217, 136 16,66,8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,
154 232,222,193,219,20,36,221,89,252,248,139,4,36,255,139,41,59,133,233,15,131, 137 193,252,242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,
155 244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,139,40, 138 219,20,36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,
156 139,64,4,137,41,137,65,4,252,233,244,69,248,2,131,189,233,0,15,132,244,73, 139 224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,137,
157 137,84,36,16,135,205,137,194,232,251,1,12,137,252,233,139,84,36,16,133,192, 140 42,137,66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,233,
158 15,133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15, 141 137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,184,
159 130,244,56,129,121,253,4,239,15,133,244,56,139,133,233,199,65,252,252,237, 142 237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,106,252,248,
160 137,65,252,248,255,15,87,192,252,242,15,17,65,8,255,217,252,238,221,89,8, 143 129,122,253,4,239,15,133,244,55,139,133,233,139,114,252,252,199,66,252,252,
161 255,184,237,252,233,244,70,248,75,129,252,248,239,15,130,244,56,137,113,252, 144 237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,
162 252,190,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,252,246,131, 145 8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,74,
163 233,235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,31,252,255, 146 8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,
164 165,233,248,3,131,198,1,252,233,244,2,248,76,255,129,252,248,239,15,130,244, 147 238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239,
165 56,129,121,253,12,239,15,133,244,56,137,113,252,252,139,105,4,137,105,12, 148 15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,
166 199,65,4,237,139,41,139,113,8,137,105,8,137,49,190,237,137,202,129,193,239, 149 106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252,248,
167 131,232,2,252,233,244,1,248,9,139,116,36,24,252,233,244,56,248,77,129,252, 150 239,15,130,244,55,139,42,139,114,252,252,137,116,36,24,137,44,36,129,122,
168 248,239,15,130,244,56,139,41,137,113,252,252,137,116,36,24,137,44,36,129, 151 253,4,239,15,133,244,55,131,189,233,0,15,133,244,55,128,189,233,235,15,135,
169 121,253,4,239,15,133,244,9,255,131,189,233,0,15,133,244,9,128,189,233,235, 152 244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,1,141,
170 15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132,244, 153 116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,48,137,149,
171 9,248,1,141,116,198,252,240,59,181,233,15,135,244,9,137,181,233,139,108,36, 154 233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206,15,132,244,249,
172 48,137,141,233,131,193,8,137,141,233,255,139,108,36,4,141,76,193,232,41,252, 155 248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,
173 241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137, 156 206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,
174 70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12, 157 24,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129,252,248,239,
175 137,76,36,8,232,244,28,199,131,233,237,139,108,36,48,139,52,36,139,149,233, 158 15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,
176 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233, 159 15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,
177 137,252,254,41,206,15,132,244,252,255,141,4,50,193,252,238,3,59,133,233,15, 160 205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,
178 135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131, 161 244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,
179 193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139, 162 185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244,13,252,
180 116,36,24,137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237, 163 233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,142,233,
181 15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233,131,252, 164 139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,12,36,137,185,
182 233,8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248, 165 233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,77,
183 9,255,139,12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233, 166 139,106,252,248,139,173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,
184 252,233,244,4,248,9,139,116,36,24,252,233,244,56,248,78,139,173,233,137,113, 167 233,0,15,133,244,55,255,128,189,233,235,15,135,244,55,139,141,233,15,132,
185 252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,9,128,189,233,235, 168 244,247,59,141,233,15,132,244,55,248,1,141,116,193,252,248,59,181,233,15,
186 15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,255,15,132, 169 135,244,55,137,181,233,139,108,36,48,137,149,233,137,149,233,141,108,194,
187 244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137,181,233,139,108, 170 252,240,41,252,245,57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,
188 36,48,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,41,252,241, 171 252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,
189 57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70, 172 36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237,139,108,36,
190 252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137, 173 48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,
191 76,36,8,232,244,28,199,131,233,237,139,108,36,48,139,52,36,139,149,233,255, 174 139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,
192 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233, 175 238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,
193 137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135, 176 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,
194 244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193, 177 116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,
195 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137,68,36,20, 178 248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,12,36,137,185,233,137,
196 49,201,252,247,198,237,15,132,244,17,255,252,233,244,18,248,8,137,252,242, 179 252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,248,78,139,108,
197 137,252,233,232,251,1,13,248,9,139,12,36,137,185,233,137,252,242,137,252, 180 36,48,252,247,133,233,237,15,132,244,55,255,137,149,233,141,68,194,252,248,
198 233,232,251,1,0,139,149,233,252,233,244,4,248,79,139,108,36,48,137,113,252, 181 137,133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,255,248,
199 252,252,247,133,233,237,15,132,244,56,137,141,233,141,68,193,252,248,137, 182 64,139,114,252,252,221,90,252,248,252,233,244,58,248,79,129,252,248,239,15,
200 133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,22,255,248,65, 183 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,102,15,252,239,
201 221,89,252,248,252,233,244,59,248,80,129,252,248,239,15,130,244,56,129,121, 184 201,102,15,118,201,102,15,115,209,1,15,84,193,248,63,139,114,252,252,252,
202 253,4,239,15,135,244,56,252,242,15,16,1,102,15,252,239,201,102,15,118,201, 185 242,15,17,66,252,248,255,248,79,129,252,248,239,15,130,244,55,129,122,253,
203 102,15,115,209,1,15,84,193,248,64,252,242,15,17,65,252,248,255,248,80,129, 186 4,239,15,135,244,55,221,2,217,225,248,63,248,64,139,114,252,252,221,90,252,
204 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,225,248, 187 248,255,248,58,184,237,248,69,137,68,36,20,248,56,252,247,198,237,15,133,
205 64,248,65,221,89,252,248,255,248,59,184,237,248,70,137,68,36,20,248,57,252, 188 244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,252,247,209,
206 247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,139,6,15,182, 189 141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
207 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,193,252,244, 190 248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,252,248,252,
208 237,131,192,1,252,233,244,5,248,7,137,202,185,252,248,252,255,252,255,252, 191 255,252,255,252,255,252,233,244,14,255,248,80,129,252,248,239,15,130,244,
209 255,252,233,244,18,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4, 192 55,129,122,253,4,239,15,135,244,55,252,242,15,81,2,252,233,244,63,248,81,
210 239,15,135,244,56,252,242,15,81,1,252,233,244,64,248,82,129,252,248,239,15, 193 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
211 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,83,252, 194 16,2,232,244,82,252,233,244,63,248,83,255,129,252,248,239,15,130,244,55,129,
212 233,244,64,248,84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 195 122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,84,252,233,244,63,255,
213 135,244,56,252,242,15,16,1,232,244,85,252,233,244,64,255,248,81,129,252,248, 196 248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
214 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,250,252,233, 197 2,217,252,250,252,233,244,64,248,81,129,252,248,239,15,130,244,55,129,122,
215 244,65,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 198 253,4,239,15,135,244,55,221,2,232,244,82,252,233,244,64,248,83,255,129,252,
216 56,221,1,232,244,83,252,233,244,65,248,84,255,129,252,248,239,15,130,244, 199 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,84,252,
217 56,129,121,253,4,239,15,135,244,56,221,1,232,244,85,252,233,244,65,255,248, 200 233,244,64,255,248,85,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
218 86,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252, 201 135,244,55,217,252,237,221,2,217,252,241,252,233,244,64,248,86,129,252,248,
219 237,221,1,217,252,241,252,233,244,65,248,87,129,252,248,239,15,130,244,56, 202 239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,236,221,2,217,252,
220 129,121,253,4,239,15,135,244,56,217,252,236,221,1,217,252,241,252,233,244, 203 241,252,233,244,64,248,87,129,252,248,239,255,15,130,244,55,129,122,253,4,
221 65,248,88,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,135,244, 204 239,15,135,244,55,221,2,232,244,88,252,233,244,64,248,89,129,252,248,239,
222 56,221,1,232,244,89,252,233,244,65,248,90,129,252,248,239,15,130,244,56,129, 205 15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,254,252,233,244,
223 121,253,4,239,15,135,244,56,221,1,217,252,254,252,233,244,65,248,91,129,252, 206 64,248,90,129,252,248,239,255,15,130,244,55,129,122,253,4,239,15,135,244,
224 248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,255, 207 55,221,2,217,252,255,252,233,244,64,248,91,129,252,248,239,15,130,244,55,
225 252,233,244,65,248,92,129,252,248,239,15,130,244,56,129,121,253,4,239,15, 208 129,122,253,4,239,15,135,244,55,221,2,217,252,242,221,216,252,233,244,64,
226 135,244,56,221,1,217,252,242,221,216,252,233,244,65,248,93,129,252,248,239, 209 248,92,129,252,248,239,15,130,244,55,255,129,122,253,4,239,15,135,244,55,
227 15,130,244,56,255,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217, 210 221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,
228 232,222,225,217,252,250,217,252,243,252,233,244,65,248,94,129,252,248,239, 211 64,248,93,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
229 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,232, 212 2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,
230 222,225,217,252,250,217,201,217,252,243,252,233,244,65,248,95,129,252,248, 213 244,64,248,94,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
231 239,15,130,244,56,129,121,253,4,239,15,135,244,56,255,221,1,217,232,217,252, 214 55,255,221,2,217,232,217,252,243,252,233,244,64,255,248,95,129,252,248,239,
232 243,252,233,244,65,255,248,96,129,252,248,239,15,130,244,56,129,121,253,4, 215 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15,
233 239,15,135,244,56,252,242,15,16,1,252,242,15,17,4,36,255,248,96,129,252,248, 216 17,4,36,255,248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
234 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,221,28,36,255,137, 217 244,55,221,2,221,28,36,255,137,213,232,251,1,14,137,252,234,252,233,244,64,
235 76,36,16,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233,244,65,255, 218 255,248,96,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
236 248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252, 219 252,242,15,16,2,252,242,15,17,4,36,255,248,96,129,252,248,239,15,130,244,
237 242,15,16,1,252,242,15,17,4,36,255,248,97,129,252,248,239,15,130,244,56,129, 220 55,129,122,253,4,239,15,135,244,55,221,2,221,28,36,255,137,213,232,251,1,
238 121,253,4,239,15,135,244,56,221,1,221,28,36,255,137,76,36,16,137,213,232, 221 15,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,244,55,129,
239 251,1,15,139,76,36,16,137,252,234,252,233,244,65,255,248,98,129,252,248,239, 222 122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15,17,4,36,255,248,97,
240 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15, 223 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,221,28,
241 17,4,36,255,248,98,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, 224 36,255,137,213,232,251,1,16,137,252,234,252,233,244,64,248,98,255,248,99,
242 244,56,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,16,139,76,36,16, 225 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,
243 137,252,234,252,233,244,65,248,99,255,248,100,129,252,248,239,15,130,244, 226 16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,
244 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,89,133,233, 227 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,
245 252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,121,253,4,239, 228 248,220,141,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,
246 15,135,244,56,221,1,220,141,233,252,233,244,65,255,248,101,129,252,248,239, 229 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,
247 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 230 66,8,217,252,243,252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,
248 56,221,1,221,65,8,217,252,243,252,233,244,65,248,102,129,252,248,239,15,130, 231 122,253,4,239,15,135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,
249 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,255,15,135,244, 232 221,2,217,252,253,221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,
250 56,221,65,8,221,1,217,252,253,221,217,252,233,244,65,248,103,129,252,248, 233 55,139,106,4,129,252,253,239,15,135,244,55,139,114,252,252,139,2,137,106,
251 239,15,130,244,56,139,105,4,129,252,253,239,15,135,244,56,139,1,137,105,252, 234 252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,
252 252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232, 235 9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,
253 15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248, 236 248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,
254 1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,36, 237 36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,
255 16,255,139,105,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63, 238 63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
256 137,105,252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237,252,233, 239 244,69,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
257 244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255, 240 248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,102,15,112,201,81,
258 252,242,15,16,1,189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15, 241 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,
259 89,193,252,242,15,17,65,252,248,255,221,1,199,68,36,16,0,0,128,90,216,76, 242 90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,
260 36,16,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244, 243 233,244,1,255,248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
261 1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 244 135,244,55,252,242,15,16,2,255,248,103,129,252,248,239,15,130,244,55,129,
262 56,252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253, 245 122,253,4,239,15,135,244,55,221,2,255,139,106,4,139,114,252,252,209,229,129,
263 4,239,15,135,244,56,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255, 246 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,104,252,242,
264 15,132,244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242, 247 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
265 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,220,252,233,248, 248 244,104,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
266 1,221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, 249 4,49,232,15,136,244,249,248,2,184,237,252,233,244,69,248,3,129,252,245,0,
267 248,2,184,237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,105,4,252,233, 250 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,
268 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 251 252,238,217,201,252,233,244,1,255,248,105,129,252,248,239,15,130,244,55,129,
269 1,255,248,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 252 122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,66,8,221,
270 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223, 253 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,64,255,248,
271 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15, 254 106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
272 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, 255 253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,232,244,107,252,
273 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248, 256 233,244,63,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
274 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, 257 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,232,244,107,252,
275 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248, 258 233,244,64,255,248,108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
276 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, 259 135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,
277 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252, 260 253,252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,
278 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, 261 242,15,93,193,131,197,1,252,233,244,1,255,248,108,129,252,248,239,15,130,
279 197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,56,129,121,253, 262 244,55,129,122,253,4,239,15,135,244,55,221,2,189,2,0,0,0,248,1,57,197,15,
280 4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124, 263 131,244,64,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234,
281 253,252,233,252,252,239,15,135,244,251,221,68,252,233,252,248,255,219,252, 264 252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,246,196,
282 233,219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217, 265 1,15,132,244,248,217,201,248,2,221,216,88,255,248,109,129,252,248,239,15,
283 201,248,2,221,216,88,255,248,110,129,252,248,239,15,130,244,56,129,121,253, 266 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,
284 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64, 267 1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,
285 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252, 268 242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,1,252,233,244,1,255,
286 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,110,129,252,248,239, 269 248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
287 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57, 270 2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,
288 197,15,131,244,65,129,124,253,252,233,252,252,239,15,135,244,251,221,68,252, 271 15,135,244,251,221,68,252,234,252,248,255,219,252,233,218,209,221,217,255,
289 233,252,248,255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246, 272 80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,
290 196,1,15,133,244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244, 273 255,248,5,221,216,252,233,244,55,255,248,110,129,252,248,239,15,130,244,55,
291 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, 274 129,122,253,4,239,15,133,244,55,139,42,255,252,242,15,42,133,233,252,233,
292 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233, 275 244,63,255,219,133,233,252,233,244,64,255,248,111,129,252,248,239,15,133,
293 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133, 276 244,55,129,122,253,4,239,15,133,244,55,139,42,139,114,252,252,131,189,233,
294 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42, 277 1,15,130,244,72,15,182,173,233,255,252,242,15,42,197,252,233,244,63,255,137,
295 197,252,233,244,64,255,137,108,36,16,219,68,36,16,252,233,244,65,255,248, 278 108,36,16,219,68,36,16,252,233,244,64,255,248,112,139,171,233,59,171,233,
296 113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,239, 279 15,130,244,247,232,244,66,248,1,129,252,248,239,15,133,244,55,129,122,253,
297 15,133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252, 280 4,239,15,135,244,55,255,252,242,15,45,2,61,252,255,0,0,0,15,135,244,55,137,
298 255,0,0,0,15,135,244,56,137,68,36,20,255,221,1,219,92,36,20,129,124,36,20, 281 68,36,20,255,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,55,
299 252,255,0,0,0,15,135,244,56,255,199,68,36,8,1,0,0,0,141,68,36,20,137,76,36, 282 255,199,68,36,8,1,0,0,0,141,68,36,20,248,113,139,108,36,48,137,149,233,137,
300 16,248,114,139,108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36,24, 283 68,36,4,137,44,36,137,116,36,24,232,251,1,17,139,149,233,139,114,252,252,
301 232,251,1,17,139,76,36,16,139,149,233,199,65,252,252,237,137,65,252,248,252, 284 199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,139,171,233,59,171,
302 233,244,59,248,115,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1, 285 233,15,130,244,247,232,244,66,248,1,199,68,36,20,252,255,252,255,252,255,
303 137,76,36,16,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239, 286 252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,255,
304 15,130,244,56,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105,16, 287 252,242,15,45,106,16,137,108,36,20,255,221,66,16,219,92,36,20,255,248,1,129,
305 137,108,36,20,255,221,65,16,219,92,36,20,255,248,1,129,121,253,4,239,15,133, 288 122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,
306 244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36,12,139,173,233, 289 36,12,139,173,233,255,252,242,15,45,74,8,255,221,66,8,219,92,36,8,139,76,
307 255,252,242,15,45,73,8,255,221,65,8,219,92,36,8,139,76,36,8,255,139,68,36, 290 36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,
308 20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,12, 291 248,3,139,108,36,12,41,200,15,140,244,115,141,172,253,13,233,131,192,1,248,
309 41,200,15,140,244,116,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137, 292 4,137,68,36,8,137,232,252,233,244,113,248,5,15,140,244,252,141,68,40,1,252,
310 232,252,233,244,114,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6, 293 233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,
311 137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143, 294 131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,115,49,192,252,
312 244,3,248,8,185,1,0,0,0,252,233,244,3,248,116,49,192,252,233,244,4,248,117, 295 233,244,4,248,116,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,
313 129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,244, 296 130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244,55,129,122,
314 67,248,1,255,137,76,36,16,129,121,253,4,239,15,133,244,56,129,121,253,12, 297 253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221,66,8,219,92,
315 239,15,135,244,56,139,41,255,252,242,15,45,65,8,255,221,65,8,219,92,36,20, 298 36,20,139,68,36,20,255,133,192,15,142,244,115,131,189,233,1,15,130,244,115,
316 139,68,36,20,255,133,192,15,142,244,116,131,189,233,1,15,130,244,116,15,133, 299 15,133,244,117,57,131,233,15,130,244,117,15,182,141,233,139,171,233,137,68,
317 244,118,57,131,233,15,130,244,118,15,182,141,233,139,171,233,137,68,36,8, 300 36,8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,
318 248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,114, 301 244,113,248,118,129,252,248,239,255,15,130,244,55,139,171,233,59,171,233,
319 248,119,129,252,248,239,255,15,130,244,56,139,171,233,59,171,233,15,130,244, 302 15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,
320 247,232,244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41, 303 133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,129,197,239,137,
321 139,133,233,133,192,15,132,244,116,57,131,233,15,130,244,120,129,197,239, 304 116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,
322 137,116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131, 305 1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,113,248,120,
323 232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,114,248, 306 129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,232,244,
324 121,129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232, 307 66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,255,
325 244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133, 308 15,130,244,119,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,
326 233,57,131,233,255,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139, 309 244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,
327 179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248, 310 15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,
328 131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232, 311 137,252,240,139,116,36,20,252,233,244,113,248,121,129,252,248,239,15,130,
329 1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,114,248,122,129,252, 312 244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,
330 248,239,15,130,244,56,255,139,171,233,59,171,233,15,130,244,247,232,244,67, 313 253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119,129,
331 248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133,233,57, 314 197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,
332 131,233,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 315 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
333 252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131, 316 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,
334 252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1, 317 36,20,252,233,244,113,248,122,129,252,248,239,15,130,244,55,129,122,253,4,
335 15,137,244,1,137,252,240,139,116,36,20,252,233,244,114,248,123,129,252,248, 318 239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242,15,
336 239,15,130,244,56,129,121,253,4,239,15,133,244,56,137,84,36,16,137,205,139, 319 42,192,252,233,244,63,255,137,4,36,219,4,36,252,233,244,64,255,248,123,129,
337 9,232,251,1,18,137,252,233,139,84,36,16,255,252,242,15,42,192,252,233,244, 320 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
338 64,255,137,4,36,219,4,36,252,233,244,65,255,248,124,129,252,248,239,15,130,
339 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,
340 15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,252,242,15,
341 42,197,252,233,244,64,255,248,124,129,252,248,239,15,130,244,56,129,121,253,
342 4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,
343 219,4,36,252,233,244,65,255,248,125,129,252,248,239,15,130,244,56,129,121,
344 253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,
345 15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,125,129,252,248,239,
346 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,
347 89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,193,252,240,255,
348 137,84,36,16,255,248,1,57,200,15,134,244,126,129,120,253,4,239,15,135,244,
349 127,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,221,0,
350 216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,128,129,
351 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,
352 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,
353 197,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
354 56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,
355 242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,255,221,0,216,68,36,16,
356 221,28,36,11,44,36,255,248,129,129,252,248,239,15,130,244,56,129,121,253,
357 4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,
358 201,81,252,242,15,88,193,102,15,126,197,255,248,129,129,252,248,239,15,130,
359 244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,
360 68,36,16,221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,
361 126,194,49,213,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,130,129,
362 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,
363 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126, 321 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,
364 197,255,248,130,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 322 197,252,242,15,42,197,252,233,244,63,255,248,123,129,252,248,239,15,130,244,
365 56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15, 323 55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,
366 205,252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129,121,253, 324 16,221,28,36,219,4,36,252,233,244,64,255,248,124,129,252,248,239,15,130,244,
367 4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112, 325 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,
368 201,81,252,242,15,88,193,102,15,126,197,255,248,132,129,252,248,239,15,130, 326 205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,124,129,252,
369 244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216, 327 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,
370 68,36,16,221,28,36,139,44,36,255,252,247,213,255,248,131,252,242,15,42,197, 328 0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,194,252,
371 252,233,244,64,248,126,252,242,15,42,197,139,84,36,16,252,233,244,64,255, 329 240,248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255,252,
372 248,131,248,126,137,44,36,219,4,36,252,233,244,65,255,248,127,255,139,68, 330 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,
373 36,20,252,233,244,56,255,248,133,129,252,248,239,15,130,244,56,129,121,253, 331 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,
374 4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252, 332 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,
375 242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15, 333 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
376 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133, 334 248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
377 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253, 335 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
378 12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16, 336 16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,221,28,
337 36,11,44,36,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
338 135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
339 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,55,
340 129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,
341 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
342 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,129,129,252,248,
343 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,
344 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
345 248,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
346 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252,
347 233,244,125,255,248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
348 135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
349 252,242,15,88,193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,55,
350 129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,
351 221,28,36,139,44,36,255,252,247,213,255,248,125,252,242,15,42,197,252,233,
352 244,63,255,248,125,137,44,36,219,4,36,252,233,244,64,255,248,126,139,68,36,
353 20,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,
354 239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,
355 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
356 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,131,129,252,
357 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
358 15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
359 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,
360 193,252,233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,
361 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
362 242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,
363 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,
364 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,
365 12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,
379 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, 366 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
380 229,137,193,252,233,244,131,255,248,134,129,252,248,239,15,130,244,56,129, 367 252,237,137,193,252,233,244,125,255,248,133,129,252,248,239,15,130,244,55,
381 121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16, 368 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
382 1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, 369 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,
383 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,
384 134,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,
385 253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,
386 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
387 252,237,137,193,252,233,244,131,255,248,135,129,252,248,239,15,130,244,56,
388 129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,
389 15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,
390 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201, 370 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,
391 255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, 371 255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
392 129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216, 372 129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,
393 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36, 373 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,
394 255,211,252,253,137,193,252,233,244,131,255,248,136,129,252,248,239,15,130, 374 255,211,252,253,137,193,252,233,244,125,255,248,134,129,252,248,239,15,130,
395 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252, 375 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,
396 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 376 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
397 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, 377 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
398 201,255,248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 378 201,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
399 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89, 379 55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,
400 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, 380 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
401 36,255,211,197,137,193,252,233,244,131,255,248,137,129,252,248,239,15,130, 381 36,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248,239,15,130,
402 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252, 382 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,
403 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 383 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
404 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, 384 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
405 201,255,248,137,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, 385 201,255,248,135,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
406 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89, 386 55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,
407 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, 387 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
408 36,255,211,205,137,193,252,233,244,131,248,118,184,237,252,233,244,56,248, 388 36,255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,
409 120,184,237,248,56,139,108,36,48,41,202,137,113,252,252,137,116,36,24,137, 389 119,184,237,248,55,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,
410 84,36,16,137,141,233,141,68,193,252,248,141,144,233,137,133,233,139,65,252, 390 141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,
411 248,59,149,233,15,135,244,251,137,44,36,252,255,144,233,133,192,15,133,244, 391 244,251,137,44,36,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,
412 249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139,105, 392 255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,
413 252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248,252,255,165,233, 393 15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,
414 248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,139,141, 394 255,36,171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,
415 233,139,84,36,16,1,202,252,233,244,70,248,5,186,237,137,252,233,232,251,1, 395 252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,
416 0,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,41,202,137,84,36,20, 396 41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,
417 137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248,137,252,233, 397 252,233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,
418 137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131, 398 233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,149,233,
419 192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105,252,248, 399 139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,136,255,15,
420 195,248,138,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244, 400 182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,
421 247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,139,15, 401 244,247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,233,168,235,
422 182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233, 402 15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,
423 15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149,233,137, 403 235,15,132,244,251,248,1,139,108,36,48,137,149,233,137,252,242,137,252,233,
424 252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253, 404 232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,255,15,182,110,
425 248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,233,248, 405 252,252,15,183,70,252,254,252,255,164,253,171,233,248,138,131,198,4,139,77,
426 140,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,141,255,139,108,36, 406 232,137,76,36,20,252,233,244,4,248,139,255,139,106,252,248,139,173,233,15,
427 48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,251, 407 182,133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,
428 1,21,252,233,244,3,255,248,142,255,139,108,36,48,137,149,233,137,252,242, 408 139,233,137,171,233,137,116,36,24,232,251,1,21,252,233,244,3,255,248,140,
429 141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6,15,182, 409 255,141,68,194,252,248,139,108,36,48,137,149,233,137,133,233,137,252,242,
430 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,143,255,85,141, 410 141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,133,233,
431 108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252, 411 41,208,193,232,3,131,192,1,139,106,252,248,139,181,233,139,14,15,182,252,
432 137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139, 412 233,15,182,205,131,198,4,252,255,36,171,255,248,141,255,85,141,108,36,12,
433 233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,17,125, 413 85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,
434 216,252,242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252, 414 252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,
435 242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17, 415 252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,17,125,216,252,
436 69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,36,16, 416 242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,
437 141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48, 417 17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,
438 255,248,144,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0, 418 248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,36,16,141,139,
439 0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 419 233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48,255,248,
440 36,171,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4, 420 142,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,
441 102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36, 421 233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
442 4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102,15,115, 422 248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
443 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84, 423 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
444 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, 424 36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
445 15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,
446 81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,
447 248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,
448 255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
449 36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
450 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15, 425 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,
451 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 426 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
452 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15, 427 15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,
453 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,105,255, 428 194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,84,255,
454 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217, 429 217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,
455 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,147,102,15,252, 430 102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,
456 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102, 431 248,144,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,
457 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 432 102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,
458 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102, 433 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
459 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15, 434 184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15,194,193,6,
460 92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15, 435 102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124,36,
461 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102, 436 4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,
462 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134, 437 252,252,217,108,36,4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,
463 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184, 438 118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,
464 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102, 439 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,
465 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193, 440 252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,
466 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216, 441 15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
467 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 442 86,202,15,40,193,248,1,195,248,146,255,15,40,232,252,242,15,94,193,102,15,
468 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195, 443 252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,
469 255,248,89,217,252,234,222,201,248,149,217,84,36,4,129,124,36,4,0,0,128,127, 444 102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,
470 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,150,217,192, 445 15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,
471 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 446 63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,
472 217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219,84,36,4,219,68, 447 242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,
473 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138, 448 242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,241,217,
474 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0, 449 124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,
475 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 450 6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,248,88,
476 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233, 451 217,252,234,222,201,248,147,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,
477 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232, 452 247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,148,217,192,217,252,252,
478 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221, 453 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,
479 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224, 454 195,248,2,221,216,217,252,238,195,255,248,107,219,84,36,4,219,68,36,4,255,
480 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0, 455 223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138,244,255,
481 0,252,255,15,132,244,250,217,252,241,252,233,244,150,248,9,255,217,232,255, 456 221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,
482 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1, 457 244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,
483 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217, 458 248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,
484 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201, 459 4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,
485 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216, 460 241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,
486 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217, 461 232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0,
487 68,36,4,195,255,248,108,255,248,151,252,242,15,45,193,252,242,15,42,208,102, 462 0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252,
488 15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,1,15,142,244, 463 255,15,132,244,250,217,252,241,252,233,244,148,248,9,255,217,232,255,223,
489 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244, 464 252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1,221,
490 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232, 465 216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217,252,
491 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252, 466 238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201,248,
492 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252, 467 3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216,133,
493 240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252, 468 192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,
494 247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63, 469 4,195,255,248,107,255,248,149,252,242,15,45,193,252,242,15,42,208,102,15,
495 102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242, 470 46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,1,15,142,244,252,
496 15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0, 471 248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,
497 224,252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68, 472 248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,
498 36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68, 473 132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,
499 36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217, 474 15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252,240,
500 252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68, 475 63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252,247,
501 36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15, 476 216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63,102,
502 46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15, 477 15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242,15,
503 118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208, 478 17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0,224,
504 102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136, 479 252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68,36,
505 196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192, 480 8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68,36,
506 102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87, 481 12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,
507 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,153,255, 482 240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68,36,4,
508 139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244, 483 195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194,
509 248,232,244,83,252,233,244,253,248,1,232,244,85,252,233,244,253,248,2,131, 484 15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15,118,210,
510 252,248,3,15,132,244,247,15,135,244,248,232,244,105,255,252,233,244,253,248, 485 102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208,102,15,112,
511 1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221, 486 210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,
512 68,36,4,131,252,248,5,15,130,244,89,15,132,244,149,248,2,131,252,248,7,15, 487 208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192,102,15,112,
513 132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217, 488 192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87,192,195,248,
514 232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244, 489 5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,151,255,139,68,36,
515 248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131, 490 12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244,248,232,
516 252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242, 491 244,82,252,233,244,253,248,1,232,244,84,252,233,244,253,248,2,131,252,248,
517 221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,83,15,132, 492 3,15,132,244,247,15,135,244,248,232,244,104,255,252,233,244,253,248,1,252,
518 244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2, 493 242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221,68,36,
519 131,252,248,5,15,130,244,89,15,132,244,149,131,252,248,7,15,132,244,247,15, 494 4,131,252,248,5,15,130,244,88,15,132,244,147,248,2,131,252,248,7,15,132,244,
520 135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217, 495 247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,
521 252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252, 496 201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,255,
522 236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15, 497 217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,
523 132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195, 498 11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,
524 255,248,9,204,248,154,255,139,68,36,20,252,242,15,16,68,36,4,252,242,15,16, 499 195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,82,15,132,244,84,
525 76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,248, 500 131,252,248,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252,
526 7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,233,244, 501 248,5,15,130,244,88,15,132,244,147,131,252,248,7,15,132,244,247,15,135,244,
527 7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,252, 502 248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,
528 233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,5,15,132, 503 195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252,236,217,
529 244,247,255,15,135,244,248,232,244,148,252,233,244,7,248,1,90,232,244,108, 504 201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15,132,244,
530 82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,184,0, 505 247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,
531 0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,1,102, 506 9,204,248,152,255,139,68,36,20,252,242,15,16,68,36,4,252,242,15,16,76,36,
532 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,7,248, 507 12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,248,7,252,
533 2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247, 508 242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,233,244,7,248,
534 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 509 2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,252,233,244,
535 15,132,244,247,15,135,244,255,252,242,15,93,193,252,233,244,7,248,1,252,242, 510 7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,5,15,132,244,247,
511 255,15,135,244,248,232,244,146,252,233,244,7,248,1,90,232,244,107,82,252,
512 233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,184,0,0,0,128,
513 102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,1,102,15,252,
514 239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,7,248,2,255,
515 131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247,217,
516 252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,
517 132,244,247,15,135,244,255,252,242,15,93,193,252,233,244,7,248,1,252,242,
536 15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36, 518 15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,
537 12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252, 519 12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,
538 233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248, 520 233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,
539 1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132,244,108,131,252, 521 1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,15,132,244,107,131,252,
540 248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216, 522 248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216,
541 217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243, 523 217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,
542 195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244, 524 195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,
543 247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233, 525 247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,
544 218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217, 526 218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,
545 201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248, 527 201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,
546 217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242,0,0,32,0, 528 217,201,248,2,221,216,195,255,248,153,156,90,137,209,129,252,242,0,0,32,0,
547 82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,124, 529 82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,124,
548 36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,129,124,253,202, 530 36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249,255,129,124,
549 4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252,242,15,16, 531 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,
550 4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223, 532 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,
551 252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131, 533 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,
552 244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182, 534 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,
553 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131, 535 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,
554 198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251, 536 131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,
555 255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138, 537 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,
556 244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183, 538 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
557 70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180, 539 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
558 253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15, 540 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,
559 131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135, 541 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,
560 244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244, 542 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,
561 2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,252,247,208,131,198, 543 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131,
562 4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4, 544 198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,
563 129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4, 545 4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,
564 202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139, 546 4,202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,
565 108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247, 547 108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,
566 255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253, 548 255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,
567 134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 549 134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
568 171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204, 550 171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,
569 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253, 551 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,
570 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4, 552 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
571 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,50,255,252, 553 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,48,255,252,
572 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193, 554 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,
573 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194, 555 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,
574 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1, 556 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,
575 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204, 557 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,
576 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239, 558 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,
577 15,133,244,52,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252, 559 15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,
578 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1, 560 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1,
579 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48, 561 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,
580 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199, 562 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,
581 255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242, 563 255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,
582 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239, 564 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,
583 15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252, 565 15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,
584 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252, 566 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,
585 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4, 567 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,
586 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16, 568 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,
@@ -594,10 +576,10 @@ static const unsigned char build_actionlist[15199] = {
594 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234, 576 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,
595 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199, 577 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,
596 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4, 578 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,
597 252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244, 579 252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,154,255,232,244,
598 108,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36, 580 107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,
599 8,248,35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,23,139, 581 8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,23,139,
600 149,233,133,192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68, 582 149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68,
601 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182, 583 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,
602 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68, 584 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,
603 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 585 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
@@ -619,96 +601,99 @@ static const unsigned char build_actionlist[15199] = {
619 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189, 601 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,
620 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252, 602 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252,
621 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141, 603 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,
622 233,139,141,233,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141, 604 233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,
623 233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 605 248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,
624 171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137, 606 131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48,
625 149,233,141,20,202,137,252,233,232,251,1,25,139,149,233,248,1,139,6,15,182, 607 131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,
626 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74, 608 25,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
627 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149, 609 255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76,
628 233,137,116,36,24,232,251,1,26,139,149,233,15,182,78,252,253,137,4,202,199, 610 36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,26,139,149,
629 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
630 171,255,137,197,37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,132,244,
631 249,248,2,137,108,36,8,139,108,36,48,137,68,36,4,137,116,36,24,139,131,233,
632 137,44,36,59,131,233,137,149,233,15,131,244,251,248,1,232,251,1,27,139,149,
633 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, 611 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,
634 232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248, 612 232,131,198,4,193,232,16,252,255,36,171,255,137,197,37,252,255,7,0,0,193,
635 5,137,252,233,232,251,1,28,252,233,244,1,255,252,247,208,139,108,36,48,139, 613 252,237,11,61,252,255,7,0,0,15,132,244,249,248,2,137,108,36,8,139,108,36,
636 139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20, 614 48,137,68,36,4,137,116,36,24,139,131,233,137,44,36,59,131,233,137,149,233,
637 135,137,252,233,232,251,1,29,139,149,233,15,182,78,252,253,137,4,202,199, 615 15,131,244,251,248,1,232,251,1,27,139,149,233,15,182,78,252,253,137,4,202,
638 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 616 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
639 171,248,3,137,252,233,232,251,1,28,15,183,70,252,254,252,247,208,252,233, 617 36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,28,252,
640 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,157, 618 233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,
641 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158,255, 619 233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,29,
642 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44, 620 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
643 252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, 621 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,
644 242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219, 622 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,
645 4,36,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, 623 252,248,139,173,233,139,4,135,252,233,244,155,255,252,247,208,139,106,252,
646 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139, 624 248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,236,15,182,192,129,
647 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189, 625 124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,
648 233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78, 626 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,
649 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,38,139,4, 627 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233,
650 194,252,233,244,157,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129, 628 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,
651 124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157,139,141,233,35, 629 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,
652 136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129, 630 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233,
653 233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,139, 631 252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,
654 41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,6,15,182,204,15,182,232, 632 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182,
655 131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,185,237,252,233, 633 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
656 244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15, 634 244,34,139,44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233,
657 132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,36,255,15,182,252, 635 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,
658 236,15,182,192,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,59, 636 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,
659 133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248, 637 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
660 248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232, 638 171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,
661 131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139, 639 15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,
662 141,233,252,246,129,233,235,15,132,244,37,255,15,182,252,236,15,182,192,129, 640 133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,
663 124,253,252,234,4,239,15,133,244,41,139,44,252,234,129,124,253,194,4,239, 641 4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,
664 15,135,244,251,255,15,133,244,41,59,133,233,15,131,244,41,193,224,3,3,133, 642 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,
643 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
644 248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,
645 35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,
646 139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,
647 133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,
648 248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,
649 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
650 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,
651 244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
652 244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,233,137,171,
653 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,
654 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,
655 252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,
656 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,
657 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,
658 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,
659 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,
660 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,
661 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,
662 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,
663 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,
664 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,30,139,149,233,139,108,
665 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,
666 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,
667 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
665 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 668 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
666 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 669 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,
667 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, 670 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,
668 139,141,233,255,252,246,129,233,235,15,132,244,41,15,182,78,252,253,252,233, 671 255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,
669 244,1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,158, 672 244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,
670 248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253, 673 252,253,252,233,244,2,255,137,124,36,16,255,221,4,199,219,92,36,12,255,248,
671 252,233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124, 674 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
672 253,252,234,4,239,15,133,244,39,139,44,252,234,248,158,139,141,233,35,136, 675 68,36,20,255,252,242,15,45,252,248,255,139,124,36,12,255,131,232,1,15,132,
673 233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244, 676 244,250,1,252,248,59,133,233,15,131,244,251,41,252,248,193,231,3,3,189,233,
674 251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255, 677 248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,
675 252,246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4, 678 133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,
676 139,4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 679 16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,149,233,137,68,36,
677 252,255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233, 680 8,137,44,36,137,116,36,24,232,251,1,31,139,149,233,15,182,78,252,253,252,
678 252,246,129,233,235,15,132,244,39,139,76,36,16,252,233,244,2,248,5,139,137, 681 233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133,233,252,
679 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129, 682 233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,139,44,202,15,133,244,
680 233,235,15,132,244,39,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141, 683 51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
681 68,36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137, 684 205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,139,105,252,248,129,
682 116,36,24,232,251,1,30,139,149,233,139,108,36,12,137,193,252,233,244,2,248, 685 121,253,252,252,239,15,133,244,28,248,52,139,114,252,252,252,247,198,237,
683 7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15, 686 15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,244,249,
684 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252, 687 248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232,1,15,
685 234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132, 688 133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,1,15,135,244,251,
686 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139, 689 248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
687 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 690 248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,252,247,209,141,
688 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233, 691 12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,
689 235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
690 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,
691 36,16,255,221,4,199,219,92,36,12,255,248,1,141,12,202,139,105,252,248,252,
692 246,133,233,235,15,133,244,253,248,2,139,68,36,20,255,252,242,15,45,252,248,
693 255,139,124,36,12,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,
694 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,
695 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,
696 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,
697 36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,
698 1,31,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
699 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,20,255,141,
700 76,202,8,139,105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,
701 233,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,
702 244,31,248,53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,
703 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,
704 4,137,111,4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,
705 3,137,209,128,189,233,1,15,135,244,251,248,4,139,68,36,20,252,255,165,233,
706 248,5,255,252,247,198,237,15,133,244,4,15,182,70,252,253,252,247,208,141,
707 20,194,139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,
708 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255, 692 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,
709 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139, 693 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,
710 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137, 694 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,
711 65,252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255, 695 65,252,252,129,252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,
696 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,
712 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, 697 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124,
713 36,16,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, 698 36,16,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108,
714 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, 699 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,
@@ -721,7 +706,7 @@ static const unsigned char build_actionlist[15199] = {
721 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24, 706 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,
722 41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139, 707 41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,
723 141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68, 708 141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,
724 36,20,252,247,198,237,15,133,244,253,255,248,17,137,215,131,232,1,15,132, 709 36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,
725 244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131, 710 244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,
726 199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5, 711 199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,
727 57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106, 712 57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,
@@ -729,10 +714,10 @@ static const unsigned char build_actionlist[15199] = {
729 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204, 714 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,
730 15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,237, 715 15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,237,
731 131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15, 716 131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15,
732 139,244,18,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252, 717 139,244,14,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252,
733 237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,255,141,12,202,255, 718 237,129,229,239,102,131,172,253,43,233,1,15,132,244,139,255,141,12,202,255,
734 129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139, 719 129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,
735 105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16, 720 105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,15,16,
736 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255, 721 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,
737 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221, 722 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,
738 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24, 723 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,
@@ -743,32 +728,44 @@ static const unsigned char build_actionlist[15199] = {
743 252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137, 728 252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,
744 105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108, 729 105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,
745 36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15, 730 36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,
746 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,254,0 731 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,190,233,139,
732 108,36,48,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,
733 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,
734 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,
735 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,
736 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,
737 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
738 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
739 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
740 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,
741 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,
742 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,
743 137,124,36,4,137,44,36,255,15,135,244,21,199,131,233,237,255,252,255,215,
744 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,
745 3,141,233,139,114,252,252,252,233,244,12,255,254,0
747}; 746};
748 747
749enum { 748enum {
750 GLOB_gate_lf, 749 GLOB_vm_returnp,
751 GLOB_gate_lf_growstack, 750 GLOB_cont_dispatch,
752 GLOB_gate_lv,
753 GLOB_gate_lv_growstack,
754 GLOB_gate_cwrap,
755 GLOB_gate_c_growstack,
756 GLOB_vm_returnc, 751 GLOB_vm_returnc,
757 GLOB_BC_RET_Z, 752 GLOB_BC_RET_Z,
758 GLOB_vm_return, 753 GLOB_vm_return,
759 GLOB_gate_c,
760 GLOB_vm_returnp,
761 GLOB_vm_leave_cp, 754 GLOB_vm_leave_cp,
762 GLOB_vm_leave_unw, 755 GLOB_vm_leave_unw,
763 GLOB_vm_unwind_c, 756 GLOB_vm_unwind_c,
764 GLOB_vm_unwind_c_eh, 757 GLOB_vm_unwind_c_eh,
765 GLOB_vm_unwind_ff, 758 GLOB_vm_unwind_ff,
766 GLOB_vm_unwind_ff_eh, 759 GLOB_vm_unwind_ff_eh,
767 GLOB_cont_dispatch, 760 GLOB_vm_growstack_c,
761 GLOB_vm_growstack_v,
762 GLOB_vm_growstack_f,
768 GLOB_vm_resume, 763 GLOB_vm_resume,
769 GLOB_vm_pcall, 764 GLOB_vm_pcall,
770 GLOB_vm_call, 765 GLOB_vm_call,
766 GLOB_vm_call_dispatch,
771 GLOB_vmeta_call, 767 GLOB_vmeta_call,
768 GLOB_vm_call_dispatch_f,
772 GLOB_vm_cpcall, 769 GLOB_vm_cpcall,
773 GLOB_cont_cat, 770 GLOB_cont_cat,
774 GLOB_cont_ra, 771 GLOB_cont_ra,
@@ -790,6 +787,7 @@ enum {
790 GLOB_vmeta_unm, 787 GLOB_vmeta_unm,
791 GLOB_vmeta_arith_vv, 788 GLOB_vmeta_arith_vv,
792 GLOB_vmeta_len, 789 GLOB_vmeta_len,
790 GLOB_vmeta_call_ra,
793 GLOB_BC_CALLT_Z, 791 GLOB_BC_CALLT_Z,
794 GLOB_vmeta_for, 792 GLOB_vmeta_for,
795 GLOB_ff_assert, 793 GLOB_ff_assert,
@@ -863,12 +861,11 @@ enum {
863 GLOB_ff_table_getn, 861 GLOB_ff_table_getn,
864 GLOB_ff_bit_tobit, 862 GLOB_ff_bit_tobit,
865 GLOB_ff_bit_band, 863 GLOB_ff_bit_band,
866 GLOB_fff_resbit_op, 864 GLOB_fff_resbit,
867 GLOB_fff_fallback_bit_op, 865 GLOB_fff_fallback_bit_op,
868 GLOB_ff_bit_bor, 866 GLOB_ff_bit_bor,
869 GLOB_ff_bit_bxor, 867 GLOB_ff_bit_bxor,
870 GLOB_ff_bit_bswap, 868 GLOB_ff_bit_bswap,
871 GLOB_fff_resbit,
872 GLOB_ff_bit_bnot, 869 GLOB_ff_bit_bnot,
873 GLOB_ff_bit_lshift, 870 GLOB_ff_bit_lshift,
874 GLOB_ff_bit_rshift, 871 GLOB_ff_bit_rshift,
@@ -899,28 +896,26 @@ enum {
899 GLOB__MAX 896 GLOB__MAX
900}; 897};
901static const char *const globnames[] = { 898static const char *const globnames[] = {
902 "gate_lf", 899 "vm_returnp",
903 "gate_lf_growstack", 900 "cont_dispatch",
904 "gate_lv",
905 "gate_lv_growstack",
906 "gate_cwrap",
907 "gate_c_growstack",
908 "vm_returnc", 901 "vm_returnc",
909 "BC_RET_Z", 902 "BC_RET_Z",
910 "vm_return", 903 "vm_return",
911 "gate_c",
912 "vm_returnp",
913 "vm_leave_cp", 904 "vm_leave_cp",
914 "vm_leave_unw", 905 "vm_leave_unw",
915 "vm_unwind_c@8", 906 "vm_unwind_c@8",
916 "vm_unwind_c_eh", 907 "vm_unwind_c_eh",
917 "vm_unwind_ff@4", 908 "vm_unwind_ff@4",
918 "vm_unwind_ff_eh", 909 "vm_unwind_ff_eh",
919 "cont_dispatch", 910 "vm_growstack_c",
911 "vm_growstack_v",
912 "vm_growstack_f",
920 "vm_resume", 913 "vm_resume",
921 "vm_pcall", 914 "vm_pcall",
922 "vm_call", 915 "vm_call",
916 "vm_call_dispatch",
923 "vmeta_call", 917 "vmeta_call",
918 "vm_call_dispatch_f",
924 "vm_cpcall", 919 "vm_cpcall",
925 "cont_cat", 920 "cont_cat",
926 "cont_ra", 921 "cont_ra",
@@ -942,6 +937,7 @@ static const char *const globnames[] = {
942 "vmeta_unm", 937 "vmeta_unm",
943 "vmeta_arith_vv", 938 "vmeta_arith_vv",
944 "vmeta_len", 939 "vmeta_len",
940 "vmeta_call_ra",
945 "BC_CALLT_Z", 941 "BC_CALLT_Z",
946 "vmeta_for", 942 "vmeta_for",
947 "ff_assert", 943 "ff_assert",
@@ -1015,12 +1011,11 @@ static const char *const globnames[] = {
1015 "ff_table_getn", 1011 "ff_table_getn",
1016 "ff_bit_tobit", 1012 "ff_bit_tobit",
1017 "ff_bit_band", 1013 "ff_bit_band",
1018 "fff_resbit_op", 1014 "fff_resbit",
1019 "fff_fallback_bit_op", 1015 "fff_fallback_bit_op",
1020 "ff_bit_bor", 1016 "ff_bit_bor",
1021 "ff_bit_bxor", 1017 "ff_bit_bxor",
1022 "ff_bit_bswap", 1018 "ff_bit_bswap",
1023 "fff_resbit",
1024 "ff_bit_bnot", 1019 "ff_bit_bnot",
1025 "ff_bit_lshift", 1020 "ff_bit_lshift",
1026 "ff_bit_rshift", 1021 "ff_bit_rshift",
@@ -1108,451 +1103,426 @@ static const char *const extnames[] = {
1108static void build_subroutines(BuildCtx *ctx, int cmov, int sse) 1103static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1109{ 1104{
1110 dasm_put(Dst, 0); 1105 dasm_put(Dst, 0);
1111 dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); 1106 dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C);
1112#if LJ_HASJIT 1107 dasm_put(Dst, 110, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1113#endif 1108 dasm_put(Dst, 196, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1);
1114 dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); 1109 dasm_put(Dst, 284, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base), Dt1(->top));
1115 dasm_put(Dst, 156, LJ_TNIL, PC2PROTO(k)); 1110 dasm_put(Dst, 350, Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1116#if LJ_HASJIT 1111 dasm_put(Dst, 497, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1117#endif 1112 dasm_put(Dst, 588, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k));
1118 dasm_put(Dst, 191, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1113 dasm_put(Dst, 760, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1119 dasm_put(Dst, 287, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1120 dasm_put(Dst, 369, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1121 dasm_put(Dst, 474, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL);
1122 dasm_put(Dst, 558, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1123 dasm_put(Dst, 651, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base));
1124 dasm_put(Dst, 741, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1125 dasm_put(Dst, 861, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1126 dasm_put(Dst, 964, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k), LJ_TSTR);
1127 dasm_put(Dst, 1153, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1128 if (sse) { 1114 if (sse) {
1129 dasm_put(Dst, 1189); 1115 dasm_put(Dst, 856);
1130 } else { 1116 } else {
1131 dasm_put(Dst, 1202); 1117 dasm_put(Dst, 869);
1132 } 1118 }
1133 dasm_put(Dst, 1215, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1119 dasm_put(Dst, 882, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1134 dasm_put(Dst, 1373, LJ_TTAB); 1120 dasm_put(Dst, 1034, DISPATCH_GL(tmptv), LJ_TTAB);
1135 if (sse) { 1121 if (sse) {
1136 dasm_put(Dst, 1189); 1122 dasm_put(Dst, 856);
1137 } else { 1123 } else {
1138 dasm_put(Dst, 1202); 1124 dasm_put(Dst, 869);
1139 } 1125 }
1140 dasm_put(Dst, 1393, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1126 dasm_put(Dst, 1057, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1141 dasm_put(Dst, 1600, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1127 dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1142 dasm_put(Dst, 1711, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1128 dasm_put(Dst, 1358, Dt1(->base), Dt1(->base), FRAME_CONT);
1143 dasm_put(Dst, 1840, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), BC__MAX*4, 1+1); 1129 dasm_put(Dst, 1482, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1144 dasm_put(Dst, 2000, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1130 dasm_put(Dst, 1663, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1145 if (cmov) { 1131 if (cmov) {
1146 dasm_put(Dst, 2096); 1132 dasm_put(Dst, 1765);
1147 } else { 1133 } else {
1148 dasm_put(Dst, 2100); 1134 dasm_put(Dst, 1769);
1149 } 1135 }
1150 dasm_put(Dst, 2109, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1136 dasm_put(Dst, 1778, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1151 dasm_put(Dst, 2197, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1137 dasm_put(Dst, 1866, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1152 dasm_put(Dst, 2252, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1138 dasm_put(Dst, 1921, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1153 dasm_put(Dst, 2324, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1139 dasm_put(Dst, 1989, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1154 dasm_put(Dst, 2389, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1140 dasm_put(Dst, 2058, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1155 if (sse) { 1141 if (sse) {
1156 dasm_put(Dst, 2480); 1142 dasm_put(Dst, 2145);
1157 } else { 1143 } else {
1158 dasm_put(Dst, 2490); 1144 dasm_put(Dst, 2155);
1159 } 1145 }
1160 dasm_put(Dst, 2497, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1146 dasm_put(Dst, 2162, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1161 dasm_put(Dst, 2559, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1147 dasm_put(Dst, 2228, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1162 dasm_put(Dst, 2649, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1148 dasm_put(Dst, 2295, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1163 dasm_put(Dst, 2755, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1149 dasm_put(Dst, 2406, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1164 if (sse) { 1150 if (sse) {
1165 dasm_put(Dst, 2810); 1151 dasm_put(Dst, 2469);
1166 } else { 1152 } else {
1167 dasm_put(Dst, 2849); 1153 dasm_put(Dst, 2508);
1168 } 1154 }
1169 dasm_put(Dst, 2867, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1155 dasm_put(Dst, 2526, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1170 dasm_put(Dst, 2953, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1156 dasm_put(Dst, 2607, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1171 if (sse) { 1157 if (sse) {
1172 dasm_put(Dst, 2983); 1158 dasm_put(Dst, 2645);
1173 } else { 1159 } else {
1174 dasm_put(Dst, 2993); 1160 dasm_put(Dst, 2655);
1175 } 1161 }
1176 dasm_put(Dst, 3000, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1162 dasm_put(Dst, 2662, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1177 dasm_put(Dst, 3073, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1163 dasm_put(Dst, 2726, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1178 dasm_put(Dst, 3171, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1164 dasm_put(Dst, 2814, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1179 dasm_put(Dst, 3236, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1165 dasm_put(Dst, 2915, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1180 dasm_put(Dst, 3340, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1166 dasm_put(Dst, 3029, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1181 dasm_put(Dst, 3459, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1167 dasm_put(Dst, 3124, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1182 dasm_put(Dst, 3539, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1168 dasm_put(Dst, 3190, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1183 dasm_put(Dst, 3647, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1169 dasm_put(Dst, 3291, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1184 dasm_put(Dst, 3743, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1170 dasm_put(Dst, 3401, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1185 if (sse) { 1171 if (sse) {
1186 dasm_put(Dst, 3829, 1+1, LJ_TISNUM); 1172 dasm_put(Dst, 3427, 1+1, LJ_TISNUM);
1187 } else { 1173 } else {
1188 dasm_put(Dst, 3890, 1+1, LJ_TISNUM); 1174 dasm_put(Dst, 3496, 1+1, LJ_TISNUM);
1189 } 1175 }
1190 dasm_put(Dst, 3922, 1+1, FRAME_TYPE, LJ_TNIL); 1176 dasm_put(Dst, 3532, 1+1, FRAME_TYPE, LJ_TNIL);
1191 if (sse) { 1177 if (sse) {
1192 dasm_put(Dst, 4003, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1178 dasm_put(Dst, 3622, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1193 dasm_put(Dst, 4065, 1+1, LJ_TISNUM); 1179 dasm_put(Dst, 3684, 1+1, LJ_TISNUM);
1194 } else { 1180 } else {
1195 dasm_put(Dst, 4095, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1181 dasm_put(Dst, 3714, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1196 dasm_put(Dst, 4154, 1+1, LJ_TISNUM); 1182 dasm_put(Dst, 3773, 1+1, LJ_TISNUM);
1197 } 1183 }
1198 dasm_put(Dst, 4181, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1184 dasm_put(Dst, 3800, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1199 dasm_put(Dst, 4250, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1185 dasm_put(Dst, 3869, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1200 dasm_put(Dst, 4307, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1186 dasm_put(Dst, 3926, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1201 dasm_put(Dst, 4370, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1187 dasm_put(Dst, 3989, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1202 dasm_put(Dst, 4460); 1188 dasm_put(Dst, 4079);
1203 if (sse) { 1189 if (sse) {
1204 dasm_put(Dst, 4472, 1+1, LJ_TISNUM); 1190 dasm_put(Dst, 4091, 1+1, LJ_TISNUM);
1205 } else { 1191 } else {
1206 dasm_put(Dst, 4503, 1+1, LJ_TISNUM); 1192 dasm_put(Dst, 4122, 1+1, LJ_TISNUM);
1207 } 1193 }
1208 dasm_put(Dst, 4528); 1194 dasm_put(Dst, 4147);
1209 if (sse) { 1195 if (sse) {
1210 dasm_put(Dst, 4550, 1+1, LJ_TISNUM); 1196 dasm_put(Dst, 4161, 1+1, LJ_TISNUM);
1211 } else { 1197 } else {
1212 dasm_put(Dst, 4581, 1+1, LJ_TISNUM); 1198 dasm_put(Dst, 4192, 1+1, LJ_TISNUM);
1213 } 1199 }
1214 dasm_put(Dst, 4606); 1200 dasm_put(Dst, 4217);
1215 if (sse) { 1201 if (sse) {
1216 dasm_put(Dst, 4628, 1+1, LJ_TISNUM); 1202 dasm_put(Dst, 4231, 1+1, LJ_TISNUM);
1217 } else { 1203 } else {
1218 dasm_put(Dst, 4659, 1+1, LJ_TISNUM); 1204 dasm_put(Dst, 4262, 1+1, LJ_TISNUM);
1219 } 1205 }
1220 dasm_put(Dst, 4684); 1206 dasm_put(Dst, 4287);
1221 if (sse) { 1207 if (sse) {
1222 dasm_put(Dst, 4708, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1208 dasm_put(Dst, 4303, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1223 } else { 1209 } else {
1224 dasm_put(Dst, 4743, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1210 dasm_put(Dst, 4342, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1225 } 1211 }
1226 dasm_put(Dst, 4772, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1212 dasm_put(Dst, 4375, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1227 dasm_put(Dst, 4837, 1+1, LJ_TISNUM); 1213 dasm_put(Dst, 4440, 1+1, LJ_TISNUM);
1228 if (sse) { 1214 if (sse) {
1229 dasm_put(Dst, 4932); 1215 dasm_put(Dst, 4539);
1230 } else { 1216 } else {
1231 dasm_put(Dst, 4938); 1217 dasm_put(Dst, 4545);
1232 } 1218 }
1233 dasm_put(Dst, 4947); 1219 dasm_put(Dst, 4554);
1234 if (sse) { 1220 if (sse) {
1235 dasm_put(Dst, 4972); 1221 dasm_put(Dst, 4579);
1236 } else { 1222 } else {
1237 dasm_put(Dst, 4978); 1223 dasm_put(Dst, 4585);
1238 } 1224 }
1239 dasm_put(Dst, 4981, 1+2); 1225 dasm_put(Dst, 4588, 1+2);
1240 if (sse) { 1226 if (sse) {
1241 dasm_put(Dst, 4990); 1227 dasm_put(Dst, 4597);
1242 } else { 1228 } else {
1243 dasm_put(Dst, 4998); 1229 dasm_put(Dst, 4605);
1244 } 1230 }
1245 dasm_put(Dst, 471); 1231 dasm_put(Dst, 4613);
1246 if (sse) { 1232 if (sse) {
1247 dasm_put(Dst, 5006); 1233 dasm_put(Dst, 4616);
1248 } else { 1234 } else {
1249 dasm_put(Dst, 5038); 1235 dasm_put(Dst, 4648);
1250 } 1236 }
1251 dasm_put(Dst, 5057); 1237 dasm_put(Dst, 4667);
1252 if (sse) { 1238 if (sse) {
1253 dasm_put(Dst, 5073, 1+1, LJ_TISNUM); 1239 dasm_put(Dst, 4683, 1+1, LJ_TISNUM);
1254 } else { 1240 } else {
1255 dasm_put(Dst, 5098, 1+1, LJ_TISNUM); 1241 dasm_put(Dst, 4708, 1+1, LJ_TISNUM);
1256 } 1242 }
1257 dasm_put(Dst, 5120); 1243 dasm_put(Dst, 4730);
1258 if (sse) { 1244 if (sse) {
1259 dasm_put(Dst, 5138); 1245 dasm_put(Dst, 4752);
1260 } else { 1246 } else {
1261 dasm_put(Dst, 5164); 1247 dasm_put(Dst, 4778);
1262 } 1248 }
1263 dasm_put(Dst, 5181, 1+2); 1249 dasm_put(Dst, 4795, 1+2);
1264 if (sse) { 1250 if (sse) {
1265 dasm_put(Dst, 5221); 1251 dasm_put(Dst, 4835);
1266 } else { 1252 } else {
1267 dasm_put(Dst, 5229); 1253 dasm_put(Dst, 4843);
1268 } 1254 }
1269 dasm_put(Dst, 5239, 2+1, LJ_TISNUM, LJ_TISNUM); 1255 dasm_put(Dst, 4853, 2+1, LJ_TISNUM, LJ_TISNUM);
1270 if (sse) { 1256 if (sse) {
1271 dasm_put(Dst, 5291, 1+1, LJ_TISNUM, LJ_TISNUM); 1257 dasm_put(Dst, 4905, 1+1, LJ_TISNUM, LJ_TISNUM);
1272 } else { 1258 } else {
1273 dasm_put(Dst, 5338, 2+1, LJ_TISNUM, LJ_TISNUM); 1259 dasm_put(Dst, 4952, 2+1, LJ_TISNUM, LJ_TISNUM);
1274 } 1260 }
1275 if (sse) { 1261 if (sse) {
1276 dasm_put(Dst, 5379, 1+1, LJ_TISNUM, LJ_TISNUM); 1262 dasm_put(Dst, 4993, 1+1, LJ_TISNUM, LJ_TISNUM);
1277 } else { 1263 } else {
1278 dasm_put(Dst, 5450, 1+1, LJ_TISNUM, LJ_TISNUM); 1264 dasm_put(Dst, 5064, 1+1, LJ_TISNUM, LJ_TISNUM);
1279 if (cmov) { 1265 if (cmov) {
1280 dasm_put(Dst, 5503); 1266 dasm_put(Dst, 5117);
1281 } else { 1267 } else {
1282 dasm_put(Dst, 5511); 1268 dasm_put(Dst, 5125);
1283 } 1269 }
1284 dasm_put(Dst, 5442); 1270 dasm_put(Dst, 5056);
1285 } 1271 }
1286 if (sse) { 1272 if (sse) {
1287 dasm_put(Dst, 5532, 1+1, LJ_TISNUM, LJ_TISNUM); 1273 dasm_put(Dst, 5146, 1+1, LJ_TISNUM, LJ_TISNUM);
1288 } else { 1274 } else {
1289 dasm_put(Dst, 5603, 1+1, LJ_TISNUM, LJ_TISNUM); 1275 dasm_put(Dst, 5217, 1+1, LJ_TISNUM, LJ_TISNUM);
1290 if (cmov) { 1276 if (cmov) {
1291 dasm_put(Dst, 5656); 1277 dasm_put(Dst, 5270);
1292 } else { 1278 } else {
1293 dasm_put(Dst, 5664); 1279 dasm_put(Dst, 5278);
1294 } 1280 }
1295 dasm_put(Dst, 5442); 1281 dasm_put(Dst, 5056);
1296 } 1282 }
1297 if (!sse) { 1283 if (!sse) {
1298 dasm_put(Dst, 5685); 1284 dasm_put(Dst, 5299);
1299 } 1285 }
1300 dasm_put(Dst, 5694, 1+1, LJ_TSTR); 1286 dasm_put(Dst, 5308, 1+1, LJ_TSTR);
1301 if (sse) { 1287 if (sse) {
1302 dasm_put(Dst, 5716, Dt5(->len)); 1288 dasm_put(Dst, 5330, Dt5(->len));
1303 } else { 1289 } else {
1304 dasm_put(Dst, 5727, Dt5(->len)); 1290 dasm_put(Dst, 5341, Dt5(->len));
1305 } 1291 }
1306 dasm_put(Dst, 5735, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1292 dasm_put(Dst, 5349, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1307 if (sse) { 1293 if (sse) {
1308 dasm_put(Dst, 5769); 1294 dasm_put(Dst, 5387);
1309 } else { 1295 } else {
1310 dasm_put(Dst, 5779); 1296 dasm_put(Dst, 5397);
1311 } 1297 }
1312 dasm_put(Dst, 5792, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1298 dasm_put(Dst, 5410, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1313 if (sse) { 1299 if (sse) {
1314 dasm_put(Dst, 5827); 1300 dasm_put(Dst, 5445);
1315 } else { 1301 } else {
1316 dasm_put(Dst, 5847); 1302 dasm_put(Dst, 5465);
1317 } 1303 }
1318 dasm_put(Dst, 5867, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1304 dasm_put(Dst, 5485, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1319 dasm_put(Dst, 2475); 1305 dasm_put(Dst, 2140);
1320 if (sse) { 1306 if (sse) {
1321 dasm_put(Dst, 5978); 1307 dasm_put(Dst, 5588);
1322 } else { 1308 } else {
1323 dasm_put(Dst, 5989); 1309 dasm_put(Dst, 5599);
1324 } 1310 }
1325 dasm_put(Dst, 5997, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1311 dasm_put(Dst, 5607, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1326 if (sse) { 1312 if (sse) {
1327 dasm_put(Dst, 6027); 1313 dasm_put(Dst, 5637);
1328 } else { 1314 } else {
1329 dasm_put(Dst, 6034); 1315 dasm_put(Dst, 5644);
1330 } 1316 }
1331 dasm_put(Dst, 6046, sizeof(GCstr)-1); 1317 dasm_put(Dst, 5656, sizeof(GCstr)-1);
1332 dasm_put(Dst, 6121, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1318 dasm_put(Dst, 5731, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1333 dasm_put(Dst, 6180, LJ_TSTR, LJ_TISNUM); 1319 dasm_put(Dst, 5790, LJ_TSTR, LJ_TISNUM);
1334 if (sse) { 1320 if (sse) {
1335 dasm_put(Dst, 6205); 1321 dasm_put(Dst, 5811);
1336 } else { 1322 } else {
1337 dasm_put(Dst, 6212); 1323 dasm_put(Dst, 5818);
1338 } 1324 }
1339 dasm_put(Dst, 6224, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1325 dasm_put(Dst, 5830, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1340 dasm_put(Dst, 6289, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1326 dasm_put(Dst, 5895, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1341 dasm_put(Dst, 6356, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1327 dasm_put(Dst, 5958, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1342 dasm_put(Dst, 6431, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1328 dasm_put(Dst, 6029, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1343 dasm_put(Dst, 6516, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1329 dasm_put(Dst, 6114, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1344 dasm_put(Dst, 6590, 1+1, LJ_TTAB); 1330 dasm_put(Dst, 6184, 1+1, LJ_TTAB);
1345 if (sse) { 1331 if (sse) {
1346 dasm_put(Dst, 6666); 1332 dasm_put(Dst, 6252);
1347 } else { 1333 } else {
1348 dasm_put(Dst, 6676); 1334 dasm_put(Dst, 6262);
1349 } 1335 }
1350 if (sse) { 1336 if (sse) {
1351 dasm_put(Dst, 6687, 1+1, LJ_TISNUM); 1337 dasm_put(Dst, 6273, 1+1, LJ_TISNUM);
1352 } else { 1338 } else {
1353 dasm_put(Dst, 6744, 1+1, LJ_TISNUM); 1339 dasm_put(Dst, 6330, 1+1, LJ_TISNUM);
1354 } 1340 }
1355 if (sse) { 1341 if (sse) {
1356 dasm_put(Dst, 6788, 1+1, LJ_TISNUM); 1342 dasm_put(Dst, 6374, 1+1, LJ_TISNUM);
1357 } else { 1343 } else {
1358 dasm_put(Dst, 6836, 1+1, LJ_TISNUM); 1344 dasm_put(Dst, 6422, 1+1, LJ_TISNUM);
1359 }
1360 dasm_put(Dst, 6876);
1361 if (sse) {
1362 dasm_put(Dst, 6886);
1363 } 1345 }
1364 dasm_put(Dst, 6891, LJ_TISNUM); 1346 dasm_put(Dst, 6462, LJ_TISNUM);
1365 if (sse) { 1347 if (sse) {
1366 dasm_put(Dst, 6909); 1348 dasm_put(Dst, 6489);
1367 } else { 1349 } else {
1368 dasm_put(Dst, 6926); 1350 dasm_put(Dst, 6506);
1369 } 1351 }
1370 dasm_put(Dst, 6939); 1352 dasm_put(Dst, 6519);
1371 if (sse) { 1353 if (sse) {
1372 dasm_put(Dst, 6947, 1+1, LJ_TISNUM); 1354 dasm_put(Dst, 6527, 1+1, LJ_TISNUM);
1373 } else { 1355 } else {
1374 dasm_put(Dst, 6995, 1+1, LJ_TISNUM); 1356 dasm_put(Dst, 6575, 1+1, LJ_TISNUM);
1375 } 1357 }
1376 dasm_put(Dst, 6876); 1358 dasm_put(Dst, 6462, LJ_TISNUM);
1377 if (sse) { 1359 if (sse) {
1378 dasm_put(Dst, 6886); 1360 dasm_put(Dst, 6615);
1379 }
1380 dasm_put(Dst, 6891, LJ_TISNUM);
1381 if (sse) {
1382 dasm_put(Dst, 7035);
1383 } else { 1361 } else {
1384 dasm_put(Dst, 7052); 1362 dasm_put(Dst, 6632);
1385 } 1363 }
1386 dasm_put(Dst, 6939); 1364 dasm_put(Dst, 6519);
1387 if (sse) { 1365 if (sse) {
1388 dasm_put(Dst, 7065, 1+1, LJ_TISNUM); 1366 dasm_put(Dst, 6645, 1+1, LJ_TISNUM);
1389 } else { 1367 } else {
1390 dasm_put(Dst, 7113, 1+1, LJ_TISNUM); 1368 dasm_put(Dst, 6693, 1+1, LJ_TISNUM);
1391 }
1392 dasm_put(Dst, 6876);
1393 if (sse) {
1394 dasm_put(Dst, 6886);
1395 } 1369 }
1396 dasm_put(Dst, 6891, LJ_TISNUM); 1370 dasm_put(Dst, 6462, LJ_TISNUM);
1397 if (sse) { 1371 if (sse) {
1398 dasm_put(Dst, 7153); 1372 dasm_put(Dst, 6733);
1399 } else { 1373 } else {
1400 dasm_put(Dst, 7170); 1374 dasm_put(Dst, 6750);
1401 } 1375 }
1402 dasm_put(Dst, 6939); 1376 dasm_put(Dst, 6519);
1403 if (sse) { 1377 if (sse) {
1404 dasm_put(Dst, 7183, 1+1, LJ_TISNUM); 1378 dasm_put(Dst, 6763, 1+1, LJ_TISNUM);
1405 } else { 1379 } else {
1406 dasm_put(Dst, 7231, 1+1, LJ_TISNUM); 1380 dasm_put(Dst, 6811, 1+1, LJ_TISNUM);
1407 } 1381 }
1408 dasm_put(Dst, 7271); 1382 dasm_put(Dst, 6851);
1409 if (sse) { 1383 if (sse) {
1410 dasm_put(Dst, 7278, 1+1, LJ_TISNUM); 1384 dasm_put(Dst, 6858, 1+1, LJ_TISNUM);
1411 } else { 1385 } else {
1412 dasm_put(Dst, 7326, 1+1, LJ_TISNUM); 1386 dasm_put(Dst, 6906, 1+1, LJ_TISNUM);
1413 } 1387 }
1414 dasm_put(Dst, 7366); 1388 dasm_put(Dst, 6946);
1415 if (sse) { 1389 if (sse) {
1416 dasm_put(Dst, 7370); 1390 dasm_put(Dst, 6950);
1417 } else { 1391 } else {
1418 dasm_put(Dst, 7397); 1392 dasm_put(Dst, 6962);
1419 } 1393 }
1420 dasm_put(Dst, 7412); 1394 dasm_put(Dst, 6975);
1421 if (sse) { 1395 if (sse) {
1422 dasm_put(Dst, 6661); 1396 dasm_put(Dst, 6986, 1+1, LJ_TISNUM, LJ_TISNUM);
1423 }
1424 dasm_put(Dst, 7415);
1425 if (sse) {
1426 dasm_put(Dst, 7424, 1+1, LJ_TISNUM, LJ_TISNUM);
1427 } else { 1397 } else {
1428 dasm_put(Dst, 7498, 2+1, LJ_TISNUM, LJ_TISNUM); 1398 dasm_put(Dst, 7060, 2+1, LJ_TISNUM, LJ_TISNUM);
1429 } 1399 }
1430 dasm_put(Dst, 7564); 1400 dasm_put(Dst, 7126);
1431 if (sse) { 1401 if (sse) {
1432 dasm_put(Dst, 7573, 1+1, LJ_TISNUM, LJ_TISNUM); 1402 dasm_put(Dst, 7135, 1+1, LJ_TISNUM, LJ_TISNUM);
1433 } else { 1403 } else {
1434 dasm_put(Dst, 7647, 2+1, LJ_TISNUM, LJ_TISNUM); 1404 dasm_put(Dst, 7209, 2+1, LJ_TISNUM, LJ_TISNUM);
1435 } 1405 }
1436 dasm_put(Dst, 7713); 1406 dasm_put(Dst, 7275);
1437 if (sse) { 1407 if (sse) {
1438 dasm_put(Dst, 7723, 1+1, LJ_TISNUM, LJ_TISNUM); 1408 dasm_put(Dst, 7285, 1+1, LJ_TISNUM, LJ_TISNUM);
1439 } else { 1409 } else {
1440 dasm_put(Dst, 7797, 2+1, LJ_TISNUM, LJ_TISNUM); 1410 dasm_put(Dst, 7359, 2+1, LJ_TISNUM, LJ_TISNUM);
1441 } 1411 }
1442 dasm_put(Dst, 7863); 1412 dasm_put(Dst, 7425);
1443 if (sse) { 1413 if (sse) {
1444 dasm_put(Dst, 7873, 1+1, LJ_TISNUM, LJ_TISNUM); 1414 dasm_put(Dst, 7435, 1+1, LJ_TISNUM, LJ_TISNUM);
1445 } else { 1415 } else {
1446 dasm_put(Dst, 7947, 2+1, LJ_TISNUM, LJ_TISNUM); 1416 dasm_put(Dst, 7509, 2+1, LJ_TISNUM, LJ_TISNUM);
1447 } 1417 }
1448 dasm_put(Dst, 8013); 1418 dasm_put(Dst, 7575);
1449 if (sse) { 1419 if (sse) {
1450 dasm_put(Dst, 8022, 1+1, LJ_TISNUM, LJ_TISNUM); 1420 dasm_put(Dst, 7584, 1+1, LJ_TISNUM, LJ_TISNUM);
1451 } else { 1421 } else {
1452 dasm_put(Dst, 8096, 2+1, LJ_TISNUM, LJ_TISNUM); 1422 dasm_put(Dst, 7658, 2+1, LJ_TISNUM, LJ_TISNUM);
1453 } 1423 }
1454 dasm_put(Dst, 8162, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1424 dasm_put(Dst, 7724, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1455 dasm_put(Dst, 8246, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1425 dasm_put(Dst, 7802, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1456 dasm_put(Dst, 8365, Dt1(->base), Dt1(->top)); 1426 dasm_put(Dst, 7925, Dt1(->top), Dt1(->base), Dt1(->top));
1457#if LJ_HASJIT 1427#if LJ_HASJIT
1458 dasm_put(Dst, 8406, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1428 dasm_put(Dst, 7963, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1459#endif 1429#endif
1460 dasm_put(Dst, 8437, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); 1430 dasm_put(Dst, 7994, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1461 dasm_put(Dst, 8503, BC__MAX*4); 1431 dasm_put(Dst, 8060, GG_DISP2STATIC);
1462#if LJ_HASJIT 1432#if LJ_HASJIT
1463 dasm_put(Dst, 8538, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); 1433 dasm_put(Dst, 8095, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1464#endif 1434#endif
1465 dasm_put(Dst, 8567); 1435 dasm_put(Dst, 8141);
1466#if LJ_HASJIT 1436#if LJ_HASJIT
1467 dasm_put(Dst, 8570, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); 1437 dasm_put(Dst, 8144, Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L), Dt1(->base), Dt1(->top), Dt7(->pc));
1468#endif 1438#endif
1469 dasm_put(Dst, 8616); 1439 dasm_put(Dst, 8214);
1470#if LJ_HASJIT 1440#if LJ_HASJIT
1471 dasm_put(Dst, 8619, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); 1441 dasm_put(Dst, 8217, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base));
1472#endif 1442#endif
1473 dasm_put(Dst, 8762); 1443 dasm_put(Dst, 8360);
1474#if LJ_HASJIT 1444#if LJ_HASJIT
1475 dasm_put(Dst, 8765, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1445 dasm_put(Dst, 8363, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1476#endif 1446#endif
1477 dasm_put(Dst, 8805); 1447 dasm_put(Dst, 8403);
1478 if (!sse) { 1448 if (!sse) {
1479 dasm_put(Dst, 8808); 1449 dasm_put(Dst, 8406);
1480 } 1450 }
1481 dasm_put(Dst, 8853); 1451 dasm_put(Dst, 8451);
1482 if (!sse) { 1452 if (!sse) {
1483 dasm_put(Dst, 8955); 1453 dasm_put(Dst, 8553);
1484 } 1454 }
1485 dasm_put(Dst, 9000); 1455 dasm_put(Dst, 8598);
1486 if (!sse) { 1456 if (!sse) {
1487 dasm_put(Dst, 9102); 1457 dasm_put(Dst, 8700);
1488 } 1458 }
1489 dasm_put(Dst, 9141); 1459 dasm_put(Dst, 8739);
1490 if (sse) { 1460 if (sse) {
1491 dasm_put(Dst, 9246); 1461 dasm_put(Dst, 8844);
1492 } else { 1462 } else {
1493 dasm_put(Dst, 9376); 1463 dasm_put(Dst, 8974);
1494 } 1464 }
1495 dasm_put(Dst, 9423); 1465 dasm_put(Dst, 9021);
1496 if (!sse) { 1466 if (!sse) {
1497 dasm_put(Dst, 9497); 1467 dasm_put(Dst, 9095);
1498 if (cmov) { 1468 if (cmov) {
1499 dasm_put(Dst, 9508); 1469 dasm_put(Dst, 9106);
1500 } else { 1470 } else {
1501 dasm_put(Dst, 9512); 1471 dasm_put(Dst, 9110);
1502 } 1472 }
1503 dasm_put(Dst, 9519); 1473 dasm_put(Dst, 9117);
1504 dasm_put(Dst, 9593); 1474 dasm_put(Dst, 9191);
1505 dasm_put(Dst, 9693); 1475 dasm_put(Dst, 9291);
1506 if (cmov) { 1476 if (cmov) {
1507 dasm_put(Dst, 9696); 1477 dasm_put(Dst, 9294);
1508 } else { 1478 } else {
1509 dasm_put(Dst, 9700); 1479 dasm_put(Dst, 9298);
1510 } 1480 }
1511 dasm_put(Dst, 9707); 1481 dasm_put(Dst, 9305);
1512 if (cmov) { 1482 if (cmov) {
1513 dasm_put(Dst, 9508); 1483 dasm_put(Dst, 9106);
1514 } else { 1484 } else {
1515 dasm_put(Dst, 9512); 1485 dasm_put(Dst, 9110);
1516 } 1486 }
1517 dasm_put(Dst, 9725); 1487 dasm_put(Dst, 9323);
1518 } else { 1488 } else {
1519 dasm_put(Dst, 9804); 1489 dasm_put(Dst, 9402);
1520 } 1490 }
1521 dasm_put(Dst, 9807); 1491 dasm_put(Dst, 9405);
1522 dasm_put(Dst, 9892); 1492 dasm_put(Dst, 9490);
1523 dasm_put(Dst, 10023); 1493 dasm_put(Dst, 9621);
1524 dasm_put(Dst, 10222); 1494 dasm_put(Dst, 9820);
1525 if (sse) { 1495 if (sse) {
1526 dasm_put(Dst, 10245); 1496 dasm_put(Dst, 9843);
1527 dasm_put(Dst, 10302); 1497 dasm_put(Dst, 9900);
1528 dasm_put(Dst, 10393); 1498 dasm_put(Dst, 9991);
1529 } else { 1499 } else {
1530 dasm_put(Dst, 10435); 1500 dasm_put(Dst, 10033);
1531 dasm_put(Dst, 10527); 1501 dasm_put(Dst, 10125);
1532 } 1502 }
1533 dasm_put(Dst, 10573); 1503 dasm_put(Dst, 10171);
1534 if (sse) { 1504 if (sse) {
1535 dasm_put(Dst, 10579); 1505 dasm_put(Dst, 10177);
1536 dasm_put(Dst, 10684); 1506 dasm_put(Dst, 10282);
1537 dasm_put(Dst, 10767); 1507 dasm_put(Dst, 10365);
1538 } else { 1508 } else {
1539 dasm_put(Dst, 10839); 1509 dasm_put(Dst, 10437);
1540 dasm_put(Dst, 10922); 1510 dasm_put(Dst, 10520);
1541 if (cmov) { 1511 if (cmov) {
1542 dasm_put(Dst, 10977); 1512 dasm_put(Dst, 10575);
1543 } else { 1513 } else {
1544 dasm_put(Dst, 10996); 1514 dasm_put(Dst, 10594);
1545 } 1515 }
1546 dasm_put(Dst, 10835); 1516 dasm_put(Dst, 10433);
1547 } 1517 }
1548 dasm_put(Dst, 11037); 1518 dasm_put(Dst, 10635);
1549} 1519}
1550 1520
1551/* Generate the code for a single instruction. */ 1521/* Generate the code for a single instruction. */
1552static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1522static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1553{ 1523{
1554 int vk = 0; 1524 int vk = 0;
1555 dasm_put(Dst, 154, defop); 1525 dasm_put(Dst, 10689, defop);
1556 1526
1557 switch (op) { 1527 switch (op) {
1558 1528
@@ -1561,619 +1531,619 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1561 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1531 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1562 1532
1563 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1533 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1564 dasm_put(Dst, 11091, LJ_TISNUM, LJ_TISNUM); 1534 dasm_put(Dst, 10691, LJ_TISNUM, LJ_TISNUM);
1565 if (sse) { 1535 if (sse) {
1566 dasm_put(Dst, 11112); 1536 dasm_put(Dst, 10712);
1567 } else { 1537 } else {
1568 dasm_put(Dst, 11127); 1538 dasm_put(Dst, 10727);
1569 if (cmov) { 1539 if (cmov) {
1570 dasm_put(Dst, 11137); 1540 dasm_put(Dst, 10737);
1571 } else { 1541 } else {
1572 dasm_put(Dst, 11143); 1542 dasm_put(Dst, 10743);
1573 } 1543 }
1574 } 1544 }
1575 switch (op) { 1545 switch (op) {
1576 case BC_ISLT: 1546 case BC_ISLT:
1577 dasm_put(Dst, 11150); 1547 dasm_put(Dst, 10750);
1578 break; 1548 break;
1579 case BC_ISGE: 1549 case BC_ISGE:
1580 dasm_put(Dst, 10388); 1550 dasm_put(Dst, 9986);
1581 break; 1551 break;
1582 case BC_ISLE: 1552 case BC_ISLE:
1583 dasm_put(Dst, 6585); 1553 dasm_put(Dst, 6179);
1584 break; 1554 break;
1585 case BC_ISGT: 1555 case BC_ISGT:
1586 dasm_put(Dst, 11155); 1556 dasm_put(Dst, 10755);
1587 break; 1557 break;
1588 default: break; /* Shut up GCC. */ 1558 default: break; /* Shut up GCC. */
1589 } 1559 }
1590 dasm_put(Dst, 11160, -BCBIAS_J*4); 1560 dasm_put(Dst, 10760, -BCBIAS_J*4);
1591 break; 1561 break;
1592 1562
1593 case BC_ISEQV: case BC_ISNEV: 1563 case BC_ISEQV: case BC_ISNEV:
1594 vk = op == BC_ISEQV; 1564 vk = op == BC_ISEQV;
1595 dasm_put(Dst, 11193, LJ_TISNUM, LJ_TISNUM); 1565 dasm_put(Dst, 10793, LJ_TISNUM, LJ_TISNUM);
1596 if (sse) { 1566 if (sse) {
1597 dasm_put(Dst, 11219); 1567 dasm_put(Dst, 10819);
1598 } else { 1568 } else {
1599 dasm_put(Dst, 11231); 1569 dasm_put(Dst, 10831);
1600 if (cmov) { 1570 if (cmov) {
1601 dasm_put(Dst, 11137); 1571 dasm_put(Dst, 10737);
1602 } else { 1572 } else {
1603 dasm_put(Dst, 11143); 1573 dasm_put(Dst, 10743);
1604 } 1574 }
1605 } 1575 }
1606 iseqne_fp: 1576 iseqne_fp:
1607 if (vk) { 1577 if (vk) {
1608 dasm_put(Dst, 11238); 1578 dasm_put(Dst, 10838);
1609 } else { 1579 } else {
1610 dasm_put(Dst, 11247); 1580 dasm_put(Dst, 10847);
1611 } 1581 }
1612 iseqne_end: 1582 iseqne_end:
1613 if (vk) { 1583 if (vk) {
1614 dasm_put(Dst, 11256, -BCBIAS_J*4); 1584 dasm_put(Dst, 10856, -BCBIAS_J*4);
1615 } else { 1585 } else {
1616 dasm_put(Dst, 11271, -BCBIAS_J*4); 1586 dasm_put(Dst, 10871, -BCBIAS_J*4);
1617 } 1587 }
1618 dasm_put(Dst, 8597); 1588 dasm_put(Dst, 8384);
1619 if (op == BC_ISEQV || op == BC_ISNEV) { 1589 if (op == BC_ISEQV || op == BC_ISNEV) {
1620 dasm_put(Dst, 11286, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1590 dasm_put(Dst, 10886, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1621 if (vk) { 1591 if (vk) {
1622 dasm_put(Dst, 11344); 1592 dasm_put(Dst, 10944);
1623 } else { 1593 } else {
1624 dasm_put(Dst, 11348); 1594 dasm_put(Dst, 10948);
1625 } 1595 }
1626 dasm_put(Dst, 11354); 1596 dasm_put(Dst, 10954);
1627 } 1597 }
1628 break; 1598 break;
1629 case BC_ISEQS: case BC_ISNES: 1599 case BC_ISEQS: case BC_ISNES:
1630 vk = op == BC_ISEQS; 1600 vk = op == BC_ISEQS;
1631 dasm_put(Dst, 11359, LJ_TSTR); 1601 dasm_put(Dst, 10959, LJ_TSTR);
1632 iseqne_test: 1602 iseqne_test:
1633 if (vk) { 1603 if (vk) {
1634 dasm_put(Dst, 11242); 1604 dasm_put(Dst, 10842);
1635 } else { 1605 } else {
1636 dasm_put(Dst, 10522); 1606 dasm_put(Dst, 2809);
1637 } 1607 }
1638 goto iseqne_end; 1608 goto iseqne_end;
1639 case BC_ISEQN: case BC_ISNEN: 1609 case BC_ISEQN: case BC_ISNEN:
1640 vk = op == BC_ISEQN; 1610 vk = op == BC_ISEQN;
1641 dasm_put(Dst, 11382, LJ_TISNUM); 1611 dasm_put(Dst, 10982, LJ_TISNUM);
1642 if (sse) { 1612 if (sse) {
1643 dasm_put(Dst, 11396); 1613 dasm_put(Dst, 10996);
1644 } else { 1614 } else {
1645 dasm_put(Dst, 11408); 1615 dasm_put(Dst, 11008);
1646 if (cmov) { 1616 if (cmov) {
1647 dasm_put(Dst, 11137); 1617 dasm_put(Dst, 10737);
1648 } else { 1618 } else {
1649 dasm_put(Dst, 11143); 1619 dasm_put(Dst, 10743);
1650 } 1620 }
1651 } 1621 }
1652 goto iseqne_fp; 1622 goto iseqne_fp;
1653 case BC_ISEQP: case BC_ISNEP: 1623 case BC_ISEQP: case BC_ISNEP:
1654 vk = op == BC_ISEQP; 1624 vk = op == BC_ISEQP;
1655 dasm_put(Dst, 11415); 1625 dasm_put(Dst, 11015);
1656 goto iseqne_test; 1626 goto iseqne_test;
1657 1627
1658 /* -- Unary test and copy ops ------------------------------------------- */ 1628 /* -- Unary test and copy ops ------------------------------------------- */
1659 1629
1660 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1630 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1661 dasm_put(Dst, 11426, LJ_TISTRUECOND); 1631 dasm_put(Dst, 11026, LJ_TISTRUECOND);
1662 if (op == BC_IST || op == BC_ISTC) { 1632 if (op == BC_IST || op == BC_ISTC) {
1663 dasm_put(Dst, 11438); 1633 dasm_put(Dst, 11038);
1664 } else { 1634 } else {
1665 dasm_put(Dst, 11443); 1635 dasm_put(Dst, 11043);
1666 } 1636 }
1667 if (op == BC_ISTC || op == BC_ISFC) { 1637 if (op == BC_ISTC || op == BC_ISFC) {
1668 dasm_put(Dst, 11448); 1638 dasm_put(Dst, 11048);
1669 } 1639 }
1670 dasm_put(Dst, 11459, -BCBIAS_J*4); 1640 dasm_put(Dst, 11059, -BCBIAS_J*4);
1671 break; 1641 break;
1672 1642
1673 /* -- Unary ops --------------------------------------------------------- */ 1643 /* -- Unary ops --------------------------------------------------------- */
1674 1644
1675 case BC_MOV: 1645 case BC_MOV:
1676 dasm_put(Dst, 11490); 1646 dasm_put(Dst, 11090);
1677 break; 1647 break;
1678 case BC_NOT: 1648 case BC_NOT:
1679 dasm_put(Dst, 11523, LJ_TISTRUECOND, LJ_TTRUE); 1649 dasm_put(Dst, 11123, LJ_TISTRUECOND, LJ_TTRUE);
1680 break; 1650 break;
1681 case BC_UNM: 1651 case BC_UNM:
1682 dasm_put(Dst, 11558, LJ_TISNUM); 1652 dasm_put(Dst, 11158, LJ_TISNUM);
1683 if (sse) { 1653 if (sse) {
1684 dasm_put(Dst, 11569); 1654 dasm_put(Dst, 11169);
1685 } else { 1655 } else {
1686 dasm_put(Dst, 11599); 1656 dasm_put(Dst, 11199);
1687 } 1657 }
1688 dasm_put(Dst, 8597); 1658 dasm_put(Dst, 8384);
1689 break; 1659 break;
1690 case BC_LEN: 1660 case BC_LEN:
1691 dasm_put(Dst, 11608, LJ_TSTR); 1661 dasm_put(Dst, 11208, LJ_TSTR);
1692 if (sse) { 1662 if (sse) {
1693 dasm_put(Dst, 11622, Dt5(->len)); 1663 dasm_put(Dst, 11222, Dt5(->len));
1694 } else { 1664 } else {
1695 dasm_put(Dst, 11640, Dt5(->len)); 1665 dasm_put(Dst, 11240, Dt5(->len));
1696 } 1666 }
1697 dasm_put(Dst, 11649, LJ_TTAB); 1667 dasm_put(Dst, 11249, LJ_TTAB);
1698 if (sse) { 1668 if (sse) {
1699 dasm_put(Dst, 11689); 1669 dasm_put(Dst, 11289);
1700 } else { 1670 } else {
1701 dasm_put(Dst, 11698); 1671 dasm_put(Dst, 11298);
1702 } 1672 }
1703 dasm_put(Dst, 11708); 1673 dasm_put(Dst, 11308);
1704 break; 1674 break;
1705 1675
1706 /* -- Binary ops -------------------------------------------------------- */ 1676 /* -- Binary ops -------------------------------------------------------- */
1707 1677
1708 1678
1709 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1679 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1710 dasm_put(Dst, 11718); 1680 dasm_put(Dst, 11318);
1711 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1681 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1712 switch (vk) { 1682 switch (vk) {
1713 case 0: 1683 case 0:
1714 dasm_put(Dst, 11726, LJ_TISNUM); 1684 dasm_put(Dst, 11326, LJ_TISNUM);
1715 if (sse) { 1685 if (sse) {
1716 dasm_put(Dst, 11738); 1686 dasm_put(Dst, 11338);
1717 } else { 1687 } else {
1718 dasm_put(Dst, 11752); 1688 dasm_put(Dst, 11352);
1719 } 1689 }
1720 break; 1690 break;
1721 case 1: 1691 case 1:
1722 dasm_put(Dst, 11760, LJ_TISNUM); 1692 dasm_put(Dst, 11360, LJ_TISNUM);
1723 if (sse) { 1693 if (sse) {
1724 dasm_put(Dst, 11772); 1694 dasm_put(Dst, 11372);
1725 } else { 1695 } else {
1726 dasm_put(Dst, 11786); 1696 dasm_put(Dst, 11386);
1727 } 1697 }
1728 break; 1698 break;
1729 default: 1699 default:
1730 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1700 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1731 if (sse) { 1701 if (sse) {
1732 dasm_put(Dst, 11816); 1702 dasm_put(Dst, 11416);
1733 } else { 1703 } else {
1734 dasm_put(Dst, 11830); 1704 dasm_put(Dst, 11430);
1735 } 1705 }
1736 break; 1706 break;
1737 } 1707 }
1738 if (sse) { 1708 if (sse) {
1739 dasm_put(Dst, 11592); 1709 dasm_put(Dst, 11192);
1740 } else { 1710 } else {
1741 dasm_put(Dst, 11604); 1711 dasm_put(Dst, 11204);
1742 } 1712 }
1743 dasm_put(Dst, 8597); 1713 dasm_put(Dst, 8384);
1744 break; 1714 break;
1745 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1715 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1746 dasm_put(Dst, 11718); 1716 dasm_put(Dst, 11318);
1747 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1717 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1748 switch (vk) { 1718 switch (vk) {
1749 case 0: 1719 case 0:
1750 dasm_put(Dst, 11726, LJ_TISNUM); 1720 dasm_put(Dst, 11326, LJ_TISNUM);
1751 if (sse) { 1721 if (sse) {
1752 dasm_put(Dst, 11838); 1722 dasm_put(Dst, 11438);
1753 } else { 1723 } else {
1754 dasm_put(Dst, 11852); 1724 dasm_put(Dst, 11452);
1755 } 1725 }
1756 break; 1726 break;
1757 case 1: 1727 case 1:
1758 dasm_put(Dst, 11760, LJ_TISNUM); 1728 dasm_put(Dst, 11360, LJ_TISNUM);
1759 if (sse) { 1729 if (sse) {
1760 dasm_put(Dst, 11860); 1730 dasm_put(Dst, 11460);
1761 } else { 1731 } else {
1762 dasm_put(Dst, 11874); 1732 dasm_put(Dst, 11474);
1763 } 1733 }
1764 break; 1734 break;
1765 default: 1735 default:
1766 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1736 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1767 if (sse) { 1737 if (sse) {
1768 dasm_put(Dst, 11882); 1738 dasm_put(Dst, 11482);
1769 } else { 1739 } else {
1770 dasm_put(Dst, 11896); 1740 dasm_put(Dst, 11496);
1771 } 1741 }
1772 break; 1742 break;
1773 } 1743 }
1774 if (sse) { 1744 if (sse) {
1775 dasm_put(Dst, 11592); 1745 dasm_put(Dst, 11192);
1776 } else { 1746 } else {
1777 dasm_put(Dst, 11604); 1747 dasm_put(Dst, 11204);
1778 } 1748 }
1779 dasm_put(Dst, 8597); 1749 dasm_put(Dst, 8384);
1780 break; 1750 break;
1781 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1751 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1782 dasm_put(Dst, 11718); 1752 dasm_put(Dst, 11318);
1783 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1753 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1784 switch (vk) { 1754 switch (vk) {
1785 case 0: 1755 case 0:
1786 dasm_put(Dst, 11726, LJ_TISNUM); 1756 dasm_put(Dst, 11326, LJ_TISNUM);
1787 if (sse) { 1757 if (sse) {
1788 dasm_put(Dst, 11904); 1758 dasm_put(Dst, 11504);
1789 } else { 1759 } else {
1790 dasm_put(Dst, 11918); 1760 dasm_put(Dst, 11518);
1791 } 1761 }
1792 break; 1762 break;
1793 case 1: 1763 case 1:
1794 dasm_put(Dst, 11760, LJ_TISNUM); 1764 dasm_put(Dst, 11360, LJ_TISNUM);
1795 if (sse) { 1765 if (sse) {
1796 dasm_put(Dst, 11926); 1766 dasm_put(Dst, 11526);
1797 } else { 1767 } else {
1798 dasm_put(Dst, 11940); 1768 dasm_put(Dst, 11540);
1799 } 1769 }
1800 break; 1770 break;
1801 default: 1771 default:
1802 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1772 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1803 if (sse) { 1773 if (sse) {
1804 dasm_put(Dst, 11948); 1774 dasm_put(Dst, 11548);
1805 } else { 1775 } else {
1806 dasm_put(Dst, 11962); 1776 dasm_put(Dst, 11562);
1807 } 1777 }
1808 break; 1778 break;
1809 } 1779 }
1810 if (sse) { 1780 if (sse) {
1811 dasm_put(Dst, 11592); 1781 dasm_put(Dst, 11192);
1812 } else { 1782 } else {
1813 dasm_put(Dst, 11604); 1783 dasm_put(Dst, 11204);
1814 } 1784 }
1815 dasm_put(Dst, 8597); 1785 dasm_put(Dst, 8384);
1816 break; 1786 break;
1817 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1787 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1818 dasm_put(Dst, 11718); 1788 dasm_put(Dst, 11318);
1819 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1789 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1820 switch (vk) { 1790 switch (vk) {
1821 case 0: 1791 case 0:
1822 dasm_put(Dst, 11726, LJ_TISNUM); 1792 dasm_put(Dst, 11326, LJ_TISNUM);
1823 if (sse) { 1793 if (sse) {
1824 dasm_put(Dst, 11970); 1794 dasm_put(Dst, 11570);
1825 } else { 1795 } else {
1826 dasm_put(Dst, 11984); 1796 dasm_put(Dst, 11584);
1827 } 1797 }
1828 break; 1798 break;
1829 case 1: 1799 case 1:
1830 dasm_put(Dst, 11760, LJ_TISNUM); 1800 dasm_put(Dst, 11360, LJ_TISNUM);
1831 if (sse) { 1801 if (sse) {
1832 dasm_put(Dst, 11992); 1802 dasm_put(Dst, 11592);
1833 } else { 1803 } else {
1834 dasm_put(Dst, 12006); 1804 dasm_put(Dst, 11606);
1835 } 1805 }
1836 break; 1806 break;
1837 default: 1807 default:
1838 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1808 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1839 if (sse) { 1809 if (sse) {
1840 dasm_put(Dst, 12014); 1810 dasm_put(Dst, 11614);
1841 } else { 1811 } else {
1842 dasm_put(Dst, 12028); 1812 dasm_put(Dst, 11628);
1843 } 1813 }
1844 break; 1814 break;
1845 } 1815 }
1846 if (sse) { 1816 if (sse) {
1847 dasm_put(Dst, 11592); 1817 dasm_put(Dst, 11192);
1848 } else { 1818 } else {
1849 dasm_put(Dst, 11604); 1819 dasm_put(Dst, 11204);
1850 } 1820 }
1851 dasm_put(Dst, 8597); 1821 dasm_put(Dst, 8384);
1852 break; 1822 break;
1853 case BC_MODVN: 1823 case BC_MODVN:
1854 dasm_put(Dst, 11718); 1824 dasm_put(Dst, 11318);
1855 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1825 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1856 switch (vk) { 1826 switch (vk) {
1857 case 0: 1827 case 0:
1858 dasm_put(Dst, 11726, LJ_TISNUM); 1828 dasm_put(Dst, 11326, LJ_TISNUM);
1859 if (sse) { 1829 if (sse) {
1860 dasm_put(Dst, 12036); 1830 dasm_put(Dst, 11636);
1861 } else { 1831 } else {
1862 dasm_put(Dst, 12050); 1832 dasm_put(Dst, 11650);
1863 } 1833 }
1864 break; 1834 break;
1865 case 1: 1835 case 1:
1866 dasm_put(Dst, 11760, LJ_TISNUM); 1836 dasm_put(Dst, 11360, LJ_TISNUM);
1867 if (sse) { 1837 if (sse) {
1868 dasm_put(Dst, 12058); 1838 dasm_put(Dst, 11658);
1869 } else { 1839 } else {
1870 dasm_put(Dst, 12072); 1840 dasm_put(Dst, 11672);
1871 } 1841 }
1872 break; 1842 break;
1873 default: 1843 default:
1874 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1844 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1875 if (sse) { 1845 if (sse) {
1876 dasm_put(Dst, 12080); 1846 dasm_put(Dst, 11680);
1877 } else { 1847 } else {
1878 dasm_put(Dst, 12094); 1848 dasm_put(Dst, 11694);
1879 } 1849 }
1880 break; 1850 break;
1881 } 1851 }
1882 dasm_put(Dst, 12102); 1852 dasm_put(Dst, 11702);
1883 if (sse) { 1853 if (sse) {
1884 dasm_put(Dst, 11592); 1854 dasm_put(Dst, 11192);
1885 } else { 1855 } else {
1886 dasm_put(Dst, 11604); 1856 dasm_put(Dst, 11204);
1887 } 1857 }
1888 dasm_put(Dst, 8597); 1858 dasm_put(Dst, 8384);
1889 break; 1859 break;
1890 case BC_MODNV: case BC_MODVV: 1860 case BC_MODNV: case BC_MODVV:
1891 dasm_put(Dst, 11718); 1861 dasm_put(Dst, 11318);
1892 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1862 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1893 switch (vk) { 1863 switch (vk) {
1894 case 0: 1864 case 0:
1895 dasm_put(Dst, 11726, LJ_TISNUM); 1865 dasm_put(Dst, 11326, LJ_TISNUM);
1896 if (sse) { 1866 if (sse) {
1897 dasm_put(Dst, 12036); 1867 dasm_put(Dst, 11636);
1898 } else { 1868 } else {
1899 dasm_put(Dst, 12050); 1869 dasm_put(Dst, 11650);
1900 } 1870 }
1901 break; 1871 break;
1902 case 1: 1872 case 1:
1903 dasm_put(Dst, 11760, LJ_TISNUM); 1873 dasm_put(Dst, 11360, LJ_TISNUM);
1904 if (sse) { 1874 if (sse) {
1905 dasm_put(Dst, 12058); 1875 dasm_put(Dst, 11658);
1906 } else { 1876 } else {
1907 dasm_put(Dst, 12072); 1877 dasm_put(Dst, 11672);
1908 } 1878 }
1909 break; 1879 break;
1910 default: 1880 default:
1911 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1881 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1912 if (sse) { 1882 if (sse) {
1913 dasm_put(Dst, 12080); 1883 dasm_put(Dst, 11680);
1914 } else { 1884 } else {
1915 dasm_put(Dst, 12094); 1885 dasm_put(Dst, 11694);
1916 } 1886 }
1917 break; 1887 break;
1918 } 1888 }
1919 dasm_put(Dst, 12108); 1889 dasm_put(Dst, 11708);
1920 break; 1890 break;
1921 case BC_POW: 1891 case BC_POW:
1922 dasm_put(Dst, 11718); 1892 dasm_put(Dst, 11318);
1923 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1893 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1924 switch (vk) { 1894 switch (vk) {
1925 case 0: 1895 case 0:
1926 dasm_put(Dst, 11726, LJ_TISNUM); 1896 dasm_put(Dst, 11326, LJ_TISNUM);
1927 if (sse) { 1897 if (sse) {
1928 dasm_put(Dst, 12036); 1898 dasm_put(Dst, 11636);
1929 } else { 1899 } else {
1930 dasm_put(Dst, 12050); 1900 dasm_put(Dst, 11650);
1931 } 1901 }
1932 break; 1902 break;
1933 case 1: 1903 case 1:
1934 dasm_put(Dst, 11760, LJ_TISNUM); 1904 dasm_put(Dst, 11360, LJ_TISNUM);
1935 if (sse) { 1905 if (sse) {
1936 dasm_put(Dst, 12058); 1906 dasm_put(Dst, 11658);
1937 } else { 1907 } else {
1938 dasm_put(Dst, 12072); 1908 dasm_put(Dst, 11672);
1939 } 1909 }
1940 break; 1910 break;
1941 default: 1911 default:
1942 dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); 1912 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM);
1943 if (sse) { 1913 if (sse) {
1944 dasm_put(Dst, 12080); 1914 dasm_put(Dst, 11680);
1945 } else { 1915 } else {
1946 dasm_put(Dst, 12094); 1916 dasm_put(Dst, 11694);
1947 } 1917 }
1948 break; 1918 break;
1949 } 1919 }
1950 dasm_put(Dst, 12113); 1920 dasm_put(Dst, 11713);
1951 if (sse) { 1921 if (sse) {
1952 dasm_put(Dst, 11592); 1922 dasm_put(Dst, 11192);
1953 } else { 1923 } else {
1954 dasm_put(Dst, 11604); 1924 dasm_put(Dst, 11204);
1955 } 1925 }
1956 dasm_put(Dst, 8597); 1926 dasm_put(Dst, 8384);
1957 break; 1927 break;
1958 1928
1959 case BC_CAT: 1929 case BC_CAT:
1960 dasm_put(Dst, 12117, Dt1(->base), Dt1(->base)); 1930 dasm_put(Dst, 11717, Dt1(->base), Dt1(->base));
1961 break; 1931 break;
1962 1932
1963 /* -- Constant ops ------------------------------------------------------ */ 1933 /* -- Constant ops ------------------------------------------------------ */
1964 1934
1965 case BC_KSTR: 1935 case BC_KSTR:
1966 dasm_put(Dst, 12211, LJ_TSTR); 1936 dasm_put(Dst, 11811, LJ_TSTR);
1967 break; 1937 break;
1968 case BC_KSHORT: 1938 case BC_KSHORT:
1969 if (sse) { 1939 if (sse) {
1970 dasm_put(Dst, 12244); 1940 dasm_put(Dst, 11844);
1971 } else { 1941 } else {
1972 dasm_put(Dst, 12259); 1942 dasm_put(Dst, 11859);
1973 } 1943 }
1974 dasm_put(Dst, 8597); 1944 dasm_put(Dst, 8384);
1975 break; 1945 break;
1976 case BC_KNUM: 1946 case BC_KNUM:
1977 if (sse) { 1947 if (sse) {
1978 dasm_put(Dst, 12267); 1948 dasm_put(Dst, 11867);
1979 } else { 1949 } else {
1980 dasm_put(Dst, 12280); 1950 dasm_put(Dst, 11880);
1981 } 1951 }
1982 dasm_put(Dst, 8597); 1952 dasm_put(Dst, 8384);
1983 break; 1953 break;
1984 case BC_KPRI: 1954 case BC_KPRI:
1985 dasm_put(Dst, 12287); 1955 dasm_put(Dst, 11887);
1986 break; 1956 break;
1987 case BC_KNIL: 1957 case BC_KNIL:
1988 dasm_put(Dst, 12313, LJ_TNIL); 1958 dasm_put(Dst, 11913, LJ_TNIL);
1989 break; 1959 break;
1990 1960
1991 /* -- Upvalue and function ops ------------------------------------------ */ 1961 /* -- Upvalue and function ops ------------------------------------------ */
1992 1962
1993 case BC_UGET: 1963 case BC_UGET:
1994 dasm_put(Dst, 12359, offsetof(GCfuncL, uvptr), DtA(->v)); 1964 dasm_put(Dst, 11959, offsetof(GCfuncL, uvptr), DtA(->v));
1995 break; 1965 break;
1996 case BC_USETV: 1966 case BC_USETV:
1997#define TV2MARKOFS \ 1967#define TV2MARKOFS \
1998 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1968 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1999 dasm_put(Dst, 12403, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1969 dasm_put(Dst, 12003, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
2000 dasm_put(Dst, 12493); 1970 dasm_put(Dst, 12093);
2001 break; 1971 break;
2002#undef TV2MARKOFS 1972#undef TV2MARKOFS
2003 case BC_USETS: 1973 case BC_USETS:
2004 dasm_put(Dst, 12505, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1974 dasm_put(Dst, 12105, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2005 break; 1975 break;
2006 case BC_USETN: 1976 case BC_USETN:
2007 dasm_put(Dst, 12596); 1977 dasm_put(Dst, 12196);
2008 if (sse) { 1978 if (sse) {
2009 dasm_put(Dst, 12601); 1979 dasm_put(Dst, 12201);
2010 } else { 1980 } else {
2011 dasm_put(Dst, 11411); 1981 dasm_put(Dst, 11011);
2012 } 1982 }
2013 dasm_put(Dst, 12608, offsetof(GCfuncL, uvptr), DtA(->v)); 1983 dasm_put(Dst, 12208, offsetof(GCfuncL, uvptr), DtA(->v));
2014 if (sse) { 1984 if (sse) {
2015 dasm_put(Dst, 4972); 1985 dasm_put(Dst, 12217);
2016 } else { 1986 } else {
2017 dasm_put(Dst, 4978); 1987 dasm_put(Dst, 12223);
2018 } 1988 }
2019 dasm_put(Dst, 8597); 1989 dasm_put(Dst, 8384);
2020 break; 1990 break;
2021 case BC_USETP: 1991 case BC_USETP:
2022 dasm_put(Dst, 12617, offsetof(GCfuncL, uvptr), DtA(->v)); 1992 dasm_put(Dst, 12226, offsetof(GCfuncL, uvptr), DtA(->v));
2023 break; 1993 break;
2024 case BC_UCLO: 1994 case BC_UCLO:
2025 dasm_put(Dst, 12654, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1995 dasm_put(Dst, 12263, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2026 break; 1996 break;
2027 1997
2028 case BC_FNEW: 1998 case BC_FNEW:
2029 dasm_put(Dst, 12708, Dt1(->base), Dt1(->base), LJ_TFUNC); 1999 dasm_put(Dst, 12317, Dt1(->base), Dt1(->base), LJ_TFUNC);
2030 break; 2000 break;
2031 2001
2032 /* -- Table ops --------------------------------------------------------- */ 2002 /* -- Table ops --------------------------------------------------------- */
2033 2003
2034 case BC_TNEW: 2004 case BC_TNEW:
2035 dasm_put(Dst, 12779, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2005 dasm_put(Dst, 12388, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2036 break; 2006 break;
2037 case BC_TDUP: 2007 case BC_TDUP:
2038 dasm_put(Dst, 12900, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2008 dasm_put(Dst, 12509, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2039 break; 2009 break;
2040 2010
2041 case BC_GGET: 2011 case BC_GGET:
2042 dasm_put(Dst, 12992, Dt7(->env)); 2012 dasm_put(Dst, 12601, Dt7(->env));
2043 break; 2013 break;
2044 case BC_GSET: 2014 case BC_GSET:
2045 dasm_put(Dst, 13010, Dt7(->env)); 2015 dasm_put(Dst, 12619, Dt7(->env));
2046 break; 2016 break;
2047 2017
2048 case BC_TGETV: 2018 case BC_TGETV:
2049 dasm_put(Dst, 13028, LJ_TTAB, LJ_TISNUM); 2019 dasm_put(Dst, 12637, LJ_TTAB, LJ_TISNUM);
2050 if (sse) { 2020 if (sse) {
2051 dasm_put(Dst, 13061); 2021 dasm_put(Dst, 12670);
2052 } else { 2022 } else {
2053 dasm_put(Dst, 13082); 2023 dasm_put(Dst, 12691);
2054 if (cmov) { 2024 if (cmov) {
2055 dasm_put(Dst, 11137); 2025 dasm_put(Dst, 10737);
2056 } else { 2026 } else {
2057 dasm_put(Dst, 11143); 2027 dasm_put(Dst, 10743);
2058 } 2028 }
2059 dasm_put(Dst, 2863); 2029 dasm_put(Dst, 2522);
2060 } 2030 }
2061 dasm_put(Dst, 13092, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2031 dasm_put(Dst, 12701, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2062 dasm_put(Dst, 13184, LJ_TSTR); 2032 dasm_put(Dst, 12793, LJ_TSTR);
2063 break; 2033 break;
2064 case BC_TGETS: 2034 case BC_TGETS:
2065 dasm_put(Dst, 13202, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2035 dasm_put(Dst, 12811, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2066 dasm_put(Dst, 13286, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2036 dasm_put(Dst, 12895, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2067 break; 2037 break;
2068 case BC_TGETB: 2038 case BC_TGETB:
2069 dasm_put(Dst, 13357, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2039 dasm_put(Dst, 12966, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2070 dasm_put(Dst, 11708); 2040 dasm_put(Dst, 11308);
2071 break; 2041 break;
2072 2042
2073 case BC_TSETV: 2043 case BC_TSETV:
2074 dasm_put(Dst, 13456, LJ_TTAB, LJ_TISNUM); 2044 dasm_put(Dst, 13065, LJ_TTAB, LJ_TISNUM);
2075 if (sse) { 2045 if (sse) {
2076 dasm_put(Dst, 13061); 2046 dasm_put(Dst, 12670);
2077 } else { 2047 } else {
2078 dasm_put(Dst, 13082); 2048 dasm_put(Dst, 12691);
2079 if (cmov) { 2049 if (cmov) {
2080 dasm_put(Dst, 11137); 2050 dasm_put(Dst, 10737);
2081 } else { 2051 } else {
2082 dasm_put(Dst, 11143); 2052 dasm_put(Dst, 10743);
2083 } 2053 }
2084 dasm_put(Dst, 2863); 2054 dasm_put(Dst, 2522);
2085 } 2055 }
2086 dasm_put(Dst, 13489, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2056 dasm_put(Dst, 13098, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
2087 dasm_put(Dst, 13572, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2057 dasm_put(Dst, 13181, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2088 break; 2058 break;
2089 case BC_TSETS: 2059 case BC_TSETS:
2090 dasm_put(Dst, 13634, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2060 dasm_put(Dst, 13243, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2091 dasm_put(Dst, 13709, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2061 dasm_put(Dst, 13318, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2092 dasm_put(Dst, 13801, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2062 dasm_put(Dst, 13410, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2093 break; 2063 break;
2094 case BC_TSETB: 2064 case BC_TSETB:
2095 dasm_put(Dst, 13897, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2065 dasm_put(Dst, 13506, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2096 dasm_put(Dst, 13995, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2066 dasm_put(Dst, 13604, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2097 break; 2067 break;
2098 2068
2099 case BC_TSETM: 2069 case BC_TSETM:
2100 dasm_put(Dst, 14041); 2070 dasm_put(Dst, 13650);
2101 if (sse) { 2071 if (sse) {
2102 dasm_put(Dst, 12601); 2072 dasm_put(Dst, 12201);
2103 } else { 2073 } else {
2104 dasm_put(Dst, 14046); 2074 dasm_put(Dst, 13655);
2105 } 2075 }
2106 dasm_put(Dst, 14054, Dt6(->marked), LJ_GC_BLACK); 2076 dasm_put(Dst, 13663, Dt6(->marked), LJ_GC_BLACK);
2107 if (sse) { 2077 if (sse) {
2108 dasm_put(Dst, 14079); 2078 dasm_put(Dst, 13688);
2109 } else { 2079 } else {
2110 dasm_put(Dst, 14086); 2080 dasm_put(Dst, 13695);
2111 } 2081 }
2112 dasm_put(Dst, 14091, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 2082 dasm_put(Dst, 13700, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
2113 dasm_put(Dst, 14219, Dt6(->gclist)); 2083 dasm_put(Dst, 13828, Dt6(->gclist));
2114 break; 2084 break;
2115 2085
2116 /* -- Calls and vararg handling ----------------------------------------- */ 2086 /* -- Calls and vararg handling ----------------------------------------- */
2117 2087
2118 case BC_CALL: case BC_CALLM: 2088 case BC_CALL: case BC_CALLM:
2119 dasm_put(Dst, 11722); 2089 dasm_put(Dst, 11322);
2120 if (op == BC_CALLM) { 2090 if (op == BC_CALLM) {
2121 dasm_put(Dst, 14227); 2091 dasm_put(Dst, 13836);
2122 } 2092 }
2123 dasm_put(Dst, 14232, LJ_TFUNC, Dt7(->gate)); 2093 dasm_put(Dst, 13841, LJ_TFUNC, Dt7(->pc));
2124 break; 2094 break;
2125 2095
2126 case BC_CALLMT: 2096 case BC_CALLMT:
2127 dasm_put(Dst, 14227); 2097 dasm_put(Dst, 13836);
2128 break; 2098 break;
2129 case BC_CALLT: 2099 case BC_CALLT:
2130 dasm_put(Dst, 14255, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 2100 dasm_put(Dst, 13882, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2131 dasm_put(Dst, 14360, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 2101 dasm_put(Dst, 14000, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
2132 break; 2102 break;
2133 2103
2134 case BC_ITERC: 2104 case BC_ITERC:
2135 dasm_put(Dst, 14417, LJ_TFUNC, Dt7(->gate)); 2105 dasm_put(Dst, 14057, LJ_TFUNC, 2+1, Dt7(->pc));
2136 break; 2106 break;
2137 2107
2138 case BC_VARG: 2108 case BC_VARG:
2139 dasm_put(Dst, 14479, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 2109 dasm_put(Dst, 14137, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
2140 dasm_put(Dst, 14623, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2110 dasm_put(Dst, 14281, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2141 break; 2111 break;
2142 2112
2143 /* -- Returns ----------------------------------------------------------- */ 2113 /* -- Returns ----------------------------------------------------------- */
2144 2114
2145 case BC_RETM: 2115 case BC_RETM:
2146 dasm_put(Dst, 14227); 2116 dasm_put(Dst, 13836);
2147 break; 2117 break;
2148 2118
2149 case BC_RET: case BC_RET0: case BC_RET1: 2119 case BC_RET: case BC_RET0: case BC_RET1:
2150 if (op != BC_RET0) { 2120 if (op != BC_RET0) {
2151 dasm_put(Dst, 14722); 2121 dasm_put(Dst, 14380);
2152 } 2122 }
2153 dasm_put(Dst, 14726, FRAME_TYPE); 2123 dasm_put(Dst, 14384, FRAME_TYPE);
2154 switch (op) { 2124 switch (op) {
2155 case BC_RET: 2125 case BC_RET:
2156 dasm_put(Dst, 14745); 2126 dasm_put(Dst, 14403);
2157 break; 2127 break;
2158 case BC_RET1: 2128 case BC_RET1:
2159 dasm_put(Dst, 14803); 2129 dasm_put(Dst, 14461);
2160 /* fallthrough */ 2130 /* fallthrough */
2161 case BC_RET0: 2131 case BC_RET0:
2162 dasm_put(Dst, 14819); 2132 dasm_put(Dst, 14477);
2163 default: 2133 default:
2164 break; 2134 break;
2165 } 2135 }
2166 dasm_put(Dst, 14830, Dt7(->pc), PC2PROTO(k)); 2136 dasm_put(Dst, 14488, Dt7(->pc), PC2PROTO(k));
2167 if (op == BC_RET) { 2137 if (op == BC_RET) {
2168 dasm_put(Dst, 14872, LJ_TNIL); 2138 dasm_put(Dst, 14530, LJ_TNIL);
2169 } else { 2139 } else {
2170 dasm_put(Dst, 14881, LJ_TNIL); 2140 dasm_put(Dst, 14539, LJ_TNIL);
2171 } 2141 }
2172 dasm_put(Dst, 14888); 2142 dasm_put(Dst, 14546);
2173 if (op != BC_RET0) { 2143 if (op != BC_RET0) {
2174 dasm_put(Dst, 14909); 2144 dasm_put(Dst, 14567);
2175 } 2145 }
2176 dasm_put(Dst, 5068); 2146 dasm_put(Dst, 4678);
2177 break; 2147 break;
2178 2148
2179 /* -- Loops and branches ------------------------------------------------ */ 2149 /* -- Loops and branches ------------------------------------------------ */
@@ -2181,7 +2151,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2181 2151
2182 case BC_FORL: 2152 case BC_FORL:
2183#if LJ_HASJIT 2153#if LJ_HASJIT
2184 dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); 2154 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
2185#endif 2155#endif
2186 break; 2156 break;
2187 2157
@@ -2193,57 +2163,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2193 case BC_FORI: 2163 case BC_FORI:
2194 case BC_IFORL: 2164 case BC_IFORL:
2195 vk = (op == BC_IFORL || op == BC_JFORL); 2165 vk = (op == BC_IFORL || op == BC_JFORL);
2196 dasm_put(Dst, 14934); 2166 dasm_put(Dst, 14592);
2197 if (!vk) { 2167 if (!vk) {
2198 dasm_put(Dst, 14938, LJ_TISNUM, LJ_TISNUM); 2168 dasm_put(Dst, 14596, LJ_TISNUM, LJ_TISNUM);
2199 } 2169 }
2200 dasm_put(Dst, 14957); 2170 dasm_put(Dst, 14615);
2201 if (!vk) { 2171 if (!vk) {
2202 dasm_put(Dst, 14961, LJ_TISNUM); 2172 dasm_put(Dst, 14619, LJ_TISNUM);
2203 } 2173 }
2204 if (sse) { 2174 if (sse) {
2205 dasm_put(Dst, 14970); 2175 dasm_put(Dst, 14628);
2206 if (vk) { 2176 if (vk) {
2207 dasm_put(Dst, 14982); 2177 dasm_put(Dst, 14640);
2208 } else { 2178 } else {
2209 dasm_put(Dst, 15001); 2179 dasm_put(Dst, 14659);
2210 } 2180 }
2211 dasm_put(Dst, 15006); 2181 dasm_put(Dst, 14664);
2212 } else { 2182 } else {
2213 dasm_put(Dst, 15019); 2183 dasm_put(Dst, 14677);
2214 if (vk) { 2184 if (vk) {
2215 dasm_put(Dst, 15025); 2185 dasm_put(Dst, 14683);
2216 } else { 2186 } else {
2217 dasm_put(Dst, 15041); 2187 dasm_put(Dst, 14699);
2218 } 2188 }
2219 dasm_put(Dst, 15049); 2189 dasm_put(Dst, 14707);
2220 if (cmov) { 2190 if (cmov) {
2221 dasm_put(Dst, 11137); 2191 dasm_put(Dst, 10737);
2222 } else { 2192 } else {
2223 dasm_put(Dst, 11143); 2193 dasm_put(Dst, 10743);
2224 } 2194 }
2225 if (!cmov) { 2195 if (!cmov) {
2226 dasm_put(Dst, 15054); 2196 dasm_put(Dst, 14712);
2227 } 2197 }
2228 } 2198 }
2229 if (op == BC_FORI) { 2199 if (op == BC_FORI) {
2230 dasm_put(Dst, 15060, -BCBIAS_J*4); 2200 dasm_put(Dst, 14718, -BCBIAS_J*4);
2231 } else if (op == BC_JFORI) { 2201 } else if (op == BC_JFORI) {
2232 dasm_put(Dst, 15070, -BCBIAS_J*4, BC_JLOOP); 2202 dasm_put(Dst, 14728, -BCBIAS_J*4, BC_JLOOP);
2233 } else if (op == BC_IFORL) { 2203 } else if (op == BC_IFORL) {
2234 dasm_put(Dst, 15084, -BCBIAS_J*4); 2204 dasm_put(Dst, 14742, -BCBIAS_J*4);
2235 } else { 2205 } else {
2236 dasm_put(Dst, 15080, BC_JLOOP); 2206 dasm_put(Dst, 14738, BC_JLOOP);
2237 } 2207 }
2238 dasm_put(Dst, 11172); 2208 dasm_put(Dst, 10772);
2239 if (sse) { 2209 if (sse) {
2240 dasm_put(Dst, 15094); 2210 dasm_put(Dst, 14752);
2241 } 2211 }
2242 break; 2212 break;
2243 2213
2244 case BC_ITERL: 2214 case BC_ITERL:
2245#if LJ_HASJIT 2215#if LJ_HASJIT
2246 dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); 2216 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
2247#endif 2217#endif
2248 break; 2218 break;
2249 2219
@@ -2252,33 +2222,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2252 break; 2222 break;
2253#endif 2223#endif
2254 case BC_IITERL: 2224 case BC_IITERL:
2255 dasm_put(Dst, 15105, LJ_TNIL); 2225 dasm_put(Dst, 14763, LJ_TNIL);
2256 if (op == BC_JITERL) { 2226 if (op == BC_JITERL) {
2257 dasm_put(Dst, 15120, BC_JLOOP); 2227 dasm_put(Dst, 14778, BC_JLOOP);
2258 } else { 2228 } else {
2259 dasm_put(Dst, 15134, -BCBIAS_J*4); 2229 dasm_put(Dst, 14792, -BCBIAS_J*4);
2260 } 2230 }
2261 dasm_put(Dst, 11469); 2231 dasm_put(Dst, 11069);
2262 break; 2232 break;
2263 2233
2264 case BC_LOOP: 2234 case BC_LOOP:
2265#if LJ_HASJIT 2235#if LJ_HASJIT
2266 dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); 2236 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT);
2267#endif 2237#endif
2268 break; 2238 break;
2269 2239
2270 case BC_ILOOP: 2240 case BC_ILOOP:
2271 dasm_put(Dst, 8597); 2241 dasm_put(Dst, 8384);
2272 break; 2242 break;
2273 2243
2274 case BC_JLOOP: 2244 case BC_JLOOP:
2275#if LJ_HASJIT 2245#if LJ_HASJIT
2276 dasm_put(Dst, 15150, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2246 dasm_put(Dst, 14808, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2277#endif 2247#endif
2278 break; 2248 break;
2279 2249
2280 case BC_JMP: 2250 case BC_JMP:
2281 dasm_put(Dst, 15173, -BCBIAS_J*4); 2251 dasm_put(Dst, 14831, -BCBIAS_J*4);
2252 break;
2253
2254 /* -- Function headers -------------------------------------------------- */
2255
2256 /*
2257 ** Reminder: A function may be called with func/args above L->maxstack,
2258 ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot,
2259 ** too. This means all FUNC* ops (including fast functions) must check
2260 ** for stack overflow _before_ adding more slots!
2261 */
2262
2263 case BC_FUNCF:
2264#if LJ_HASJIT
2265#endif
2266 case BC_FUNCV: /* NYI: compiled vararg functions. */
2267 break;
2268
2269 case BC_JFUNCF:
2270#if !LJ_HASJIT
2271 break;
2272#endif
2273 case BC_IFUNCF:
2274 dasm_put(Dst, 14855, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2275 if (op == BC_JFUNCF) {
2276 dasm_put(Dst, 14885, BC_JLOOP);
2277 } else {
2278 dasm_put(Dst, 8384);
2279 }
2280 dasm_put(Dst, 14894, LJ_TNIL);
2281 break;
2282
2283 case BC_JFUNCV:
2284#if !LJ_HASJIT
2285 break;
2286#endif
2287 dasm_put(Dst, 10435);
2288 break; /* NYI: compiled vararg functions. */
2289
2290 case BC_IFUNCV:
2291 dasm_put(Dst, 14916, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2292 if (op == BC_JFUNCV) {
2293 dasm_put(Dst, 14885, BC_JLOOP);
2294 } else {
2295 dasm_put(Dst, 15007, -4+PC2PROTO(k));
2296 }
2297 dasm_put(Dst, 15029, LJ_TNIL);
2298 break;
2299
2300 case BC_FUNCC:
2301 case BC_FUNCCW:
2302 dasm_put(Dst, 15051, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2303 if (op == BC_FUNCC) {
2304 dasm_put(Dst, 15080);
2305 } else {
2306 dasm_put(Dst, 15084);
2307 }
2308 dasm_put(Dst, 15092, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2309 if (op == BC_FUNCC) {
2310 dasm_put(Dst, 15101);
2311 } else {
2312 dasm_put(Dst, 15105, DISPATCH_GL(wrapf));
2313 }
2314 dasm_put(Dst, 15110, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2282 break; 2315 break;
2283 2316
2284 /* ---------------------------------------------------------------------- */ 2317 /* ---------------------------------------------------------------------- */
@@ -2306,7 +2339,7 @@ static int build_backend(BuildCtx *ctx)
2306 2339
2307 build_subroutines(ctx, cmov, sse); 2340 build_subroutines(ctx, cmov, sse);
2308 2341
2309 dasm_put(Dst, 15197); 2342 dasm_put(Dst, 15135);
2310 for (op = 0; op < BC__MAX; op++) 2343 for (op = 0; op < BC__MAX; op++)
2311 build_ins(ctx, (BCOp)op, op, cmov, sse); 2344 build_ins(ctx, (BCOp)op, op, cmov, sse);
2312 2345
diff --git a/src/lib_base.c b/src/lib_base.c
index 032d5bcc..e85b7264 100644
--- a/src/lib_base.c
+++ b/src/lib_base.c
@@ -22,7 +22,9 @@
22#include "lj_tab.h" 22#include "lj_tab.h"
23#include "lj_meta.h" 23#include "lj_meta.h"
24#include "lj_state.h" 24#include "lj_state.h"
25#include "lj_bc.h"
25#include "lj_ff.h" 26#include "lj_ff.h"
27#include "lj_dispatch.h"
26#include "lj_ctype.h" 28#include "lj_ctype.h"
27#include "lj_lib.h" 29#include "lj_lib.h"
28 30
@@ -521,19 +523,25 @@ void LJ_FASTCALL lj_ffh_coroutine_wrap_err(lua_State *L, lua_State *co)
521 lj_err_run(L); 523 lj_err_run(L);
522} 524}
523 525
526/* Forward declaration. */
527static void setpc_wrap_aux(lua_State *L, GCfunc *fn);
528
524LJLIB_CF(coroutine_wrap) 529LJLIB_CF(coroutine_wrap)
525{ 530{
526 GCfunc *fn;
527 lj_cf_coroutine_create(L); 531 lj_cf_coroutine_create(L);
528 lua_pushcclosure(L, lj_ffh_coroutine_wrap_aux, 1); 532 lj_lib_pushcc(L, lj_ffh_coroutine_wrap_aux, FF_coroutine_wrap_aux, 1);
529 fn = funcV(L->top-1); 533 setpc_wrap_aux(L, funcV(L->top-1));
530 fn->c.gate = lj_ff_coroutine_wrap_aux;
531 fn->c.ffid = FF_coroutine_wrap_aux;
532 return 1; 534 return 1;
533} 535}
534 536
535#include "lj_libdef.h" 537#include "lj_libdef.h"
536 538
539/* Fix the PC of wrap_aux. Really ugly workaround. */
540static void setpc_wrap_aux(lua_State *L, GCfunc *fn)
541{
542 setmref(fn->c.pc, &L2GG(L)->bcff[lj_lib_init_coroutine[1]+2]);
543}
544
537/* ------------------------------------------------------------------------ */ 545/* ------------------------------------------------------------------------ */
538 546
539static void newproxy_weaktable(lua_State *L) 547static void newproxy_weaktable(lua_State *L)
diff --git a/src/lib_io.c b/src/lib_io.c
index 42200201..e8eb09cb 100644
--- a/src/lib_io.c
+++ b/src/lib_io.c
@@ -502,8 +502,7 @@ static GCobj *io_std_new(lua_State *L, FILE *fp, const char *name)
502 502
503LUALIB_API int luaopen_io(lua_State *L) 503LUALIB_API int luaopen_io(lua_State *L)
504{ 504{
505 lua_pushcfunction(L, lj_cf_io_lines_iter); 505 lj_lib_pushcf(L, lj_cf_io_lines_iter, FF_io_lines_iter);
506 funcV(L->top-1)->c.ffid = FF_io_lines_iter;
507 LJ_LIB_REG_(L, NULL, io_method); 506 LJ_LIB_REG_(L, NULL, io_method);
508 copyTV(L, L->top, L->top-1); L->top++; 507 copyTV(L, L->top, L->top-1); L->top++;
509 lua_setfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE); 508 lua_setfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE);
diff --git a/src/lib_jit.c b/src/lib_jit.c
index 8fda41d0..a5829dc3 100644
--- a/src/lib_jit.c
+++ b/src/lib_jit.c
@@ -177,7 +177,7 @@ LJLIB_CF(jit_util_funcinfo)
177 GCtab *t; 177 GCtab *t;
178 lua_createtable(L, 0, 16); /* Increment hash size if fields are added. */ 178 lua_createtable(L, 0, 16); /* Increment hash size if fields are added. */
179 t = tabV(L->top-1); 179 t = tabV(L->top-1);
180 setintfield(L, t, "linedefined", pt->linedefined); 180 setintfield(L, t, "linedefined", proto_line(pt, 0));
181 setintfield(L, t, "lastlinedefined", pt->lastlinedefined); 181 setintfield(L, t, "lastlinedefined", pt->lastlinedefined);
182 setintfield(L, t, "stackslots", pt->framesize); 182 setintfield(L, t, "stackslots", pt->framesize);
183 setintfield(L, t, "params", pt->numparams); 183 setintfield(L, t, "params", pt->numparams);
@@ -185,9 +185,9 @@ LJLIB_CF(jit_util_funcinfo)
185 setintfield(L, t, "gcconsts", (int32_t)pt->sizekgc); 185 setintfield(L, t, "gcconsts", (int32_t)pt->sizekgc);
186 setintfield(L, t, "nconsts", (int32_t)pt->sizekn); 186 setintfield(L, t, "nconsts", (int32_t)pt->sizekn);
187 setintfield(L, t, "upvalues", (int32_t)pt->sizeuv); 187 setintfield(L, t, "upvalues", (int32_t)pt->sizeuv);
188 if (pc-1 < pt->sizebc) 188 if (pc < pt->sizebc)
189 setintfield(L, t, "currentline", 189 setintfield(L, t, "currentline",
190 proto_lineinfo(pt) ? proto_line(pt, pc-1) : 0); 190 proto_lineinfo(pt) ? proto_line(pt, pc) : 0);
191 lua_pushboolean(L, (pt->flags & PROTO_IS_VARARG)); 191 lua_pushboolean(L, (pt->flags & PROTO_IS_VARARG));
192 lua_setfield(L, -2, "isvararg"); 192 lua_setfield(L, -2, "isvararg");
193 setstrV(L, L->top++, proto_chunkname(pt)); 193 setstrV(L, L->top++, proto_chunkname(pt));
@@ -209,7 +209,7 @@ LJLIB_CF(jit_util_funcinfo)
209LJLIB_CF(jit_util_funcbc) 209LJLIB_CF(jit_util_funcbc)
210{ 210{
211 GCproto *pt = check_Lproto(L, 0); 211 GCproto *pt = check_Lproto(L, 0);
212 BCPos pc = (BCPos)lj_lib_checkint(L, 2) - 1; 212 BCPos pc = (BCPos)lj_lib_checkint(L, 2);
213 if (pc < pt->sizebc) { 213 if (pc < pt->sizebc) {
214 BCIns ins = proto_bc(pt)[pc]; 214 BCIns ins = proto_bc(pt)[pc];
215 BCOp op = bc_op(ins); 215 BCOp op = bc_op(ins);
diff --git a/src/lib_package.c b/src/lib_package.c
index 7d0362a5..6d093500 100644
--- a/src/lib_package.c
+++ b/src/lib_package.c
@@ -482,14 +482,14 @@ LUALIB_API int luaopen_package(lua_State *L)
482{ 482{
483 int i; 483 int i;
484 luaL_newmetatable(L, "_LOADLIB"); 484 luaL_newmetatable(L, "_LOADLIB");
485 lua_pushcfunction(L, lj_cf_package_unloadlib); 485 lj_lib_pushcf(L, lj_cf_package_unloadlib, 1);
486 lua_setfield(L, -2, "__gc"); 486 lua_setfield(L, -2, "__gc");
487 luaL_register(L, LUA_LOADLIBNAME, package_lib); 487 luaL_register(L, LUA_LOADLIBNAME, package_lib);
488 lua_pushvalue(L, -1); 488 lua_pushvalue(L, -1);
489 lua_replace(L, LUA_ENVIRONINDEX); 489 lua_replace(L, LUA_ENVIRONINDEX);
490 lua_createtable(L, sizeof(package_loaders)/sizeof(package_loaders[0])-1, 0); 490 lua_createtable(L, sizeof(package_loaders)/sizeof(package_loaders[0])-1, 0);
491 for (i = 0; package_loaders[i] != NULL; i++) { 491 for (i = 0; package_loaders[i] != NULL; i++) {
492 lua_pushcfunction(L, package_loaders[i]); 492 lj_lib_pushcf(L, package_loaders[i], 1);
493 lua_rawseti(L, -2, i+1); 493 lua_rawseti(L, -2, i+1);
494 } 494 }
495 lua_setfield(L, -2, "loaders"); 495 lua_setfield(L, -2, "loaders");
diff --git a/src/lib_string.c b/src/lib_string.c
index b6a4864b..ab353c20 100644
--- a/src/lib_string.c
+++ b/src/lib_string.c
@@ -536,8 +536,7 @@ LJLIB_CF(string_gmatch)
536 lj_lib_checkstr(L, 2); 536 lj_lib_checkstr(L, 2);
537 L->top = L->base+3; 537 L->top = L->base+3;
538 (L->top-1)->u64 = 0; 538 (L->top-1)->u64 = 0;
539 lua_pushcclosure(L, lj_cf_string_gmatch_aux, 3); 539 lj_lib_pushcc(L, lj_cf_string_gmatch_aux, FF_string_gmatch_aux, 3);
540 funcV(L->top-1)->c.ffid = FF_string_gmatch_aux;
541 return 1; 540 return 1;
542} 541}
543 542
diff --git a/src/lj_api.c b/src/lj_api.c
index ad28bbf2..a19f0b33 100644
--- a/src/lj_api.c
+++ b/src/lj_api.c
@@ -18,6 +18,7 @@
18#include "lj_udata.h" 18#include "lj_udata.h"
19#include "lj_meta.h" 19#include "lj_meta.h"
20#include "lj_state.h" 20#include "lj_state.h"
21#include "lj_bc.h"
21#include "lj_frame.h" 22#include "lj_frame.h"
22#include "lj_trace.h" 23#include "lj_trace.h"
23#include "lj_vm.h" 24#include "lj_vm.h"
@@ -487,8 +488,8 @@ LUA_API lua_CFunction lua_tocfunction(lua_State *L, int idx)
487{ 488{
488 cTValue *o = index2adr(L, idx); 489 cTValue *o = index2adr(L, idx);
489 if (tvisfunc(o)) { 490 if (tvisfunc(o)) {
490 ASMFunction gate = funcV(o)->c.gate; 491 BCOp op = bc_op(*mref(funcV(o)->c.pc, BCIns));
491 if (gate == lj_gate_c || gate == lj_gate_cwrap) 492 if (op == BC_FUNCC || op == BC_FUNCCW)
492 return funcV(o)->c.f; 493 return funcV(o)->c.f;
493 } 494 }
494 return NULL; 495 return NULL;
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 3a2fee71..55bc814e 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -906,7 +906,7 @@ static MCode *asm_exitstub_gen(ASMState *as, ExitNo group)
906 *mxp++ = MODRM(XM_OFS8, 0, RID_ESP); 906 *mxp++ = MODRM(XM_OFS8, 0, RID_ESP);
907 *mxp++ = MODRM(XM_SCALE1, RID_ESP, RID_ESP); 907 *mxp++ = MODRM(XM_SCALE1, RID_ESP, RID_ESP);
908 *mxp++ = 2*sizeof(void *); 908 *mxp++ = 2*sizeof(void *);
909 *(int32_t *)mxp = ptr2addr(GG2DISP(J2GG(as->J))); mxp += 4; 909 *(int32_t *)mxp = ptr2addr(J2GG(as->J)->dispatch); mxp += 4;
910 /* Jump to exit handler which fills in the ExitState. */ 910 /* Jump to exit handler which fills in the ExitState. */
911 *mxp++ = XI_JMP; mxp += 4; 911 *mxp++ = XI_JMP; mxp += 4;
912 *((int32_t *)(mxp-4)) = (int32_t)((MCode *)lj_vm_exit_handler - mxp); 912 *((int32_t *)(mxp-4)) = (int32_t)((MCode *)lj_vm_exit_handler - mxp);
@@ -3066,7 +3066,7 @@ static void asm_tail_sync(ASMState *as)
3066 3066
3067 if (as->T->link == TRACE_INTERP) { 3067 if (as->T->link == TRACE_INTERP) {
3068 /* Setup fixed registers for exit to interpreter. */ 3068 /* Setup fixed registers for exit to interpreter. */
3069 emit_loada(as, RID_DISPATCH, GG2DISP(J2GG(as->J))); 3069 emit_loada(as, RID_DISPATCH, J2GG(as->J)->dispatch);
3070 emit_loadi(as, RID_PC, (int32_t)map[nent]); 3070 emit_loadi(as, RID_PC, (int32_t)map[nent]);
3071 } else if (newbase) { 3071 } else if (newbase) {
3072 /* Save modified BASE for linking to trace with higher start frame. */ 3072 /* Save modified BASE for linking to trace with higher start frame. */
diff --git a/src/lj_bc.c b/src/lj_bc.c
index 58e97b30..2519807c 100644
--- a/src/lj_bc.c
+++ b/src/lj_bc.c
@@ -9,11 +9,6 @@
9#include "lj_obj.h" 9#include "lj_obj.h"
10#include "lj_bc.h" 10#include "lj_bc.h"
11 11
12/* Bytecode instruction modes. */ 12/* Bytecode offsets and bytecode instruction modes. */
13LJ_DATADEF const uint16_t lj_bc_mode[BC__MAX+1] = {
14BCDEF(BCMODE)
15 0
16};
17
18#include "lj_bcdef.h" 13#include "lj_bcdef.h"
19 14
diff --git a/src/lj_bc.h b/src/lj_bc.h
index 83e2dea3..e1284916 100644
--- a/src/lj_bc.h
+++ b/src/lj_bc.h
@@ -178,7 +178,17 @@
178 _(ILOOP, rbase, ___, jump, ___) \ 178 _(ILOOP, rbase, ___, jump, ___) \
179 _(JLOOP, rbase, ___, lit, ___) \ 179 _(JLOOP, rbase, ___, lit, ___) \
180 \ 180 \
181 _(JMP, rbase, ___, jump, ___) 181 _(JMP, rbase, ___, jump, ___) \
182 \
183 /* Function headers. I/J = interp/JIT, F/V/C = fixarg/vararg/C func. */ \
184 _(FUNCF, rbase, ___, ___, ___) \
185 _(IFUNCF, rbase, ___, ___, ___) \
186 _(JFUNCF, rbase, ___, lit, ___) \
187 _(FUNCV, rbase, ___, ___, ___) \
188 _(IFUNCV, rbase, ___, ___, ___) \
189 _(JFUNCV, rbase, ___, lit, ___) \
190 _(FUNCC, ___, ___, ___, ___) \
191 _(FUNCCW, ___, ___, ___, ___)
182 192
183/* Bytecode opcode numbers. */ 193/* Bytecode opcode numbers. */
184typedef enum { 194typedef enum {
@@ -206,6 +216,10 @@ LJ_STATIC_ASSERT((int)BC_ITERL + 1 == (int)BC_IITERL);
206LJ_STATIC_ASSERT((int)BC_ITERL + 2 == (int)BC_JITERL); 216LJ_STATIC_ASSERT((int)BC_ITERL + 2 == (int)BC_JITERL);
207LJ_STATIC_ASSERT((int)BC_LOOP + 1 == (int)BC_ILOOP); 217LJ_STATIC_ASSERT((int)BC_LOOP + 1 == (int)BC_ILOOP);
208LJ_STATIC_ASSERT((int)BC_LOOP + 2 == (int)BC_JLOOP); 218LJ_STATIC_ASSERT((int)BC_LOOP + 2 == (int)BC_JLOOP);
219LJ_STATIC_ASSERT((int)BC_FUNCF + 1 == (int)BC_IFUNCF);
220LJ_STATIC_ASSERT((int)BC_FUNCF + 2 == (int)BC_JFUNCF);
221LJ_STATIC_ASSERT((int)BC_FUNCV + 1 == (int)BC_IFUNCV);
222LJ_STATIC_ASSERT((int)BC_FUNCV + 2 == (int)BC_JFUNCV);
209 223
210/* Stack slots used by FORI/FORL, relative to operand A. */ 224/* Stack slots used by FORI/FORL, relative to operand A. */
211enum { 225enum {
@@ -229,8 +243,9 @@ typedef enum {
229 243
230#define BCMODE(name, ma, mb, mc, mm) \ 244#define BCMODE(name, ma, mb, mc, mm) \
231 (BCM##ma|(BCM##mb<<3)|(BCM##mc<<7)|(MM_##mm<<11)), 245 (BCM##ma|(BCM##mb<<3)|(BCM##mc<<7)|(MM_##mm<<11)),
246#define BCMODE_FF 0
232 247
233LJ_DATA const uint16_t lj_bc_mode[BC__MAX+1]; 248LJ_DATA const uint16_t lj_bc_mode[];
234LJ_DATA const uint16_t lj_bc_ofs[BC__MAX+1]; 249LJ_DATA const uint16_t lj_bc_ofs[];
235 250
236#endif 251#endif
diff --git a/src/lj_def.h b/src/lj_def.h
index 64b08f7b..83b1935c 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -193,18 +193,14 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x)
193#endif 193#endif
194 194
195/* Attributes for internal functions. */ 195/* Attributes for internal functions. */
196#if defined(ljamalg_c)
197#define LJ_DATA static
198#define LJ_DATADEF static
199#define LJ_FUNC static
200#define LJ_ASMF LJ_NOAPI
201#define LJ_FUNCA LJ_NOAPI
202#else
203#define LJ_DATA LJ_NOAPI 196#define LJ_DATA LJ_NOAPI
204#define LJ_DATADEF 197#define LJ_DATADEF
205#define LJ_FUNC LJ_NOAPI
206#define LJ_ASMF LJ_NOAPI 198#define LJ_ASMF LJ_NOAPI
207#define LJ_FUNCA LJ_NOAPI 199#define LJ_FUNCA LJ_NOAPI
200#if defined(ljamalg_c)
201#define LJ_FUNC static
202#else
203#define LJ_FUNC LJ_NOAPI
208#endif 204#endif
209#define LJ_FUNC_NORET LJ_FUNC LJ_NORET 205#define LJ_FUNC_NORET LJ_FUNC LJ_NORET
210#define LJ_FUNCA_NORET LJ_FUNCA LJ_NORET 206#define LJ_FUNCA_NORET LJ_FUNCA LJ_NORET
diff --git a/src/lj_dispatch.c b/src/lj_dispatch.c
index 54cc9006..72211dca 100644
--- a/src/lj_dispatch.c
+++ b/src/lj_dispatch.c
@@ -11,6 +11,7 @@
11#include "lj_state.h" 11#include "lj_state.h"
12#include "lj_frame.h" 12#include "lj_frame.h"
13#include "lj_bc.h" 13#include "lj_bc.h"
14#include "lj_ff.h"
14#if LJ_HASJIT 15#if LJ_HASJIT
15#include "lj_jit.h" 16#include "lj_jit.h"
16#endif 17#endif
@@ -19,7 +20,8 @@
19#include "lj_vm.h" 20#include "lj_vm.h"
20#include "luajit.h" 21#include "luajit.h"
21 22
22#define GG_DISP_STATIC BC__MAX 23/* Bump GG_NUM_ASMFF in lj_dispatch.h as needed. Ugly. */
24LJ_STATIC_ASSERT(GG_NUM_ASMFF == FF_NUM_ASMFUNC);
23 25
24/* -- Dispatch table management ------------------------------------------- */ 26/* -- Dispatch table management ------------------------------------------- */
25 27
@@ -27,13 +29,20 @@
27void lj_dispatch_init(GG_State *GG) 29void lj_dispatch_init(GG_State *GG)
28{ 30{
29 uint32_t i; 31 uint32_t i;
30 ASMFunction *disp = GG2DISP(GG); 32 ASMFunction *disp = GG->dispatch;
31 for (i = 0; i < BC__MAX; i++) 33 for (i = 0; i < GG_LEN_SDISP; i++)
32 disp[GG_DISP_STATIC+i] = disp[i] = makeasmfunc(lj_bc_ofs[i]); 34 disp[GG_LEN_DDISP+i] = disp[i] = makeasmfunc(lj_bc_ofs[i]);
35 for (i = GG_LEN_SDISP; i < GG_LEN_DDISP; i++)
36 disp[i] = makeasmfunc(lj_bc_ofs[i]);
33 /* The JIT engine is off by default. luaopen_jit() turns it on. */ 37 /* The JIT engine is off by default. luaopen_jit() turns it on. */
34 disp[BC_FORL] = disp[BC_IFORL]; 38 disp[BC_FORL] = disp[BC_IFORL];
35 disp[BC_ITERL] = disp[BC_IITERL]; 39 disp[BC_ITERL] = disp[BC_IITERL];
36 disp[BC_LOOP] = disp[BC_ILOOP]; 40 disp[BC_LOOP] = disp[BC_ILOOP];
41 disp[BC_FUNCF] = disp[BC_IFUNCF];
42 disp[BC_FUNCV] = disp[BC_IFUNCV];
43 GG->g.bc_cfunc_ext = GG->g.bc_cfunc_int = BCINS_AD(BC_FUNCC, 0, 0);
44 for (i = 0; i < GG_NUM_ASMFF; i++)
45 GG->bcff[i] = BCINS_AD(BC__MAX+i, 0, 0);
37} 46}
38 47
39#if LJ_HASJIT 48#if LJ_HASJIT
@@ -57,39 +66,50 @@ void lj_dispatch_update(global_State *g)
57 mode |= (G2J(g)->flags & JIT_F_ON) ? 1 : 0; 66 mode |= (G2J(g)->flags & JIT_F_ON) ? 1 : 0;
58 mode |= G2J(g)->state != LJ_TRACE_IDLE ? 6 : 0; 67 mode |= G2J(g)->state != LJ_TRACE_IDLE ? 6 : 0;
59#endif 68#endif
60 mode |= (g->hookmask & HOOK_EVENTMASK) ? 2 : 0; 69 mode |= (g->hookmask & (LUA_MASKLINE|LUA_MASKCOUNT)) ? 2 : 0;
61 if (oldmode != mode) { /* Mode changed? */ 70 if (oldmode != mode) { /* Mode changed? */
62 ASMFunction *disp = GG2DISP(G2GG(g)); 71 ASMFunction *disp = G2GG(g)->dispatch;
63 ASMFunction f_forl, f_iterl, f_loop; 72 ASMFunction f_forl, f_iterl, f_loop, f_funcf, f_funcv;
64 g->dispatchmode = mode; 73 g->dispatchmode = mode;
65 if ((mode & 5) == 1) { /* Hotcount if JIT is on, but not when recording. */ 74 if ((mode & 5) == 1) { /* Hotcount if JIT is on, but not when recording. */
66 f_forl = makeasmfunc(lj_bc_ofs[BC_FORL]); 75 f_forl = makeasmfunc(lj_bc_ofs[BC_FORL]);
67 f_iterl = makeasmfunc(lj_bc_ofs[BC_ITERL]); 76 f_iterl = makeasmfunc(lj_bc_ofs[BC_ITERL]);
68 f_loop = makeasmfunc(lj_bc_ofs[BC_LOOP]); 77 f_loop = makeasmfunc(lj_bc_ofs[BC_LOOP]);
78 f_funcf = makeasmfunc(lj_bc_ofs[BC_FUNCF]);
79 f_funcv = makeasmfunc(lj_bc_ofs[BC_FUNCV]);
69 } else { /* Otherwise use the non-hotcounting instructions. */ 80 } else { /* Otherwise use the non-hotcounting instructions. */
70 f_forl = disp[GG_DISP_STATIC+BC_IFORL]; 81 f_forl = disp[GG_LEN_DDISP+BC_IFORL];
71 f_iterl = disp[GG_DISP_STATIC+BC_IITERL]; 82 f_iterl = disp[GG_LEN_DDISP+BC_IITERL];
72 f_loop = disp[GG_DISP_STATIC+BC_ILOOP]; 83 f_loop = disp[GG_LEN_DDISP+BC_ILOOP];
84 f_funcf = disp[GG_LEN_DDISP+BC_IFUNCF];
85 f_funcv = disp[GG_LEN_DDISP+BC_IFUNCV];
73 } 86 }
74 /* Set static loop ins first (may be copied below). */ 87 /* Set static counting ins first (may be copied below). */
75 disp[GG_DISP_STATIC+BC_FORL] = f_forl; 88 disp[GG_LEN_DDISP+BC_FORL] = f_forl;
76 disp[GG_DISP_STATIC+BC_ITERL] = f_iterl; 89 disp[GG_LEN_DDISP+BC_ITERL] = f_iterl;
77 disp[GG_DISP_STATIC+BC_LOOP] = f_loop; 90 disp[GG_LEN_DDISP+BC_LOOP] = f_loop;
91 disp[GG_LEN_DDISP+BC_FUNCF] = f_funcf;
92 disp[GG_LEN_DDISP+BC_FUNCV] = f_funcv;
78 if ((oldmode & 6) != (mode & 6)) { /* Need to change whole table? */ 93 if ((oldmode & 6) != (mode & 6)) { /* Need to change whole table? */
79 if ((mode & 6) == 0) { /* No hooks and no recording? */ 94 if ((mode & 6) == 0) { /* No hooks and no recording? */
80 /* Copy static dispatch table to dynamic dispatch table. */ 95 /* Copy static dispatch table to dynamic dispatch table. */
81 memcpy(&disp[0], &disp[GG_DISP_STATIC], sizeof(ASMFunction)*BC__MAX); 96 memcpy(&disp[0], &disp[GG_LEN_DDISP], GG_LEN_SDISP*sizeof(ASMFunction));
82 } else { 97 } else {
83 /* The recording dispatch also checks for hooks. */ 98 /* The recording dispatch also checks for hooks. */
84 ASMFunction f = (mode & 6) == 6 ? lj_vm_record : lj_vm_hook; 99 ASMFunction f = (mode & 6) == 6 ? lj_vm_record : lj_vm_hook;
85 uint32_t i; 100 uint32_t i;
86 for (i = 0; i < BC__MAX; i++) 101 for (i = 0; i < BC_FUNCF; i++)
87 disp[i] = f; 102 disp[i] = f;
103 /* NYI: call hooks for function headers. */
104 memcpy(&disp[BC_FUNCF], &disp[GG_LEN_DDISP+BC_FUNCF],
105 (GG_LEN_SDISP-BC_FUNCF)*sizeof(ASMFunction));
88 } 106 }
89 } else if ((mode & 6) == 0) { /* Fix dynamic loop ins unless overriden. */ 107 } else if ((mode & 6) == 0) { /* Set dynamic counting ins. */
90 disp[BC_FORL] = f_forl; 108 disp[BC_FORL] = f_forl;
91 disp[BC_ITERL] = f_iterl; 109 disp[BC_ITERL] = f_iterl;
92 disp[BC_LOOP] = f_loop; 110 disp[BC_LOOP] = f_loop;
111 disp[BC_FUNCF] = f_funcf;
112 disp[BC_FUNCV] = f_funcv;
93 } 113 }
94#if LJ_HASJIT 114#if LJ_HASJIT
95 if ((mode & 1) && !(oldmode & 1)) /* JIT off to on transition. */ 115 if ((mode & 1) && !(oldmode & 1)) /* JIT off to on transition. */
@@ -186,14 +206,16 @@ int luaJIT_setmode(lua_State *L, int idx, int mode)
186 if ((mode & LUAJIT_MODE_ON)) { 206 if ((mode & LUAJIT_MODE_ON)) {
187 if (idx != 0) { 207 if (idx != 0) {
188 cTValue *tv = idx > 0 ? L->base + (idx-1) : L->top + idx; 208 cTValue *tv = idx > 0 ? L->base + (idx-1) : L->top + idx;
189 if (tvislightud(tv) && lightudV(tv) != NULL) 209 if (tvislightud(tv))
190 g->wrapf = (lua_CFunction)lightudV(tv); 210 g->wrapf = (lua_CFunction)lightudV(tv);
191 else 211 else
192 return 0; /* Failed. */ 212 return 0; /* Failed. */
213 } else {
214 return 0; /* Failed. */
193 } 215 }
194 g->wrapmode = 1; 216 g->bc_cfunc_ext = BCINS_AD(BC_FUNCCW, 0, 0);
195 } else { 217 } else {
196 g->wrapmode = 0; 218 g->bc_cfunc_ext = BCINS_AD(BC_FUNCC, 0, 0);
197 } 219 }
198 break; 220 break;
199 default: 221 default:
diff --git a/src/lj_dispatch.h b/src/lj_dispatch.h
index bbbfa0be..865ee790 100644
--- a/src/lj_dispatch.h
+++ b/src/lj_dispatch.h
@@ -7,6 +7,7 @@
7#define _LJ_DISPATCH_H 7#define _LJ_DISPATCH_H
8 8
9#include "lj_obj.h" 9#include "lj_obj.h"
10#include "lj_bc.h"
10#if LJ_HASJIT 11#if LJ_HASJIT
11#include "lj_jit.h" 12#include "lj_jit.h"
12#endif 13#endif
@@ -21,6 +22,13 @@ typedef uint16_t HotCount;
21#define HOTCOUNT_MIN_PENALTY 103 22#define HOTCOUNT_MIN_PENALTY 103
22#define HOTCOUNT_MAX_PENALTY 60000 23#define HOTCOUNT_MAX_PENALTY 60000
23 24
25/* This solves a circular dependency problem -- bump as needed. Sigh. */
26#define GG_NUM_ASMFF 62
27
28#define GG_LEN_DDISP (BC__MAX + GG_NUM_ASMFF)
29#define GG_LEN_SDISP BC_FUNCC
30#define GG_LEN_DISP (GG_LEN_DDISP + GG_LEN_SDISP)
31
24/* Global state, main thread and extra fields are allocated together. */ 32/* Global state, main thread and extra fields are allocated together. */
25typedef struct GG_State { 33typedef struct GG_State {
26 lua_State L; /* Main thread. */ 34 lua_State L; /* Main thread. */
@@ -29,22 +37,22 @@ typedef struct GG_State {
29 jit_State J; /* JIT state. */ 37 jit_State J; /* JIT state. */
30 HotCount hotcount[HOTCOUNT_SIZE]; /* Hot counters. */ 38 HotCount hotcount[HOTCOUNT_SIZE]; /* Hot counters. */
31#endif 39#endif
32 /* Instruction dispatch tables follow. */ 40 ASMFunction dispatch[GG_LEN_DISP]; /* Instruction dispatch tables. */
41 BCIns bcff[GG_NUM_ASMFF]; /* Bytecode for ASM fast functions. */
33} GG_State; 42} GG_State;
34 43
35#define GG_OFS(field) ((int)offsetof(GG_State, field)) 44#define GG_OFS(field) ((int)offsetof(GG_State, field))
36#define GG_OFS_DISP ((int)sizeof(GG_State))
37#define GG2DISP(gg) ((ASMFunction *)((char *)(gg) + GG_OFS_DISP))
38#define G2GG(gl) ((GG_State *)((char *)(gl) - GG_OFS(g))) 45#define G2GG(gl) ((GG_State *)((char *)(gl) - GG_OFS(g)))
39#define J2GG(j) ((GG_State *)((char *)(j) - GG_OFS(J))) 46#define J2GG(j) ((GG_State *)((char *)(j) - GG_OFS(J)))
40#define L2GG(L) (G2GG(G(L))) 47#define L2GG(L) (G2GG(G(L)))
41#define J2G(J) (&J2GG(J)->g) 48#define J2G(J) (&J2GG(J)->g)
42#define G2J(gl) (&G2GG(gl)->J) 49#define G2J(gl) (&G2GG(gl)->J)
43#define L2J(L) (&L2GG(L)->J) 50#define L2J(L) (&L2GG(L)->J)
44#define GG_G2DISP (GG_OFS_DISP - GG_OFS(g)) 51#define GG_G2DISP (GG_OFS(dispatch) - GG_OFS(g))
45#define GG_DISP2G (GG_OFS(g) - GG_OFS_DISP) 52#define GG_DISP2G (GG_OFS(g) - GG_OFS(dispatch))
46#define GG_DISP2J (GG_OFS(J) - GG_OFS_DISP) 53#define GG_DISP2J (GG_OFS(J) - GG_OFS(dispatch))
47#define GG_DISP2HOT (GG_OFS(hotcount) - GG_OFS_DISP) 54#define GG_DISP2HOT (GG_OFS(hotcount) - GG_OFS(dispatch))
55#define GG_DISP2STATIC (GG_LEN_DDISP*(int)sizeof(ASMFunction))
48 56
49#define hotcount_get(gg, pc) \ 57#define hotcount_get(gg, pc) \
50 (gg)->hotcount[(u32ptr(pc)>>2) & (HOTCOUNT_SIZE-1)] 58 (gg)->hotcount[(u32ptr(pc)>>2) & (HOTCOUNT_SIZE-1)]
diff --git a/src/lj_err.c b/src/lj_err.c
index 2b021d28..fdc06001 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -152,7 +152,7 @@ static const char *getobjname(GCproto *pt, const BCIns *ip, BCReg slot,
152restart: 152restart:
153 lname = getvarname(pt, proto_bcpos(pt, ip), slot); 153 lname = getvarname(pt, proto_bcpos(pt, ip), slot);
154 if (lname != NULL) { *name = lname; return "local"; } 154 if (lname != NULL) { *name = lname; return "local"; }
155 while (--ip >= proto_bc(pt)) { 155 while (--ip > proto_bc(pt)) {
156 BCIns ins = *ip; 156 BCIns ins = *ip;
157 BCOp op = bc_op(ins); 157 BCOp op = bc_op(ins);
158 BCReg ra = bc_a(ins); 158 BCReg ra = bc_a(ins);
@@ -222,11 +222,7 @@ void lj_err_pushloc(lua_State *L, GCproto *pt, BCPos pc)
222 if (name) { 222 if (name) {
223 const char *s = strdata(name); 223 const char *s = strdata(name);
224 MSize i, len = name->len; 224 MSize i, len = name->len;
225 BCLine line; 225 BCLine line = pc < pt->sizebc ? proto_line(pt, pc) : 0;
226 if (pc)
227 line = proto_line(pt, pc-1);
228 else
229 line = pt->linedefined;
230 if (*s == '@') { 226 if (*s == '@') {
231 s++; len--; 227 s++; len--;
232 for (i = len; i > 0; i--) 228 for (i = len; i > 0; i--)
@@ -345,9 +341,10 @@ LUA_API int lua_getinfo(lua_State *L, const char *what, lua_Debug *ar)
345 switch (*what) { 341 switch (*what) {
346 case 'S': 342 case 'S':
347 if (isluafunc(fn)) { 343 if (isluafunc(fn)) {
348 ar->source = strdata(proto_chunkname(funcproto(fn))); 344 GCproto *pt = funcproto(fn);
349 ar->linedefined = cast_int(funcproto(fn)->linedefined); 345 ar->source = strdata(proto_chunkname(pt));
350 ar->lastlinedefined = cast_int(funcproto(fn)->lastlinedefined); 346 ar->linedefined = (int)proto_line(pt, 0);
347 ar->lastlinedefined = (int)pt->lastlinedefined;
351 ar->what = (ar->linedefined == 0) ? "main" : "Lua"; 348 ar->what = (ar->linedefined == 0) ? "main" : "Lua";
352 } else { 349 } else {
353 ar->source = "=[C]"; 350 ar->source = "=[C]";
@@ -380,7 +377,7 @@ LUA_API int lua_getinfo(lua_State *L, const char *what, lua_Debug *ar)
380 GCproto *pt = funcproto(fn); 377 GCproto *pt = funcproto(fn);
381 BCLine *lineinfo = proto_lineinfo(pt); 378 BCLine *lineinfo = proto_lineinfo(pt);
382 MSize i, szl = pt->sizebc; 379 MSize i, szl = pt->sizebc;
383 for (i = 0; i < szl; i++) 380 for (i = 1; i < szl; i++)
384 setboolV(lj_tab_setint(L, t, lineinfo[i]), 1); 381 setboolV(lj_tab_setint(L, t, lineinfo[i]), 1);
385 settabV(L, L->top, t); 382 settabV(L, L->top, t);
386 } else { 383 } else {
diff --git a/src/lj_func.c b/src/lj_func.c
index 7d130176..3766b25e 100644
--- a/src/lj_func.c
+++ b/src/lj_func.c
@@ -101,8 +101,8 @@ GCfunc *lj_func_newC(lua_State *L, MSize nelems, GCtab *env)
101 fn->c.ffid = FF_C; 101 fn->c.ffid = FF_C;
102 fn->c.nupvalues = cast_byte(nelems); 102 fn->c.nupvalues = cast_byte(nelems);
103 /* NOBARRIER: The GCfunc is new (marked white). */ 103 /* NOBARRIER: The GCfunc is new (marked white). */
104 setmref(fn->c.pc, &G(L)->bc_cfunc_ext);
104 setgcref(fn->c.env, obj2gco(env)); 105 setgcref(fn->c.env, obj2gco(env));
105 fn->c.gate = G(L)->wrapmode ? lj_gate_cwrap : lj_gate_c;
106 return fn; 106 return fn;
107} 107}
108 108
@@ -115,7 +115,6 @@ GCfunc *lj_func_newL(lua_State *L, GCproto *pt, GCtab *env)
115 /* NOBARRIER: Really a setgcref. But the GCfunc is new (marked white). */ 115 /* NOBARRIER: Really a setgcref. But the GCfunc is new (marked white). */
116 setmref(fn->l.pc, proto_bc(pt)); 116 setmref(fn->l.pc, proto_bc(pt));
117 setgcref(fn->l.env, obj2gco(env)); 117 setgcref(fn->l.env, obj2gco(env));
118 fn->l.gate = (pt->flags & PROTO_IS_VARARG) ? lj_gate_lv : lj_gate_lf;
119 return fn; 118 return fn;
120} 119}
121 120
diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c
index 3a4d5da1..f71b3081 100644
--- a/src/lj_gdbjit.c
+++ b/src/lj_gdbjit.c
@@ -705,10 +705,7 @@ void lj_gdbjit_addtrace(jit_State *J, Trace *T, TraceNo traceno)
705 ctx.szmcode = T->szmcode; 705 ctx.szmcode = T->szmcode;
706 ctx.spadjp = CFRAME_SIZE + (MSize)(parent ? J->trace[parent]->spadjust : 0); 706 ctx.spadjp = CFRAME_SIZE + (MSize)(parent ? J->trace[parent]->spadjust : 0);
707 ctx.spadj = CFRAME_SIZE + T->spadjust; 707 ctx.spadj = CFRAME_SIZE + T->spadjust;
708 if (startpc >= proto_bc(pt)) 708 ctx.lineno = proto_line(pt, proto_bcpos(pt, startpc));
709 ctx.lineno = proto_line(pt,proto_bcpos(pt,startpc));
710 else
711 ctx.lineno = pt->linedefined;
712 ctx.filename = strdata(proto_chunkname(pt)); 709 ctx.filename = strdata(proto_chunkname(pt));
713 if (*ctx.filename == '@' || *ctx.filename == '=') 710 if (*ctx.filename == '@' || *ctx.filename == '=')
714 ctx.filename++; 711 ctx.filename++;
diff --git a/src/lj_lib.c b/src/lj_lib.c
index de1c8646..0ba0ecb1 100644
--- a/src/lj_lib.c
+++ b/src/lj_lib.c
@@ -14,6 +14,8 @@
14#include "lj_str.h" 14#include "lj_str.h"
15#include "lj_tab.h" 15#include "lj_tab.h"
16#include "lj_func.h" 16#include "lj_func.h"
17#include "lj_bc.h"
18#include "lj_dispatch.h"
17#include "lj_vm.h" 19#include "lj_vm.h"
18#include "lj_lib.h" 20#include "lj_lib.h"
19 21
@@ -46,6 +48,7 @@ void lj_lib_register(lua_State *L, const char *libname,
46 GCtab *env = tabref(L->env); 48 GCtab *env = tabref(L->env);
47 GCfunc *ofn = NULL; 49 GCfunc *ofn = NULL;
48 int ffid = *p++; 50 int ffid = *p++;
51 BCIns *bcff = &L2GG(L)->bcff[*p++];
49 GCtab *tab = lib_create_table(L, libname, *p++); 52 GCtab *tab = lib_create_table(L, libname, *p++);
50 ptrdiff_t tpos = L->top - L->base; 53 ptrdiff_t tpos = L->top - L->base;
51 54
@@ -68,10 +71,10 @@ void lj_lib_register(lua_State *L, const char *libname,
68 fn->c.ffid = (uint8_t)(ffid++); 71 fn->c.ffid = (uint8_t)(ffid++);
69 name = (const char *)p; 72 name = (const char *)p;
70 p += len; 73 p += len;
71 if (tag != LIBINIT_CF) { 74 if (tag == LIBINIT_CF)
72 fn->c.gate = makeasmfunc(p[0] + (p[1] << 8)); 75 setmref(fn->c.pc, &G(L)->bc_cfunc_int);
73 p += 2; 76 else
74 } 77 setmref(fn->c.pc, bcff++);
75 if (tag == LIBINIT_ASM_) 78 if (tag == LIBINIT_ASM_)
76 fn->c.f = ofn->c.f; /* Copy handler from previous function. */ 79 fn->c.f = ofn->c.f; /* Copy handler from previous function. */
77 else 80 else
diff --git a/src/lj_lib.h b/src/lj_lib.h
index 44be96b9..fd2b025c 100644
--- a/src/lj_lib.h
+++ b/src/lj_lib.h
@@ -57,6 +57,19 @@ LJ_FUNC int lj_lib_checkopt(lua_State *L, int narg, int def, const char *lst);
57#define lj_lib_checkfpu(L) UNUSED(L) 57#define lj_lib_checkfpu(L) UNUSED(L)
58#endif 58#endif
59 59
60/* Push internal function on the stack. */
61static LJ_AINLINE void lj_lib_pushcc(lua_State *L, lua_CFunction f,
62 int id, int n)
63{
64 GCfunc *fn;
65 lua_pushcclosure(L, f, n);
66 fn = funcV(L->top-1);
67 fn->c.ffid = (uint8_t)id;
68 setmref(fn->c.pc, &G(L)->bc_cfunc_int);
69}
70
71#define lj_lib_pushcf(L, fn, id) (lj_lib_pushcc(L, (fn), (id), 0))
72
60/* Library function declarations. Scanned by buildvm. */ 73/* Library function declarations. Scanned by buildvm. */
61#define LJLIB_CF(name) static int lj_cf_##name(lua_State *L) 74#define LJLIB_CF(name) static int lj_cf_##name(lua_State *L)
62#define LJLIB_ASM(name) static int lj_ffh_##name(lua_State *L) 75#define LJLIB_ASM(name) static int lj_ffh_##name(lua_State *L)
diff --git a/src/lj_obj.h b/src/lj_obj.h
index a6637954..d463cb2c 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -360,7 +360,6 @@ typedef struct GCproto {
360 uint16_t trace; /* Anchor for chain of root traces. */ 360 uint16_t trace; /* Anchor for chain of root traces. */
361 /* ------ The following fields are for debugging/tracebacks only ------ */ 361 /* ------ The following fields are for debugging/tracebacks only ------ */
362 GCRef chunkname; /* Name of the chunk this function was defined in. */ 362 GCRef chunkname; /* Name of the chunk this function was defined in. */
363 BCLine linedefined; /* First line of the function definition. */
364 BCLine lastlinedefined; /* Last line of the function definition. */ 363 BCLine lastlinedefined; /* Last line of the function definition. */
365 MSize sizevarinfo; /* Size of local var info array. */ 364 MSize sizevarinfo; /* Size of local var info array. */
366 MRef varinfo; /* Names and extents of local variables. */ 365 MRef varinfo; /* Names and extents of local variables. */
@@ -419,7 +418,7 @@ typedef struct GCupval {
419/* Common header for functions. env should be at same offset in GCudata. */ 418/* Common header for functions. env should be at same offset in GCudata. */
420#define GCfuncHeader \ 419#define GCfuncHeader \
421 GCHeader; uint8_t ffid; uint8_t nupvalues; \ 420 GCHeader; uint8_t ffid; uint8_t nupvalues; \
422 GCRef env; GCRef gclist; ASMFunction gate 421 GCRef env; GCRef gclist; MRef pc
423 422
424typedef struct GCfuncC { 423typedef struct GCfuncC {
425 GCfuncHeader; 424 GCfuncHeader;
@@ -429,7 +428,6 @@ typedef struct GCfuncC {
429 428
430typedef struct GCfuncL { 429typedef struct GCfuncL {
431 GCfuncHeader; 430 GCfuncHeader;
432 MRef pc; /* Start PC (and GCproto reference). */
433 GCRef uvptr[1]; /* Array of _pointers_ to upvalue objects (GCupval). */ 431 GCRef uvptr[1]; /* Array of _pointers_ to upvalue objects (GCupval). */
434} GCfuncL; 432} GCfuncL;
435 433
@@ -558,7 +556,7 @@ typedef struct global_State {
558 uint8_t hookmask; /* Hook mask. */ 556 uint8_t hookmask; /* Hook mask. */
559 uint8_t dispatchmode; /* Dispatch mode. */ 557 uint8_t dispatchmode; /* Dispatch mode. */
560 uint8_t vmevmask; /* VM event mask. */ 558 uint8_t vmevmask; /* VM event mask. */
561 uint8_t wrapmode; /* Wrap mode. */ 559 uint8_t unused1;
562 GCRef mainthref; /* Link to main thread. */ 560 GCRef mainthref; /* Link to main thread. */
563 TValue registrytv; /* Anchor for registry. */ 561 TValue registrytv; /* Anchor for registry. */
564 TValue tmptv; /* Temporary TValue. */ 562 TValue tmptv; /* Temporary TValue. */
@@ -569,6 +567,8 @@ typedef struct global_State {
569 lua_CFunction wrapf; /* Wrapper for C function calls. */ 567 lua_CFunction wrapf; /* Wrapper for C function calls. */
570 lua_CFunction panic; /* Called as a last resort for errors. */ 568 lua_CFunction panic; /* Called as a last resort for errors. */
571 volatile int32_t vmstate; /* VM state or current JIT code trace number. */ 569 volatile int32_t vmstate; /* VM state or current JIT code trace number. */
570 BCIns bc_cfunc_int; /* Bytecode for internal C function calls. */
571 BCIns bc_cfunc_ext; /* Bytecode for external C function calls. */
572 GCRef jit_L; /* Current JIT code lua_State or NULL. */ 572 GCRef jit_L; /* Current JIT code lua_State or NULL. */
573 MRef jit_base; /* Current JIT code L->base. */ 573 MRef jit_base; /* Current JIT code L->base. */
574 GCRef gcroot[GCROOT__MAX]; /* GC roots. */ 574 GCRef gcroot[GCROOT__MAX]; /* GC roots. */
@@ -584,6 +584,7 @@ typedef struct global_State {
584/* Hook management. Hook event masks are defined in lua.h. */ 584/* Hook management. Hook event masks are defined in lua.h. */
585#define HOOK_EVENTMASK 0x0f 585#define HOOK_EVENTMASK 0x0f
586#define HOOK_ACTIVE 0x10 586#define HOOK_ACTIVE 0x10
587#define HOOK_ACTIVE_SHIFT 4
587#define HOOK_VMEVENT 0x20 588#define HOOK_VMEVENT 0x20
588#define HOOK_GC 0x40 589#define HOOK_GC 0x40
589#define hook_active(g) ((g)->hookmask & HOOK_ACTIVE) 590#define hook_active(g) ((g)->hookmask & HOOK_ACTIVE)
diff --git a/src/lj_parse.c b/src/lj_parse.c
index acc25519..3bef225a 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -1036,7 +1036,10 @@ static void fs_fixup_bc(FuncState *fs, GCproto *pt, BCIns *bc, BCLine *lineinfo)
1036 setmref(pt->lineinfo, lineinfo); 1036 setmref(pt->lineinfo, lineinfo);
1037 pt->sizebc = n; 1037 pt->sizebc = n;
1038 bc[n] = ~0u; /* Close potentially uninitialized gap between bc and kgc. */ 1038 bc[n] = ~0u; /* Close potentially uninitialized gap between bc and kgc. */
1039 for (i = 0; i < n; i++) { 1039 bc[0] = BCINS_AD((fs->flags & PROTO_IS_VARARG) ? BC_FUNCV : BC_FUNCF,
1040 fs->framesize, 0);
1041 lineinfo[0] = fs->linedefined;
1042 for (i = 1; i < n; i++) {
1040 bc[i] = base[i].ins; 1043 bc[i] = base[i].ins;
1041 lineinfo[i] = base[i].line; 1044 lineinfo[i] = base[i].line;
1042 } 1045 }
@@ -1181,7 +1184,6 @@ static GCproto *fs_finish(LexState *ls, BCLine line)
1181 pt->flags = fs->flags; 1184 pt->flags = fs->flags;
1182 pt->numparams = fs->numparams; 1185 pt->numparams = fs->numparams;
1183 pt->framesize = fs->framesize; 1186 pt->framesize = fs->framesize;
1184 pt->linedefined = fs->linedefined;
1185 pt->lastlinedefined = line; 1187 pt->lastlinedefined = line;
1186 1188
1187 fs_fixup_bc(fs, pt, (BCIns *)((char *)pt + sizeof(GCproto)), 1189 fs_fixup_bc(fs, pt, (BCIns *)((char *)pt + sizeof(GCproto)),
@@ -1416,29 +1418,30 @@ static void parse_chunk(LexState *ls);
1416/* Parse body of a function. */ 1418/* Parse body of a function. */
1417static void parse_body(LexState *ls, ExpDesc *e, int needself, BCLine line) 1419static void parse_body(LexState *ls, ExpDesc *e, int needself, BCLine line)
1418{ 1420{
1419 FuncState cfs, *fs = ls->fs; 1421 FuncState fs, *pfs = ls->fs;
1420 BCReg kidx; 1422 BCReg kidx;
1421 BCLine lastline; 1423 BCLine lastline;
1422 GCproto *pt; 1424 GCproto *pt;
1423 ptrdiff_t oldbase = fs->bcbase - ls->bcstack; 1425 ptrdiff_t oldbase = pfs->bcbase - ls->bcstack;
1424 fs_init(ls, &cfs); 1426 fs_init(ls, &fs);
1425 cfs.linedefined = line; 1427 fs.linedefined = line;
1426 cfs.numparams = (uint8_t)parse_params(ls, needself); 1428 fs.numparams = (uint8_t)parse_params(ls, needself);
1427 cfs.bcbase = fs->bcbase + fs->pc; 1429 fs.bcbase = pfs->bcbase + pfs->pc;
1428 cfs.bclim = fs->bclim - fs->pc; 1430 fs.bclim = pfs->bclim - pfs->pc;
1431 bcemit_AD(&fs, BC_FUNCF, 0, 0); /* Placeholder. */
1429 parse_chunk(ls); 1432 parse_chunk(ls);
1430 lastline = ls->linenumber; 1433 lastline = ls->linenumber;
1431 lex_match(ls, TK_end, TK_function, line); 1434 lex_match(ls, TK_end, TK_function, line);
1432 pt = fs_finish(ls, lastline); 1435 pt = fs_finish(ls, lastline);
1433 fs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */ 1436 pfs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */
1434 fs->bclim = (BCPos)(ls->sizebcstack - oldbase); 1437 pfs->bclim = (BCPos)(ls->sizebcstack - oldbase);
1435 /* Store new prototype in the constant array of the parent. */ 1438 /* Store new prototype in the constant array of the parent. */
1436 kidx = const_gc(fs, obj2gco(pt), LJ_TPROTO); 1439 kidx = const_gc(pfs, obj2gco(pt), LJ_TPROTO);
1437 expr_init(e, VRELOCABLE, bcemit_AD(fs, BC_FNEW, 0, kidx)); 1440 expr_init(e, VRELOCABLE, bcemit_AD(pfs, BC_FNEW, 0, kidx));
1438 if (!(fs->flags & PROTO_HAS_FNEW)) { 1441 if (!(pfs->flags & PROTO_HAS_FNEW)) {
1439 if (fs->flags & PROTO_HAS_RETURN) 1442 if (pfs->flags & PROTO_HAS_RETURN)
1440 fs->flags |= PROTO_FIXUP_RETURN; 1443 pfs->flags |= PROTO_FIXUP_RETURN;
1441 fs->flags |= PROTO_HAS_FNEW; 1444 pfs->flags |= PROTO_HAS_FNEW;
1442 } 1445 }
1443} 1446}
1444 1447
@@ -2227,6 +2230,7 @@ GCproto *lj_parse(LexState *ls)
2227 fs.bcbase = NULL; 2230 fs.bcbase = NULL;
2228 fs.bclim = 0; 2231 fs.bclim = 0;
2229 fs.flags |= PROTO_IS_VARARG; /* Main chunk is always a vararg func. */ 2232 fs.flags |= PROTO_IS_VARARG; /* Main chunk is always a vararg func. */
2233 bcemit_AD(&fs, BC_FUNCV, 0, 0); /* Placeholder. */
2230 lj_lex_next(ls); /* Read-ahead first token. */ 2234 lj_lex_next(ls); /* Read-ahead first token. */
2231 parse_chunk(ls); 2235 parse_chunk(ls);
2232 if (ls->token != TK_eof) 2236 if (ls->token != TK_eof)
diff --git a/src/lj_record.c b/src/lj_record.c
index 49e3d3b5..2709ea01 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -1671,14 +1671,8 @@ static int rec_call(jit_State *J, BCReg func, ptrdiff_t cres, ptrdiff_t nargs)
1671 GCproto *pt = funcproto(rd.fn); 1671 GCproto *pt = funcproto(rd.fn);
1672 if ((pt->flags & PROTO_NO_JIT)) 1672 if ((pt->flags & PROTO_NO_JIT))
1673 lj_trace_err(J, LJ_TRERR_CJITOFF); 1673 lj_trace_err(J, LJ_TRERR_CJITOFF);
1674 if ((pt->flags & PROTO_IS_VARARG)) { 1674 if ((pt->flags & PROTO_IS_VARARG))
1675 if (rd.fn->l.gate != lj_gate_lv)
1676 lj_trace_err(J, LJ_TRERR_NYILNKF);
1677 lj_trace_err(J, LJ_TRERR_NYIVF); 1675 lj_trace_err(J, LJ_TRERR_NYIVF);
1678 } else {
1679 if (rd.fn->l.gate != lj_gate_lf)
1680 lj_trace_err(J, LJ_TRERR_NYILNKF);
1681 }
1682 if (cres == CALLRES_TAILCALL) { 1676 if (cres == CALLRES_TAILCALL) {
1683 ptrdiff_t i; 1677 ptrdiff_t i;
1684 /* Tailcalls can form a loop, so count towards the loop unroll limit. */ 1678 /* Tailcalls can form a loop, so count towards the loop unroll limit. */
diff --git a/src/lj_state.c b/src/lj_state.c
index 69f182ed..8f8be97b 100644
--- a/src/lj_state.c
+++ b/src/lj_state.c
@@ -37,8 +37,8 @@
37** Calls to metamethods store their arguments beyond the current top 37** Calls to metamethods store their arguments beyond the current top
38** without checking for the stack limit. This avoids stack resizes which 38** without checking for the stack limit. This avoids stack resizes which
39** would invalidate passed TValue pointers. The stack check is performed 39** would invalidate passed TValue pointers. The stack check is performed
40** later by the call gate. This can safely resize the stack or raise an 40** later by the function header. This can safely resize the stack or raise
41** error. Thus we need some extra slots beyond the current stack limit. 41** an error. Thus we need some extra slots beyond the current stack limit.
42** 42**
43** Most metamethods need 4 slots above top (cont, mobj, arg1, arg2) plus 43** Most metamethods need 4 slots above top (cont, mobj, arg1, arg2) plus
44** one extra slot if mobj is not a function. Only lj_meta_tset needs 5 44** one extra slot if mobj is not a function. Only lj_meta_tset needs 5
@@ -119,8 +119,6 @@ static void stack_init(lua_State *L1, lua_State *L)
119 119
120/* -- State handling ------------------------------------------------------ */ 120/* -- State handling ------------------------------------------------------ */
121 121
122#define GG_SIZE (sizeof(GG_State)+(BC__MAX*2)*sizeof(ASMFunction))
123
124/* Open parts that may cause memory-allocation errors. */ 122/* Open parts that may cause memory-allocation errors. */
125static TValue *cpluaopen(lua_State *L, lua_CFunction dummy, void *ud) 123static TValue *cpluaopen(lua_State *L, lua_CFunction dummy, void *ud)
126{ 124{
@@ -156,8 +154,8 @@ static void close_state(lua_State *L)
156 lj_mem_freevec(g, g->strhash, g->strmask+1, GCRef); 154 lj_mem_freevec(g, g->strhash, g->strmask+1, GCRef);
157 lj_str_freebuf(g, &g->tmpbuf); 155 lj_str_freebuf(g, &g->tmpbuf);
158 lj_mem_freevec(g, L->stack, L->stacksize, TValue); 156 lj_mem_freevec(g, L->stack, L->stacksize, TValue);
159 lua_assert(g->gc.total == GG_SIZE); 157 lua_assert(g->gc.total == sizeof(GG_State));
160 g->allocf(g->allocd, G2GG(g), GG_SIZE, 0); 158 g->allocf(g->allocd, G2GG(g), sizeof(GG_State), 0);
161 } 159 }
162} 160}
163 161
@@ -167,7 +165,7 @@ lua_State *lj_state_newstate(lua_Alloc f, void *ud)
167LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud) 165LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
168#endif 166#endif
169{ 167{
170 GG_State *GG = cast(GG_State *, f(ud, NULL, 0, GG_SIZE)); 168 GG_State *GG = cast(GG_State *, f(ud, NULL, 0, sizeof(GG_State)));
171 lua_State *L = &GG->L; 169 lua_State *L = &GG->L;
172 global_State *g = &GG->g; 170 global_State *g = &GG->g;
173 if (GG == NULL || !checkptr32(GG)) return NULL; 171 if (GG == NULL || !checkptr32(GG)) return NULL;
@@ -190,7 +188,7 @@ LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
190 g->gc.state = GCSpause; 188 g->gc.state = GCSpause;
191 setgcref(g->gc.root, obj2gco(L)); 189 setgcref(g->gc.root, obj2gco(L));
192 g->gc.sweep = &g->gc.root; 190 g->gc.sweep = &g->gc.root;
193 g->gc.total = GG_SIZE; 191 g->gc.total = sizeof(GG_State);
194 g->gc.pause = LUAI_GCPAUSE; 192 g->gc.pause = LUAI_GCPAUSE;
195 g->gc.stepmul = LUAI_GCMUL; 193 g->gc.stepmul = LUAI_GCMUL;
196 lj_dispatch_init((GG_State *)L); 194 lj_dispatch_init((GG_State *)L);
diff --git a/src/lj_trace.c b/src/lj_trace.c
index 0bd32b1e..0a973d51 100644
--- a/src/lj_trace.c
+++ b/src/lj_trace.c
@@ -361,7 +361,7 @@ static void trace_start(jit_State *J)
361 setstrV(L, L->top++, lj_str_newlit(L, "start")); 361 setstrV(L, L->top++, lj_str_newlit(L, "start"));
362 setintV(L->top++, J->curtrace); 362 setintV(L->top++, J->curtrace);
363 setfuncV(L, L->top++, J->fn); 363 setfuncV(L, L->top++, J->fn);
364 setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1); 364 setintV(L->top++, proto_bcpos(J->pt, J->pc));
365 if (J->parent) { 365 if (J->parent) {
366 setintV(L->top++, J->parent); 366 setintV(L->top++, J->parent);
367 setintV(L->top++, J->exitno); 367 setintV(L->top++, J->exitno);
@@ -444,7 +444,7 @@ static int trace_abort(jit_State *J)
444 setstrV(L, L->top++, lj_str_newlit(L, "abort")); 444 setstrV(L, L->top++, lj_str_newlit(L, "abort"));
445 setintV(L->top++, J->curtrace); 445 setintV(L->top++, J->curtrace);
446 setfuncV(L, L->top++, J->fn); 446 setfuncV(L, L->top++, J->fn);
447 setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1); 447 setintV(L->top++, proto_bcpos(J->pt, J->pc));
448 copyTV(L, L->top++, restorestack(L, errobj)); 448 copyTV(L, L->top++, restorestack(L, errobj));
449 copyTV(L, L->top++, &J->errinfo); 449 copyTV(L, L->top++, &J->errinfo);
450 ); 450 );
@@ -478,7 +478,7 @@ static TValue *trace_state(lua_State *L, lua_CFunction dummy, void *ud)
478 lj_vmevent_send(L, RECORD, 478 lj_vmevent_send(L, RECORD,
479 setintV(L->top++, J->curtrace); 479 setintV(L->top++, J->curtrace);
480 setfuncV(L, L->top++, J->fn); 480 setfuncV(L, L->top++, J->fn);
481 setintV(L->top++, proto_bcpos(J->pt, J->pc) + 1); 481 setintV(L->top++, proto_bcpos(J->pt, J->pc));
482 setintV(L->top++, J->framedepth); 482 setintV(L->top++, J->framedepth);
483 if (bcmode_mm(bc_op(*J->pc)) == MM_call) { 483 if (bcmode_mm(bc_op(*J->pc)) == MM_call) {
484 cTValue *o = &L->base[bc_a(*J->pc)]; 484 cTValue *o = &L->base[bc_a(*J->pc)];
@@ -555,8 +555,6 @@ void LJ_FASTCALL lj_trace_hot(jit_State *J, const BCIns *pc)
555 /* Only start a new trace if not recording or inside __gc call or vmevent. */ 555 /* Only start a new trace if not recording or inside __gc call or vmevent. */
556 if (J->state == LJ_TRACE_IDLE && 556 if (J->state == LJ_TRACE_IDLE &&
557 !(J2G(J)->hookmask & (HOOK_GC|HOOK_VMEVENT))) { 557 !(J2G(J)->hookmask & (HOOK_GC|HOOK_VMEVENT))) {
558 lua_State *L = J->L;
559 L->top = curr_topL(L); /* Only called from Lua and NRESULTS is not used. */
560 J->parent = 0; /* Root trace. */ 558 J->parent = 0; /* Root trace. */
561 J->exitno = 0; 559 J->exitno = 0;
562 J->pc = pc-1; /* The interpreter bytecode PC is offset by 1. */ 560 J->pc = pc-1; /* The interpreter bytecode PC is offset by 1. */
diff --git a/src/lj_vm.h b/src/lj_vm.h
index b25f182a..46312bb8 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -44,12 +44,6 @@ LJ_ASMF void lj_vm_exp2(void);
44LJ_ASMF void lj_vm_pow_sse(void); 44LJ_ASMF void lj_vm_pow_sse(void);
45LJ_ASMF void lj_vm_powi_sse(void); 45LJ_ASMF void lj_vm_powi_sse(void);
46 46
47/* Call gates for functions. */
48LJ_ASMF void lj_gate_lf(void);
49LJ_ASMF void lj_gate_lv(void);
50LJ_ASMF void lj_gate_c(void);
51LJ_ASMF void lj_gate_cwrap(void);
52
53/* Continuations for metamethods. */ 47/* Continuations for metamethods. */
54LJ_ASMF void lj_cont_cat(void); /* Continue with concatenation. */ 48LJ_ASMF void lj_cont_cat(void); /* Continue with concatenation. */
55LJ_ASMF void lj_cont_ra(void); /* Store result in RA from instruction. */ 49LJ_ASMF void lj_cont_ra(void); /* Store result in RA from instruction. */
diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
index 200f4cc9..db323dce 100644
--- a/src/msvcbuild.bat
+++ b/src/msvcbuild.bat
@@ -32,7 +32,7 @@ if exist buildvm.exe.manifest^
32 %LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe 32 %LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe
33 33
34buildvm -m peobj -o lj_vm.obj 34buildvm -m peobj -o lj_vm.obj
35buildvm -m bcdef -o lj_bcdef.h 35buildvm -m bcdef -o lj_bcdef.h %ALL_LIB%
36buildvm -m ffdef -o lj_ffdef.h %ALL_LIB% 36buildvm -m ffdef -o lj_ffdef.h %ALL_LIB%
37buildvm -m libdef -o lj_libdef.h %ALL_LIB% 37buildvm -m libdef -o lj_libdef.h %ALL_LIB%
38buildvm -m recdef -o lj_recdef.h %ALL_LIB% 38buildvm -m recdef -o lj_recdef.h %ALL_LIB%