From 9a9509c66a98d0bf42003ad5d06e8f275c5ff1f5 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sat, 9 Jun 2012 15:04:03 +0200 Subject: [PATCH] Reorganize build process. Drop pre-translated buildvm_*.h. Rename buildvm_*.dasc to vm_*.dasc. Move buildvm* to host directory. Build minilua, unless HOST_LUA is set. Use HOST_LUA to run DynASM. Translate only vm_*.dasc for target architecture. --- Makefile | 5 +- src/.gitignore | 1 - src/Makefile | 163 +- src/Makefile.dep | 26 +- src/buildvm_arm.h | 7494 -------------- src/buildvm_mips.h | 7495 -------------- src/buildvm_ppc.h | 9797 ------------------- src/buildvm_ppcspe.h | 6094 ------------ src/buildvm_x64.h | 3406 ------- src/buildvm_x64win.h | 3401 ------- src/buildvm_x86.h | 3561 ------- src/host/.gitignore | 3 + src/{ => host}/buildvm.c | 19 +- src/{ => host}/buildvm.h | 0 src/{ => host}/buildvm_asm.c | 0 src/{ => host}/buildvm_fold.c | 0 src/{ => host}/buildvm_lib.c | 0 src/{ => host}/buildvm_peobj.c | 0 src/msvcbuild.bat | 25 +- src/{buildvm_arm.dasc => vm_arm.dasc} | 0 src/{buildvm_mips.dasc => vm_mips.dasc} | 0 src/{buildvm_ppc.dasc => vm_ppc.dasc} | 0 src/{buildvm_ppcspe.dasc => vm_ppcspe.dasc} | 0 src/{buildvm_x86.dasc => vm_x86.dasc} | 0 24 files changed, 114 insertions(+), 41376 deletions(-) delete mode 100644 src/buildvm_arm.h delete mode 100644 src/buildvm_mips.h delete mode 100644 src/buildvm_ppc.h delete mode 100644 src/buildvm_ppcspe.h delete mode 100644 src/buildvm_x64.h delete mode 100644 src/buildvm_x64win.h delete mode 100644 src/buildvm_x86.h create mode 100644 src/host/.gitignore rename src/{ => host}/buildvm.c (97%) rename src/{ => host}/buildvm.h (100%) rename src/{ => host}/buildvm_asm.c (100%) rename src/{ => host}/buildvm_fold.c (100%) rename src/{ => host}/buildvm_lib.c (100%) rename src/{ => host}/buildvm_peobj.c (100%) rename src/{buildvm_arm.dasc => vm_arm.dasc} (100%) rename src/{buildvm_mips.dasc => vm_mips.dasc} (100%) rename src/{buildvm_ppc.dasc => vm_ppc.dasc} (100%) rename src/{buildvm_ppcspe.dasc => vm_ppcspe.dasc} (100%) rename src/{buildvm_x86.dasc => vm_x86.dasc} (100%) diff --git a/Makefile b/Makefile index 8117692e..7ad44595 100644 --- a/Makefile +++ b/Makefile @@ -155,9 +155,6 @@ clean: cleaner: $(MAKE) -C src cleaner -distclean: - $(MAKE) -C src distclean - -.PHONY: all install amalg clean cleaner distclean +.PHONY: all install amalg clean cleaner ############################################################################## diff --git a/src/.gitignore b/src/.gitignore index 8373308b..fc94e82c 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,5 +1,4 @@ luajit -buildvm lj_bcdef.h lj_ffdef.h lj_libdef.h diff --git a/src/Makefile b/src/Makefile index 5977c373..86b8b4fa 100644 --- a/src/Makefile +++ b/src/Makefile @@ -49,12 +49,12 @@ CCOPT= -O2 -fomit-frame-pointer # x86/x64 only: For GCC 4.2 or higher and if you don't intend to distribute # the binaries to a different machine you could also use: -march=native # -CCOPT_X86= -march=i686 -CCOPT_X64= -CCOPT_ARM= -CCOPT_PPC= -CCOPT_PPCSPE= -CCOPT_MIPS= +CCOPT_x86= -march=i686 +CCOPT_x64= +CCOPT_arm= +CCOPT_ppc= +CCOPT_ppcspe= +CCOPT_mips= # CCDEBUG= # Uncomment the next line to generate debug information: @@ -182,13 +182,11 @@ LDOPTIONS= $(CCDEBUG) $(LDFLAGS) HOST_CC= $(CC) HOST_RM= rm -f -# NOTE: The LuaJIT distribution comes with pre-generated buildvm_*.h files. -# You DO NOT NEED an installed copy of (plain) Lua 5.1 to run DynASM unless -# you want to MODIFY the corresponding *.dasc file. You can also use LuaJIT -# itself (bootstrapped from a pre-generated file) to run DynASM of course. -HOST_LUA= lua +# If left blank, minilua is built and used. You can supply an installed +# copy of (plain) Lua 5.1 or 5.2, e.g. with: HOST_LUA=lua +HOST_LUA= -HOST_XCFLAGS= +HOST_XCFLAGS= -I. HOST_XLDFLAGS= HOST_XLIBS= HOST_ACFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) $(HOST_CFLAGS) @@ -223,31 +221,25 @@ TARGET_ALIBS= $(TARGET_XLIBS) $(LIBS) $(TARGET_LIBS) TARGET_TESTARCH=$(shell $(TARGET_CC) $(TARGET_TCFLAGS) -E lj_arch.h -dM) ifneq (,$(findstring LJ_TARGET_X64 ,$(TARGET_TESTARCH))) - TARGET_CCARCH= x64 - TARGET_XCFLAGS+= $(CCOPT_X64) + TARGET_LJARCH= x64 else ifneq (,$(findstring LJ_TARGET_X86 ,$(TARGET_TESTARCH))) - TARGET_CCARCH= x86 - TARGET_XCFLAGS+= $(CCOPT_X86) + TARGET_LJARCH= x86 else ifneq (,$(findstring LJ_TARGET_ARM ,$(TARGET_TESTARCH))) - TARGET_CCARCH= arm - TARGET_XCFLAGS+= $(CCOPT_ARM) + TARGET_LJARCH= arm else ifneq (,$(findstring LJ_TARGET_PPC ,$(TARGET_TESTARCH))) - TARGET_CCARCH= ppc - TARGET_XCFLAGS+= $(CCOPT_PPC) + TARGET_LJARCH= ppc else ifneq (,$(findstring LJ_TARGET_PPCSPE ,$(TARGET_TESTARCH))) - TARGET_CCARCH= ppcspe - TARGET_XCFLAGS+= $(CCOPT_PPCSPE) + TARGET_LJARCH= ppcspe else ifneq (,$(findstring LJ_TARGET_MIPS ,$(TARGET_TESTARCH))) ifneq (,$(findstring MIPSEL ,$(TARGET_TESTARCH))) TARGET_ARCH= -D__MIPSEL__=1 endif - TARGET_CCARCH= mips - TARGET_XCFLAGS+= $(CCOPT_MIPS) + TARGET_LJARCH= mips else $(error Unsupported target architecture) endif @@ -257,7 +249,8 @@ endif endif endif -TARGET_ARCH+= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_CCARCH)) +TARGET_XCFLAGS+= $(CCOPT_$(TARGET_LJARCH)) +TARGET_ARCH+= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_LJARCH)) ifneq (,$(PREFIX)) ifneq (/usr/local,$(PREFIX)) @@ -300,7 +293,7 @@ ifeq (Darwin,$(TARGET_SYS)) TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC TARGET_DYNXLDOPTS= TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER) - ifeq (x64,$(TARGET_CCARCH)) + ifeq (x64,$(TARGET_LJARCH)) TARGET_XLDFLAGS+= -pagezero_size 10000 -image_base 100000000 TARGET_XSHLDFLAGS+= -image_base 7fff04c4a000 endif @@ -357,24 +350,41 @@ endif # Files and pathnames. ############################################################################## +MINILUA_O= host/minilua.o +MINILUA_LIBS= -lm +MINILUA_T= host/minilua +MINILUA_X= $(MINILUA_T) + +ifeq (,$(HOST_LUA)) + HOST_LUA= $(MINILUA_X) + DASM_DEP= $(MINILUA_T) +endif + DASM_DIR= ../dynasm DASM= $(HOST_LUA) $(DASM_DIR)/dynasm.lua -DASM_FLAGS= -DASM_DISTFLAGS= -LN -DASM_FLAGS_X86= -DASM_FLAGS_X64= -D X64 -DASM_FLAGS_X64WIN= -D X64 -D X64WIN -DASM_FLAGS_ARM= -DASM_FLAGS_PPC= -DASM_FLAGS_PPCSPE= -DASM_FLAGS_MIPS= +DASM_XFLAGS= +DASM_AFLAGS= +DASM_ARCH= $(TARGET_LJARCH) -BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o -BUILDVM_T= buildvm -BUILDVM_X= ./$(BUILDVM_T) +ifeq (x64,$(TARGET_LJARCH)) + DASM_ARCH= x86 + ifeq (Windows,$(TARGET_SYS)) + DASM_AFLAGS+= -D X64 -D X64WIN + else + DASM_AFLAGS+= -D X64 + endif +endif -HOST_O= $(BUILDVM_O) -HOST_T= $(BUILDVM_T) +DASM_FLAGS= $(DASM_XFLAGS) $(DASM_AFLAGS) +DASM_DASC= vm_$(DASM_ARCH).dasc + +BUILDVM_O= host/buildvm.o host/buildvm_asm.o host/buildvm_peobj.o \ + host/buildvm_lib.o host/buildvm_fold.o +BUILDVM_T= host/buildvm +BUILDVM_X= $(BUILDVM_T) + +HOST_O= $(MINILUA_O) $(BUILDVM_O) +HOST_T= $(MINILUA_T) $(BUILDVM_T) LJVM_S= lj_vm.s LJVM_O= lj_vm.o @@ -409,13 +419,12 @@ LUAJIT_A= libluajit.a LUAJIT_SO= libluajit.so LUAJIT_T= luajit -ALL_T= $(LUAJIT_T) $(LUAJIT_A) $(LUAJIT_SO) $(BUILDVM_T) -ALL_HDRGEN= lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h +ALL_T= $(LUAJIT_T) $(LUAJIT_A) $(LUAJIT_SO) $(HOST_T) +ALL_HDRGEN= lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h \ + host/buildvm_arch.h ALL_GEN= $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP) -ALL_DYNGEN= buildvm_x86.h buildvm_x64.h buildvm_x64win.h buildvm_arm.h \ - buildvm_ppc.h buildvm_ppcspe.h buildvm_mips.h WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk -ALL_RM= $(ALL_T) $(ALL_GEN) *.o $(WIN_RM) +ALL_RM= $(ALL_T) $(ALL_GEN) *.o host/*.o $(WIN_RM) ############################################################################## # Build mode handling. @@ -427,8 +436,11 @@ TARGET_T= $(LUAJIT_T) $(LUAJIT_SO) TARGET_DEP= $(LIB_VMDEF) $(LUAJIT_SO) ifeq (Windows,$(HOST_SYS)) - BUILDVM_T= buildvm.exe - LIB_VMDEFP= $(subst /,\\,$(LIB_VMDEF)) + MINILUA_T= host/minilua.exe + MINILUA_X= host\minilua + BUILDVM_T= host/buildvm.exe + BUILDVM_X= host\buildvm + ALL_RM:= $(subst /,\,$(ALL_RM)) endif ifeq (Windows,$(TARGET_SYS)) TARGET_DYNCC= $(STATIC_CC) @@ -495,68 +507,39 @@ amalg: clean: $(HOST_RM) $(ALL_RM) -cleaner: - $(HOST_RM) $(ALL_RM) $(ALL_DYNGEN) - -distclean: clean - $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_X86) -o buildvm_x86.h buildvm_x86.dasc - $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_X64) -o buildvm_x64.h buildvm_x86.dasc - $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_X64WIN) -o buildvm_x64win.h buildvm_x86.dasc - $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_ARM) -o buildvm_arm.h buildvm_arm.dasc - $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPC) -o buildvm_ppc.h buildvm_ppc.dasc - $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPCSPE) -o buildvm_ppcspe.h buildvm_ppcspe.dasc - $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_MIPS) -o buildvm_mips.h buildvm_mips.dasc +# Temporary rule for migration from old file layout. +cleaner: clean + $(HOST_RM) buildvm* depend: - @for file in $(ALL_HDRGEN) $(ALL_DYNGEN); do \ + @for file in $(ALL_HDRGEN); do \ test -f $$file || touch $$file; \ done - @$(HOST_CC) $(HOST_ACFLAGS) -MM *.c | \ + @$(HOST_CC) $(HOST_ACFLAGS) -MM *.c host/*.c | \ sed -e "s| [^ ]*/dasm_\S*\.h||g" \ - -e "s| buildvm_\S*\.h||g" \ + -e "s|^\([^l ]\)|host/\1|" \ -e "s| lj_target_\S*\.h| lj_target_*.h|g" \ -e "s| lj_emit_\S*\.h| lj_emit_*.h|g" \ -e "s| lj_asm_\S*\.h| lj_asm_*.h|g" >Makefile.dep - @for file in $(ALL_HDRGEN) $(ALL_DYNGEN); do \ + @for file in $(ALL_HDRGEN); do \ test -s $$file || $(HOST_RM) $$file; \ done -.PHONY: default all amalg clean cleaner distclean depend +.PHONY: default all amalg clean cleaner depend ############################################################################## # Rules for generated files. ############################################################################## -buildvm_x86.h: buildvm_x86.dasc - $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_X86) -o $@ buildvm_x86.dasc +$(MINILUA_T): $(MINILUA_O) + $(E) "HOSTLINK $@" + $(Q)$(HOST_CC) $(HOST_ALDFLAGS) -o $@ $(MINILUA_O) $(MINILUA_LIBS) $(HOST_ALIBS) -buildvm_x64.h: buildvm_x86.dasc +host/buildvm_arch.h: $(DASM_DASC) $(DASM_DEP) $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_X64) -o $@ buildvm_x86.dasc + $(Q)$(DASM) $(DASM_FLAGS) -o $@ $(DASM_DASC) -buildvm_x64win.h: buildvm_x86.dasc - $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_X64WIN) -o $@ buildvm_x86.dasc - -buildvm_arm.h: buildvm_arm.dasc - $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_ARM) -o $@ buildvm_arm.dasc - -buildvm_ppc.h: buildvm_ppc.dasc - $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_PPC) -o $@ buildvm_ppc.dasc - -buildvm_ppcspe.h: buildvm_ppcspe.dasc - $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_PPCSPE) -o $@ buildvm_ppcspe.dasc - -buildvm_mips.h: buildvm_mips.dasc - $(E) "DYNASM $@" - $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_MIPS) -o $@ buildvm_mips.dasc - -buildvm.o: $(ALL_DYNGEN) $(DASM_DIR)/dasm_*.h +host/buildvm.o: $(DASM_DIR)/dasm_*.h $(BUILDVM_T): $(BUILDVM_O) $(E) "HOSTLINK $@" diff --git a/src/Makefile.dep b/src/Makefile.dep index 82cdc0d7..ff4492fb 100644 --- a/src/Makefile.dep +++ b/src/Makefile.dep @@ -1,15 +1,3 @@ -buildvm.o: buildvm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \ - lj_obj.h lj_gc.h lj_bc.h lj_ir.h lj_ircall.h lj_jit.h lj_frame.h \ - lj_dispatch.h lj_ctype.h lj_ccall.h luajit.h \ - lj_traceerr.h -buildvm_asm.o: buildvm_asm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \ - lj_bc.h -buildvm_fold.o: buildvm_fold.c buildvm.h lj_def.h lua.h luaconf.h \ - lj_arch.h lj_obj.h lj_ir.h -buildvm_lib.o: buildvm_lib.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \ - lj_obj.h lj_lib.h -buildvm_peobj.o: buildvm_peobj.c buildvm.h lj_def.h lua.h luaconf.h \ - lj_arch.h lj_bc.h lib_aux.o: lib_aux.c lua.h luaconf.h lauxlib.h lj_obj.h lj_def.h \ lj_arch.h lj_err.h lj_errmsg.h lj_state.h lj_lib.h lj_alloc.h lib_base.o: lib_base.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ @@ -207,3 +195,17 @@ ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \ lj_libdef.h lib_math.c lib_string.c lib_table.c lib_io.c lib_os.c \ lib_package.c lib_debug.c lib_bit.c lib_jit.c lib_ffi.c lib_init.c luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h lj_arch.h +host/buildvm.o: host/buildvm.c host/buildvm.h lj_def.h lua.h luaconf.h \ + lj_arch.h lj_obj.h lj_def.h lj_arch.h lj_gc.h lj_obj.h lj_bc.h lj_ir.h \ + lj_ircall.h lj_ir.h lj_jit.h lj_frame.h lj_bc.h lj_dispatch.h lj_ctype.h \ + lj_gc.h lj_ccall.h lj_ctype.h luajit.h \ + host/buildvm_arch.h lj_traceerr.h +host/buildvm_asm.o: host/buildvm_asm.c host/buildvm.h lj_def.h lua.h luaconf.h \ + lj_arch.h lj_bc.h lj_def.h lj_arch.h +host/buildvm_fold.o: host/buildvm_fold.c host/buildvm.h lj_def.h lua.h \ + luaconf.h lj_arch.h lj_obj.h lj_def.h lj_arch.h lj_ir.h lj_obj.h +host/buildvm_lib.o: host/buildvm_lib.c host/buildvm.h lj_def.h lua.h luaconf.h \ + lj_arch.h lj_obj.h lj_def.h lj_arch.h lj_lib.h lj_obj.h +host/buildvm_peobj.o: host/buildvm_peobj.c host/buildvm.h lj_def.h lua.h \ + luaconf.h lj_arch.h lj_bc.h lj_def.h lj_arch.h +host/minilua.o: host/minilua.c diff --git a/src/buildvm_arm.h b/src/buildvm_arm.h deleted file mode 100644 index bccefa57..00000000 --- a/src/buildvm_arm.h +++ /dev/null @@ -1,7494 +0,0 @@ -/* -** This file has been pre-processed with DynASM. -** http://luajit.org/dynasm.html -** DynASM version 1.3.0, DynASM arm version 1.3.0 -** DO NOT EDIT! The original file is in "buildvm_arm.dasc". -*/ - -#if DASM_VERSION != 10300 -#error "Version mismatch between DynASM and included encoding engine" -#endif - -#define DASM_SECTION_CODE_OP 0 -#define DASM_SECTION_CODE_SUB 1 -#define DASM_MAXSECTION 2 -static const unsigned int build_actionlist[5784] = { -0x00010001, -0x00060014, -0xe3160000, -0x000a0000, -0x0a000000, -0x00050015, -0xe51c6004, -0xe3e01000, -0x000a0000, -0xe1a0900c, -0xe50a1004, -0xe24aa008, -0x00060016, -0xe28bb008, -0xe2160000, -0x000a0000, -0xe58db004, -0x0a000000, -0x00050017, -0x00060018, -0xe3c6c000, -0x000a0000, -0xe3500000, -0x000a0000, -0xe049c00c, -0x1a000000, -0x00050014, -0xe508c000, -0x000d8180, -0xe59d5014, -0xe3e03000, -0x000a0000, -0xe2499008, -0xe25b2008, -0xe1a05185, -0xe5073000, -0x000d8180, -0x0a000000, -0x00050002, -0x0006000b, -0xe2522008, -0xe0ca00d8, -0xe0c900f8, -0x1a000000, -0x0005000b, -0x0006000c, -0xe155000b, -0x1a000000, -0x00050006, -0x0006000d, -0xe5089000, -0x000d8180, -0x00060019, -0x00000000, -0xe59db010, -0xe3a00000, -0xe508b000, -0x000d8180, -0x0006001a, -0xe28dd01c, -0xe8bd8ff0, -0x00060010, -0xba000000, -0x00050007, -0xe5182000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xe1590002, -0x2a000000, -0x00050008, -0xe5891004, -0xe28bb008, -0xe2899008, -0xea000000, -0x0005000c, -0x00060011, -0xe04b0005, -0xe3550000, -0x10499000, -0xea000000, -0x0005000d, -0x00060012, -0xe5089000, -0x000d8180, -0xe1a01005, -0xe1a00008, -0xeb000000, -0x00030000, -0xe5189000, -0x000d8180, -0xea000000, -0x0005000c, -0x0006001b, -0xe1a0d000, -0xe1a00001, -0x0006001c, -0xe59d800c, -0xe3e03000, -0x000a0000, -0xe5182000, -0x000d8180, -0xe5023000, -0x000d8180, -0xea000000, -0x0005001a, -0x0006001d, -0x00000000, -0xe3c00000, -0x000a0000, -0xe1a0d000, -0x0006001e, -0xe59d800c, -0xe3a040ff, -0xe3a0b010, -0xe1a04184, -0xe5189000, -0x000d8180, -0xe5187000, -0x000d8180, -0xe3e00000, -0x000a0000, -0xe249a008, -0xe5196004, -0xe2877000, -0x000a0000, -0xe3e01000, -0x000a0000, -0xe5090004, -0xe5071000, -0x000d8180, -0xea000000, -0x00050016, -0x0006001f, -0xe3a01000, -0x000a0000, -0xea000000, -0x00050002, -0x00060020, -0xe089b00b, -0xe04aa009, -0xe1a00008, -0xe5089000, -0x000d8180, -0xe2866004, -0xe508b000, -0x000d8180, -0xe1a021aa, -0x0006000c, -0xe58d6008, -0xeb000000, -0x00030000, -0xe5189000, -0x000d8180, -0xe518b000, -0x000d8180, -0xe5192008, -0xe04bb009, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x00060021, -0xe92d4ff0, -0xe24dd01c, -0xe1a08000, -0xe5107000, -0x000d8180, -0x00000000, -0xe1a09001, -0xe2877000, -0x000a0000, -0xe58d800c, -0xe3a06000, -0x000a0000, -0xe58d2014, -0xe28d1000, -0x000a0000, -0xe5580000, -0x000d8180, -0xe58d2018, -0xe5081000, -0x000d8180, -0xe58d2010, -0xe3500000, -0xe58d8008, -0x0a000000, -0x00050003, -0xe1a0a009, -0xe5189000, -0x000d8180, -0xe5180000, -0x000d8180, -0xe3a040ff, -0xe5482000, -0x000d8180, -0xe040b009, -0xe5196004, -0xe1a04184, -0xe3e01000, -0x000a0000, -0xe28bb008, -0xe2160000, -0x000a0000, -0xe5071000, -0x000d8180, -0xe58db004, -0x0a000000, -0x00050017, -0xea000000, -0x00050018, -0x00060022, -0xe92d4ff0, -0xe24dd01c, -0xe3a06000, -0x000a0000, -0xe58d3018, -0xea000000, -0x00050001, -0x00060023, -0xe92d4ff0, -0xe24dd01c, -0xe3a06000, -0x000a0000, -0x0006000b, -0xe510b000, -0x000d8180, -0xe58d2014, -0xe1a08000, -0xe58d000c, -0xe1a09001, -0xe508d000, -0x000d8180, -0x00000000, -0xe5187000, -0x000d8180, -0xe58d0008, -0xe58db010, -0xe2877000, -0x000a0000, -0x0006000d, -0xe518c000, -0x000d8180, -0xe5180000, -0x000d8180, -0xe3a040ff, -0xe0866009, -0xe1a04184, -0xe046600c, -0xe3e01000, -0x000a0000, -0xe040b009, -0xe5071000, -0x000d8180, -0x00060024, -0xe14920d8, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050025, -0x00060026, -0xe5096004, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x00060027, -0xe92d4ff0, -0xe24dd01c, -0xe1a08000, -0xe510a000, -0x000d8180, -0xe58d000c, -0xe518c000, -0x000d8180, -0xe58d0008, -0xe518b000, -0x000d8180, -0xe04aa00c, -0xe508d000, -0x000d8180, -0xe3a0c000, -0xe58da014, -0xe58dc018, -0xe58db010, -0xe12fff33, -0xe5187000, -0x000d8180, -0xe1b09000, -0xe3a06000, -0x000a0000, -0xe2877000, -0x000a0000, -0x1a000000, -0x0005000d, -0xea000000, -0x00050019, -0x00060015, -0x00000000, -0xe51c2008, -0xe5190010, -0xe1a03009, -0xe1a0900c, -0x00000000, -0xe3500001, -0x00000000, -0xe513600c, -0xe5122000, -0x000d8180, -0xe3e0e000, -0x000a0000, -0xe08a100b, -0xe501e004, -0x00000000, -0x9a000000, -0x00050001, -0x00000000, -0xe5125000, -0x000d8180, -0xe12fff10, -0x00000000, -0x0006000b, -0x0a000000, -0x00050028, -0xe5192008, -0xe2433010, -0xe043b009, -0xea000000, -0x00050029, -0x00000000, -0x0006002a, -0xe516e004, -0xe2431010, -0xe1ca20d0, -0xe5089000, -0x000d8180, -0xe004baae, -0xe004a2ae, -0xe089000b, -0xe0510000, -0x11c120f0, -0x11a02000, -0x1a000000, -0x0005002b, -0xe18920fa, -0xea000000, -0x0005002c, -0x0006002d, -0xe089100c, -0xea000000, -0x00050002, -0x0006002e, -0xe2471000, -0x000a0000, -0xe3e03000, -0x000a0000, -0xe581c000, -0xe5813004, -0x0006000c, -0xe3e03000, -0x000a0000, -0xe58db000, -0xe58d3004, -0xe1a0200d, -0xea000000, -0x00050001, -0x0006002f, -0xe004caae, -0xe58db000, -0xe3e03000, -0x000a0000, -0xe089100c, -0xe58d3004, -0xe1a0200d, -0xea000000, -0x00050001, -0x00060030, -0xe089100c, -0xe089200b, -0x0006000b, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe58d6008, -0xeb000000, -0x00030001, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe3500000, -0x0a000000, -0x00050003, -0xe1c020d0, -0xe5d6c000, -0xe496e004, -0xe18920fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000d, -0xe2690000, -0x000a0000, -0xe5189000, -0x000d8180, -0xe3a0b010, -0xe509600c, -0xe0806009, -0xe5192008, -0xea000000, -0x00050026, -0x00060031, -0xe089100c, -0xea000000, -0x00050002, -0x00060032, -0xe2471000, -0x000a0000, -0xe3e03000, -0x000a0000, -0xe581c000, -0xe5813004, -0x0006000c, -0xe3e03000, -0x000a0000, -0xe58db000, -0xe58d3004, -0xe1a0200d, -0xea000000, -0x00050001, -0x00060033, -0xe004caae, -0xe58db000, -0xe3e03000, -0x000a0000, -0xe089100c, -0xe58d3004, -0xe1a0200d, -0xea000000, -0x00050001, -0x00060034, -0xe089100c, -0xe089200b, -0x0006000b, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe58d6008, -0xeb000000, -0x00030002, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe3500000, -0xe18920da, -0x0a000000, -0x00050003, -0xe5d6c000, -0xe1c020f0, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000d, -0xe2690000, -0x000a0000, -0xe5189000, -0x000d8180, -0xe3a0b018, -0xe1c921f0, -0xe509600c, -0xe0806009, -0xe5192008, -0xea000000, -0x00050026, -0x00060035, -0xe1a00008, -0xe2466004, -0xe1a0100a, -0xe5089000, -0x000d8180, -0xe1a0200b, -0xe58d6008, -0xe20e30ff, -0xeb000000, -0x00030003, -0x0006000d, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe3500001, -0x8a000000, -0x00050036, -0x0006000e, -0xe1d6c0b2, -0xe2866004, -0xe086c10c, -0x224c6b80, -0x0006002c, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00060037, -0xe516e004, -0xe1ca00d0, -0xe00422ae, -0xe18900f2, -0xea000000, -0x0005002c, -0x00060038, -0xe59a1004, -0xe3e00000, -0x000a0000, -0xe1500001, -0xea000000, -0x0005000e, -0x00060039, -0xe59a1004, -0xe3710000, -0x000a0000, -0xea000000, -0x0005000e, -0x0006003a, -0xe2466004, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe58d6008, -0xeb000000, -0x00030004, -0xea000000, -0x0005000d, -0x0006003b, -0x00000000, -0xe2466004, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe1a0100e, -0xe58d6008, -0xeb000000, -0x00030005, -0xea000000, -0x0005000d, -0x00000000, -0x0006003c, -0xe004caae, -0xe004b6ae, -0xe089200c, -0xe085300b, -0xea000000, -0x00050001, -0x0006003d, -0xe004caae, -0xe004b6ae, -0xe089300c, -0xe085200b, -0xea000000, -0x00050001, -0x0006003e, -0xe516e008, -0xe2466004, -0xe089200b, -0xe089300b, -0xea000000, -0x00050001, -0x0006003f, -0xe004caae, -0xe004b6ae, -0xe089200c, -0xe089300b, -0x0006000b, -0xe20ec0ff, -0xe089100a, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe58d6008, -0xe58dc000, -0xeb000000, -0x00030006, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe3500000, -0x0a000000, -0x0005002c, -0x00060036, -0xe0401009, -0xe500600c, -0xe2816000, -0x000a0000, -0xe1a09000, -0xe3a0b010, -0xea000000, -0x00050024, -0x00060040, -0xe089100b, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe58d6008, -0xeb000000, -0x00030007, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe3500000, -0x1a000000, -0x00050036, -0xe799000b, -0xea000000, -0x00050041, -0x00000000, -0xea000000, -0x00050036, -0x00000000, -0x00060025, -0xe1a00008, -0xe508c000, -0x000d8180, -0xe2491008, -0xe58d6008, -0xe089200b, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030008, -0x00000000, -0xe1a0900a, -0x00000000, -0xe5192008, -0xe28bb008, -0xe5096004, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x00060042, -0xe1a00008, -0xe5089000, -0x000d8180, -0xe24a1008, -0xe58d6008, -0xe08a200b, -0xeb000000, -0x00030008, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe51a2008, -0xe5196004, -0xe28bb008, -0xea000000, -0x00050043, -0x00060044, -0xe1a00008, -0xe5089000, -0x000d8180, -0xe1a0100a, -0xe58d6008, -0xeb000000, -0x00030009, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe556c004, -0x00000000, -0xe516e004, -0x00000000, -0xe35c0000, -0x000a0000, -0x00000000, -0xe004a2ae, -0xe1a0b82e, -0x00000000, -0x0a000000, -0x00070000, -0x00000000, -0xea000000, -0x00070000, -0x00060045, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x8a000000, -0x00050046, -0xe5196004, -0xe14900f8, -0xe1a0c009, -0xe25ba008, -0xe28bb008, -0x0a000000, -0x00050047, -0x0006000b, -0xe1cc00d8, -0xe25aa008, -0xe0cc00f8, -0x1a000000, -0x0005000b, -0xea000000, -0x00050047, -0x00060048, -0xe5991004, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x33e01000, -0x000a0000, -0xe2613000, -0x000a0000, -0xe1a03183, -0xe18200d3, -0xea000000, -0x00050049, -0x0006004a, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x13710000, -0x000a0000, -0x1a000000, -0x00050006, -0x0006000b, -0xe510c000, -0x000d8180, -0x0006000c, -0x00000000, -0xe3e01000, -0x000a0000, -0xe517b000, -0x000d8180, -0xe35c0000, -0x0a000000, -0x00050049, -0xe51c2000, -0x000d8180, -0xe51b3000, -0x000d8180, -0xe51ce000, -0x000d8180, -0xe0022003, -0xe0822082, -0xe08ee182, -0x0006000d, -0xe14e20d0, -0x000c8100, -0xe14e00d0, -0x000c8100, -0xe51ee000, -0x000d8180, -0xe3730000, -0x000a0000, -0x0152000b, -0x0a000000, -0x00050005, -0xe35e0000, -0x1a000000, -0x0005000d, -0x0006000e, -0xe1a0000c, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006000f, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050049, -0xea000000, -0x0005000e, -0x00060010, -0xe3710000, -0x000a0000, -0x00000000, -0x21e01001, -0x33a01000, -0x000a0000, -0xe0873101, -0xe513c000, -0x000d8180, -0xea000000, -0x0005000c, -0x0006004b, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x0510c000, -0x000d8180, -0x03730000, -0x000a0000, -0x05503000, -0x000d8180, -0x035c0000, -0x1a000000, -0x00050046, -0xe3130000, -0x000a0000, -0xe5002000, -0x000d8180, -0x0a000000, -0x00050049, -0xe5172000, -0x000d8180, -0xe3c33000, -0x000a0000, -0xe5070000, -0x000d8180, -0xe5403000, -0x000d8180, -0xe5002000, -0x000d8180, -0xea000000, -0x00050049, -0x0006004c, -0xe1c920d0, -0xe35b0010, -0x3a000000, -0x00050046, -0xe1a01002, -0xe3730000, -0x000a0000, -0x00000000, -0x1a000000, -0x00050046, -0xe1a00008, -0xe2892008, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003000a, -0x00000000, -0xe1a0900a, -0x00000000, -0xe1c000d0, -0xea000000, -0x00050049, -0x0006004d, -0xe1c900d0, -0xe35b0008, -0x1a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x9a000000, -0x00050049, -0xea000000, -0x00050046, -0x0006004e, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x0a000000, -0x00050049, -0xe5173000, -0x000d8180, -0xe5089000, -0x000d8180, -0xe3710000, -0x000a0000, -0x93530000, -0xe58d6008, -0x8a000000, -0x00050046, -0xe5170000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1500001, -0xab000000, -0x0005004f, -0xe1a00008, -0xe1a01009, -0xeb000000, -0x0003000b, -0xe5189000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x00060050, -0x00000000, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3e03000, -0x000a0000, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0xe18920fb, -0xe5196004, -0xe1a01000, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe5089000, -0x000d8180, -0xe2892008, -0xe58d6008, -0xeb000000, -0x0003000c, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xe3500000, -0x03e01000, -0x000a0000, -0x0a000000, -0x00050049, -0xe1c900d8, -0xe1c921d0, -0xe3a0b000, -0x000a0000, -0xe14900f8, -0xe1c920f0, -0xea000000, -0x00050047, -0x00060051, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0x00000000, -0xe510c000, -0x000d8180, -0x00000000, -0xe14220d0, -0x000c8100, -0xe5196004, -0x00000000, -0xe35c0000, -0x1a000000, -0x00050046, -0x00000000, -0xe3e01000, -0x000a0000, -0xe3a0b000, -0x000a0000, -0xe14920f8, -0xe589100c, -0xea000000, -0x00050047, -0x00060052, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x03730000, -0x000a0000, -0x1a000000, -0x00050046, -0xe510c000, -0x000d8180, -0xe510b000, -0x000d8180, -0xe2822001, -0xe5196004, -0xe152000c, -0xe08bb182, -0xe14920f8, -0x31cb00d0, -0xe3a0b000, -0x000a0000, -0x2a000000, -0x00050002, -0x0006000b, -0xe3710000, -0x000a0000, -0x13a0b000, -0x000a0000, -0x11c900f0, -0xea000000, -0x00050047, -0x0006000c, -0xe510c000, -0x000d8180, -0xe1a01002, -0xe35c0000, -0x0a000000, -0x00050047, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003000d, -0x00000000, -0xe1a0900a, -0x00000000, -0xe3500000, -0x0a000000, -0x00050047, -0xe1c000d0, -0xea000000, -0x0005000b, -0x00060053, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0x00000000, -0xe510c000, -0x000d8180, -0x00000000, -0xe14220d0, -0x000c8100, -0xe5196004, -0x00000000, -0xe35c0000, -0x1a000000, -0x00050046, -0x00000000, -0xe3a00000, -0xe3e01000, -0x000a0000, -0xe3a0b000, -0x000a0000, -0xe14920f8, -0xe1c900f8, -0xea000000, -0x00050047, -0x00060054, -0xe557a000, -0x000d8180, -0xe35b0008, -0x3a000000, -0x00050046, -0xe31a0000, -0x000a0000, -0xe1a0c009, -0xe2899008, -0x03a06000, -0x000a0000, -0x13a06000, -0x000a0000, -0xe24bb008, -0xea000000, -0x00050024, -0x00060055, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe557a000, -0x000d8180, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050046, -0xe1a0c009, -0xe1c900f8, -0xe1c920f0, -0xe31a0000, -0x000a0000, -0xe2899010, -0x03a06000, -0x000a0000, -0x13a06000, -0x000a0000, -0xe24bb010, -0xea000000, -0x00050024, -0x00060056, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x00000000, -0x1a000000, -0x00050046, -0xe5196004, -0xe5089000, -0x000d8180, -0xe5101000, -0x000d8180, -0xe550a000, -0x000d8180, -0xe510c000, -0x000d8180, -0xe081200b, -0xe081300a, -0xe58d6008, -0xe153000c, -0x0a000000, -0x00050046, -0xe5103000, -0x000d8180, -0xe510c000, -0x000d8180, -0xe35a0000, -0x000a0000, -0x91520003, -0x935c0000, -0x8a000000, -0x00050046, -0x0006000b, -0xe2422008, -0xe2899008, -0xe24bb008, -0xe5002000, -0x000d8180, -0xe5089000, -0x000d8180, -0x0006000c, -0xe18920dc, -0xe15c000b, -0x118120fc, -0xe28cc008, -0x1a000000, -0x0005000c, -0xe3a02000, -0xe1a0a000, -0xe3a03000, -0xeb000000, -0x00050021, -0x0006000e, -0xe51a2000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xe51a3000, -0x000d8180, -0xe5071000, -0x000d8180, -0xe3500000, -0x000a0000, -0x00000000, -0xe5189000, -0x000d8180, -0x8a000000, -0x00050008, -0xe053b002, -0xe5180000, -0x000d8180, -0xe089100b, -0x0a000000, -0x00050006, -0xe1510000, -0xe3a0c000, -0x8a000000, -0x00050009, -0xe24b3008, -0xe50a2000, -0x000d8180, -0x0006000f, -0xe18200dc, -0xe15c0003, -0xe18900fc, -0xe28cc008, -0x1a000000, -0x0005000f, -0x00060010, -0xe3e02000, -0x000a0000, -0xe28bb010, -0x00060011, -0xe5092004, -0xe249a008, -0xe2160000, -0x000a0000, -0xe58d6008, -0xe58db004, -0x0a000000, -0x00050017, -0xea000000, -0x00050018, -0x00060012, -0xe16300d8, -0xe3e02000, -0x000a0000, -0xe3a0b000, -0x000a0000, -0xe50a3000, -0x000d8180, -0xe1c900f0, -0xea000000, -0x00050011, -0x00060013, -0xe1a00008, -0xe1a011ab, -0xeb000000, -0x00030000, -0xe3a00000, -0xea000000, -0x0005000e, -0x00060057, -0x00000000, -0xe5120000, -0x000d8180, -0xe5196004, -0xe5089000, -0x000d8180, -0xe5101000, -0x000d8180, -0xe550a000, -0x000d8180, -0xe510c000, -0x000d8180, -0xe081200b, -0xe081300a, -0xe58d6008, -0xe153000c, -0x0a000000, -0x00050046, -0xe5103000, -0x000d8180, -0xe510c000, -0x000d8180, -0xe35a0000, -0x000a0000, -0x91520003, -0x935c0000, -0x8a000000, -0x00050046, -0x0006000b, -0xe5002000, -0x000d8180, -0xe5089000, -0x000d8180, -0x0006000c, -0xe18920dc, -0xe15c000b, -0x118120fc, -0xe28cc008, -0x1a000000, -0x0005000c, -0xe3a02000, -0xe1a0a000, -0xe3a03000, -0xeb000000, -0x00050021, -0x0006000e, -0xe51a2000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xe51a3000, -0x000d8180, -0xe5071000, -0x000d8180, -0xe3500000, -0x000a0000, -0x00000000, -0xe5189000, -0x000d8180, -0x8a000000, -0x00050008, -0xe053b002, -0xe5180000, -0x000d8180, -0xe089100b, -0x0a000000, -0x00050006, -0xe1510000, -0xe3a0c000, -0x8a000000, -0x00050009, -0xe24b3008, -0xe50a2000, -0x000d8180, -0x0006000f, -0xe18200dc, -0xe15c0003, -0xe18900fc, -0xe28cc008, -0x1a000000, -0x0005000f, -0x00060010, -0xe1a0a009, -0xe28bb008, -0xe2160000, -0x000a0000, -0xe58d6008, -0xe58db004, -0x0a000000, -0x00050017, -0xea000000, -0x00050018, -0x00060012, -0xe1a00008, -0xe1a0100a, -0xeb000000, -0x0003000e, -0x00060013, -0xe1a00008, -0xe1a011ab, -0xeb000000, -0x00030000, -0xe3a00000, -0xea000000, -0x0005000e, -0x00060058, -0xe5180000, -0x000d8180, -0xe089100b, -0xe5089000, -0x000d8180, -0xe3100000, -0x000a0000, -0xe5081000, -0x000d8180, -0x00000000, -0xe3a00000, -0x000a0000, -0xe3a02000, -0x0a000000, -0x00050046, -0xe5082000, -0x000d8180, -0xe5480000, -0x000d8180, -0xea000000, -0x0005001a, -0x00060059, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x0a000000, -0x00050049, -0x8a000000, -0x00050046, -0xe1a02081, -0xe292c980, -0x5a000000, -0x00050002, -0xe3e03ff8, -0xe053cacc, -0xe1a03581, -0xe1a02580, -0xe3833480, -0xe26ce020, -0xe1833aa0, -0x9a000000, -0x00050003, -0xe1822e13, -0xe1a00c33, -0xe1120fc1, -0x12800001, -0xe3510000, -0xb2600000, -0x0006000b, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006000c, -0x2a000000, -0x00050049, -0xe1822000, -0xe1120fc1, -0x03a00000, -0x13e00000, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006000d, -0x03530480, -0x03520000, -0x1a000000, -0x00050004, -0xe3510000, -0x43a00480, -0x4a000000, -0x0005000b, -0x0006000e, -0x00000000, -0xeb000000, -0x0005005a, -0xea000000, -0x00050049, -0x0006005b, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x0a000000, -0x00050049, -0x8a000000, -0x00050046, -0xe1a02081, -0xe292c980, -0x5a000000, -0x00050002, -0xe3e03ff8, -0xe053cacc, -0xe1a03581, -0xe1a02580, -0xe3833480, -0xe26ce020, -0xe1833aa0, -0x9a000000, -0x00050003, -0xe1822e13, -0xe1a00c33, -0xe1d22fc1, -0x12900001, -0x614f00d0, -0x00051809, -0x6a000000, -0x00050049, -0xe3510000, -0xb2600000, -0x0006000b, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006000c, -0x2a000000, -0x00050049, -0xe1822000, -0xe1d22fc1, -0x03a00000, -0x13a00001, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006000d, -0x03530480, -0x1a000000, -0x00050004, -0xe3510000, -0x43a00480, -0x4a000000, -0x0005000b, -0x0006000e, -0x00000000, -0xeb000000, -0x0005005c, -0xea000000, -0x00050049, -0x00040007, -0x00060013, -0x00020000, -0x00000000, -0x41e00000, -0x0006005d, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x8a000000, -0x00050046, -0x13c11480, -0x1a000000, -0x00050049, -0xe3500000, -0xb2700000, -0x614f00d0, -0x00051813, -0x00060049, -0xe5196004, -0xe14900f8, -0x0006005e, -0xe3a0b000, -0x000a0000, -0x00060047, -0xe2160000, -0x000a0000, -0x0516e004, -0xe58db004, -0xe249a008, -0x1a000000, -0x00050018, -0xe004caae, -0x0006000f, -0xe15c000b, -0x8a000000, -0x00050006, -0xe00402ae, -0xe5d6c000, -0xe496e004, -0xe04a9000, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00060010, -0xe08a100b, -0xe3e00000, -0x000a0000, -0xe28bb008, -0xe5010004, -0xea000000, -0x0005000f, -0x0006005f, -0x00000000, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003000f, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060060, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030010, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060061, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030011, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060062, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030012, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060063, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030013, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060064, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030014, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060065, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030015, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060066, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030016, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060067, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030017, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060068, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030018, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060069, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030019, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x0006006a, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003001a, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x0006006b, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003001b, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x0006006c, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003001c, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x0006006d, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003001d, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x0006006e, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x2a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x0003001e, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x0006006f, -0x00060070, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0xe14220d0, -0x000c8100, -0xeb000000, -0x0003001f, -0xea000000, -0x00050049, -0x00060071, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030020, -0x00000000, -0xe1a0900a, -0x00000000, -0xea000000, -0x00050049, -0x00060072, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0xe1a0200d, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030021, -0x00000000, -0xe1a0900a, -0x00000000, -0xe59d2000, -0xe3e03000, -0x000a0000, -0xe5196004, -0xe14900f8, -0xe3a0b000, -0x000a0000, -0xe1c920f0, -0xea000000, -0x00050047, -0x00060073, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050046, -0xe2492008, -0xe5196004, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030022, -0x00000000, -0xe1a0900a, -0x00000000, -0xe3a0b000, -0x000a0000, -0xe1c900f0, -0xea000000, -0x00050047, -0x00060074, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0xe3a0a008, -0x1a000000, -0x00050004, -0x0006000b, -0xe18920da, -0xe15a000b, -0x2a000000, -0x00050049, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050003, -0xe1500002, -0xe28aa008, -0xc1a00002, -0xea000000, -0x0005000b, -0x0006000d, -0x8a000000, -0x00050046, -0xeb000000, -0x00030023, -0xe18920da, -0xea000000, -0x00050006, -0x0006000e, -0x8a000000, -0x00050046, -0x0006000f, -0xe18920da, -0xe15a000b, -0x2a000000, -0x00050049, -0xe3730000, -0x000a0000, -0x2a000000, -0x00050007, -0x00060010, -0x00000000, -0xeb000000, -0x00030024, -0xe28aa008, -0x81a00002, -0x81a01003, -0xea000000, -0x0005000f, -0x00060011, -0x8a000000, -0x00050046, -0xe1cd00f0, -0xe1a00002, -0xeb000000, -0x00030023, -0xe1cd20d0, -0xea000000, -0x00050010, -0x00060075, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0xe3a0a008, -0x1a000000, -0x00050004, -0x0006000b, -0xe18920da, -0xe15a000b, -0x2a000000, -0x00050049, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050003, -0xe1500002, -0xe28aa008, -0xb1a00002, -0xea000000, -0x0005000b, -0x0006000d, -0x8a000000, -0x00050046, -0xeb000000, -0x00030023, -0xe18920da, -0xea000000, -0x00050006, -0x0006000e, -0x8a000000, -0x00050046, -0x0006000f, -0x00000000, -0xe18920da, -0xe15a000b, -0x2a000000, -0x00050049, -0xe3730000, -0x000a0000, -0x2a000000, -0x00050007, -0x00060010, -0xeb000000, -0x00030024, -0xe28aa008, -0x31a00002, -0x31a01003, -0xea000000, -0x0005000f, -0x00060011, -0x8a000000, -0x00050046, -0xe1cd00f0, -0xe1a00002, -0xeb000000, -0x00030023, -0xe1cd20d0, -0xea000000, -0x00050010, -0x00060076, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0xe5100000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x00060077, -0xe1c900d0, -0xe5196004, -0xe35b0008, -0x03710000, -0x000a0000, -0x1a000000, -0x00050046, -0xe5102000, -0x000d8180, -0xe5500000, -0x000d8180, -0x00000000, -0xe3e01000, -0x000a0000, -0xe3520000, -0x03a0b000, -0x000a0000, -0x13a0b000, -0x000a0000, -0xe14900f8, -0xea000000, -0x00050047, -0x00060078, -0xe5170000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1500001, -0xab000000, -0x0005004f, -0xe1c900d0, -0xe5196004, -0xe35b0008, -0x03710000, -0x000a0000, -0x03d030ff, -0xe3a02001, -0x1a000000, -0x00050046, -0xe58d0000, -0xe1a0100d, -0x00060079, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe58d6008, -0xeb000000, -0x00030025, -0xe5189000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006007a, -0xe5170000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1500001, -0xab000000, -0x0005004f, -0xe1c900d0, -0xe1c921d0, -0xe35b0010, -0xe3e0c000, -0x0a000000, -0x00050001, -0x3a000000, -0x00050046, -0x00000000, -0xe3730000, -0x000a0000, -0xe1a0c002, -0x1a000000, -0x00050046, -0x0006000b, -0xe1c920d8, -0xe3710000, -0x000a0000, -0x05101000, -0x000d8180, -0x03730000, -0x000a0000, -0x1a000000, -0x00050046, -0xe2813001, -0xe3520000, -0xb0822003, -0xe3520001, -0xb3a02001, -0xe35c0000, -0xb08cc003, -0xe1cccfcc, -0xe15c0001, -0xe2800000, -0x000a0000, -0xc1a0c001, -0xe0801002, -0xe05c2002, -0xe2822001, -0xaa000000, -0x00050079, -0x0006007b, -0xe2470000, -0x000a0000, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006007c, -0xe5170000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1500001, -0xab000000, -0x0005004f, -0xe1c900d0, -0xe1c920d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x03730000, -0x000a0000, -0x1a000000, -0x00050046, -0xe2523001, -0xe5101000, -0x000d8180, -0x00000000, -0xba000000, -0x0005007b, -0xe3510001, -0x3a000000, -0x0005007b, -0x1a000000, -0x00050046, -0xe517c000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe5100000, -0x000d8180, -0xe15c0002, -0x3a000000, -0x00050046, -0x0006000b, -0xe7c10003, -0xe2533001, -0xaa000000, -0x0005000b, -0xea000000, -0x00050079, -0x0006007d, -0xe5170000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1500001, -0xab000000, -0x0005004f, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0xe5102000, -0x000d8180, -0xe517c000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1a03002, -0xe2800000, -0x000a0000, -0xe15c0002, -0x3a000000, -0x00050046, -0x0006000b, -0x00000000, -0xe4d0c001, -0xe2533001, -0xba000000, -0x00050079, -0xe7c1c003, -0xea000000, -0x0005000b, -0x0006007e, -0xe5170000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1500001, -0xab000000, -0x0005004f, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0xe5102000, -0x000d8180, -0xe517c000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe3a03000, -0xe2800000, -0x000a0000, -0xe15c0002, -0x3a000000, -0x00050046, -0x0006000b, -0xe7d0c003, -0xe1530002, -0x2a000000, -0x00050079, -0xe24cb041, -0xe35b001a, -0x322cc020, -0xe7c1c003, -0xe2833001, -0xea000000, -0x0005000b, -0x0006007f, -0xe5170000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe1500001, -0xab000000, -0x0005004f, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0x00000000, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0xe5102000, -0x000d8180, -0xe517c000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe3a03000, -0xe2800000, -0x000a0000, -0xe15c0002, -0x3a000000, -0x00050046, -0x0006000b, -0xe7d0c003, -0xe1530002, -0x2a000000, -0x00050079, -0xe24cb061, -0xe35b001a, -0x322cc020, -0xe7c1c003, -0xe2833001, -0xea000000, -0x0005000b, -0x00060080, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050046, -0x00000000, -0xe1a0a009, -0x00000000, -0xeb000000, -0x00030026, -0x00000000, -0xe1a0900a, -0x00000000, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x00060081, -0x8a000000, -0x00050046, -0x00060082, -0xe1a0c081, -0xe29cc980, -0x53a00000, -0x512fff1e, -0xe3e03ff8, -0xe053cacc, -0x4a000000, -0x00050001, -0xe1a03581, -0xe3833480, -0xe1833aa0, -0xe3510000, -0xe1a00c33, -0xb2600000, -0xe12fff1e, -0x0006000b, -0xe28cc015, -0xe1a03c30, -0xe26cc014, -0xe1a00601, -0xe3510000, -0xe1830c10, -0xb2600000, -0xe12fff1e, -0x00060083, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x00060084, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a02000, -0xe3a0a008, -0x0006000b, -0xe18900da, -0xe15a000b, -0xe28aa008, -0xaa000000, -0x00050002, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe0022000, -0xea000000, -0x0005000b, -0x00060085, -0x00000000, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a02000, -0xe3a0a008, -0x0006000b, -0xe18900da, -0xe15a000b, -0xe28aa008, -0xaa000000, -0x00050002, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1822000, -0xea000000, -0x0005000b, -0x00060086, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a02000, -0xe3a0a008, -0x0006000b, -0xe18900da, -0xe15a000b, -0xe28aa008, -0xaa000000, -0x00050002, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe0222000, -0xea000000, -0x0005000b, -0x0006000c, -0xe3e03000, -0x000a0000, -0xe5196004, -0xe14920f8, -0xea000000, -0x0005005e, -0x00060087, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0x00000000, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe0202860, -0xe3c228ff, -0xe1a00460, -0xe3e01000, -0x000a0000, -0xe0200422, -0xea000000, -0x00050049, -0x00060088, -0xe1c900d0, -0xe35b0008, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1e00000, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x00060089, -0xe1c900d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe200a01f, -0xe1c900d0, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a00a10, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006008a, -0xe1c900d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0x00000000, -0xe200a01f, -0xe1c900d0, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a00a30, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006008b, -0xe1c900d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe200a01f, -0xe1c900d0, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a00a50, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006008c, -0xe1c900d8, -0xe35b0010, -0x3a000000, -0x00050046, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe260a000, -0xe1c900d0, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a00a70, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x0006008d, -0xe1c900d8, -0xe35b0010, -0x3a000000, -0x00050046, -0x00000000, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe200a01f, -0xe1c900d0, -0xe3710000, -0x000a0000, -0x1b000000, -0x00050081, -0xe1a00a70, -0xe3e01000, -0x000a0000, -0xea000000, -0x00050049, -0x00060046, -0xe5192008, -0xe5181000, -0x000d8180, -0xe089000b, -0xe5196004, -0xe5080000, -0x000d8180, -0xe5122000, -0x000d8180, -0xe5089000, -0x000d8180, -0xe2800000, -0x000a0000, -0xe58d6008, -0xe1500001, -0xe1a00008, -0x8a000000, -0x00050005, -0xe12fff32, -0xe5189000, -0x000d8180, -0xe3500000, -0xe1a0b180, -0xe249a008, -0xca000000, -0x00050047, -0x0006000b, -0xe5180000, -0x000d8180, -0xe5192008, -0xe040b009, -0x1a000000, -0x00050029, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x00060029, -0xe2160000, -0x000a0000, -0xe3c61000, -0x000a0000, -0x00000000, -0x0516e004, -0x00020000, -0x000412ae, -0x02811008, -0xe049c001, -0xea000000, -0x00050024, -0x0006000f, -0xe3a01000, -0x000a0000, -0xeb000000, -0x00030000, -0xe5189000, -0x000d8180, -0xe1500000, -0xea000000, -0x0005000b, -0x0006004f, -0xe1a0a00e, -0xe5089000, -0x000d8180, -0xe089100b, -0xe58d6008, -0xe5081000, -0x000d8180, -0xe1a00008, -0xeb000000, -0x00030027, -0xe5189000, -0x000d8180, -0xe1a0e00a, -0xe5192008, -0xe12fff1e, -0x0006008e, -0x00000000, -0xe5570000, -0x000d8180, -0xe3100000, -0x000a0000, -0x1a000000, -0x00050005, -0xe5171000, -0x000d8180, -0xe3100000, -0x000a0000, -0x1a000000, -0x00050001, -0xe2411001, -0xe3100000, -0x000a0000, -0x15071000, -0x000d8180, -0xea000000, -0x00050001, -0x00000000, -0x0006008f, -0xe5570000, -0x000d8180, -0xe3100000, -0x000a0000, -0x0a000000, -0x00050001, -0x0006000f, -0xe20ec0ff, -0xe087c10c, -0xe51cf000, -0x000d8180, -0x00060090, -0xe5570000, -0x000d8180, -0xe5171000, -0x000d8180, -0xe3100000, -0x000a0000, -0x1a000000, -0x0005000f, -0xe3100000, -0x000a0000, -0x0a000000, -0x0005000f, -0xe2511001, -0xe5071000, -0x000d8180, -0x0a000000, -0x00050001, -0xe3100000, -0x000a0000, -0x0a000000, -0x0005000f, -0x0006000b, -0xe1a00008, -0xe5089000, -0x000d8180, -0xe1a01006, -0xeb000000, -0x00030028, -0x0006000d, -0xe5189000, -0x000d8180, -0x0006000e, -0x00000000, -0xe556c004, -0xe516e004, -0xe087c10c, -0xe51cc000, -0x000d8180, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00060091, -0xe5130018, -0xe2866004, -0xe58d0004, -0xea000000, -0x0005000e, -0x00060092, -0x00000000, -0xe5192008, -0xe2470000, -0x000a0000, -0xe58d6008, -0xe5122000, -0x000d8180, -0xe1a01006, -0xe5078000, -0x000d8180, -0xe5522000, -0x000d8180, -0xe5089000, -0x000d8180, -0xe0892182, -0xe5082000, -0x000d8180, -0xeb000000, -0x00030029, -0xea000000, -0x0005000d, -0x00000000, -0x00060093, -0xe1a01006, -0x00000000, -0xea000000, -0x00050001, -0x00000000, -0x00060094, -0x00000000, -0xe3861001, -0x0006000b, -0x00000000, -0xe089300b, -0xe58d6008, -0xe1a00008, -0xe5089000, -0x000d8180, -0xe04aa009, -0xe5083000, -0x000d8180, -0xeb000000, -0x0003002a, -0xe5189000, -0x000d8180, -0xe5183000, -0x000d8180, -0xe3a01000, -0xe089a00a, -0xe043b009, -0xe58d1008, -0xe5192008, -0xe516e004, -0xe12fff10, -0x00060095, -0x00000000, -0xe24dd00c, -0xe92d1fff, -0xe59d0040, -0xe59e7000, -0xe28d2040, -0xe3e03000, -0x000a0000, -0xe58d2034, -0xe5073000, -0x000d8180, -0xe5301004, -0xe58d0038, -0xe58d003c, -0xe1a01401, -0xe0800341, -0xe59e1004, -0xe040000e, -0xe5178000, -0x000d8180, -0xe0810120, -0xe5179000, -0x000d8180, -0xe5070000, -0x000d8180, -0xe3a03000, -0xe5078000, -0x000d8180, -0xe5089000, -0x000d8180, -0xe5073000, -0x000d8180, -0xe2470000, -0x000a0000, -0xe1a0100d, -0xeb000000, -0x0003002b, -0xe5181000, -0x000d8180, -0xe5189000, -0x000d8180, -0xe3c11000, -0x000a0000, -0xe1a0d001, -0xe59d6008, -0xe58d800c, -0xea000000, -0x00050001, -0x00000000, -0x00060096, -0x00000000, -0xe59d800c, -0x0006000b, -0xe3500000, -0xba000000, -0x00050003, -0xe1a0b180, -0xe5191008, -0xe58db004, -0xe3a02000, -0xe5111000, -0x000d8180, -0xe5072000, -0x000d8180, -0xe3e03000, -0x000a0000, -0xe5115000, -0x000d8180, -0xe5d6c000, -0xe3a040ff, -0xe496e004, -0xe1a04184, -0xe5073000, -0x000d8180, -0xe35c0000, -0x000a0000, -0xe797c10c, -0xe004a2ae, -0x31a0b82e, -0x224bb008, -0x208aa009, -0xe12fff1c, -0x0006000d, -0xe2601000, -0xe1a00008, -0xeb000000, -0x0003002c, -0x00000000, -0x00060013, -0x3ff00000, -0x0006005a, -0xe1a02081, -0xe292c980, -0x5a000000, -0x00050002, -0xe3e03ff3, -0xe053cacc, -0x312fff1e, -0xe3e03001, -0xe1c02c13, -0xe0000c13, -0xe25cc020, -0x51c13c13, -0x51822003, -0x53e03001, -0x50011c13, -0xe1120fc1, -0x012fff1e, -0xe3e03001, -0xe35c0000, -0x51a02c13, -0x43e02000, -0xe28cc020, -0xe0500c13, -0xe0c11002, -0xe12fff1e, -0x0006000c, -0x212fff1e, -0xe1822000, -0xe1120fc1, -0xe3a00000, -0xe2011480, -0x151f3000, -0x00050813, -0x11811003, -0xe12fff1e, -0x0006005c, -0xe1a02081, -0xe292c980, -0x5a000000, -0x00050002, -0xe3e03ff3, -0xe053cacc, -0x312fff1e, -0xe3e03001, -0xe1c02c13, -0xe0000c13, -0xe25cc020, -0x51c13c13, -0x51822003, -0x53e03001, -0x50011c13, -0xe1d22fc1, -0x012fff1e, -0xe3e03001, -0xe35c0000, -0x51a02c13, -0x43e02000, -0xe28cc020, -0xe0500c13, -0xe0c11002, -0xe12fff1e, -0x0006000c, -0x212fff1e, -0xe1822000, -0xe1d22fc1, -0xe3a00000, -0xe2011480, -0x151f3000, -0x00050813, -0x11811003, -0xe12fff1e, -0x00060097, -0x00000000, -0xe1a02081, -0xe292c980, -0x52011480, -0x53a00000, -0x512fff1e, -0xe3e03ff3, -0xe053cacc, -0x312fff1e, -0xe3e03001, -0xe0000c13, -0xe25cc020, -0x50011c13, -0xe12fff1e, -0x00000000, -0x00060098, -0xe92d401f, -0xeb000000, -0x0003002d, -0xeb000000, -0x0005005a, -0xe1cd20d8, -0xeb000000, -0x0003001f, -0xe1cd20d0, -0xe2211480, -0xeb000000, -0x0003002e, -0xe28dd014, -0xe8bd8000, -0x00060099, -0xe210c480, -0x42600000, -0xe02cc0c1, -0xe3510000, -0x42611000, -0xe2513001, -0x11500001, -0x03a00000, -0x81110003, -0x00020000, -0x00000003, -0x9a000000, -0x00050001, -0xe16f2f10, -0xe16f3f11, -0xe0433002, -0xe273201f, -0x108ff182, -0xe1a00000, -0x00000000, -0xe1500001, -0x000900a7, -0x20400001, -0x000900a7, -0x00000000, -0x0006000b, -0xe3500000, -0x135c0000, -0x40400001, -0xe030108c, -0x42600000, -0xe12fff1e, -0x0006009a, -0xe59dc000, -0xe35c0001, -0x3a000000, -0x0003002e, -0x0a000000, -0x0003002f, -0xe35c0003, -0x3a000000, -0x0003001f, -0x0a000000, -0x0003002d, -0xe35c0005, -0x3a000000, -0x00050098, -0x0a000000, -0x0003001c, -0xe35c0007, -0x32211480, -0x03c11480, -0x912fff1e, -0x00000000, -0xe35c0009, -0x3a000000, -0x0003001d, -0x0a000000, -0x00050009, -0xe35c000b, -0x8a000000, -0x00050009, -0xe92d4010, -0x0a000000, -0x00050001, -0xeb000000, -0x00030024, -0x81a00002, -0x81a01003, -0xe8bd8010, -0x00060013, -0xe7f001f0, -0x0006000b, -0xeb000000, -0x00030024, -0x31a00002, -0x31a01003, -0xe8bd8010, -0x00000000, -0xe7f001f0, -0x00000000, -0x0006009b, -0x00000000, -0xe51c6000, -0x000d8180, -0xe28c7000, -0x000a0000, -0xe14600f0, -0x000c8100, -0xe14620f0, -0x000c8100, -0xe59d3000, -0xe28d2000, -0x000a0000, -0xe1a00006, -0xe1a031a3, -0xe5062000, -0x000d8180, -0xe1a0100d, -0xe5063000, -0x000d8180, -0xe58d6008, -0xeb000000, -0x00030030, -0xe5109000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xe510b000, -0x000d8180, -0xe3a040ff, -0xe5192008, -0xe1a08000, -0xe04bb009, -0xe1a04184, -0xe5071000, -0x000d8180, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x00000000, -0x00060028, -0x00000000, -0xe5176000, -0x000d8180, -0xe5089000, -0x000d8180, -0xe5083000, -0x000d8180, -0xe5068000, -0x000d8180, -0xe1a00006, -0xe1a0100a, -0xeb000000, -0x00030031, -0xe14600d0, -0x000c8100, -0xea000000, -0x0005001a, -0x00000000, -0x0006009c, -0x00000000, -0xe92d4830, -0xe1a04000, -0xe5100000, -0x000d8180, -0xe5541000, -0x000d8180, -0xe2842000, -0x000a0000, -0xe1a0b00d, -0xe04dd000, -0xe2511001, -0xe514c000, -0x000d8180, -0x4a000000, -0x00050002, -0x0006000b, -0xe7923101, -0xe78d3101, -0xe2511001, -0x5a000000, -0x0005000b, -0x0006000c, -0xe5140000, -0x000d8180, -0xe5141000, -0x000d8180, -0xe5142000, -0x000d8180, -0xe5143000, -0x000d8180, -0xe12fff3c, -0xe1a0d00b, -0xe5040000, -0x000d8180, -0xe5041000, -0x000d8180, -0xe8bd8830, -0x00000000, -0x00080000, -0x00000000, -0xe1a0b18b, -0xe1aa00d9, -0xe1d6c0b2, -0xe1ab20d9, -0xe2866004, -0xe086c10c, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050003, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050004, -0xe1500002, -0x00000000, -0xb24c6b80, -0x00000000, -0xa24c6b80, -0x00000000, -0xd24c6b80, -0x00000000, -0xc24c6b80, -0x00000000, -0x0006000b, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000d, -0x8a000000, -0x00050035, -0xe3730000, -0x000a0000, -0x31a0a00c, -0x3a000000, -0x00050005, -0xe1a00002, -0xe1a0b00a, -0xe1a0a00c, -0xeb000000, -0x00030023, -0xe1a02000, -0xe1a03001, -0xe1cb00d0, -0xea000000, -0x00050005, -0x0006000e, -0x8a000000, -0x00050035, -0xe1a0a00c, -0xeb000000, -0x00030023, -0xe1cb20d0, -0x0006000f, -0xeb000000, -0x00030024, -0x00000000, -0x324a6b80, -0x00000000, -0x224a6b80, -0x00000000, -0x924a6b80, -0x00000000, -0x824a6b80, -0x00000000, -0xea000000, -0x0005000b, -0x00000000, -0xe1a0b18b, -0xe1aa00d9, -0xe1d6c0b2, -0xe1ab20d9, -0xe2866004, -0xe086c10c, -0xe3710000, -0x000a0000, -0x93730000, -0x000a0000, -0x00000000, -0x9a000000, -0x0005009d, -0x00000000, -0x9a000000, -0x0005009e, -0x00000000, -0xe3710000, -0x000a0000, -0x13730000, -0x000a0000, -0x0a000000, -0x0005003b, -0x00000000, -0xe1510003, -0x1a000000, -0x00050002, -0xe3710000, -0x000a0000, -0x2a000000, -0x00050001, -0xe1500002, -0x00000000, -0x1a000000, -0x00050003, -0x0006000b, -0xe24c6b80, -0x0006000c, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000d, -0xe3710000, -0x000a0000, -0x8a000000, -0x0005000c, -0x00000000, -0x0a000000, -0x00050001, -0xe3710000, -0x000a0000, -0x8a000000, -0x00050002, -0x00000000, -0xe510a000, -0x000d8180, -0xe35a0000, -0x00000000, -0x0a000000, -0x0005000c, -0x00000000, -0x0a000000, -0x00050002, -0x00000000, -0xe55aa000, -0x000d8180, -0xe3a03000, -0x000a0000, -0xe1a01000, -0xe31a0000, -0x000a0000, -0x0a000000, -0x0005003a, -0x00000000, -0xea000000, -0x0005000c, -0x00000000, -0x0006000c, -0xe24c6b80, -0x0006000b, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1e0b00b, -0xe18900da, -0xe1d6c0b2, -0xe795210b, -0xe2866004, -0xe086c10c, -0xe3710000, -0x000a0000, -0x00000000, -0x1a000000, -0x00050007, -0xe1500002, -0x00000000, -0x01500002, -0x00000000, -0x024c6b80, -0x0006000b, -0x00000000, -0x0006000b, -0x124c6b80, -0x00000000, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0x00060011, -0xe3710000, -0x000a0000, -0x1a000000, -0x0005000b, -0xea000000, -0x0005003b, -0x00000000, -0xe1a0b18b, -0xe1aa00d9, -0xe1d6c0b2, -0xe1ab20d5, -0xe2866004, -0xe086c10c, -0x00000000, -0x0006009d, -0x00000000, -0x0006009e, -0x00000000, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050003, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050004, -0xe1500002, -0x00000000, -0x024c6b80, -0x0006000b, -0x00000000, -0x0006000b, -0x124c6b80, -0x00000000, -0x0006000c, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000d, -0x00000000, -0x8a000000, -0x00050007, -0x00000000, -0x824c6b80, -0x00000000, -0x8a000000, -0x0005000c, -0x00000000, -0xe3730000, -0x000a0000, -0x31a0a00c, -0x3a000000, -0x00050005, -0xe1a00002, -0xe1a0b00a, -0x0006000e, -0xe1a0a00c, -0xeb000000, -0x00030023, -0xe1cb20d0, -0x0006000f, -0xeb000000, -0x00030032, -0x00000000, -0x024a6b80, -0x00000000, -0x124a6b80, -0x00000000, -0xea000000, -0x0005000c, -0x00000000, -0x00060011, -0xe3710000, -0x000a0000, -0x1a000000, -0x0005000b, -0xea000000, -0x0005003b, -0x00000000, -0xe18900da, -0xe1d6c0b2, -0xe2866004, -0xe1e0b00b, -0xe086c10c, -0x00000000, -0xe3710000, -0x000a0000, -0x0a000000, -0x0005003b, -0x00000000, -0xe151000b, -0x00000000, -0x024c6b80, -0x00000000, -0x124c6b80, -0x00000000, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe089b18b, -0xe1d6c0b2, -0xe1cb00d0, -0xe2866004, -0xe086c10c, -0xe3710000, -0x000a0000, -0x00000000, -0x924c6b80, -0x00000000, -0x918900fa, -0x00000000, -0x824c6b80, -0x00000000, -0x818900fa, -0x00000000, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1a0b18b, -0xe5d6c000, -0xe18900db, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe089b18b, -0xe5d6c000, -0xe59b0004, -0xe089a00a, -0xe496e004, -0xe3700000, -0x000a0000, -0x93e01000, -0x000a0000, -0x83e01000, -0x000a0000, -0xe58a1004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1a0b18b, -0xe18900db, -0xe5d6c000, -0xe496e004, -0xe3710000, -0x000a0000, -0x8a000000, -0x0005003e, -0x12211480, -0x1a000000, -0x00050005, -0x02700000, -0x614f00d0, -0x00051809, -0x0006000f, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00040007, -0x00060013, -0x00020000, -0x00000000, -0x41e00000, -0x00000000, -0xe1a0b18b, -0xe18900db, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050002, -0xe5100000, -0x000d8180, -0x0006000b, -0xe3e01000, -0x000a0000, -0xe5d6c000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000c, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050040, -0x00000000, -0xe5102000, -0x000d8180, -0xe3520000, -0x1a000000, -0x00050009, -0x0006000d, -0x00000000, -0x00060041, -0x00000000, -0xe1a0b009, -0x00000000, -0xeb000000, -0x00030026, -0x00000000, -0xe1a0900b, -0x00000000, -0xea000000, -0x0005000b, -0x00000000, -0x00060013, -0xe5523000, -0x000d8180, -0xe3130000, -0x000a0000, -0x1a000000, -0x0005000d, -0xea000000, -0x00050040, -0x00000000, -0xe004caae, -0xe004b6ae, -0x00000000, -0xe18900dc, -0xe18520db, -0x00000000, -0xe18920dc, -0xe18500db, -0x00000000, -0xe18900dc, -0xe18920db, -0x00000000, -0xe5d6c000, -0x00000000, -0xe3730000, -0x000a0000, -0x03710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x03730000, -0x000a0000, -0x00000000, -0x1a000000, -0x00050005, -0xe0900002, -0x00000000, -0x6a000000, -0x0005003c, -0x00000000, -0x6a000000, -0x0005003d, -0x00000000, -0x6a000000, -0x0005003f, -0x00000000, -0x0006000e, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003c, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003d, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003f, -0x00000000, -0xeb000000, -0x0003002e, -0xe5d6c000, -0xea000000, -0x0005000e, -0x00000000, -0xe004caae, -0xe004b6ae, -0x00000000, -0xe18900dc, -0xe18520db, -0x00000000, -0xe18920dc, -0xe18500db, -0x00000000, -0xe18900dc, -0xe18920db, -0x00000000, -0xe5d6c000, -0x00000000, -0xe3730000, -0x000a0000, -0x03710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x03730000, -0x000a0000, -0x00000000, -0x1a000000, -0x00050005, -0xe0500002, -0x00000000, -0x6a000000, -0x0005003c, -0x00000000, -0x6a000000, -0x0005003d, -0x00000000, -0x6a000000, -0x0005003f, -0x00000000, -0x0006000e, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003c, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003d, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003f, -0x00000000, -0xeb000000, -0x0003002f, -0xe5d6c000, -0xea000000, -0x0005000e, -0x00000000, -0xe004caae, -0xe004b6ae, -0x00000000, -0xe18900dc, -0xe18520db, -0x00000000, -0xe18920dc, -0xe18500db, -0x00000000, -0xe18900dc, -0xe18920db, -0x00000000, -0xe5d6c000, -0x00000000, -0xe3730000, -0x000a0000, -0x03710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x03730000, -0x000a0000, -0x00000000, -0x1a000000, -0x00050005, -0xe0cb0092, -0xe15b0fc0, -0x00000000, -0x1a000000, -0x0005003c, -0x00000000, -0x1a000000, -0x0005003d, -0x00000000, -0x1a000000, -0x0005003f, -0x00000000, -0x0006000e, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003c, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003d, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003f, -0x00000000, -0xeb000000, -0x0003001f, -0xe5d6c000, -0xea000000, -0x0005000e, -0x00000000, -0xe004caae, -0xe004b6ae, -0x00000000, -0xe18900dc, -0xe18520db, -0x00000000, -0xe18920dc, -0xe18500db, -0x00000000, -0xe18900dc, -0xe18920db, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003c, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003d, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003f, -0x00000000, -0xeb000000, -0x0003002d, -0xe5d6c000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe004caae, -0xe004b6ae, -0x00000000, -0xe18900dc, -0xe18520db, -0x00000000, -0xe18920dc, -0xe18500db, -0x00000000, -0xe18900dc, -0xe18920db, -0x00000000, -0xe3730000, -0x000a0000, -0x03710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x03730000, -0x000a0000, -0x00000000, -0x1a000000, -0x00050005, -0xe1b01002, -0x00000000, -0x0a000000, -0x0005003c, -0x00000000, -0x0a000000, -0x0005003d, -0x00000000, -0x0a000000, -0x0005003f, -0x00000000, -0xeb000000, -0x00050099, -0xe3e01000, -0x000a0000, -0x0006000e, -0xe5d6c000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003c, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003d, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003f, -0x00000000, -0xeb000000, -0x00050098, -0xea000000, -0x0005000e, -0x00000000, -0xe004caae, -0xe004b6ae, -0x00000000, -0xe18900dc, -0xe18520db, -0x00000000, -0xe18920dc, -0xe18500db, -0x00000000, -0xe18900dc, -0xe18920db, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003c, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003d, -0x00000000, -0xe3730000, -0x000a0000, -0x33710000, -0x000a0000, -0x00000000, -0xe3710000, -0x000a0000, -0x33730000, -0x000a0000, -0x00000000, -0x2a000000, -0x0005003f, -0x00000000, -0xe1a0b009, -0x00000000, -0xeb000000, -0x0003001c, -0x00000000, -0xe1a0900b, -0x00000000, -0xe5d6c000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe004baae, -0xe004c6ae, -0xe04c200b, -0xe5089000, -0x000d8180, -0xe089100c, -0x0006002b, -0xe1a00008, -0xe58d6008, -0xe1a021a2, -0xeb000000, -0x00030033, -0xe5189000, -0x000d8180, -0xe3500000, -0x1a000000, -0x00050036, -0xe18920db, -0xe5d6c000, -0xe496e004, -0xe18920fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1e0b00b, -0xe5d6c000, -0xe795010b, -0xe3e01000, -0x000a0000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1e0b00b, -0xe5d6c000, -0xe795010b, -0xe3e01000, -0x000a0000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1a0084e, -0xe3e01000, -0x000a0000, -0xe5d6c000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1a0b18b, -0xe5d6c000, -0xe18500db, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe089a00a, -0xe1e0b00b, -0xe5d6c000, -0xe496e004, -0xe58ab004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe089a00a, -0xe089b18b, -0xe3e00000, -0x000a0000, -0xe58a0004, -0xe28aa008, -0x0006000b, -0xe58a0004, -0xe15a000b, -0xe28aa008, -0xba000000, -0x0005000b, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe5191008, -0xe1a0b10b, -0xe28bb000, -0x000a0000, -0xe791100b, -0xe5111000, -0x000d8180, -0xe1c120d0, -0xe5d6c000, -0xe496e004, -0xe18920fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe5191008, -0xe1a0a0aa, -0xe28aa000, -0x000a0000, -0xe1a0b18b, -0xe791100a, -0xe18920db, -0xe551c000, -0x000d8180, -0xe551b000, -0x000d8180, -0xe5111000, -0x000d8180, -0xe31c0000, -0x000a0000, -0xe283c000, -0x000a0000, -0x135b0000, -0xe1c120f0, -0x1a000000, -0x00050002, -0x0006000b, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000c, -0xe37c0000, -0x000a0000, -0x8552b000, -0x000d8180, -0x9a000000, -0x0005000b, -0xe2470000, -0x000a0000, -0xe31b0000, -0x000a0000, -0x00000000, -0x0a000000, -0x0005000b, -0xe1a0b009, -0xeb000000, -0x00030034, -0xe1a0900b, -0x00000000, -0x1b000000, -0x00030034, -0x00000000, -0xea000000, -0x0005000b, -0x00000000, -0xe5191008, -0xe1a0a0aa, -0xe28aa000, -0x000a0000, -0xe1e0b00b, -0xe791100a, -0xe795210b, -0xe3e03000, -0x000a0000, -0xe551c000, -0x000d8180, -0xe5111000, -0x000d8180, -0xe551b000, -0x000d8180, -0xe31c0000, -0x000a0000, -0xe552c000, -0x000d8180, -0xe1c120f0, -0x1a000000, -0x00050002, -0x0006000b, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000c, -0xe31c0000, -0x000a0000, -0x135b0000, -0xe2470000, -0x000a0000, -0x00000000, -0x0a000000, -0x0005000b, -0xe1a0b009, -0xeb000000, -0x00030034, -0xe1a0900b, -0x00000000, -0x1b000000, -0x00030034, -0x00000000, -0xea000000, -0x0005000b, -0x00000000, -0xe5191008, -0xe1a0a0aa, -0xe28aa000, -0x000a0000, -0xe1a0b18b, -0xe791100a, -0xe18520db, -0xe5111000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe1c120f0, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe5191008, -0xe1a0a0aa, -0xe28aa000, -0x000a0000, -0xe791100a, -0xe1e0b00b, -0xe5111000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe581b004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe5182000, -0x000d8180, -0xe086b10b, -0xe5089000, -0x000d8180, -0xe3520000, -0xe24b6b80, -0x0a000000, -0x00050001, -0xe1a00008, -0xe089100a, -0xeb000000, -0x00030035, -0xe5189000, -0x000d8180, -0x0006000b, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1e0b00b, -0xe5089000, -0x000d8180, -0xe795110b, -0xe58d6008, -0xe5192008, -0xe1a00008, -0xeb000000, -0x00030036, -0xe5189000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xe5d6c000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1e0b00b, -0x00000000, -0xe5172000, -0x000d8180, -0xe5173000, -0x000d8180, -0xe5089000, -0x000d8180, -0xe58d6008, -0xe1520003, -0xe1a00008, -0x2a000000, -0x00050005, -0x0006000b, -0x00000000, -0xe1a01a8b, -0xe1a025ab, -0xe1a0bac1, -0xe1a01aa1, -0xe37b0001, -0x02811002, -0xeb000000, -0x00030037, -0x00000000, -0xe795110b, -0xeb000000, -0x00030038, -0x00000000, -0xe5189000, -0x000d8180, -0xe3e01000, -0x000a0000, -0xe5d6c000, -0xe496e004, -0xe18900fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xeb000000, -0x00030039, -0xe1a00008, -0xea000000, -0x0005000b, -0x00000000, -0xe5191008, -0xe1e0b00b, -0xe5110000, -0x000d8180, -0xe795b10b, -0x00000000, -0xea000000, -0x0005009f, -0x00000000, -0xea000000, -0x000500a0, -0x00000000, -0xe004caae, -0xe004b6ae, -0xe18900dc, -0xe18920db, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050030, -0xe3730000, -0x000a0000, -0x05103000, -0x000d8180, -0x05101000, -0x000d8180, -0x1a000000, -0x00050009, -0xe0833182, -0xe1520001, -0x31c320d0, -0x2a000000, -0x00050030, -0xe5d6c000, -0xe3730000, -0x000a0000, -0x0a000000, -0x00050005, -0x0006000b, -0xe496e004, -0xe18920fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe5101000, -0x000d8180, -0xe3510000, -0x0a000000, -0x0005000b, -0xe5511000, -0x000d8180, -0xe3110000, -0x000a0000, -0x1a000000, -0x0005000b, -0xe004caae, -0xea000000, -0x00050030, -0x00060013, -0xe3730000, -0x000a0000, -0x01a0b002, -0x0a000000, -0x0005009f, -0xea000000, -0x00050030, -0x00000000, -0xe004caae, -0xe20bb0ff, -0xe18900dc, -0xe1e0b00b, -0xe795b10b, -0xe3710000, -0x000a0000, -0x1a000000, -0x0005002d, -0x0006009f, -0xe5102000, -0x000d8180, -0xe51b3000, -0x000d8180, -0xe510e000, -0x000d8180, -0xe1a0c000, -0xe0022003, -0xe0822082, -0xe08ee182, -0x0006000b, -0xe14e00d0, -0x000c8100, -0xe14e20d0, -0x000c8100, -0xe51ee000, -0x000d8180, -0xe3710000, -0x000a0000, -0x0150000b, -0x1a000000, -0x00050004, -0xe3730000, -0x000a0000, -0x0a000000, -0x00050005, -0x0006000d, -0xe5d6c000, -0xe496e004, -0xe18920fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000e, -0xe35e0000, -0x1a000000, -0x0005000b, -0x0006000f, -0xe51c0000, -0x000d8180, -0xe3a02000, -0xe3e03000, -0x000a0000, -0xe3500000, -0x0a000000, -0x0005000d, -0xe5501000, -0x000d8180, -0x00000000, -0xe3110000, -0x000a0000, -0x1a000000, -0x0005000d, -0xea000000, -0x0005002e, -0x00000000, -0xe004caae, -0xe20bb0ff, -0xe18900dc, -0xe3710000, -0x000a0000, -0x1a000000, -0x0005002f, -0xe5102000, -0x000d8180, -0xe5103000, -0x000d8180, -0xe1a0118b, -0xe15b0002, -0x318320d1, -0x2a000000, -0x0005002f, -0xe5d6c000, -0xe3730000, -0x000a0000, -0x0a000000, -0x00050005, -0x0006000b, -0xe496e004, -0xe18920fa, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe5101000, -0x000d8180, -0xe3510000, -0x0a000000, -0x0005000b, -0xe5511000, -0x000d8180, -0xe3110000, -0x000a0000, -0x1a000000, -0x0005000b, -0xea000000, -0x0005002f, -0x00000000, -0xe004caae, -0xe004b6ae, -0xe18900dc, -0xe18920db, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050034, -0xe3730000, -0x000a0000, -0x05101000, -0x000d8180, -0x05103000, -0x000d8180, -0x1a000000, -0x00050009, -0xe0811182, -0xe1520003, -0x3591e004, -0x2a000000, -0x00050034, -0xe5d6c000, -0xe37e0000, -0x000a0000, -0xe550e000, -0x000d8180, -0xe18920da, -0x0a000000, -0x00050005, -0x0006000b, -0xe31e0000, -0x000a0000, -0xe1c120f0, -0x1a000000, -0x00050007, -0x0006000c, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe510a000, -0x000d8180, -0xe35a0000, -0x0a000000, -0x0005000b, -0xe55aa000, -0x000d8180, -0xe31a0000, -0x000a0000, -0x1a000000, -0x0005000b, -0xe516e004, -0xe004caae, -0xe004a2ae, -0xea000000, -0x00050034, -0x00060011, -0x00000000, -0xe5172000, -0x000d8180, -0xe3cee000, -0x000a0000, -0xe5070000, -0x000d8180, -0xe540e000, -0x000d8180, -0xe5002000, -0x000d8180, -0xea000000, -0x0005000c, -0x00060013, -0xe3730000, -0x000a0000, -0x01a0b002, -0x0a000000, -0x000500a0, -0xea000000, -0x00050034, -0x00000000, -0xe004caae, -0xe20bb0ff, -0xe18900dc, -0xe1e0b00b, -0xe795b10b, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050031, -0x000600a0, -0xe5102000, -0x000d8180, -0xe51b3000, -0x000d8180, -0xe510e000, -0x000d8180, -0xe1a0c000, -0xe0022003, -0xe0822082, -0xe3a03000, -0xe08ee182, -0xe54c3000, -0x000d8180, -0x0006000b, -0xe14e00d0, -0x000c8100, -0xe51e3000, -0x000d8180, -0xe51e2000, -0x000d8180, -0xe3710000, -0x000a0000, -0x0150000b, -0x1a000000, -0x00050005, -0xe55c1000, -0x000d8180, -0xe3730000, -0x000a0000, -0xe18920da, -0x0a000000, -0x00050004, -0x0006000c, -0xe3110000, -0x000a0000, -0xe14e20f0, -0x000c8100, -0x1a000000, -0x00050007, -0x0006000d, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000e, -0x00000000, -0xe51c0000, -0x000d8180, -0xe3500000, -0x0a000000, -0x0005000c, -0xe5500000, -0x000d8180, -0xe3100000, -0x000a0000, -0x1a000000, -0x0005000c, -0xea000000, -0x00050032, -0x0006000f, -0xe1b0e002, -0x1a000000, -0x0005000b, -0xe51c0000, -0x000d8180, -0xe1a0200d, -0xe58d6008, -0xe3500000, -0xe5089000, -0x000d8180, -0x15501000, -0x000d8180, -0xe1a00008, -0x0a000000, -0x00050006, -0xe3110000, -0x000a0000, -0x0a000000, -0x00050032, -0x00060010, -0xe3e03000, -0x000a0000, -0xe58db000, -0xe1a0100c, -0xe58d3004, -0xeb000000, -0x0003003a, -0xe5189000, -0x000d8180, -0xe18920da, -0xe1c020f0, -0xea000000, -0x0005000d, -0x00060011, -0xe5172000, -0x000d8180, -0xe3c11000, -0x000a0000, -0x00000000, -0xe507c000, -0x000d8180, -0xe54c1000, -0x000d8180, -0xe50c2000, -0x000d8180, -0xea000000, -0x0005000d, -0x00000000, -0xe004caae, -0xe20bb0ff, -0xe18900dc, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050033, -0xe5102000, -0x000d8180, -0xe510c000, -0x000d8180, -0xe1a0118b, -0xe15b0002, -0x31a120dc, -0x2a000000, -0x00050033, -0xe5d6c000, -0xe3730000, -0x000a0000, -0xe550e000, -0x000d8180, -0xe18920da, -0x0a000000, -0x00050005, -0x0006000b, -0xe31e0000, -0x000a0000, -0xe1c120f0, -0x1a000000, -0x00050007, -0x0006000c, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe510a000, -0x000d8180, -0xe35a0000, -0x0a000000, -0x0005000b, -0xe55aa000, -0x000d8180, -0xe31a0000, -0x000a0000, -0x1a000000, -0x0005000b, -0xe516e004, -0xe004a2ae, -0xea000000, -0x00050033, -0x00060011, -0xe5172000, -0x000d8180, -0xe3cee000, -0x000a0000, -0x00000000, -0xe5070000, -0x000d8180, -0xe540e000, -0x000d8180, -0xe5002000, -0x000d8180, -0xea000000, -0x0005000c, -0x00000000, -0xe089a00a, -0x0006000b, -0xe59dc004, -0xe51a1008, -0xe795018b, -0xe25cc008, -0xe5113000, -0x000d8180, -0x0a000000, -0x00050004, -0xe08021ac, -0xe1520003, -0xe5113000, -0x000d8180, -0xe08ac00c, -0x8a000000, -0x00050005, -0xe083e180, -0xe5510000, -0x000d8180, -0x0006000d, -0xe0ca20d8, -0xe0ce20f8, -0xe15a000c, -0x3a000000, -0x0005000d, -0xe3100000, -0x000a0000, -0x1a000000, -0x00050007, -0x0006000e, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe5089000, -0x000d8180, -0xe1a00008, -0xe58d6008, -0xeb000000, -0x0003003b, -0x00000000, -0xe5189000, -0x000d8180, -0x00000000, -0xea000000, -0x0005000b, -0x00060011, -0xe5172000, -0x000d8180, -0xe3c00000, -0x000a0000, -0xe5071000, -0x000d8180, -0xe5410000, -0x000d8180, -0xe5012000, -0x000d8180, -0xea000000, -0x0005000e, -0x00000000, -0xe59d0004, -0xe004b6ae, -0xe08bb000, -0xea000000, -0x000500a1, -0x00000000, -0xe004b6ae, -0x000600a1, -0xe1a0c009, -0xe1a920da, -0xe24bb008, -0xe2899008, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050025, -0xe5096004, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x00000000, -0xe59d0004, -0xe080b18b, -0xea000000, -0x000500a2, -0x00000000, -0xe1a0b18b, -0x000600a2, -0xe1aa20d9, -0xe24bb008, -0xe28aa008, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050042, -0xe5196004, -0x00060043, -0xe3a0c000, -0xe5523000, -0x000d8180, -0xe3160000, -0x000a0000, -0x1a000000, -0x00050007, -0x0006000b, -0xe5092008, -0xe35b0000, -0x0a000000, -0x00050003, -0x0006000c, -0xe18a00dc, -0xe28ce008, -0xe15e000b, -0xe18900fc, -0xe1a0c00e, -0x1a000000, -0x0005000c, -0x0006000d, -0xe3530001, -0x8a000000, -0x00050005, -0x0006000e, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x0006000f, -0xe516e004, -0xe004a2ae, -0xe049000a, -0xe5100010, -0xe5100000, -0x000d8180, -0xe5105000, -0x000d8180, -0xea000000, -0x0005000e, -0x00060011, -0xe2266000, -0x000a0000, -0xe3160000, -0x000a0000, -0x00000000, -0x13a03000, -0x1a000000, -0x0005000b, -0xe0499006, -0xe5196004, -0xe3160000, -0x000a0000, -0x13a03000, -0xea000000, -0x0005000b, -0x00000000, -0xe089a00a, -0xe1a0c009, -0xe14a21d0, -0xe14a00d8, -0xe28a9008, -0xe1ca20f8, -0xe1ca01f0, -0xe14a21d8, -0xe3a0b010, -0xe1ca20f0, -0xe3730000, -0x000a0000, -0x1a000000, -0x00050025, -0xe5096004, -0xe5126000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe08aa009, -0xe12fff1c, -0x00000000, -0xe089a00a, -0xe51ac010, -0xe51a0008, -0xe51ce000, -0x000d8180, -0xe51c1000, -0x000d8180, -0xe2866004, -0x0006000b, -0xe050b00e, -0xe0812180, -0x2a000000, -0x00050005, -0xe1c220d0, -0xe3730000, -0x000a0000, -0x02800001, -0x0a000000, -0x0005000b, -0xe156b0b2, -0xe3e01000, -0x000a0000, -0xe1ca20f8, -0xe086b10b, -0xe280c001, -0xe1ca00f0, -0xe24b6b80, -0xe50ac008, -0x0006000d, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe51c3000, -0x000d8180, -0xe51cc000, -0x000d8180, -0x00060010, -0xe08b008b, -0xe15b0003, -0xe08c2180, -0x8a000000, -0x0005000d, -0xe14200d0, -0x000c8100, -0xe3710000, -0x000a0000, -0xe28bb001, -0x0a000000, -0x00050010, -0xe156c0b2, -0xe08bb00e, -0xe14220d0, -0x000c8100, -0xe50ab008, -0xe1ca00f8, -0xe086b10c, -0xe24b6b80, -0xe1ca20f0, -0xea000000, -0x0005000d, -0x00000000, -0xe089a00a, -0xe086b10b, -0xe14a01d8, -0xe51a200c, -0xe51a3004, -0xe3710000, -0x000a0000, -0x05500000, -0x000d8180, -0x03720000, -0x000a0000, -0x03730000, -0x000a0000, -0x03500000, -0x000a0000, -0x024b6b80, -0x1a000000, -0x00050005, -0xe5d6c000, -0xe496e004, -0xe3a00000, -0xe50a0008, -0x0006000b, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe3a00000, -0x000a0000, -0xe3a0c000, -0x000a0000, -0xe5460004, -0xe24b6b80, -0xe5c6c000, -0xe496e004, -0xea000000, -0x0005000b, -0x00000000, -0xe004caae, -0xe004b6ae, -0xe5190004, -0xe089b00b, -0xe089a00a, -0xe28bb000, -0x000a0000, -0xe08a300c, -0xe2492008, -0xe04bb000, -0xe35c0000, -0xe042000b, -0x0a000000, -0x00050005, -0xe2433010, -0x0006000b, -0xe15b0002, -0x30cb00d8, -0x23e01000, -0x000a0000, -0xe15a0003, -0xe0ca00f8, -0x3a000000, -0x0005000b, -0x0006000c, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000f, -0xe5183000, -0x000d8180, -0xe3500000, -0xd3a0c008, -0xc280c008, -0xe08a1000, -0xe58dc004, -0xda000000, -0x0005000c, -0xe1510003, -0x8a000000, -0x00050007, -0x00060010, -0xe0cb00d8, -0xe0ca00f8, -0xe15b0002, -0x3a000000, -0x00050010, -0xea000000, -0x0005000c, -0x00060011, -0xe1a011a0, -0xe508a000, -0x000d8180, -0xe1a00008, -0xe5089000, -0x000d8180, -0xe04bb009, -0xe58d6008, -0xe04aa009, -0xeb000000, -0x00030000, -0xe5189000, -0x000d8180, -0xe089a00a, -0xe089b00b, -0xe2492008, -0xea000000, -0x00050010, -0x00000000, -0xe59d0004, -0xe5196004, -0xe089a00a, -0xe080b18b, -0xea000000, -0x000500a3, -0x00000000, -0xe5196004, -0xe1a0b18b, -0xe089a00a, -0x000600a3, -0xe58db004, -0x0006000b, -0xe2160000, -0x000a0000, -0xe2261000, -0x000a0000, -0x1a000000, -0x000500a4, -0x00060017, -0xe516e004, -0xe25b3008, -0xe2492008, -0x0a000000, -0x00050003, -0x0006000c, -0xe0ca00d8, -0xe2899008, -0xe2533008, -0xe14901f0, -0x1a000000, -0x0005000c, -0x0006000d, -0xe004a2ae, -0xe042300a, -0xe004caae, -0xe5130008, -0x0006000f, -0xe15c000b, -0x8a000000, -0x00050006, -0xe1a09003, -0xe5101000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe5115000, -0x000d8180, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00060010, -0xe3e01000, -0x000a0000, -0xe2899008, -0xe28bb008, -0xe509100c, -0xea000000, -0x0005000f, -0x000600a5, -0xe089a00a, -0x000600a4, -0xe3110000, -0x000a0000, -0x1a000000, -0x00050018, -0xe0499001, -0xe5196004, -0xea000000, -0x0005000b, -0x00000000, -0xe5196004, -0xe1a0b18b, -0xe58db004, -0xe2160000, -0x000a0000, -0xe2261000, -0x000a0000, -0x0516e004, -0x1a000000, -0x000500a5, -0x00000000, -0xe18900da, -0x00000000, -0xe2493008, -0xe004a2ae, -0x00000000, -0xe1c300f0, -0x00000000, -0xe043900a, -0xe004caae, -0xe5190008, -0x0006000f, -0xe15c000b, -0x8a000000, -0x00050006, -0xe5101000, -0x000d8180, -0xe5d6c000, -0xe496e004, -0xe5115000, -0x000d8180, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00060010, -0xe2431004, -0xe3e02000, -0x000a0000, -0xe781200b, -0xe28bb008, -0xea000000, -0x0005000f, -0x00000000, -0xe1a000a6, -0xe200007e, -0xe2400000, -0x000a0000, -0xe19710b0, -0xe2511000, -0x000a0000, -0xe18710b0, -0x3a000000, -0x00050092, -0x00000000, -0xe1aa00d9, -0x00000000, -0xe086b10b, -0x00000000, -0xe1ca20d8, -0xe3710000, -0x000a0000, -0xe59ac014, -0x1a000000, -0x00050005, -0xe3730000, -0x000a0000, -0xe59a3010, -0x037c0000, -0x000a0000, -0x1a000000, -0x00050044, -0xe3530000, -0xba000000, -0x00050004, -0xe1500002, -0x00000000, -0xe1ca21d0, -0xe3710000, -0x000a0000, -0x1a000000, -0x00050005, -0xe0900002, -0xe59a3008, -0x00000000, -0x6286bb80, -0x00000000, -0x6a000000, -0x00050002, -0x00000000, -0xe3520000, -0xba000000, -0x00050004, -0xe1500003, -0x00000000, -0x0006000b, -0x00000000, -0xc24b6b80, -0x00000000, -0xe24b6b80, -0xd156b0b2, -0x00000000, -0xd24b6b80, -0x00000000, -0xe1ca00f0, -0x00000000, -0x0006000c, -0xe5d6c000, -0xe496e004, -0xe1ca01f8, -0x00000000, -0xda000000, -0x00070000, -0x00000000, -0x0006000d, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x0006000e, -0x00000000, -0xe1520000, -0x00000000, -0xe1530000, -0x00000000, -0xea000000, -0x0005000b, -0x0006000f, -0x00000000, -0x33730000, -0x000a0000, -0x337c0000, -0x000a0000, -0x2a000000, -0x00050044, -0xe35c0000, -0xe1ca00f0, -0xe1ca01f8, -0xba000000, -0x00050008, -0x00000000, -0xe3530000, -0xba000000, -0x00050008, -0xeb000000, -0x0003002e, -0xe1ca00f0, -0xe1ca20d8, -0xe1ca01f8, -0x00000000, -0x00060010, -0xeb000000, -0x00030024, -0x00000000, -0x824b6b80, -0x00000000, -0xe24b6b80, -0x9156b0b2, -0x9a000000, -0x00070000, -0x00000000, -0x924b6b80, -0x00000000, -0x9a000000, -0x00070000, -0x00000000, -0xe5d6c000, -0xe496e004, -0xea000000, -0x0005000d, -0x00060012, -0x00000000, -0xeb000000, -0x0003002e, -0xe1ca00f0, -0xe1ca01f8, -0x00000000, -0xe1a02000, -0xe1a03001, -0xe1ca00d8, -0xea000000, -0x00050010, -0x00000000, -0xe1a000a6, -0xe200007e, -0xe2400000, -0x000a0000, -0xe19710b0, -0xe2511000, -0x000a0000, -0xe18710b0, -0x3a000000, -0x00050092, -0x00000000, -0xe1aa00d9, -0x00000000, -0xe3710000, -0x000a0000, -0x114a00f8, -0x1a000000, -0x00070000, -0x00000000, -0xe086b10b, -0xe3710000, -0x000a0000, -0x124b6b80, -0x114a00f8, -0x00000000, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1a000a6, -0xe200007e, -0xe2400000, -0x000a0000, -0xe19710b0, -0xe2511000, -0x000a0000, -0xe18710b0, -0x3a000000, -0x00050092, -0x00000000, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe5170000, -0x000d8180, -0xe3a01000, -0xe790b10b, -0xe5071000, -0x000d8180, -0xe51ba000, -0x000d8180, -0xe5079000, -0x000d8180, -0xe5078000, -0x000d8180, -0xe12fff1a, -0x00000000, -0xe086b10b, -0xe24b6b80, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe1a000a6, -0xe200007e, -0xe2400000, -0x000a0000, -0xe19710b0, -0xe2511000, -0x000a0000, -0xe18710b0, -0x3a000000, -0x00050094, -0x00000000, -0xe5180000, -0x000d8180, -0xe5561000, -0x000d8180, -0xe5165000, -0x000d8180, -0xe15a0000, -0x8a000000, -0x00050020, -0x00000000, -0xe5d6c000, -0xe496e004, -0x00000000, -0x0006000c, -0xe15b0181, -0xe3e03000, -0x000a0000, -0x3a000000, -0x00050003, -0x00000000, -0xe1a0b82e, -0xea000000, -0x00070000, -0x00000000, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0x0006000d, -0xe18920fb, -0xe28bb008, -0xea000000, -0x0005000c, -0x00000000, -0xe7f001f0, -0x00000000, -0xe5180000, -0x000d8180, -0xe089300b, -0xe08aa00b, -0xe5832000, -0xe28b1000, -0x000a0000, -0xe5165000, -0x000d8180, -0xe15a0000, -0xe5831004, -0x2a000000, -0x00050020, -0xe556c000, -0x000d8180, -0xe1a0a009, -0xe1a0b003, -0xe35c0000, -0xe2839008, -0x0a000000, -0x00050003, -0xe3e02000, -0x000a0000, -0x0006000b, -0xe15a000b, -0x30ca00d8, -0x21a01002, -0x350a2004, -0x0006000c, -0xe25cc001, -0xe1e300f8, -0x1a000000, -0x0005000b, -0x0006000d, -0xe5d6c000, -0xe496e004, -0xe797c10c, -0xe004a2ae, -0xe1a0b82e, -0xe12fff1c, -0x00000000, -0xe5123000, -0x000d8180, -0x00000000, -0xe5173000, -0x000d8180, -0x00000000, -0xe08a100b, -0xe5180000, -0x000d8180, -0xe089b00b, -0xe5089000, -0x000d8180, -0xe1510000, -0xe508b000, -0x000d8180, -0x00000000, -0xe5121000, -0x000d8180, -0x00000000, -0xe3e02000, -0x000a0000, -0xe1a00008, -0x8a000000, -0x0005001f, -0xe5072000, -0x000d8180, -0xe12fff33, -0xe5189000, -0x000d8180, -0xe3e02000, -0x000a0000, -0xe5181000, -0x000d8180, -0xe1a0b180, -0xe5072000, -0x000d8180, -0xe5196004, -0xe041a00b, -0xea000000, -0x00050016, -0x00000000, -0x00010000 -}; - -enum { - GLOB_vm_returnp, - GLOB_cont_dispatch, - GLOB_vm_returnc, - GLOB_BC_RET_Z, - GLOB_vm_return, - GLOB_vm_leave_cp, - GLOB_vm_leave_unw, - GLOB_vm_unwind_c, - GLOB_vm_unwind_c_eh, - GLOB_vm_unwind_ff, - GLOB_vm_unwind_ff_eh, - GLOB_vm_growstack_c, - GLOB_vm_growstack_l, - GLOB_vm_resume, - GLOB_vm_pcall, - GLOB_vm_call, - GLOB_vm_call_dispatch, - GLOB_vmeta_call, - GLOB_vm_call_dispatch_f, - GLOB_vm_cpcall, - GLOB_cont_ffi_callback, - GLOB_vm_call_tail, - GLOB_cont_cat, - GLOB_BC_CAT_Z, - GLOB_cont_nop, - GLOB_vmeta_tgets1, - GLOB_vmeta_tgets, - GLOB_vmeta_tgetb, - GLOB_vmeta_tgetv, - GLOB_vmeta_tsets1, - GLOB_vmeta_tsets, - GLOB_vmeta_tsetb, - GLOB_vmeta_tsetv, - GLOB_vmeta_comp, - GLOB_vmeta_binop, - GLOB_cont_ra, - GLOB_cont_condt, - GLOB_cont_condf, - GLOB_vmeta_equal, - GLOB_vmeta_equal_cd, - GLOB_vmeta_arith_vn, - GLOB_vmeta_arith_nv, - GLOB_vmeta_unm, - GLOB_vmeta_arith_vv, - GLOB_vmeta_len, - GLOB_BC_LEN_Z, - GLOB_vmeta_callt, - GLOB_BC_CALLT2_Z, - GLOB_vmeta_for, - GLOB_ff_assert, - GLOB_fff_fallback, - GLOB_fff_res, - GLOB_ff_type, - GLOB_fff_restv, - GLOB_ff_getmetatable, - GLOB_ff_setmetatable, - GLOB_ff_rawget, - GLOB_ff_tonumber, - GLOB_ff_tostring, - GLOB_fff_gcstep, - GLOB_ff_next, - GLOB_ff_pairs, - GLOB_ff_ipairs_aux, - GLOB_ff_ipairs, - GLOB_ff_pcall, - GLOB_ff_xpcall, - GLOB_ff_coroutine_resume, - GLOB_ff_coroutine_wrap_aux, - GLOB_ff_coroutine_yield, - GLOB_ff_math_floor, - GLOB_vm_floor, - GLOB_ff_math_ceil, - GLOB_vm_ceil, - GLOB_ff_math_abs, - GLOB_fff_res1, - GLOB_ff_math_sqrt, - GLOB_ff_math_log, - GLOB_ff_math_log10, - GLOB_ff_math_exp, - GLOB_ff_math_sin, - GLOB_ff_math_cos, - GLOB_ff_math_tan, - GLOB_ff_math_asin, - GLOB_ff_math_acos, - GLOB_ff_math_atan, - GLOB_ff_math_sinh, - GLOB_ff_math_cosh, - GLOB_ff_math_tanh, - GLOB_ff_math_pow, - GLOB_ff_math_atan2, - GLOB_ff_math_fmod, - GLOB_ff_math_deg, - GLOB_ff_math_rad, - GLOB_ff_math_ldexp, - GLOB_ff_math_frexp, - GLOB_ff_math_modf, - GLOB_ff_math_min, - GLOB_ff_math_max, - GLOB_ff_string_len, - GLOB_ff_string_byte, - GLOB_ff_string_char, - GLOB_fff_newstr, - GLOB_ff_string_sub, - GLOB_fff_emptystr, - GLOB_ff_string_rep, - GLOB_ff_string_reverse, - GLOB_ff_string_lower, - GLOB_ff_string_upper, - GLOB_ff_table_getn, - GLOB_vm_tobit_fb, - GLOB_vm_tobit, - GLOB_ff_bit_tobit, - GLOB_ff_bit_band, - GLOB_ff_bit_bor, - GLOB_ff_bit_bxor, - GLOB_ff_bit_bswap, - GLOB_ff_bit_bnot, - GLOB_ff_bit_lshift, - GLOB_ff_bit_rshift, - GLOB_ff_bit_arshift, - GLOB_ff_bit_rol, - GLOB_ff_bit_ror, - GLOB_vm_record, - GLOB_vm_rethook, - GLOB_vm_inshook, - GLOB_cont_hook, - GLOB_vm_hotloop, - GLOB_vm_callhook, - GLOB_vm_hotcall, - GLOB_vm_exit_handler, - GLOB_vm_exit_interp, - GLOB_vm_trunc, - GLOB_vm_mod, - GLOB_vm_modi, - GLOB_vm_foldarith, - GLOB_vm_ffi_callback, - GLOB_vm_ffi_call, - GLOB_BC_ISEQN_Z, - GLOB_BC_ISNEN_Z, - GLOB_BC_TGETS_Z, - GLOB_BC_TSETS_Z, - GLOB_BC_CALL_Z, - GLOB_BC_CALLT1_Z, - GLOB_BC_RETM_Z, - GLOB_BC_RETV2_Z, - GLOB_BC_RETV1_Z, - GLOB__MAX -}; -static const char *const globnames[] = { - "vm_returnp", - "cont_dispatch", - "vm_returnc", - "BC_RET_Z", - "vm_return", - "vm_leave_cp", - "vm_leave_unw", - "vm_unwind_c", - "vm_unwind_c_eh", - "vm_unwind_ff", - "vm_unwind_ff_eh", - "vm_growstack_c", - "vm_growstack_l", - "vm_resume", - "vm_pcall", - "vm_call", - "vm_call_dispatch", - "vmeta_call", - "vm_call_dispatch_f", - "vm_cpcall", - "cont_ffi_callback", - "vm_call_tail", - "cont_cat", - "BC_CAT_Z", - "cont_nop", - "vmeta_tgets1", - "vmeta_tgets", - "vmeta_tgetb", - "vmeta_tgetv", - "vmeta_tsets1", - "vmeta_tsets", - "vmeta_tsetb", - "vmeta_tsetv", - "vmeta_comp", - "vmeta_binop", - "cont_ra", - "cont_condt", - "cont_condf", - "vmeta_equal", - "vmeta_equal_cd", - "vmeta_arith_vn", - "vmeta_arith_nv", - "vmeta_unm", - "vmeta_arith_vv", - "vmeta_len", - "BC_LEN_Z", - "vmeta_callt", - "BC_CALLT2_Z", - "vmeta_for", - "ff_assert", - "fff_fallback", - "fff_res", - "ff_type", - "fff_restv", - "ff_getmetatable", - "ff_setmetatable", - "ff_rawget", - "ff_tonumber", - "ff_tostring", - "fff_gcstep", - "ff_next", - "ff_pairs", - "ff_ipairs_aux", - "ff_ipairs", - "ff_pcall", - "ff_xpcall", - "ff_coroutine_resume", - "ff_coroutine_wrap_aux", - "ff_coroutine_yield", - "ff_math_floor", - "vm_floor", - "ff_math_ceil", - "vm_ceil", - "ff_math_abs", - "fff_res1", - "ff_math_sqrt", - "ff_math_log", - "ff_math_log10", - "ff_math_exp", - "ff_math_sin", - "ff_math_cos", - "ff_math_tan", - "ff_math_asin", - "ff_math_acos", - "ff_math_atan", - "ff_math_sinh", - "ff_math_cosh", - "ff_math_tanh", - "ff_math_pow", - "ff_math_atan2", - "ff_math_fmod", - "ff_math_deg", - "ff_math_rad", - "ff_math_ldexp", - "ff_math_frexp", - "ff_math_modf", - "ff_math_min", - "ff_math_max", - "ff_string_len", - "ff_string_byte", - "ff_string_char", - "fff_newstr", - "ff_string_sub", - "fff_emptystr", - "ff_string_rep", - "ff_string_reverse", - "ff_string_lower", - "ff_string_upper", - "ff_table_getn", - "vm_tobit_fb", - "vm_tobit", - "ff_bit_tobit", - "ff_bit_band", - "ff_bit_bor", - "ff_bit_bxor", - "ff_bit_bswap", - "ff_bit_bnot", - "ff_bit_lshift", - "ff_bit_rshift", - "ff_bit_arshift", - "ff_bit_rol", - "ff_bit_ror", - "vm_record", - "vm_rethook", - "vm_inshook", - "cont_hook", - "vm_hotloop", - "vm_callhook", - "vm_hotcall", - "vm_exit_handler", - "vm_exit_interp", - "vm_trunc", - "vm_mod", - "vm_modi", - "vm_foldarith", - "vm_ffi_callback", - "vm_ffi_call", - "BC_ISEQN_Z", - "BC_ISNEN_Z", - "BC_TGETS_Z", - "BC_TSETS_Z", - "BC_CALL_Z", - "BC_CALLT1_Z", - "BC_RETM_Z", - "BC_RETV2_Z", - "BC_RETV1_Z", - (const char *)0 -}; -static const char *const extnames[] = { - "lj_state_growstack", - "lj_meta_tget", - "lj_meta_tset", - "lj_meta_comp", - "lj_meta_equal", - "lj_meta_equal_cd", - "lj_meta_arith", - "lj_meta_len", - "lj_meta_call", - "lj_meta_for", - "lj_tab_get", - "lj_str_fromnumber", - "lj_tab_next", - "lj_tab_getinth", - "lj_ffh_coroutine_wrap_err", - "sqrt", - "log", - "log10", - "exp", - "sin", - "cos", - "tan", - "asin", - "acos", - "atan", - "sinh", - "cosh", - "tanh", - "pow", - "atan2", - "fmod", - "__aeabi_dmul", - "ldexp", - "frexp", - "modf", - "__aeabi_i2d", - "__aeabi_cdcmple", - "lj_str_new", - "lj_tab_len", - "lj_gc_step", - "lj_dispatch_ins", - "lj_trace_hot", - "lj_dispatch_call", - "lj_trace_exit", - "lj_err_throw", - "__aeabi_ddiv", - "__aeabi_dadd", - "__aeabi_dsub", - "lj_ccallback_enter", - "lj_ccallback_leave", - "__aeabi_cdcmpeq", - "lj_meta_cat", - "lj_gc_barrieruv", - "lj_func_closeuv", - "lj_func_newL_gc", - "lj_tab_new", - "lj_tab_dup", - "lj_gc_step_fixtop", - "lj_tab_newkey", - "lj_tab_reasize", - (const char *)0 -}; -#define Dt1(_V) (int)(ptrdiff_t)&(((lua_State *)0)_V) -#define Dt2(_V) (int)(ptrdiff_t)&(((global_State *)0)_V) -#define Dt3(_V) (int)(ptrdiff_t)&(((TValue *)0)_V) -#define Dt4(_V) (int)(ptrdiff_t)&(((GCobj *)0)_V) -#define Dt5(_V) (int)(ptrdiff_t)&(((GCstr *)0)_V) -#define Dt6(_V) (int)(ptrdiff_t)&(((GCtab *)0)_V) -#define Dt7(_V) (int)(ptrdiff_t)&(((GCfuncL *)0)_V) -#define Dt8(_V) (int)(ptrdiff_t)&(((GCfuncC *)0)_V) -#define Dt9(_V) (int)(ptrdiff_t)&(((GCproto *)0)_V) -#define DtA(_V) (int)(ptrdiff_t)&(((GCupval *)0)_V) -#define DtB(_V) (int)(ptrdiff_t)&(((Node *)0)_V) -#define DtC(_V) (int)(ptrdiff_t)&(((int *)0)_V) -#define DtD(_V) (int)(ptrdiff_t)&(((GCtrace *)0)_V) -#define field_pc pc -#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) -#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) -#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) - -#if !LJ_DUALNUM -#error "Only dual-number mode supported for ARM target" -#endif - -/* Generate subroutines used by opcodes and other parts of the VM. */ -/* The .code_sub section should be last to help static branch prediction. */ -static void build_subroutines(BuildCtx *ctx) -{ - dasm_put(Dst, 0); - dasm_put(Dst, 1, FRAME_P, ~LJ_TTRUE, FRAME_TYPE, FRAME_TYPEP, FRAME_C, Dt1(->base), LJ_VMST_C, DISPATCH_GL(vmstate), Dt1(->top)); - dasm_put(Dst, 54, Dt1(->cframe), Dt1(->maxstack), ~LJ_TNIL, Dt1(->top), Dt1(->top), LJ_VMST_C, Dt1(->glref), Dt2(->vmstate)); - dasm_put(Dst, 108, ~CFRAME_RAWMASK, Dt1(->base), Dt1(->glref), ~LJ_TFALSE, GG_G2DISP, LJ_VMST_INTERP, DISPATCH_GL(vmstate), LUA_MINSTACK, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->field_pc), Dt1(->glref)); - dasm_put(Dst, 173, GG_G2DISP, FRAME_CP, CFRAME_RESUME, Dt1(->status), Dt1(->cframe), Dt1(->base), Dt1(->top), Dt1(->status), LJ_VMST_INTERP, FRAME_TYPE, DISPATCH_GL(vmstate), FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe)); - dasm_put(Dst, 238, Dt1(->glref), GG_G2DISP, Dt1(->base), Dt1(->top), LJ_VMST_INTERP, DISPATCH_GL(vmstate), -LJ_TFUNC, Dt7(->field_pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP); - dasm_put(Dst, 307); -#if LJ_HASFFI - dasm_put(Dst, 312); -#endif - dasm_put(Dst, 314, Dt7(->field_pc), ~LJ_TNIL); -#if LJ_HASFFI - dasm_put(Dst, 322); -#endif - dasm_put(Dst, 325, PC2PROTO(k)); -#if LJ_HASFFI - dasm_put(Dst, 329); -#endif - dasm_put(Dst, 338, Dt1(->base), -DISPATCH_GL(tmptv), ~LJ_TTAB, ~LJ_TSTR, ~LJ_TISNUM, Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 395, Dt1(->base)); - } - dasm_put(Dst, 398, FRAME_CONT, Dt1(->top), -DISPATCH_GL(tmptv), ~LJ_TTAB, ~LJ_TSTR, ~LJ_TISNUM, Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 460, Dt1(->base)); - } - dasm_put(Dst, 463, FRAME_CONT, Dt1(->top), Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 499, Dt1(->base)); - } - dasm_put(Dst, 502, ~LJ_TTRUE, -LJ_TFALSE, Dt1(->base)); -#if LJ_HASFFI - dasm_put(Dst, 549, Dt1(->base)); -#endif - dasm_put(Dst, 560, Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 597, Dt1(->base)); - } - dasm_put(Dst, 600, FRAME_CONT, Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 621, Dt1(->base)); - } -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 624); -#else - dasm_put(Dst, 631); -#endif - dasm_put(Dst, 634, Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 642); - } - dasm_put(Dst, 644); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 647); - } - dasm_put(Dst, 649, Dt7(->field_pc), Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 670, Dt1(->base)); - } - dasm_put(Dst, 673, Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 687, Dt1(->base)); - } -#if LJ_HASJIT - dasm_put(Dst, 690); -#endif - dasm_put(Dst, 692); -#if LJ_HASJIT - dasm_put(Dst, 694, BC_JFORI); -#endif - dasm_put(Dst, 697); -#if LJ_HASJIT - dasm_put(Dst, 700, BC_JFORI); -#endif - dasm_put(Dst, 703, BC_FORI, -LJ_TTRUE, -LJ_TISNUM, ~LJ_TISNUM, (int)(offsetof(GCfuncC, upvalue)>>3)-1, -LJ_TTAB, -LJ_TUDATA, Dt6(->metatable)); - dasm_put(Dst, 760, ~LJ_TNIL, DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]), Dt6(->hmask), Dt5(->hash), Dt6(->node), DtB(->key), DtB(->val), DtB(->next), -LJ_TSTR, ~LJ_TTAB, -LJ_TNIL, -LJ_TISNUM); - dasm_put(Dst, 808, ~LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT]), -LJ_TTAB, Dt6(->metatable), -LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), DISPATCH_GL(gc.grayagain), LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), -LJ_TTAB); - dasm_put(Dst, 860); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 865); - } - dasm_put(Dst, 867); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 870); - } - dasm_put(Dst, 872, -LJ_TISNUM, -LJ_TSTR, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base), -LJ_TISNUM, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), ~LJ_TSTR); - dasm_put(Dst, 924, ~LJ_TNIL, -LJ_TTAB, Dt1(->base), Dt1(->top)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 947, Dt1(->base)); - } - dasm_put(Dst, 950, ~LJ_TNIL, (2+1)*8, -LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 973, Dt6(->metatable)); -#endif - dasm_put(Dst, 976, Dt8(->upvalue[0])); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 980); -#endif - dasm_put(Dst, 984, ~LJ_TNIL, (3+1)*8, -LJ_TTAB, -LJ_TISNUM, Dt6(->asize), Dt6(->array), (0+1)*8, -LJ_TNIL, (2+1)*8, Dt6(->hmask)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1034); - } - dasm_put(Dst, 1036); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1039); - } - dasm_put(Dst, 1041, -LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1057, Dt6(->metatable)); -#endif - dasm_put(Dst, 1060, Dt8(->upvalue[0])); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1064); -#endif - dasm_put(Dst, 1068, ~LJ_TISNUM, (3+1)*8, DISPATCH_GL(hookmask), HOOK_ACTIVE, 8+FRAME_PCALL, 8+FRAME_PCALLH, DISPATCH_GL(hookmask), -LJ_TFUNC, HOOK_ACTIVE, 16+FRAME_PCALL, 16+FRAME_PCALLH, -LJ_TTHREAD); - dasm_put(Dst, 1127, Dt1(->base), Dt1(->top), Dt1(->status), Dt1(->base), Dt1(->maxstack), Dt1(->cframe), LUA_YIELD, Dt1(->top), Dt1(->top), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate), LUA_YIELD); - dasm_put(Dst, 1186, Dt1(->base), Dt1(->maxstack), Dt1(->top), ~LJ_TTRUE, FRAME_TYPE, ~LJ_TFALSE, (2+1)*8, Dt1(->top)); - dasm_put(Dst, 1246, Dt8(->upvalue[0].gcr), Dt1(->base), Dt1(->top), Dt1(->status), Dt1(->base), Dt1(->maxstack), Dt1(->cframe), LUA_YIELD, Dt1(->top), Dt1(->top), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate), LUA_YIELD); - dasm_put(Dst, 1302, Dt1(->base), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, Dt1(->cframe), Dt1(->base), CFRAME_RESUME, Dt1(->top)); - dasm_put(Dst, 1361, LUA_YIELD, Dt1(->cframe), Dt1(->status), -LJ_TISNUM, ~LJ_TISNUM, ~LJ_TISNUM); - dasm_put(Dst, 1429, -LJ_TISNUM, ~LJ_TISNUM, ~LJ_TISNUM); - dasm_put(Dst, 1493, -LJ_TISNUM, (1+1)*8, FRAME_TYPE, ~LJ_TNIL); - dasm_put(Dst, 1555, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1564); - } - dasm_put(Dst, 1566); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1569); - } - dasm_put(Dst, 1571, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1583); - } - dasm_put(Dst, 1585); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1588); - } - dasm_put(Dst, 1590, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1602); - } - dasm_put(Dst, 1604); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1607); - } - dasm_put(Dst, 1609, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1621); - } - dasm_put(Dst, 1623); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1626); - } - dasm_put(Dst, 1628, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1640); - } - dasm_put(Dst, 1642); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1645); - } - dasm_put(Dst, 1647, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1659); - } - dasm_put(Dst, 1661); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1664); - } - dasm_put(Dst, 1666, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1678); - } - dasm_put(Dst, 1680); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1683); - } - dasm_put(Dst, 1685, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1697); - } - dasm_put(Dst, 1699); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1702); - } - dasm_put(Dst, 1704, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1716); - } - dasm_put(Dst, 1718); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1721); - } - dasm_put(Dst, 1723, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1735); - } - dasm_put(Dst, 1737); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1740); - } - dasm_put(Dst, 1742, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1754); - } - dasm_put(Dst, 1756); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1759); - } - dasm_put(Dst, 1761, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1773); - } - dasm_put(Dst, 1775); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1778); - } - dasm_put(Dst, 1780, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1792); - } - dasm_put(Dst, 1794); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1797); - } - dasm_put(Dst, 1799, -LJ_TISNUM, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1814); - } - dasm_put(Dst, 1816); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1819); - } - dasm_put(Dst, 1821, -LJ_TISNUM, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1836); - } - dasm_put(Dst, 1838); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1841); - } - dasm_put(Dst, 1843, -LJ_TISNUM, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1858); - } - dasm_put(Dst, 1860); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1863); - } - dasm_put(Dst, 1865, -LJ_TISNUM, Dt8(->upvalue[0]), -LJ_TISNUM, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1898); - } - dasm_put(Dst, 1900); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1903); - } - dasm_put(Dst, 1905, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1918); - } - dasm_put(Dst, 1920); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1923); - } - dasm_put(Dst, 1925, ~LJ_TISNUM, (2+1)*8, -LJ_TISNUM); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1947); - } - dasm_put(Dst, 1949); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 1952); - } - dasm_put(Dst, 1954, (2+1)*8, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); - dasm_put(Dst, 2005, -LJ_TISNUM, -LJ_TISNUM); - dasm_put(Dst, 2059, -LJ_TISNUM, -LJ_TSTR, Dt5(->len), ~LJ_TISNUM, -LJ_TSTR, Dt5(->len), Dt5([1])); - dasm_put(Dst, 2113, ~LJ_TISNUM, (0+1)*8, (1+1)*8, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TISNUM, Dt1(->base), Dt1(->base), ~LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2172, -LJ_TISNUM, -LJ_TSTR, Dt5(->len), -LJ_TISNUM, sizeof(GCstr)-1, -DISPATCH_GL(strempty), ~LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, -LJ_TISNUM, Dt5(->len)); - dasm_put(Dst, 2234, DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), Dt5([1]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr)); - dasm_put(Dst, 2287, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2347, -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr), -LJ_TTAB); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 2385); - } - dasm_put(Dst, 2387); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 2390); - } - dasm_put(Dst, 2392, ~LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); - dasm_put(Dst, 2463, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM); - dasm_put(Dst, 2523, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM); - dasm_put(Dst, 2579, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM); - dasm_put(Dst, 2636, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, Dt1(->maxstack), Dt1(->top), Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->base), Dt1(->top), Dt7(->field_pc), FRAME_TYPE, FRAME_TYPEP); - dasm_put(Dst, 2699, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base)); -#if LJ_HASJIT - dasm_put(Dst, 2734, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); -#endif - dasm_put(Dst, 2754, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 2800, GG_DISP2STATIC); -#if LJ_HASJIT - dasm_put(Dst, 2816, -GG_DISP2J, Dt7(->field_pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), Dt1(->top)); -#endif - dasm_put(Dst, 2837); -#if LJ_HASJIT - dasm_put(Dst, 2840); -#endif - dasm_put(Dst, 2843); -#if LJ_HASJIT - dasm_put(Dst, 2845); -#endif - dasm_put(Dst, 2848, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 2871, LJ_VMST_EXIT, DISPATCH_GL(vmstate), DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(exitno), DISPATCH_J(L), Dt1(->base), DISPATCH_GL(jit_L), -GG_DISP2J, Dt1(->cframe), Dt1(->base), ~CFRAME_RAWMASK); -#endif - dasm_put(Dst, 2919); -#if LJ_HASJIT - dasm_put(Dst, 2921, Dt7(->field_pc), DISPATCH_GL(jit_L), LJ_VMST_INTERP, PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF); -#endif - dasm_put(Dst, 2958); -#if LJ_HASJIT - dasm_put(Dst, 3034); -#endif - dasm_put(Dst, 3048); - { - int i; - for (i = 31; i >= 0; i--) { - dasm_put(Dst, 3084, i, i); - } - } - dasm_put(Dst, 3089); -#if LJ_HASJIT - dasm_put(Dst, 3118); -#else - dasm_put(Dst, 3143); -#endif - dasm_put(Dst, 3145); -#if LJ_HASFFI -#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) - dasm_put(Dst, 3147, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.gpr[0]), DtE(->cb.gpr[2]), CFRAME_SIZE, DtE(->cb.stack), DtE(->cb.slot), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate), Dt7(->field_pc)); -#endif - dasm_put(Dst, 3190); -#if LJ_HASFFI - dasm_put(Dst, 3192, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0])); -#endif - dasm_put(Dst, 3209); -#if LJ_HASFFI -#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 3211, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->gpr[0]), DtF(->gpr[1])); -#endif -} - -/* Generate the code for a single instruction. */ -static void build_ins(BuildCtx *ctx, BCOp op, int defop) -{ - int vk = 0; - dasm_put(Dst, 3249, defop); - - switch (op) { - - /* -- Comparison ops ---------------------------------------------------- */ - - /* Remember: all ops branch for a true comparison, fall through otherwise. */ - - case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - dasm_put(Dst, 3251, -LJ_TISNUM, -LJ_TISNUM); - if (op == BC_ISLT) { - dasm_put(Dst, 3267); - } else if (op == BC_ISGE) { - dasm_put(Dst, 3269); - } else if (op == BC_ISLE) { - dasm_put(Dst, 3271); - } else { - dasm_put(Dst, 3273); - } - dasm_put(Dst, 3275, -LJ_TISNUM); - if (op == BC_ISLT) { - dasm_put(Dst, 3311); - } else if (op == BC_ISGE) { - dasm_put(Dst, 3313); - } else if (op == BC_ISLE) { - dasm_put(Dst, 3315); - } else { - dasm_put(Dst, 3317); - } - dasm_put(Dst, 3319); - break; - - case BC_ISEQV: case BC_ISNEV: - vk = op == BC_ISEQV; - dasm_put(Dst, 3322, -LJ_TISNUM, -LJ_TISNUM); - if (vk) { - dasm_put(Dst, 3333); - } else { - dasm_put(Dst, 3336); - } - if (LJ_HASFFI) { - dasm_put(Dst, 3339, -LJ_TCDATA, -LJ_TCDATA); - } - dasm_put(Dst, 3346, -LJ_TISPRI); - if (vk) { - dasm_put(Dst, 3355, -LJ_TISTABUD); - } else { - dasm_put(Dst, 3372, -LJ_TISTABUD); - } - dasm_put(Dst, 3379, Dt6(->metatable)); - if (vk) { - dasm_put(Dst, 3383); - } else { - dasm_put(Dst, 3386); - } - dasm_put(Dst, 3389, Dt6(->nomm), 1-vk, 1<len), ~LJ_TISNUM, -LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 3647, Dt6(->metatable)); -#endif - dasm_put(Dst, 3654); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 3656); - } - dasm_put(Dst, 3658); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 3661); - } - dasm_put(Dst, 3663); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 3666, Dt6(->nomm), 1<base), Dt1(->base)); - break; - - /* -- Constant ops ------------------------------------------------------ */ - - case BC_KSTR: - dasm_put(Dst, 4196, ~LJ_TSTR); - break; - case BC_KCDATA: -#if LJ_HASFFI - dasm_put(Dst, 4208, ~LJ_TCDATA); -#endif - break; - case BC_KSHORT: - dasm_put(Dst, 4220, ~LJ_TISNUM); - break; - case BC_KNUM: - dasm_put(Dst, 4231); - break; - case BC_KPRI: - dasm_put(Dst, 4241); - break; - case BC_KNIL: - dasm_put(Dst, 4251, ~LJ_TNIL); - break; - - /* -- Upvalue and function ops ------------------------------------------ */ - - case BC_UGET: - dasm_put(Dst, 4270, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETV: - dasm_put(Dst, 4286, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->closed), DtA(->v), LJ_GC_BLACK, -LJ_TISGCV, -(LJ_TISNUM - LJ_TISGCV), Dt4(->gch.marked), -GG_DISP2G, LJ_GC_WHITES); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 4326); - } else { - dasm_put(Dst, 4333); - } - dasm_put(Dst, 4336); - break; - case BC_USETS: - dasm_put(Dst, 4339, offsetof(GCfuncL, uvptr), ~LJ_TSTR, DtA(->marked), DtA(->v), DtA(->closed), LJ_GC_BLACK, Dt5(->marked), LJ_GC_WHITES, -GG_DISP2G); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 4375); - } else { - dasm_put(Dst, 4382); - } - dasm_put(Dst, 4385); - break; - case BC_USETN: - dasm_put(Dst, 4388, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETP: - dasm_put(Dst, 4405, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - - case BC_UCLO: - dasm_put(Dst, 4421, Dt1(->openupval), Dt1(->base), Dt1(->base)); - break; - - case BC_FNEW: - dasm_put(Dst, 4444, Dt1(->base), Dt1(->base), ~LJ_TFUNC); - break; - - /* -- Table ops --------------------------------------------------------- */ - - case BC_TNEW: - case BC_TDUP: - if (op == BC_TDUP) { - dasm_put(Dst, 4465); - } - dasm_put(Dst, 4467, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); - if (op == BC_TNEW) { - dasm_put(Dst, 4480); - } else { - dasm_put(Dst, 4489); - } - dasm_put(Dst, 4493, Dt1(->base), ~LJ_TTAB); - break; - - case BC_GGET: - case BC_GSET: - dasm_put(Dst, 4511, Dt7(->env)); - if (op == BC_GGET) { - dasm_put(Dst, 4517); - } else { - dasm_put(Dst, 4520); - } - break; - - case BC_TGETV: - dasm_put(Dst, 4523, -LJ_TTAB, -LJ_TISNUM, Dt6(->array), Dt6(->asize), -LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), Dt6(->node), DtB(->key), DtB(->val), DtB(->next), -LJ_TSTR, -LJ_TNIL, Dt6(->metatable), ~LJ_TNIL, Dt6(->nomm)); - dasm_put(Dst, 4640, 1<asize), Dt6(->array), -LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<array), Dt6(->asize), -LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist), -LJ_TSTR); - break; - case BC_TSETS: - dasm_put(Dst, 4771, -LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), DtB(->key), DtB(->val.it), DtB(->next), -LJ_TSTR, Dt6(->marked), -LJ_TNIL, LJ_GC_BLACK, DtB(->val)); - dasm_put(Dst, 4829, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt1(->base), Dt6(->nomm), 1<base), DISPATCH_GL(gc.grayagain), LJ_GC_BLACK); - dasm_put(Dst, 4882, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); - break; - case BC_TSETB: - dasm_put(Dst, 4891, -LJ_TTAB, Dt6(->asize), Dt6(->array), -LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); - break; - - case BC_TSETM: - dasm_put(Dst, 4958, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt1(->base)); - if (LJ_TARGET_IOS) { - dasm_put(Dst, 5003, Dt1(->base)); - } - dasm_put(Dst, 5006, DISPATCH_GL(gc.grayagain), LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); - break; - - /* -- Calls and vararg handling ----------------------------------------- */ - - case BC_CALLM: - dasm_put(Dst, 5022); - break; - case BC_CALL: - dasm_put(Dst, 5028, -LJ_TFUNC, Dt7(->field_pc)); - break; - - case BC_CALLMT: - dasm_put(Dst, 5048); - break; - case BC_CALLT: - dasm_put(Dst, 5053, -LJ_TFUNC, Dt7(->ffid), FRAME_TYPE, Dt7(->field_pc), Dt7(->field_pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP); - dasm_put(Dst, 5114, FRAME_TYPE); - break; - - case BC_ITERC: - dasm_put(Dst, 5125, -LJ_TFUNC, Dt7(->field_pc)); - break; - - case BC_ITERN: -#if LJ_HASJIT -#endif - dasm_put(Dst, 5149, Dt6(->asize), Dt6(->array), -LJ_TNIL, ~LJ_TISNUM, Dt6(->hmask), Dt6(->node), DtB(->val), -LJ_TNIL, DtB(->key)); - break; - - case BC_ISNEXT: - dasm_put(Dst, 5214, -LJ_TFUNC, Dt8(->ffid), -LJ_TTAB, -LJ_TNIL, FF_next_N, BC_JMP, BC_ITERC); - break; - - case BC_VARG: - dasm_put(Dst, 5253, FRAME_VARG, ~LJ_TNIL, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->base)); - break; - - /* -- Returns ----------------------------------------------------------- */ - - case BC_RETM: - dasm_put(Dst, 5325); - break; - - case BC_RET: - dasm_put(Dst, 5332, FRAME_TYPE, FRAME_VARG, Dt7(->field_pc), PC2PROTO(k), ~LJ_TNIL, FRAME_TYPEP); - break; - - case BC_RET0: case BC_RET1: - dasm_put(Dst, 5397, FRAME_TYPE, FRAME_VARG); - if (op == BC_RET1) { - dasm_put(Dst, 5408); - } - dasm_put(Dst, 5410); - if (op == BC_RET1) { - dasm_put(Dst, 5413); - } - dasm_put(Dst, 5415, Dt7(->field_pc), PC2PROTO(k), ~LJ_TNIL); - break; - - /* -- Loops and branches ------------------------------------------------ */ - - - case BC_FORL: -#if LJ_HASJIT - dasm_put(Dst, 5441, -GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JFORI: - case BC_JFORL: -#if !LJ_HASJIT - break; -#endif - case BC_FORI: - case BC_IFORL: - vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 5452); - if (op != BC_JFORL) { - dasm_put(Dst, 5454); - } - if (!vk) { - dasm_put(Dst, 5456, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); - } else { - dasm_put(Dst, 5474, -LJ_TISNUM); - if (op == BC_IFORL) { - dasm_put(Dst, 5482); - } else { - dasm_put(Dst, 5484); - } - dasm_put(Dst, 5487); - } - dasm_put(Dst, 5492); - if (op == BC_FORI) { - dasm_put(Dst, 5494); - } else if (op == BC_JFORI) { - dasm_put(Dst, 5496); - } else if (op == BC_IFORL) { - dasm_put(Dst, 5499); - } - if (vk) { - dasm_put(Dst, 5501); - } - dasm_put(Dst, 5503); - if (op == BC_JFORI || op == BC_JFORL) { - dasm_put(Dst, 5508, BC_JLOOP); - } - dasm_put(Dst, 5511); - if (!vk) { - dasm_put(Dst, 5518); - } else { - dasm_put(Dst, 5520); - } - dasm_put(Dst, 5522); - if (!vk) { - dasm_put(Dst, 5526, -LJ_TISNUM, -LJ_TISNUM); - } else { - dasm_put(Dst, 5538); - } - dasm_put(Dst, 5547); - if (op == BC_FORI) { - dasm_put(Dst, 5551); - } else if (op == BC_JFORI) { - dasm_put(Dst, 5553, BC_JLOOP); - } else if (op == BC_IFORL) { - dasm_put(Dst, 5558); - } else { - dasm_put(Dst, 5560, BC_JLOOP); - } - dasm_put(Dst, 5563); - if (vk) { - dasm_put(Dst, 5569); - } - dasm_put(Dst, 5574); - break; - - case BC_ITERL: -#if LJ_HASJIT - dasm_put(Dst, 5580, -GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JITERL: -#if !LJ_HASJIT - break; -#endif - case BC_IITERL: - dasm_put(Dst, 5591); - if (op == BC_JITERL) { - dasm_put(Dst, 5593, -LJ_TNIL, BC_JLOOP); - } else { - dasm_put(Dst, 5599, -LJ_TNIL); - } - dasm_put(Dst, 5605); - break; - - case BC_LOOP: -#if LJ_HASJIT - dasm_put(Dst, 5612, -GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_ILOOP: - dasm_put(Dst, 5623); - break; - - case BC_JLOOP: -#if LJ_HASJIT - dasm_put(Dst, 5630, DISPATCH_J(trace), DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); -#endif - break; - - case BC_JMP: - dasm_put(Dst, 5644); - break; - - /* -- Function headers -------------------------------------------------- */ - - case BC_FUNCF: -#if LJ_HASJIT - dasm_put(Dst, 5653, -GG_DISP2HOT, HOTCOUNT_CALL); -#endif - case BC_FUNCV: /* NYI: compiled vararg functions. */ - break; - - case BC_JFUNCF: -#if !LJ_HASJIT - break; -#endif - case BC_IFUNCF: - dasm_put(Dst, 5664, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k)); - if (op != BC_JFUNCF) { - dasm_put(Dst, 5674); - } - dasm_put(Dst, 5677, ~LJ_TNIL); - if (op == BC_JFUNCF) { - dasm_put(Dst, 5684, BC_JLOOP); - } else { - dasm_put(Dst, 5688); - } - dasm_put(Dst, 5693); - break; - - case BC_JFUNCV: -#if !LJ_HASJIT - break; -#endif - dasm_put(Dst, 5699); - break; /* NYI: compiled vararg functions. */ - - case BC_IFUNCV: - dasm_put(Dst, 5701, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), ~LJ_TNIL); - break; - - case BC_FUNCC: - case BC_FUNCCW: - if (op == BC_FUNCC) { - dasm_put(Dst, 5742, Dt8(->f)); - } else { - dasm_put(Dst, 5745, DISPATCH_GL(wrapf)); - } - dasm_put(Dst, 5748, Dt1(->maxstack), Dt1(->base), Dt1(->top)); - if (op == BC_FUNCCW) { - dasm_put(Dst, 5758, Dt8(->f)); - } - dasm_put(Dst, 5761, LJ_VMST_C, DISPATCH_GL(vmstate), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate)); - break; - - /* ---------------------------------------------------------------------- */ - - default: - fprintf(stderr, "Error: undefined opcode BC_%s\n", bc_names[op]); - exit(2); - break; - } -} - -static int build_backend(BuildCtx *ctx) -{ - int op; - - dasm_growpc(Dst, BC__MAX); - - build_subroutines(ctx); - - dasm_put(Dst, 5783); - for (op = 0; op < BC__MAX; op++) - build_ins(ctx, (BCOp)op, op); - - return BC__MAX; -} - -/* Emit pseudo frame-info for all assembler functions. */ -static void emit_asm_debug(BuildCtx *ctx) -{ - int fcofs = (int)((uint8_t *)ctx->glob[GLOB_vm_ffi_call] - ctx->code); - int i; - switch (ctx->mode) { - case BUILD_elfasm: - fprintf(ctx->fp, "\t.section .debug_frame,\"\",%%progbits\n"); - fprintf(ctx->fp, - ".Lframe0:\n" - "\t.long .LECIE0-.LSCIE0\n" - ".LSCIE0:\n" - "\t.long 0xffffffff\n" - "\t.byte 0x1\n" - "\t.string \"\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 0xe\n" /* Return address is in lr. */ - "\t.byte 0xc\n\t.uleb128 0xd\n\t.uleb128 0\n" /* def_cfa sp */ - "\t.align 2\n" - ".LECIE0:\n\n"); - fprintf(ctx->fp, - ".LSFDE0:\n" - "\t.long .LEFDE0-.LASFDE0\n" - ".LASFDE0:\n" - "\t.long .Lframe0\n" - "\t.long .Lbegin\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ - "\t.byte 0x8e\n\t.uleb128 1\n", /* offset lr */ - fcofs, CFRAME_SIZE); - for (i = 11; i >= 4; i--) /* offset r4-r11 */ - fprintf(ctx->fp, "\t.byte %d\n\t.uleb128 %d\n", 0x80+i, 2+(11-i)); - fprintf(ctx->fp, - "\t.align 2\n" - ".LEFDE0:\n\n"); -#if LJ_HASFFI - fprintf(ctx->fp, - ".LSFDE1:\n" - "\t.long .LEFDE1-.LASFDE1\n" - ".LASFDE1:\n" - "\t.long .Lframe0\n" - "\t.long lj_vm_ffi_call\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 16\n" /* def_cfa_offset */ - "\t.byte 0x8e\n\t.uleb128 1\n" /* offset lr */ - "\t.byte 0x8b\n\t.uleb128 2\n" /* offset r11 */ - "\t.byte 0x85\n\t.uleb128 3\n" /* offset r5 */ - "\t.byte 0x84\n\t.uleb128 4\n" /* offset r4 */ - "\t.byte 0xd\n\t.uleb128 0xb\n" /* def_cfa_register r11 */ - "\t.align 2\n" - ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); -#endif - break; - default: - break; - } -} - diff --git a/src/buildvm_mips.h b/src/buildvm_mips.h deleted file mode 100644 index bab93343..00000000 --- a/src/buildvm_mips.h +++ /dev/null @@ -1,7495 +0,0 @@ -/* -** This file has been pre-processed with DynASM. -** http://luajit.org/dynasm.html -** DynASM version 1.3.0, DynASM mips version 1.3.0 -** DO NOT EDIT! The original file is in "buildvm_mips.dasc". -*/ - -#if DASM_VERSION != 10300 -#error "Version mismatch between DynASM and included encoding engine" -#endif - -#define DASM_SECTION_CODE_OP 0 -#define DASM_SECTION_CODE_SUB 1 -#define DASM_MAXSECTION 2 -static const unsigned int build_actionlist[6324] = { -0xff010001, -0xff060014, -0x32410000, -0xff090200, -0x10200000, -0xff050815, -0x240d0000, -0xff098200, -0x8dd20000, -0xff098200, -0x01c08021, -0xaeed0000, -0xff098200, -0x26f7fff8, -0xff060016, -0x324c0000, -0xff090200, -0x254a0008, -0x11800000, -0xff050817, -0x0140a821, -0xff060018, -0x240efff8, -0x39810000, -0xff090200, -0x024e7024, -0x14200000, -0xff050814, -0x020e7023, -0x254dfff8, -0xae8e0000, -0xff098200, -0x240c0000, -0xff098200, -0x8fae0078, -0x2610fff8, -0xae6c0000, -0xff098200, -0x11a00000, -0xff050802, -0x000e70c0, -0xff06000b, -0x25adfff8, -0xd6e00000, -0x26f70008, -0xf6000000, -0x15a00000, -0xff05080b, -0x26100008, -0xff06000c, -0x15ca0000, -0xff050806, -0xff06000d, -0xae900000, -0xff098200, -0xff060019, -0xff000000, -0x8fac0074, -0x00001021, -0xae8c0000, -0xff098200, -0xff06001a, -0x8fbf0000, -0xff098200, -0x8fbe0000, -0xff098200, -0xd7be0000, -0xff098200, -0x8fb70000, -0xff098200, -0x8fb60000, -0xff098200, -0xd7bc0000, -0xff098200, -0x8fb50000, -0xff098200, -0x8fb40000, -0xff098200, -0xd7ba0000, -0xff098200, -0x8fb30000, -0xff098200, -0x8fb20000, -0xff098200, -0xd7b80000, -0xff098200, -0x8fb10000, -0xff098200, -0x8fb00000, -0xff098200, -0xd7b60000, -0xff098200, -0xd7b40000, -0xff098200, -0x03e00008, -0x27bd0070, -0xff060010, -0x8e8d0000, -0xff098200, -0x01ca082a, -0x14200000, -0xff050807, -0x020d082a, -0x10200000, -0xff050808, -0x00000000, -0xae1e0000, -0xff098200, -0xff000000, -0x254a0008, -0x10000000, -0xff05080c, -0x26100008, -0xff060011, -0x014e6023, -0x020c6023, -0x10000000, -0xff05080d, -0x018e800b, -0xff060012, -0x8e790000, -0xff098200, -0x0140a821, -0x01c02821, -0x0320f809, -0x02802021, -0x8fae0078, -0x8e900000, -0xff098200, -0x02a05021, -0x10000000, -0xff05080c, -0x000e70c0, -0xff06001b, -0x0080e821, -0x00a01021, -0xff06001c, -0x8fb40070, -0x240c0000, -0xff098200, -0x8e8d0000, -0xff098200, -0x10000000, -0xff05081a, -0xadac0000, -0xff098200, -0xff06001d, -0x2401fffc, -0x0081e824, -0xff06001e, -0x8fb40070, -0x3c0f59c0, -0x241e0000, -0xff098200, -0x8e900000, -0xff098200, -0x8e930000, -0xff098200, -0x448ff000, -0x240d0000, -0xff098200, -0x240c0000, -0xff098200, -0x8e120000, -0xff098200, -0x4600f7a1, -0x2617fff8, -0x26730000, -0xff098200, -0xaeed0000, -0xff098200, -0xff000000, -0xae6c0000, -0xff098200, -0x10000000, -0xff050816, -0x240a0010, -0xff06001f, -0x10000000, -0xff050802, -0x24050000, -0xff098200, -0xff060020, -0x02094821, -0x02f0b823, -0xae900000, -0xff098200, -0x26520004, -0xae890000, -0xff098200, -0x001728c2, -0xff06000c, -0x8e790000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0x8e900000, -0xff098200, -0x8e890000, -0xff098200, -0x8e080000, -0xff098200, -0x01304823, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff060021, -0x27bdff90, -0xafbf0000, -0xff098200, -0xafbe0000, -0xff098200, -0xf7be0000, -0xff098200, -0xafb70000, -0xff098200, -0xafb60000, -0xff098200, -0xf7bc0000, -0xff098200, -0xafb50000, -0xff098200, -0xafb40000, -0xff098200, -0xff000000, -0xf7ba0000, -0xff098200, -0xafb30000, -0xff098200, -0xafb20000, -0xff098200, -0xf7b80000, -0xff098200, -0xafb10000, -0xff098200, -0xafb00000, -0xff098200, -0xf7b60000, -0xff098200, -0xf7b40000, -0xff098200, -0x0080a021, -0x8e930000, -0xff098200, -0x00a08021, -0x928d0000, -0xff098200, -0xafb40070, -0x24120000, -0xff098200, -0x27ac0000, -0xff098200, -0x26730000, -0xff098200, -0xafa00078, -0xafa0007c, -0xae8c0000, -0xff098200, -0xafa00074, -0x11a00000, -0xff050803, -0xafa40014, -0x0200b821, -0x8e900000, -0xff098200, -0x8e8d0000, -0xff098200, -0x8e120000, -0xff098200, -0x3c0f59c0, -0x01b05023, -0x448ff000, -0xa2800000, -0xff098200, -0x4600f7a1, -0x240c0000, -0xff098200, -0x254a0008, -0xae6c0000, -0xff098200, -0x0140a821, -0x324c0000, -0xff090200, -0x11800000, -0xff050817, -0xff000000, -0x241e0000, -0xff098200, -0x10000000, -0xff050818, -0x00000000, -0xff060022, -0x27bdff90, -0xafbf0000, -0xff098200, -0xafbe0000, -0xff098200, -0xf7be0000, -0xff098200, -0xafb70000, -0xff098200, -0xafb60000, -0xff098200, -0xf7bc0000, -0xff098200, -0xafb50000, -0xff098200, -0xafb40000, -0xff098200, -0xf7ba0000, -0xff098200, -0xafb30000, -0xff098200, -0xafb20000, -0xff098200, -0xf7b80000, -0xff098200, -0xafb10000, -0xff098200, -0xafb00000, -0xff098200, -0xf7b60000, -0xff098200, -0xf7b40000, -0xff098200, -0xafa7007c, -0x10000000, -0xff050801, -0x24120000, -0xff098200, -0xff060023, -0x27bdff90, -0xafbf0000, -0xff098200, -0xff000000, -0xafbe0000, -0xff098200, -0xf7be0000, -0xff098200, -0xafb70000, -0xff098200, -0xafb60000, -0xff098200, -0xf7bc0000, -0xff098200, -0xafb50000, -0xff098200, -0xafb40000, -0xff098200, -0xf7ba0000, -0xff098200, -0xafb30000, -0xff098200, -0xafb20000, -0xff098200, -0xf7b80000, -0xff098200, -0xafb10000, -0xff098200, -0xafb00000, -0xff098200, -0xf7b60000, -0xff098200, -0xf7b40000, -0xff098200, -0x24120000, -0xff098200, -0xff06000b, -0x8c8d0000, -0xff098200, -0xafa60078, -0x0080a021, -0xafa40070, -0x00a08021, -0xae9d0000, -0xff098200, -0x8e930000, -0xff098200, -0xafa40014, -0xafad0074, -0x26730000, -0xff098200, -0xff06000d, -0x8e8e0000, -0xff098200, -0xff000000, -0x3c0f59c0, -0x8e8d0000, -0xff098200, -0x448ff000, -0x02509021, -0x01b04823, -0x024e9023, -0x4600f7a1, -0x240c0000, -0xff098200, -0x241e0000, -0xff098200, -0xae6c0000, -0xff098200, -0xff060024, -0x8e0c0000, -0xff098200, -0x24010000, -0xff098200, -0x15810000, -0xff050825, -0x8e080000, -0xff098200, -0xff060026, -0xae120000, -0xff098200, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff060027, -0x27bdff90, -0xafbf0000, -0xff098200, -0xafbe0000, -0xff098200, -0xf7be0000, -0xff098200, -0xafb70000, -0xff098200, -0xafb60000, -0xff098200, -0xf7bc0000, -0xff098200, -0xafb50000, -0xff098200, -0xafb40000, -0xff098200, -0xf7ba0000, -0xff098200, -0xafb30000, -0xff098200, -0xff000000, -0xafb20000, -0xff098200, -0xf7b80000, -0xff098200, -0xafb10000, -0xff098200, -0xafb00000, -0xff098200, -0xf7b60000, -0xff098200, -0xf7b40000, -0xff098200, -0x0080a021, -0x8c8c0000, -0xff098200, -0xafa40070, -0x8e8d0000, -0xff098200, -0xafa40014, -0x018d6023, -0x8e8d0000, -0xff098200, -0xae9d0000, -0xff098200, -0xafac0078, -0xafa0007c, -0x00e0c821, -0x00e0f809, -0xafad0074, -0x00408021, -0x8e930000, -0xff098200, -0x24120000, -0xff098200, -0x14400000, -0xff05080d, -0x26730000, -0xff098200, -0x10000000, -0xff050819, -0x00000000, -0xff060015, -0x8e0c0000, -0xff098200, -0x02004021, -0x01c08021, -0x8dcd0000, -0xff098200, -0xff000000, -0x2d810002, -0xff000000, -0x8d120000, -0xff098200, -0x02ea7021, -0x8dad0000, -0xff098200, -0xff000000, -0x14200000, -0xff050801, -0xff000000, -0xadde0000, -0xff098200, -0x01800008, -0x8db10000, -0xff098200, -0xff000000, -0xff06000b, -0x15800000, -0xff050828, -0x250dfff0, -0x10000000, -0xff050829, -0x01b04823, -0xff000000, -0xff06002a, -0x8e4bfffc, -0x2505fff0, -0xd6e00000, -0x000bad42, -0x000bb942, -0x32b507f8, -0x32f707f8, -0x02156821, -0xae900000, -0xff098200, -0x00ad3023, -0x15a50000, -0xff05082b, -0xf4a00000, -0x0217b821, -0x10000000, -0xff05082c, -0xf6e00000, -0xff06002d, -0x26660000, -0xff098200, -0x240c0000, -0xff098200, -0xacc90000, -0xff098200, -0x10000000, -0xff050801, -0xaccc0000, -0xff098200, -0xff06002e, -0x26650000, -0xff098200, -0x240c0000, -0xff098200, -0xaca80000, -0xff098200, -0x26660000, -0xff098200, -0xacac0000, -0xff098200, -0x240d0000, -0xff098200, -0xacc90000, -0xff098200, -0x10000000, -0xff050801, -0xaccd0000, -0xff098200, -0xff06002f, -0x448c0000, -0x46800021, -0x26660000, -0xff098200, -0xf4c00000, -0xff060030, -0xff06000b, -0xff000000, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0x10400000, -0xff050803, -0x260d0000, -0xff098200, -0xd4400000, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000d, -0x8e900000, -0xff098200, -0xae120000, -0xff098200, -0x020d9023, -0x8e080000, -0xff098200, -0x10000000, -0xff050826, -0x24090010, -0xff060031, -0x26660000, -0xff098200, -0x240c0000, -0xff098200, -0xacc90000, -0xff098200, -0x10000000, -0xff050801, -0xaccc0000, -0xff098200, -0xff060032, -0x26650000, -0xff098200, -0x240c0000, -0xff098200, -0xaca80000, -0xff098200, -0x26660000, -0xff098200, -0xacac0000, -0xff098200, -0x240d0000, -0xff098200, -0xacc90000, -0xff098200, -0xff000000, -0x10000000, -0xff050801, -0xaccd0000, -0xff098200, -0xff060033, -0x448c0000, -0x46800021, -0x26660000, -0xff098200, -0xf4c00000, -0xff060034, -0xff06000b, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0x10400000, -0xff050803, -0xd6e00000, -0x8e4b0000, -0x26520004, -0xf4400000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000d, -0x260d0000, -0xff098200, -0x8e900000, -0xff098200, -0xae120000, -0xff098200, -0x020d9023, -0x8e080000, -0xff098200, -0xf6000010, -0x10000000, -0xff050826, -0x24090018, -0xff060035, -0x8e790000, -0xff098200, -0x2652fffc, -0xae900000, -0xff098200, -0xafb20014, -0x316700ff, -0x0320f809, -0x02802021, -0xff06000d, -0x2c410002, -0x10200000, -0xff050836, -0x00027023, -0xff06000e, -0x964a0000, -0xff098200, -0x26520004, -0x3c0d0000, -0xff090200, -0xff000000, -0x000a5080, -0x014d5021, -0x014e5024, -0x024a9021, -0xff06002c, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff060037, -0x924d0000, -0xff098200, -0xd6e00000, -0x000d68c0, -0x020d6821, -0x10000000, -0xff05082c, -0xf5a00000, -0xff060038, -0x8eec0000, -0xff098200, -0x2d810000, -0xff098200, -0x10000000, -0xff05080e, -0x00017023, -0xff060039, -0x8eec0000, -0xff098200, -0x2d810000, -0xff098200, -0x10000000, -0xff05080e, -0x242effff, -0xff06003a, -0x8e790000, -0xff098200, -0x2652fffc, -0xae900000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0x10000000, -0xff05080d, -0x00000000, -0xff06003b, -0xff000000, -0x8e790000, -0xff098200, -0x01602821, -0x2652fffc, -0xae900000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0x10000000, -0xff05080d, -0x00000000, -0xff000000, -0xff06003c, -0x00c03821, -0xff06003d, -0x8e790000, -0xff098200, -0x316c00ff, -0xae900000, -0xff098200, -0xafb20014, -0x02e02821, -0xafac0010, -0x0320f809, -0x02802021, -0x10400000, -0xff05082c, -0x00000000, -0xff060036, -0x00506823, -0xac520000, -0xff098200, -0x02007021, -0x25b20000, -0xff098200, -0x00408021, -0x10000000, -0xff050824, -0x24090010, -0xff06003e, -0xff000000, -0x0080a821, -0xff000000, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0xff000000, -0x14400000, -0xff050836, -0x00000000, -0x10000000, -0xff05083f, -0x02a02021, -0xff000000, -0x10000000, -0xff050836, -0x00000000, -0xff000000, -0xff060025, -0x8e790000, -0xff098200, -0xae8e0000, -0xff098200, -0x2605fff8, -0xafb20014, -0x02093021, -0x0120a821, -0x0320f809, -0x02802021, -0x8e080000, -0xff098200, -0x26a90008, -0xae120000, -0xff098200, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff060040, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0x26e5fff8, -0xafb20014, -0x02e93021, -0x0120a821, -0x0320f809, -0x02802021, -0x8e0d0000, -0xff098200, -0x8ee80000, -0xff098200, -0x10000000, -0xff050841, -0x26a90008, -0xff060042, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0x02e02821, -0xafb20014, -0x0160a821, -0x0320f809, -0x02802021, -0xff000000, -0x32ac00ff, -0x24010000, -0xff098200, -0xff000000, -0x0015b942, -0x00155402, -0x32f707f8, -0xff000000, -0x11810000, -0xff070800, -0x000a50c0, -0x10000000, -0xff070800, -0x00000000, -0xff000000, -0x10000000, -0xff070800, -0x000a50c0, -0xff000000, -0xff060043, -0x11200000, -0xff050844, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x2617fff8, -0x8e120000, -0xff098200, -0x252a0008, -0x02e97021, -0xaee60000, -0xff098200, -0x260d0008, -0x120e0000, -0xff050845, -0xaee40000, -0xff098200, -0xff06000b, -0xd5a00000, -0xf5a0fff8, -0x15ae0000, -0xff05080b, -0x25ad0008, -0x10000000, -0xff050845, -0x00000000, -0xff060046, -0x8e060000, -0xff098200, -0x240d0000, -0xff098200, -0x11200000, -0xff050844, -0x2ccc0000, -0xff098200, -0x00cc680a, -0x01a06827, -0x000d68c0, -0x010d6821, -0x10000000, -0xff050847, -0xd5a00000, -0xff098200, -0xff060048, -0x11200000, -0xff050844, -0x8e060000, -0xff098200, -0xff000000, -0x8e040000, -0xff098200, -0x24010000, -0xff098200, -0x14c10000, -0xff050806, -0x24010000, -0xff098200, -0xff06000b, -0x8c840000, -0xff098200, -0xff06000c, -0x8e690000, -0xff098200, -0x10800000, -0xff050849, -0x24060000, -0xff098200, -0x8c8c0000, -0xff098200, -0x24060000, -0xff098200, -0x8d2d0000, -0xff098200, -0x8c8e0000, -0xff098200, -0x01ac6824, -0x000d6140, -0x000d68c0, -0x018d6823, -0x01cd7021, -0x24010000, -0xff098200, -0xff06000d, -0x8dc70000, -0xff098200, -0x8dcc0000, -0xff098200, -0x8dcf0000, -0xff098200, -0x14e10000, -0xff050804, -0x8dc50000, -0xff098200, -0x11890000, -0xff050805, -0x8dcd0000, -0xff098200, -0xff06000e, -0xff000000, -0x11e00000, -0xff050849, -0x01e07021, -0x10000000, -0xff05080d, -0x00000000, -0xff06000f, -0x10be0000, -0xff050849, -0x00000000, -0x00a03021, -0x10000000, -0xff050849, -0x01a02021, -0xff060010, -0x10c10000, -0xff05080b, -0x2ccc0000, -0xff098200, -0x240d0000, -0xff098200, -0x00cc680a, -0x01a06827, -0x000d6880, -0x026d6821, -0x10000000, -0xff05080c, -0x8da40000, -0xff098200, -0xff06004a, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0x8e040000, -0xff098200, -0x8e050000, -0xff098200, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x24e70000, -0xff098200, -0x8c8d0000, -0xff098200, -0x908f0000, -0xff098200, -0x00ed0825, -0x14200000, -0xff050844, -0xff000000, -0x31e10000, -0xff090200, -0x10200000, -0xff050849, -0xac850000, -0xff098200, -0x8e6c0000, -0xff098200, -0x31ef0000, -0xff090200, -0xae640000, -0xff098200, -0xa08f0000, -0xff098200, -0x10000000, -0xff050849, -0xac8c0000, -0xff098200, -0xff06004b, -0x8e070000, -0xff098200, -0x2d210010, -0x8e050000, -0xff098200, -0x8e790000, -0xff098200, -0x24e70000, -0xff098200, -0x00270825, -0x14200000, -0xff050844, -0x26060008, -0x0320f809, -0x02802021, -0x10000000, -0xff050847, -0xd4400000, -0xff06004c, -0x8e040000, -0xff098200, -0x39210008, -0x2c840000, -0xff098200, -0x0001200b, -0x10800000, -0xff050844, -0xd6000000, -0x10000000, -0xff050847, -0x00000000, -0xff06004d, -0x11200000, -0xff050844, -0xff000000, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x24010000, -0xff098200, -0x10c10000, -0xff050849, -0x8e6d0000, -0xff098200, -0x2ccc0000, -0xff098200, -0x2dad0001, -0x018d6024, -0x11800000, -0xff050844, -0xae900000, -0xff098200, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0x018d0823, -0x04310000, -0xff05084e, -0xafb20014, -0x8e790000, -0xff098200, -0x02802021, -0x0320f809, -0x02002821, -0x24060000, -0xff098200, -0x10000000, -0xff050849, -0x00402021, -0xff06004f, -0x8e040000, -0xff098200, -0x8e050000, -0xff098200, -0x11200000, -0xff050844, -0x02097021, -0x24010000, -0xff098200, -0xadde0000, -0xff098200, -0x14810000, -0xff050844, -0x8e120000, -0xff098200, -0x8e790000, -0xff098200, -0xff000000, -0xae900000, -0xff098200, -0xae900000, -0xff098200, -0x26060008, -0xafb20014, -0x0320f809, -0x02802021, -0x10400000, -0xff050849, -0x24060000, -0xff098200, -0xd6000008, -0x2617fff8, -0xd6020010, -0x240a0000, -0xff098200, -0xf6e00000, -0x10000000, -0xff050845, -0xf6e20008, -0xff060050, -0x11200000, -0xff050844, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x8e120000, -0xff098200, -0xff000000, -0x8c8e0000, -0xff098200, -0xd5000000, -0xff098200, -0x15c00000, -0xff050844, -0xff000000, -0xd5000000, -0xff098200, -0xff000000, -0x2617fff8, -0xae1e0000, -0xff098200, -0x240a0000, -0xff098200, -0x10000000, -0xff050845, -0xf6e00000, -0xff060051, -0x2d210010, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x8e070000, -0xff098200, -0x14200000, -0xff050844, -0xd60e0008, -0x24c60000, -0xff098200, -0x2ce10000, -0xff098200, -0x240c0001, -0x0006080b, -0x448c6000, -0x10200000, -0xff050844, -0x8e120000, -0xff098200, -0x46207024, -0x46806321, -0x8c8c0000, -0xff098200, -0x8c8d0000, -0xff098200, -0x440e0000, -0x2617fff8, -0x462c7380, -0x25ce0001, -0x01cc082b, -0x000e78c0, -0x01af7821, -0x10200000, -0xff050802, -0xf6ee0000, -0x8dee0000, -0xff098200, -0xd5e00000, -0xff06000b, -0x11de0000, -0xff050845, -0x240a0000, -0xff098200, -0x240a0000, -0xff098200, -0x10000000, -0xff050845, -0xf6e00008, -0xff06000c, -0x8c8c0000, -0xff098200, -0xff000000, -0x8e790000, -0xff098200, -0x11800000, -0xff050845, -0x240a0000, -0xff098200, -0x0320f809, -0x01c02821, -0x10400000, -0xff050845, -0x240a0000, -0xff098200, -0x8c4e0000, -0xff098200, -0x10000000, -0xff05080b, -0xd4400000, -0xff060052, -0x11200000, -0xff050844, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x8e120000, -0xff098200, -0xff000000, -0x8c8e0000, -0xff098200, -0xd5000000, -0xff098200, -0x15c00000, -0xff050844, -0xff000000, -0xd5000000, -0xff098200, -0xff000000, -0x2617fff8, -0xae000000, -0xff098200, -0xae000000, -0xff098200, -0x240a0000, -0xff098200, -0x10000000, -0xff050845, -0xf6e00000, -0xff060053, -0x926f0000, -0xff098200, -0x11200000, -0xff050844, -0x02007021, -0x26100008, -0x000f7802, -0xff0900a6, -0x31ef0001, -0x25f20000, -0xff098200, -0x10000000, -0xff050824, -0x2529fff8, -0xff060054, -0x2d210010, -0x8e070000, -0xff098200, -0x14200000, -0xff050844, -0xd60e0008, -0xd60c0000, -0x926d0000, -0xff098200, -0x24010000, -0xff098200, -0x02007021, -0x14e10000, -0xff050844, -0x26100010, -0x000f7802, -0xff0900a6, -0xf5ce0000, -0x31ef0001, -0xf5cc0008, -0x25f20000, -0xff098200, -0x10000000, -0xff050824, -0x2529fff0, -0xff060055, -0x11200000, -0xff050844, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0xff000000, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x908c0000, -0xff098200, -0x8c8d0000, -0xff098200, -0x8c850000, -0xff098200, -0x8c8e0000, -0xff098200, -0x258f0000, -0xff098200, -0x1de00000, -0xff050844, -0x01c57026, -0x15a00000, -0xff050844, -0x01cc0825, -0x8c8c0000, -0xff098200, -0x10200000, -0xff050844, -0x8e120000, -0xff098200, -0x00a97021, -0x018e082b, -0x14200000, -0xff050844, -0xafb20014, -0xae900000, -0xff098200, -0xff06000b, -0x26100008, -0x2529fff8, -0x25cefff8, -0xac8e0000, -0xff098200, -0x02096821, -0x00a03021, -0xae900000, -0xff098200, -0xff06000c, -0xd6000000, -0x020d082b, -0x10200000, -0xff050803, -0x26100008, -0xf4c00000, -0x10000000, -0xff05080c, -0x24c60008, -0xff06000d, -0x04110000, -0xff050821, -0x0080b821, -0xff06000e, -0xff000000, -0x8eee0000, -0xff098200, -0x2c410000, -0xff098200, -0x8eef0000, -0xff098200, -0x240c0000, -0xff098200, -0x8e900000, -0xff098200, -0xae6c0000, -0xff098200, -0x10200000, -0xff050808, -0x01ee5023, -0x8e8c0000, -0xff098200, -0x11400000, -0xff050806, -0x020a6821, -0x018d082b, -0x14200000, -0xff050809, -0x01ca7821, -0xaeee0000, -0xff098200, -0x02006821, -0xff06000f, -0xd5c00000, -0x25ce0008, -0x01cf082b, -0xf5a00000, -0x14200000, -0xff05080f, -0x25ad0008, -0xff060010, -0x324c0000, -0xff090200, -0x240d0000, -0xff098200, -0x2617fff8, -0xae0d0000, -0xff098200, -0x254a0010, -0xff060011, -0xafb20014, -0x11800000, -0xff050817, -0x0140a821, -0x10000000, -0xff050818, -0x00000000, -0xff060012, -0x25effff8, -0x240d0000, -0xff098200, -0xd5e00000, -0xaeef0000, -0xff098200, -0xff000000, -0x240a0000, -0xff098200, -0xae0d0000, -0xff098200, -0x2617fff8, -0xf6000000, -0x10000000, -0xff050811, -0x324c0000, -0xff090200, -0xff060013, -0x8e790000, -0xff098200, -0x000a28c2, -0x0320f809, -0x02802021, -0x10000000, -0xff05080e, -0x24020000, -0xff060056, -0x8d040000, -0xff098200, -0x908c0000, -0xff098200, -0x8c8d0000, -0xff098200, -0x8c850000, -0xff098200, -0x8c8e0000, -0xff098200, -0x258f0000, -0xff098200, -0x1de00000, -0xff050844, -0x01c57026, -0x15a00000, -0xff050844, -0x01cc0825, -0x8c8c0000, -0xff098200, -0x10200000, -0xff050844, -0x8e120000, -0xff098200, -0x00a97021, -0x018e082b, -0x14200000, -0xff050844, -0xafb20014, -0xae900000, -0xff098200, -0xff06000b, -0xac8e0000, -0xff098200, -0xff000000, -0x02096821, -0x00a03021, -0xae900000, -0xff098200, -0xff06000c, -0xd6000000, -0x020d082b, -0x10200000, -0xff050803, -0x26100008, -0xf4c00000, -0x10000000, -0xff05080c, -0x24c60008, -0xff06000d, -0x04110000, -0xff050821, -0x0080b821, -0xff06000e, -0x8eee0000, -0xff098200, -0x2c410000, -0xff098200, -0x8eef0000, -0xff098200, -0x240c0000, -0xff098200, -0x8e900000, -0xff098200, -0xae6c0000, -0xff098200, -0x10200000, -0xff050808, -0x01ee5023, -0x8e8c0000, -0xff098200, -0x11400000, -0xff050806, -0x020a6821, -0x018d082b, -0x14200000, -0xff050809, -0x01ca7821, -0xaeee0000, -0xff098200, -0x02006821, -0xff06000f, -0xd5c00000, -0x25ce0008, -0x01cf082b, -0xf5a00000, -0x14200000, -0xff05080f, -0x25ad0008, -0xff060010, -0x324c0000, -0xff090200, -0x0200b821, -0x254a0008, -0xff060011, -0xff000000, -0xafb20014, -0x11800000, -0xff050817, -0x0140a821, -0x10000000, -0xff050818, -0x00000000, -0xff060012, -0x8e790000, -0xff098200, -0x02e02821, -0x0320f809, -0x02802021, -0xff060013, -0x8e790000, -0xff098200, -0x000a28c2, -0x0320f809, -0x02802021, -0x10000000, -0xff05080e, -0x24020000, -0xff060057, -0x8e8c0000, -0xff098200, -0x02096821, -0xae900000, -0xff098200, -0x318c0000, -0xff090200, -0xae8d0000, -0xff098200, -0x11800000, -0xff050844, -0x24020000, -0xff098200, -0xae800000, -0xff098200, -0x10000000, -0xff05081a, -0xa2820000, -0xff098200, -0xff060058, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x46206005, -0xff060047, -0xff000000, -0x8e120000, -0xff098200, -0x2617fff8, -0x10000000, -0xff050859, -0xf600fff8, -0xff060049, -0x8e120000, -0xff098200, -0xae060000, -0xff098200, -0x2617fff8, -0xae040000, -0xff098200, -0xff060059, -0x240a0000, -0xff098200, -0xff060045, -0x324c0000, -0xff090200, -0x15800000, -0xff050818, -0x0140a821, -0x8e4bfffc, -0x000b4542, -0x310807f8, -0xff06000f, -0x0148082b, -0x14200000, -0xff050806, -0x000b6142, -0x318c07f8, -0x8e4b0000, -0x26520004, -0x02ec8023, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff060010, -0x02ea6821, -0x254a0008, -0x10000000, -0xff05080f, -0xadbe0000, -0xff098200, -0xff06005a, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x04110000, -0xff05085b, -0x00000000, -0x10000000, -0xff050847, -0xff000000, -0x00000000, -0xff06005c, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x04110000, -0xff05085d, -0x00000000, -0x10000000, -0xff050847, -0x00000000, -0xff06005e, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff06005f, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060060, -0x8e060000, -0xff098200, -0xff000000, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060061, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060062, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060063, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0xff000000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060064, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060065, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060066, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0xff000000, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060067, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060068, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff060069, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0x8e790000, -0xff098200, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x00000000, -0x0320f809, -0xd60c0000, -0x10000000, -0xff050847, -0x00000000, -0xff06006a, -0xff000000, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0x018d6024, -0x11800000, -0xff050844, -0x8e790000, -0xff098200, -0x0320f809, -0x00000000, -0x10000000, -0xff050847, -0x00000000, -0xff06006b, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0x018d6024, -0x11800000, -0xff050844, -0x8e790000, -0xff098200, -0x0320f809, -0x00000000, -0x10000000, -0xff050847, -0x00000000, -0xff06006c, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0xff000000, -0x018d6024, -0x11800000, -0xff050844, -0x8e790000, -0xff098200, -0x0320f809, -0x00000000, -0x10000000, -0xff050847, -0x00000000, -0xff06006d, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x46206004, -0x10000000, -0xff050847, -0x00000000, -0xff06006e, -0xff06006f, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0xd50e0000, -0xff098200, -0x10000000, -0xff050847, -0x462e6002, -0xff060070, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0xff000000, -0x018d6024, -0x11800000, -0xff050844, -0x462073a4, -0x8e790000, -0xff098200, -0x44067000, -0x0320f809, -0x00000000, -0x10000000, -0xff050847, -0x00000000, -0xff060071, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x8e790000, -0xff098200, -0x8e120000, -0xff098200, -0x0320f809, -0x26660000, -0xff098200, -0x8e6d0000, -0xff098200, -0x2617fff8, -0x448d7000, -0xf6e00000, -0x468073a1, -0xf6ee0008, -0x10000000, -0xff050845, -0x240a0000, -0xff098200, -0xff060072, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x8e790000, -0xff098200, -0x8e120000, -0xff098200, -0x0320f809, -0x2606fff8, -0x2617fff8, -0xf6000000, -0x10000000, -0xff050845, -0x240a0000, -0xff098200, -0xff060073, -0xff000000, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd6000000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x02097021, -0x260d0008, -0x11ae0000, -0xff050847, -0xff06000b, -0x8da60000, -0xff098200, -0xd5ac0000, -0x25ad0008, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x462c0034, -0x15ae0000, -0xff05080b, -0x46206011, -0x10000000, -0xff050847, -0x00000000, -0xff060074, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd6000000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x02097021, -0x260d0008, -0x11ae0000, -0xff050847, -0xff06000b, -0x8da60000, -0xff098200, -0xd5ac0000, -0x25ad0008, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x46206034, -0x15ae0000, -0xff05080b, -0x46206011, -0x10000000, -0xff050847, -0xff000000, -0x00000000, -0xff060075, -0x11200000, -0xff050844, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x00000000, -0x10000000, -0xff050876, -0x8c820000, -0xff098200, -0xff060077, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x39210008, -0x24c60000, -0xff098200, -0x00260825, -0x14200000, -0xff050844, -0x00000000, -0x8c8c0000, -0xff098200, -0x908d0000, -0xff098200, -0x2617fff8, -0x000c502b, -0x448d0000, -0x254a0001, -0x46800021, -0x8e120000, -0xff098200, -0x000a50c0, -0x10000000, -0xff050845, -0xf6e00000, -0xff060078, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0x018d0823, -0x04310000, -0xff05084e, -0x8e060000, -0xff098200, -0xd60c0000, -0x24010008, -0x15210000, -0xff050844, -0xff000000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x24060001, -0x46206324, -0x27a50010, -0x2d810100, -0x440c6000, -0x10200000, -0xff050844, -0xafac0010, -0xff060079, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0x8e900000, -0xff098200, -0x00402021, -0x10000000, -0xff050849, -0x24060000, -0xff098200, -0xff06007a, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0x018d0823, -0x04310000, -0xff05084e, -0x2521fff0, -0x8e060000, -0xff098200, -0xd6000010, -0x8e0c0000, -0xff098200, -0x8e040000, -0xff098200, -0x04200000, -0xff050844, -0x8e050000, -0xff098200, -0xd6020008, -0x10200000, -0xff050801, -0x2407ffff, -0x46200024, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x44070000, -0xff06000b, -0x2ca10000, -0xff098200, -0xff000000, -0x10200000, -0xff050844, -0x24010000, -0xff098200, -0x462010a4, -0x15810000, -0xff050844, -0x8c850000, -0xff098200, -0x44061000, -0x00e0082a, -0x24ac0001, -0x00ec6821, -0x00c0782a, -0x01a1380b, -0x00cc6821, -0x01af300b, -0x240e0001, -0x00e0082a, -0x0006782a, -0x0001380b, -0x01cf300a, -0x00a7082a, -0x00a1380b, -0x00862821, -0x00e63023, -0x24a50000, -0xff098200, -0x04c10000, -0xff050879, -0x24c60001, -0xff06007b, -0x26640000, -0xff098200, -0x10000000, -0xff050849, -0x24060000, -0xff098200, -0xff06007c, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0x018d0823, -0x04310000, -0xff05084e, -0x8e0c0000, -0xff098200, -0x2d210010, -0x8e070000, -0xff098200, -0x8e040000, -0xff098200, -0x258c0000, -0xff098200, -0xd6000008, -0x002c0825, -0x14200000, -0xff050844, -0x2ce10000, -0xff098200, -0x46200024, -0x10200000, -0xff050844, -0x8c8c0000, -0xff098200, -0x44060000, -0x8e6d0000, -0xff098200, -0xff000000, -0x24010001, -0x18c00000, -0xff05087b, -0x002c082b, -0x11800000, -0xff05087b, -0x01a6602b, -0x002c0825, -0x8e650000, -0xff098200, -0x14200000, -0xff050844, -0x908c0000, -0xff098200, -0x00a67021, -0xff06000b, -0x25ceffff, -0x00ae082b, -0x14200000, -0xff05080b, -0xa1cc0000, -0x10000000, -0xff050879, -0x00000000, -0xff06007d, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0x018d0823, -0x04310000, -0xff05084e, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x11200000, -0xff050844, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x8e6d0000, -0xff098200, -0x8c860000, -0xff098200, -0x24840000, -0xff098200, -0x8e650000, -0xff098200, -0x01a6082b, -0x14200000, -0xff050844, -0x00867821, -0x00a63821, -0xff06000b, -0xff000000, -0x908d0000, -0x008f082b, -0x10200000, -0xff050879, -0x24840001, -0x24e7ffff, -0x10000000, -0xff05080b, -0xa0ed0000, -0xff06007e, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0x018d0823, -0x04310000, -0xff05084e, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x11200000, -0xff050844, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x8e6d0000, -0xff098200, -0x8c860000, -0xff098200, -0x24840000, -0xff098200, -0x8e650000, -0xff098200, -0x01a6082b, -0x14200000, -0xff050844, -0x00867821, -0x00a03821, -0xff06000b, -0x908d0000, -0x008f082b, -0x10200000, -0xff050879, -0x25acffbf, -0x39ae0020, -0x2d81001a, -0x01c1680b, -0x24840001, -0xa0ed0000, -0x10000000, -0xff05080b, -0x24e70001, -0xff06007f, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0x018d0823, -0x04310000, -0xff05084e, -0xff000000, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x11200000, -0xff050844, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x8e6d0000, -0xff098200, -0x8c860000, -0xff098200, -0x24840000, -0xff098200, -0x8e650000, -0xff098200, -0x01a6082b, -0x14200000, -0xff050844, -0x00867821, -0x00a03821, -0xff06000b, -0x908d0000, -0x008f082b, -0x10200000, -0xff050879, -0x25acff9f, -0x39ae0020, -0x2d81001a, -0x01c1680b, -0x24840001, -0xa0ed0000, -0x10000000, -0xff05080b, -0x24e70001, -0xff060080, -0x11200000, -0xff050844, -0x8e060000, -0xff098200, -0x8e040000, -0xff098200, -0x24010000, -0xff098200, -0x14c10000, -0xff050844, -0x8e790000, -0xff098200, -0x0320f809, -0x00000000, -0x10000000, -0xff050876, -0x00000000, -0xff060081, -0x8e060000, -0xff098200, -0xff000000, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44026000, -0x260d0008, -0x02097021, -0xff06000b, -0x8da70000, -0xff098200, -0x11ae0000, -0xff050876, -0xd5ac0000, -0x2ce10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44056000, -0x00451024, -0x10000000, -0xff05080b, -0x25ad0008, -0xff060082, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44026000, -0x260d0008, -0x02097021, -0xff06000b, -0x8da70000, -0xff098200, -0x11ae0000, -0xff050876, -0xd5ac0000, -0x2ce10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44056000, -0x00451025, -0x10000000, -0xff05080b, -0x25ad0008, -0xff060083, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xff000000, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44026000, -0x260d0008, -0x02097021, -0xff06000b, -0x8da70000, -0xff098200, -0x11ae0000, -0xff050876, -0xd5ac0000, -0x2ce10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44056000, -0x00451026, -0x10000000, -0xff05080b, -0x25ad0008, -0xff060084, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44026000, -0x00026602, -0x00027202, -0x00026e00, -0x31ceff00, -0x018d6025, -0x3042ff00, -0x018e6025, -0x00021200, -0x10000000, -0xff050876, -0x01821025, -0xff060085, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44026000, -0x10000000, -0xff050876, -0x00401027, -0xff060086, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0xff000000, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0x018d6024, -0x11800000, -0xff050844, -0x463e6300, -0x463e7380, -0x44046000, -0x44057000, -0x10000000, -0xff050876, -0x00a41004, -0xff060087, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0x018d6024, -0x11800000, -0xff050844, -0x463e6300, -0x463e7380, -0x44046000, -0x44057000, -0x10000000, -0xff050876, -0x00a41006, -0xff060088, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0x018d6024, -0x11800000, -0xff050844, -0x463e6300, -0x463e7380, -0x44046000, -0x44057000, -0x10000000, -0xff050876, -0x00a41007, -0xff060089, -0x2d210010, -0x8e060000, -0xff098200, -0xff000000, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0x018d6024, -0x11800000, -0xff050844, -0x463e6300, -0x463e7380, -0x44046000, -0x44057000, -0x24010020, -0x00256023, -0x00a42804, -0x01842006, -0x10000000, -0xff050876, -0x00851025, -0xff06008a, -0x2d210010, -0x8e060000, -0xff098200, -0x14200000, -0xff050844, -0x8e070000, -0xff098200, -0xd60c0000, -0xd60e0008, -0x2ccc0000, -0xff098200, -0x2ced0000, -0xff098200, -0x018d6024, -0x11800000, -0xff050844, -0x463e6300, -0x463e7380, -0x44046000, -0x44057000, -0x24010020, -0x00256023, -0x00a42806, -0x01842004, -0x10000000, -0xff050876, -0x00851025, -0xff06008b, -0x8e060000, -0xff098200, -0x11200000, -0xff050844, -0xd60c0000, -0x2cc10000, -0xff098200, -0x10200000, -0xff050844, -0x463e6300, -0x44026000, -0xff060076, -0x44820000, -0x10000000, -0xff050847, -0x46800021, -0xff060044, -0x8d0f0000, -0xff098200, -0xff000000, -0x02096821, -0x8e120000, -0xff098200, -0x25ac0000, -0xff098200, -0x8e8e0000, -0xff098200, -0xafb20014, -0x01cc082b, -0xae900000, -0xff098200, -0xae8d0000, -0xff098200, -0x14200000, -0xff050805, -0x01e0c821, -0x01e0f809, -0x02802021, -0x8e900000, -0xff098200, -0x000250c0, -0x1c400000, -0xff050845, -0x2617fff8, -0xff06000b, -0x8e8c0000, -0xff098200, -0x8e080000, -0xff098200, -0x14400000, -0xff050829, -0x01904823, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff060029, -0x324c0000, -0xff090200, -0x2401fffc, -0x15800000, -0xff050803, -0x02416824, -0x924d0000, -0xff098200, -0x000d68c0, -0x25ad0008, -0xff06000d, -0x10000000, -0xff050824, -0x020d7023, -0xff06000f, -0x8e790000, -0xff098200, -0x24050000, -0xff098200, -0x0320f809, -0x02802021, -0x8e900000, -0xff098200, -0xff000000, -0x10000000, -0xff05080b, -0x24020000, -0xff06004e, -0x03e0a821, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0x02096021, -0xafb20014, -0xae8c0000, -0xff098200, -0x0320f809, -0x02802021, -0x8e900000, -0xff098200, -0x02a0f821, -0x8e8c0000, -0xff098200, -0x8e080000, -0xff098200, -0x03e00008, -0x01904823, -0xff06008c, -0xff000000, -0x926f0000, -0xff098200, -0x31e10000, -0xff090200, -0x14200000, -0xff050805, -0x8e6e0000, -0xff098200, -0x31e10000, -0xff090200, -0x14200000, -0xff050801, -0x25ceffff, -0x31e10000, -0xff090200, -0x10200000, -0xff050801, -0x00000000, -0x10000000, -0xff050801, -0xae6e0000, -0xff098200, -0xff000000, -0xff06008d, -0x926f0000, -0xff098200, -0x31e10000, -0xff090200, -0x10200000, -0xff050801, -0xff06000f, -0x8d810000, -0xff098200, -0x00200008, -0x00000000, -0xff06008e, -0x926f0000, -0xff098200, -0x8e6e0000, -0xff098200, -0x31e10000, -0xff090200, -0x14200000, -0xff05080f, -0x31e10000, -0xff090200, -0x10200000, -0xff05080f, -0x25ceffff, -0x11c00000, -0xff050801, -0xae6e0000, -0xff098200, -0x31e10000, -0xff090200, -0x10200000, -0xff05080f, -0xff06000b, -0x8e790000, -0xff098200, -0xafb50010, -0x02402821, -0xae900000, -0xff098200, -0x0320f809, -0x02802021, -0xff06000d, -0x8e900000, -0xff098200, -0xff06000e, -0xff000000, -0x8e4bfffc, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0xff098200, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06008f, -0x26520004, -0x10000000, -0xff05080e, -0x8d150000, -0xff098200, -0xff060090, -0xff000000, -0x8e0d0000, -0xff098200, -0x26640000, -0xff098200, -0xafb20014, -0x8dad0000, -0xff098200, -0x02402821, -0xae740000, -0xff098200, -0x91ad0000, -0xff098200, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0x000d68c0, -0x020d6821, -0x0320f809, -0xae8d0000, -0xff098200, -0x10000000, -0xff05080d, -0x00000000, -0xff000000, -0xff060091, -0xff000000, -0x10000000, -0xff050801, -0xff000000, -0x02402821, -0xff060092, -0xff000000, -0x36450001, -0xff06000b, -0xff000000, -0x8e790000, -0xff098200, -0x02096021, -0xafb20014, -0xae900000, -0xff098200, -0x02f0b823, -0xae8c0000, -0xff098200, -0x0320f809, -0x02802021, -0x8e900000, -0xff098200, -0x8e8c0000, -0xff098200, -0xafa00014, -0x01904823, -0x0217b821, -0x8e080000, -0xff098200, -0x00400008, -0x8e4bfffc, -0xff060093, -0xff000000, -0x27bd0000, -0xff098200, -0xf7a00000, -0xff098200, -0xafa00000, -0xff098200, -0xafa10000, -0xff098200, -0xf7a20000, -0xff098200, -0xafa20000, -0xff098200, -0xafa30000, -0xff098200, -0xf7a40000, -0xff098200, -0xafa40000, -0xff098200, -0xafa50000, -0xff098200, -0xf7a60000, -0xff098200, -0xafa60000, -0xff098200, -0xafa70000, -0xff098200, -0xf7a80000, -0xff098200, -0xafa80000, -0xff098200, -0xafa90000, -0xff098200, -0xf7aa0000, -0xff098200, -0xafaa0000, -0xff098200, -0xafab0000, -0xff098200, -0xf7ac0000, -0xff098200, -0xafac0000, -0xff098200, -0xafad0000, -0xff098200, -0xf7ae0000, -0xff098200, -0xff000000, -0xafae0000, -0xff098200, -0xafaf0000, -0xff098200, -0xf7b00000, -0xff098200, -0xafb00000, -0xff098200, -0xafb10000, -0xff098200, -0xf7b20000, -0xff098200, -0xafb20000, -0xff098200, -0xafb30000, -0xff098200, -0xf7b40000, -0xff098200, -0xafb40000, -0xff098200, -0xafb50000, -0xff098200, -0xf7b60000, -0xff098200, -0xafb60000, -0xff098200, -0xafb70000, -0xff098200, -0xf7b80000, -0xff098200, -0xafb80000, -0xff098200, -0xafb90000, -0xff098200, -0xf7ba0000, -0xff098200, -0xafba0000, -0xff098200, -0xafbb0000, -0xff098200, -0xf7bc0000, -0xff098200, -0xafbc0000, -0xff098200, -0xf7be0000, -0xff098200, -0xff000000, -0xafbe0000, -0xff098200, -0xafa00000, -0xff098200, -0x240c0000, -0xff098200, -0x27ae0000, -0xff098200, -0x27d30000, -0xff098200, -0x8dcd0000, -0xae6c0000, -0xff098200, -0xafae0000, -0xff098200, -0x8e740000, -0xff098200, -0x8e700000, -0xff098200, -0x8e790000, -0xff098200, -0xae740000, -0xff098200, -0xae7f0000, -0xff098200, -0xae6d0000, -0xff098200, -0x26640000, -0xff098200, -0xae900000, -0xff098200, -0x0320f809, -0x27a50010, -0x8e8d0000, -0xff098200, -0x2401fffc, -0x8e900000, -0xff098200, -0x01a1e824, -0x8fb20014, -0x10000000, -0xff050801, -0xafb40070, -0xff000000, -0xff060094, -0xff000000, -0x8fb40070, -0x27d30000, -0xff098200, -0xff06000b, -0x04400000, -0xff050803, -0x8e0d0000, -0xff098200, -0x3c0f59c0, -0x0002a8c0, -0x241e0000, -0xff098200, -0xafb50010, -0x448ff000, -0x8dad0000, -0xff098200, -0xae600000, -0xff098200, -0x8db10000, -0xff098200, -0x4600f7a1, -0x8e4b0000, -0x26520004, -0xae7e0000, -0xff098200, -0x316d00ff, -0x000d6880, -0x2dae0000, -0xff098200, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x11c00000, -0xff050802, -0x32f707f8, -0x00200008, -0x000a50c0, -0xff06000c, -0x26a9fff8, -0x00200008, -0x02f0b820, -0xff06000d, -0x8e790000, -0xff098200, -0x00022823, -0x0320f809, -0x02802021, -0xff000000, -0xff06005b, -0x3c0c4330, -0x44802000, -0x448c2800, -0x46206085, -0x44016800, -0x46241034, -0x46241000, -0x45000000, -0xff050801, -0x46240001, -0x0020082a, -0x3c0c3ff0, -0x46200087, -0x448c2800, -0x46211013, -0x46206034, -0x46240081, -0x03e00008, -0x46211011, -0xff06000b, -0x03e00008, -0x46206006, -0xff06005d, -0x3c0c4330, -0x44802000, -0x448c2800, -0x46206085, -0x44016800, -0x46241034, -0x46241000, -0x45000000, -0xff050801, -0x46240001, -0x0020082a, -0x3c0cbff0, -0x46200087, -0x448c2800, -0x46211013, -0x462c0034, -0x46240081, -0x03e00008, -0x46211011, -0xff06000b, -0x03e00008, -0x46206006, -0xff060095, -0xff000000, -0x3c0c4330, -0x44802000, -0x448c2800, -0x46206085, -0x44016800, -0x46241034, -0x46241000, -0x45000000, -0xff050801, -0x46240001, -0x0020082a, -0x3c0c3ff0, -0x448c2800, -0x46201034, -0x46240081, -0x46211011, -0x46200087, -0x03e00008, -0x46211013, -0xff06000b, -0x03e00008, -0x46206006, -0xff000000, -0xff060096, -0xff000000, -0x27bdff90, -0xafbf0000, -0xff098200, -0xafbe0000, -0xff098200, -0xf7be0000, -0xff098200, -0xafb70000, -0xff098200, -0xafb60000, -0xff098200, -0xf7bc0000, -0xff098200, -0xafb50000, -0xff098200, -0xafb40000, -0xff098200, -0xf7ba0000, -0xff098200, -0xafb30000, -0xff098200, -0xafb20000, -0xff098200, -0xf7b80000, -0xff098200, -0xafb10000, -0xff098200, -0xafb00000, -0xff098200, -0xf7b60000, -0xff098200, -0xf7b40000, -0xff098200, -0x8c520000, -0xff098200, -0x24530000, -0xff098200, -0x8e790000, -0xff098200, -0xae410000, -0xff098200, -0xae440000, -0xff098200, -0xae450000, -0xff098200, -0xf64c0000, -0xff098200, -0xff000000, -0xae460000, -0xff098200, -0xae470000, -0xff098200, -0xf64e0000, -0xff098200, -0x27ac0000, -0xff098200, -0xae4c0000, -0xff098200, -0xafa00014, -0x03a02821, -0x0320f809, -0x02402021, -0x8c500000, -0xff098200, -0x8c490000, -0xff098200, -0x0040a021, -0x3c0f59c0, -0x8e080000, -0xff098200, -0x448ff000, -0x240c0000, -0xff098200, -0x241e0000, -0xff098200, -0x01304823, -0xae6c0000, -0xff098200, -0x4600f7a1, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff000000, -0xff060028, -0xff000000, -0x8e790000, -0xff098200, -0x8e720000, -0xff098200, -0xae900000, -0xff098200, -0xae880000, -0xff098200, -0xae540000, -0xff098200, -0x02e02821, -0x0320f809, -0x02402021, -0x8e420000, -0xff098200, -0xd6400000, -0xff098200, -0x8e430000, -0xff098200, -0x10000000, -0xff05081a, -0xd6420000, -0xff098200, -0xff000000, -0xff060097, -0xff000000, -0x8c8d0000, -0xff098200, -0x90850000, -0xff098200, -0x03a07021, -0x03ade823, -0xaddffffc, -0x00052880, -0xadd0fff8, -0xadc4fff4, -0x01c08021, -0x248d0000, -0xff098200, -0x27ae0010, -0x10a00000, -0xff050802, -0x01a57821, -0xff06000b, -0x8dac0000, -0x25ad0004, -0x01af082b, -0xadcc0000, -0x14200000, -0xff05080b, -0x25ce0004, -0xff06000c, -0x8c990000, -0xff098200, -0x8c850000, -0xff098200, -0x8c860000, -0xff098200, -0x8c870000, -0xff098200, -0xd48c0000, -0xff098200, -0xd48e0000, -0xff098200, -0x0320f809, -0x8c840000, -0xff098200, -0x8e0dfff4, -0x8e0efff8, -0x8e1ffffc, -0xada20000, -0xff098200, -0xada30000, -0xff098200, -0xf5a00000, -0xff098200, -0xf5a20000, -0xff098200, -0x0200e821, -0x03e00008, -0x01c08021, -0xff000000, -0xff080000, -0xff000000, -0x02172821, -0x020a3021, -0x8cac0000, -0xff098200, -0x8ccd0000, -0xff098200, -0xd4a00000, -0xd4c20000, -0x2d8c0000, -0xff098200, -0x2dad0000, -0xff098200, -0x964e0000, -0xff098200, -0x018d6024, -0x26520004, -0x11800000, -0xff050835, -0x3c0d0000, -0xff090200, -0x000e7080, -0x01cd7021, -0xff000000, -0x46220034, -0xff000000, -0x46220036, -0xff000000, -0x00007001, -0xff000000, -0x00017001, -0xff000000, -0x024e9021, -0xff06000b, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x0217b821, -0x26520004, -0x8eec0000, -0xff098200, -0xd6e00000, -0x020a5021, -0x964e0000, -0xff098200, -0x8d4d0000, -0xff098200, -0xd5420000, -0x3c0f0000, -0xff090200, -0x2d810000, -0xff098200, -0x2da40000, -0xff098200, -0x000e7080, -0x00240824, -0x10200000, -0xff050805, -0x01cf7021, -0x46220032, -0xff000000, -0x00007001, -0xff000000, -0x00017001, -0xff000000, -0xff06000b, -0x024e9021, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x8ee50000, -0xff098200, -0x8d460000, -0xff098200, -0xff000000, -0x240f0000, -0xff098200, -0x118f0000, -0xff05083b, -0xff000000, -0x2d810000, -0xff098200, -0xff000000, -0x11af0000, -0xff05083b, -0xff000000, -0x00a67826, -0x01ac6826, -0x2d840000, -0xff098200, -0x0001780a, -0x000d200b, -0x01af0825, -0x0001200a, -0x10800000, -0xff05080b, -0xff000000, -0x0001700b, -0xff000000, -0x0001700a, -0xff000000, -0x8cad0000, -0xff098200, -0x11a00000, -0xff05080b, -0x00000000, -0x91ad0000, -0xff098200, -0x31ad0000, -0xff090200, -0x15a00000, -0xff05080b, -0x00000000, -0x10000000, -0xff05083a, -0x24070000, -0xff098200, -0xff000000, -0x0217b821, -0x26520004, -0x8eec0000, -0xff098200, -0x000a5042, -0x8eef0000, -0xff098200, -0x022a5023, -0x964e0000, -0xff098200, -0xff000000, -0x24010000, -0xff098200, -0x11810000, -0xff05083b, -0xff000000, -0x8d4dfffc, -0x258c0000, -0xff098200, -0x000e7080, -0x01af6826, -0x018d6025, -0x3c0f0000, -0xff090200, -0x01cf7021, -0xff000000, -0x000c700b, -0xff000000, -0x000c700a, -0xff000000, -0x024e9021, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x0217b821, -0x26520004, -0x8eec0000, -0xff098200, -0xd6e00000, -0x022a5021, -0x964e0000, -0xff098200, -0xd5420000, -0x3c0f0000, -0xff090200, -0x2d810000, -0xff098200, -0x000e7080, -0xff000000, -0x10200000, -0xff050805, -0xff000000, -0x10200000, -0xff050801, -0xff000000, -0x01cf7021, -0x46220032, -0xff000000, -0x00007001, -0x024e9021, -0xff06000b, -0xff000000, -0x00017001, -0xff06000b, -0x024e9021, -0xff000000, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0xff06000f, -0x24010000, -0xff098200, -0x11810000, -0xff05083b, -0x00000000, -0x10000000, -0xff05080b, -0x00000000, -0xff000000, -0x0217b821, -0x000a68c2, -0x8eec0000, -0xff098200, -0x964e0000, -0xff098200, -0x01a06827, -0x26520004, -0xff000000, -0x24010000, -0xff098200, -0x11810000, -0xff05083b, -0xff000000, -0x018d6026, -0x000e7080, -0x3c0f0000, -0xff090200, -0x01cf7021, -0xff000000, -0x000c700b, -0xff000000, -0x000c700a, -0xff000000, -0x024e9021, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x020a5021, -0x964e0000, -0xff098200, -0x8d4c0000, -0xff098200, -0x26520004, -0xff000000, -0x2d8c0000, -0xff098200, -0x000e7080, -0x3c0f0000, -0xff090200, -0x01cf7021, -0xff000000, -0x000c700a, -0xff000000, -0x000c700b, -0xff000000, -0x024e9021, -0xff000000, -0x2d8c0000, -0xff098200, -0xd5400000, -0xff000000, -0x11800000, -0xff050801, -0xff000000, -0x15800000, -0xff050801, -0xff000000, -0x0217b821, -0x000e7080, -0x3c0f0000, -0xff090200, -0x01cf7021, -0xf6e00000, -0x024e9021, -0xff06000b, -0xff000000, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x020a5021, -0x0217b821, -0xd5400000, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x020a5021, -0x0217b821, -0x8d4c0000, -0xff098200, -0x240d0000, -0xff098200, -0x2d8c0000, -0xff098200, -0x258d0000, -0xff098200, -0x8e4b0000, -0x26520004, -0xaeed0000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x020a3021, -0x0217b821, -0x8ccc0000, -0xff098200, -0xd4c00000, -0x2d810000, -0xff098200, -0x10200000, -0xff05083c, -0x46200007, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x020a2821, -0x0217b821, -0x8cac0000, -0xff098200, -0x8ca40000, -0xff098200, -0x24010000, -0xff098200, -0x15810000, -0xff050802, -0x24010000, -0xff098200, -0x8c820000, -0xff098200, -0xff06000b, -0x44820000, -0x46800021, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000c, -0x15810000, -0xff05083e, -0x00000000, -0xff000000, -0x8c8e0000, -0xff098200, -0x15c00000, -0xff050809, -0x00000000, -0xff06000d, -0xff000000, -0xff06003f, -0x8e790000, -0xff098200, -0x0320f809, -0x00000000, -0x10000000, -0xff05080b, -0x00000000, -0xff000000, -0xff060013, -0x91cc0000, -0xff098200, -0x318c0000, -0xff090200, -0x15800000, -0xff05080d, -0x00000000, -0x10000000, -0xff05083e, -0x00000000, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0xff000000, -0x02083021, -0x02293821, -0x8ccd0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0xff000000, -0x02083821, -0x02293021, -0x8ced0000, -0xff098200, -0xd4f60000, -0xd4d40000, -0x2da10000, -0xff098200, -0xff000000, -0x02083021, -0x02093821, -0x8ccd0000, -0xff098200, -0x8cee0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0x2dcc0000, -0xff098200, -0x002c0824, -0xff000000, -0x10200000, -0xff05083d, -0x0217b821, -0x4636a000, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0xff000000, -0x02083021, -0x02293821, -0x8ccd0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0xff000000, -0x02083821, -0x02293021, -0x8ced0000, -0xff098200, -0xd4f60000, -0xd4d40000, -0x2da10000, -0xff098200, -0xff000000, -0x02083021, -0x02093821, -0x8ccd0000, -0xff098200, -0x8cee0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0x2dcc0000, -0xff098200, -0x002c0824, -0xff000000, -0x10200000, -0xff05083d, -0x0217b821, -0x4636a001, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0xff000000, -0x02083021, -0x02293821, -0x8ccd0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0xff000000, -0x02083821, -0x02293021, -0x8ced0000, -0xff098200, -0xd4f60000, -0xd4d40000, -0x2da10000, -0xff098200, -0xff000000, -0x02083021, -0x02093821, -0x8ccd0000, -0xff098200, -0x8cee0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0x2dcc0000, -0xff098200, -0x002c0824, -0xff000000, -0x10200000, -0xff05083d, -0x0217b821, -0x4636a002, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0xff000000, -0x02083021, -0x02293821, -0x8ccd0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0xff000000, -0x02083821, -0x02293021, -0x8ced0000, -0xff098200, -0xd4f60000, -0xd4d40000, -0x2da10000, -0xff098200, -0xff000000, -0x02083021, -0x02093821, -0x8ccd0000, -0xff098200, -0x8cee0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0x2dcc0000, -0xff098200, -0x002c0824, -0xff000000, -0x10200000, -0xff05083d, -0x0217b821, -0x4636a003, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0xff000000, -0x02083021, -0x02293821, -0x8ccd0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0xff000000, -0x02083821, -0x02293021, -0x8ced0000, -0xff098200, -0xd4f60000, -0xd4d40000, -0x2da10000, -0xff098200, -0xff000000, -0x02083021, -0x02093821, -0x8ccd0000, -0xff098200, -0x8cee0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0x2dcc0000, -0xff098200, -0x002c0824, -0xff000000, -0x10200000, -0xff05083d, -0x0217b821, -0xff060098, -0x04110000, -0xff05085b, -0x4636a303, -0x46360002, -0x4620a001, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0xff000000, -0x02083021, -0x02293821, -0x8ccd0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0xff000000, -0x02083821, -0x02293021, -0x8ced0000, -0xff098200, -0xd4f60000, -0xd4d40000, -0x2da10000, -0xff098200, -0xff000000, -0x02083021, -0x02093821, -0x8ccd0000, -0xff098200, -0x8cee0000, -0xff098200, -0xd4d40000, -0xd4f60000, -0x2da10000, -0xff098200, -0x2dcc0000, -0xff098200, -0x002c0824, -0xff000000, -0x10200000, -0xff05083d, -0x0217b821, -0x10000000, -0xff050898, -0x00000000, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0x02083021, -0x02093821, -0x8ccd0000, -0xff098200, -0x8cee0000, -0xff098200, -0xd4cc0000, -0xd4ee0000, -0x2da10000, -0xff098200, -0x2dcc0000, -0xff098200, -0x002c0824, -0x8e790000, -0xff098200, -0x10200000, -0xff05083d, -0x0217b821, -0x0320f809, -0x00000000, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0x01283023, -0xae900000, -0xff098200, -0x02092821, -0x0100a821, -0xff06002b, -0x8e790000, -0xff098200, -0x000630c2, -0xafb20014, -0x0320f809, -0x02802021, -0x14400000, -0xff050836, -0x8e900000, -0xff098200, -0x02154021, -0xd5000000, -0x0217b821, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000a6842, -0x022d6823, -0x8e4b0000, -0x26520004, -0x8dacfffc, -0x0217b821, -0x240e0000, -0xff098200, -0xaeec0000, -0xff098200, -0xaeee0000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000a6842, -0x022d6823, -0x8e4b0000, -0x26520004, -0x8dacfffc, -0x0217b821, -0x240e0000, -0xff098200, -0xaeec0000, -0xff098200, -0xaeee0000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000b5403, -0x448a0000, -0x0217b821, -0x46800021, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x022a5021, -0x0217b821, -0xd5400000, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000a68c2, -0x0217b821, -0x01a06027, -0x8e4b0000, -0x26520004, -0xaeec0000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x0217b821, -0xaefe0000, -0xff098200, -0x26f70008, -0x020a5021, -0xff06000b, -0xaefe0000, -0xff098200, -0x02ea082a, -0x14200000, -0xff05080b, -0x26f70008, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x8e080000, -0xff098200, -0x000a5042, -0x01485021, -0x8d480000, -0xff098200, -0x8e4b0000, -0x26520004, -0x8d0d0000, -0xff098200, -0xd5a00000, -0x0217b821, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x8e080000, -0xff098200, -0x0017b842, -0x020a5021, -0x02e8b821, -0xd5400000, -0x8ee80000, -0xff098200, -0x910f0000, -0xff098200, -0x8d050000, -0xff098200, -0x31ef0000, -0xff090200, -0x910c0000, -0xff098200, -0x8d4e0000, -0xff098200, -0xf4a00000, -0x24010000, -0xff098200, -0x01ec7825, -0x11e10000, -0xff050802, -0x25ce0000, -0xff098200, -0xff06000b, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000c, -0x2dc10000, -0xff098200, -0x10200000, -0xff05080b, -0x8d4d0000, -0xff098200, -0x91af0000, -0xff098200, -0x31ef0000, -0xff090200, -0x11e00000, -0xff05080b, -0x8e790000, -0xff098200, -0x0320f809, -0x26640000, -0xff098200, -0x10000000, -0xff05080b, -0x00000000, -0xff000000, -0x8e080000, -0xff098200, -0x0017b842, -0x000a6842, -0x02e8b821, -0x022d6823, -0x8ee80000, -0xff098200, -0x8dadfffc, -0x910e0000, -0xff098200, -0x8d050000, -0xff098200, -0x91af0000, -0xff098200, -0x31c10000, -0xff090200, -0x910e0000, -0xff098200, -0x240c0000, -0xff098200, -0xacad0000, -0xff098200, -0x14200000, -0xff050802, -0xacac0000, -0xff098200, -0xff06000b, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000c, -0x11c00000, -0xff05080b, -0x31e10000, -0xff090200, -0x10200000, -0xff05080b, -0x8e790000, -0xff098200, -0x0320f809, -0x26640000, -0xff098200, -0x10000000, -0xff05080b, -0x00000000, -0xff000000, -0x8e080000, -0xff098200, -0x0017b842, -0x022a5021, -0x02e8b821, -0xd5400000, -0x8ee80000, -0xff098200, -0x8e4b0000, -0x26520004, -0x8d0d0000, -0xff098200, -0xf5a00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x8e080000, -0xff098200, -0x0017b842, -0x000a60c2, -0x02e8b821, -0x01806027, -0x8ee80000, -0xff098200, -0x8e4b0000, -0x26520004, -0x8d0d0000, -0xff098200, -0xadac0000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x8e8e0000, -0xff098200, -0x000a6042, -0x3c010000, -0xff090200, -0x01816021, -0x024c9021, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0x11c00000, -0xff050801, -0x02802021, -0x0320f809, -0x02172821, -0x8e900000, -0xff098200, -0xff06000b, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x000a6842, -0x8e790000, -0xff098200, -0x022d6823, -0x8e060000, -0xff098200, -0x8da5fffc, -0xae900000, -0xff098200, -0xafb20014, -0x0320f809, -0x02802021, -0x8e900000, -0xff098200, -0x240c0000, -0xff098200, -0x8e4b0000, -0x26520004, -0x0217b821, -0xaeec0000, -0xff098200, -0xaee20000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x8e6c0000, -0xff098200, -0x8e6d0000, -0xff098200, -0xae900000, -0xff098200, -0xafb20014, -0x018d082b, -0x10200000, -0xff050805, -0xff06000b, -0xff000000, -0x8e790000, -0xff098200, -0x000a28c2, -0x30a507ff, -0x240c0801, -0x24a1f801, -0x000a3382, -0x0181280a, -0x0320f809, -0x02802021, -0xff000000, -0x8e790000, -0xff098200, -0x000a6842, -0x022d6823, -0x02802021, -0x0320f809, -0x8da5fffc, -0xff000000, -0x8e900000, -0xff098200, -0x8e4b0000, -0x26520004, -0x0217b821, -0x240c0000, -0xff098200, -0xaee20000, -0xff098200, -0xaeec0000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x8e790000, -0xff098200, -0x0140a821, -0x0320f809, -0x02802021, -0x10000000, -0xff05080b, -0x02a05021, -0xff000000, -0x8e0e0000, -0xff098200, -0x000a6842, -0x022d6823, -0x8dc80000, -0xff098200, -0x8da9fffc, -0xff000000, -0x10000000, -0xff050899, -0xff000000, -0x10000000, -0xff05089a, -0xff000000, -0x0217b821, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0x02082821, -0x02093021, -0x8cad0000, -0xff098200, -0x8cce0000, -0xff098200, -0x8ca80000, -0xff098200, -0x24010000, -0xff098200, -0xd4c00000, -0x15a10000, -0xff050830, -0x0217b821, -0x2dc10000, -0xff098200, -0x10200000, -0xff050805, -0x24010000, -0xff098200, -0x462000a4, -0x8d0c0000, -0xff098200, -0x440e1000, -0x46801121, -0x8d0d0000, -0xff098200, -0x46240032, -0x01cc082b, -0x00000801, -0x000e70c0, -0x10200000, -0xff050830, -0x01ae7021, -0x8dcc0000, -0xff098200, -0x119e0000, -0xff050802, -0xd5c00000, -0xff06000b, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000c, -0x8d0e0000, -0xff098200, -0x11c00000, -0xff05080b, -0x00000000, -0x91cc0000, -0xff098200, -0x318c0000, -0xff090200, -0x15800000, -0xff05080b, -0x00000000, -0x10000000, -0xff050830, -0x00000000, -0xff06000f, -0x15c10000, -0xff050830, -0xff000000, -0x8cc90000, -0xff098200, -0x10000000, -0xff050899, -0x00000000, -0xff000000, -0x000b4542, -0x310807f8, -0x02082821, -0x000b4b82, -0x8cac0000, -0xff098200, -0x312903fc, -0x24010000, -0xff098200, -0x8ca80000, -0xff098200, -0x02293023, -0x8cc9fffc, -0x15810000, -0xff05082d, -0x0217b821, -0xff060099, -0x8d0c0000, -0xff098200, -0x8d2d0000, -0xff098200, -0x8d0e0000, -0xff098200, -0x01ac6824, -0x000d6140, -0x000d68c0, -0x018d6823, -0x01cd7021, -0xff06000b, -0x8dc40000, -0xff098200, -0x8dcc0000, -0xff098200, -0x8dcd0000, -0xff098200, -0x8dc50000, -0xff098200, -0x24840000, -0xff098200, -0x01896026, -0x008c0825, -0x14200000, -0xff050804, -0x8d0f0000, -0xff098200, -0x10be0000, -0xff050805, -0x8dc40000, -0xff098200, -0xff06000d, -0x8e4b0000, -0x26520004, -0xaee50000, -0xff098200, -0xaee40000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000e, -0x15a00000, -0xff05080b, -0xff000000, -0x01a07021, -0xff06000f, -0x11e00000, -0xff05080d, -0x24050000, -0xff098200, -0x91ec0000, -0xff098200, -0x318c0000, -0xff090200, -0x15800000, -0xff05080d, -0x00000000, -0x10000000, -0xff05082e, -0x00000000, -0xff000000, -0x000b4542, -0x310807f8, -0x02082821, -0x314907f8, -0x8ca40000, -0xff098200, -0x24010000, -0xff098200, -0x8ca80000, -0xff098200, -0x0217b821, -0x14810000, -0xff05082f, -0x000960c2, -0x8d0d0000, -0xff098200, -0x8d0e0000, -0xff098200, -0x018d082b, -0x10200000, -0xff05082f, -0x01c94821, -0x8d2d0000, -0xff098200, -0x11be0000, -0xff050805, -0xd5200000, -0xff06000b, -0x8e4b0000, -0x26520004, -0xf6e00000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x8d0e0000, -0xff098200, -0x11c00000, -0xff05080b, -0x00000000, -0x91cd0000, -0xff098200, -0x31ad0000, -0xff090200, -0x15a00000, -0xff05080b, -0x00000000, -0x10000000, -0xff05082f, -0x00000000, -0xff000000, -0x000b4542, -0x310807f8, -0x314907f8, -0x02082821, -0x02093021, -0x8cad0000, -0xff098200, -0x8cce0000, -0xff098200, -0x8ca80000, -0xff098200, -0x24010000, -0xff098200, -0xd4c00000, -0x15a10000, -0xff050834, -0x0217b821, -0x2dc10000, -0xff098200, -0x10200000, -0xff050805, -0x24010000, -0xff098200, -0x462000a4, -0x8d0c0000, -0xff098200, -0x440e1000, -0x46801121, -0x8d0d0000, -0xff098200, -0x46240032, -0x01cc082b, -0x00000801, -0x000e70c0, -0x10200000, -0xff050834, -0x01ae6821, -0x910f0000, -0xff098200, -0x8dac0000, -0xff098200, -0x119e0000, -0xff050803, -0xd6e00000, -0xff06000b, -0x31e10000, -0xff090200, -0x14200000, -0xff050807, -0xf5a00000, -0xff06000c, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000d, -0x8d0e0000, -0xff098200, -0x11c00000, -0xff05080b, -0x00000000, -0x91ce0000, -0xff098200, -0x31ce0000, -0xff090200, -0xff000000, -0x15c00000, -0xff05080b, -0x00000000, -0x10000000, -0xff050834, -0x00000000, -0xff06000f, -0x15c10000, -0xff050834, -0x8cc90000, -0xff098200, -0x10000000, -0xff05089a, -0x00000000, -0xff060011, -0x8e6c0000, -0xff098200, -0x31ef0000, -0xff090200, -0xae680000, -0xff098200, -0xa10f0000, -0xff098200, -0x10000000, -0xff05080c, -0xad0c0000, -0xff098200, -0xff000000, -0x000b4542, -0x310807f8, -0x02082821, -0x000b4b82, -0x8cac0000, -0xff098200, -0x312903fc, -0x24010000, -0xff098200, -0x02293023, -0x8ca80000, -0xff098200, -0x8cc9fffc, -0x15810000, -0xff050831, -0x0217b821, -0xff06009a, -0x8d0c0000, -0xff098200, -0x8d2d0000, -0xff098200, -0x8d0e0000, -0xff098200, -0xa1000000, -0xff098200, -0x01ac6824, -0x000d6140, -0x000d68c0, -0x018d6823, -0x01cd7021, -0xd6f40000, -0xff06000b, -0x8dc40000, -0xff098200, -0x8dcc0000, -0xff098200, -0x24010000, -0xff098200, -0x8dcd0000, -0xff098200, -0x14810000, -0xff050805, -0x8dc50000, -0xff098200, -0x15890000, -0xff050805, -0x910f0000, -0xff098200, -0x10be0000, -0xff050804, -0x8d0c0000, -0xff098200, -0xff06000c, -0x31e10000, -0xff090200, -0x14200000, -0xff050807, -0xff000000, -0xf5d40000, -0xff098200, -0xff06000d, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000e, -0x11800000, -0xff05080c, -0x00000000, -0x918c0000, -0xff098200, -0x318c0000, -0xff090200, -0x15800000, -0xff05080c, -0x00000000, -0x10000000, -0xff050832, -0x00000000, -0xff06000f, -0x15a00000, -0xff05080b, -0x01a07021, -0x8d0e0000, -0xff098200, -0x11c00000, -0xff050806, -0x26660000, -0xff098200, -0x91cc0000, -0xff098200, -0x318c0000, -0xff090200, -0x11800000, -0xff050832, -0x24010000, -0xff098200, -0xff060010, -0x8e790000, -0xff098200, -0xacc90000, -0xff098200, -0xacc10000, -0xff098200, -0xae900000, -0xff098200, -0x01002821, -0xafb20014, -0x0320f809, -0x02802021, -0x8e900000, -0xff098200, -0xff000000, -0x10000000, -0xff05080d, -0xf4540000, -0xff060011, -0x8e6c0000, -0xff098200, -0x31ef0000, -0xff090200, -0xae680000, -0xff098200, -0xa10f0000, -0xff098200, -0x10000000, -0xff05080d, -0xad0c0000, -0xff098200, -0xff000000, -0x000b4542, -0x310807f8, -0x02082821, -0x314907f8, -0x8ca40000, -0xff098200, -0x24010000, -0xff098200, -0x8ca80000, -0xff098200, -0x0217b821, -0x14810000, -0xff050833, -0x000960c2, -0x8d0d0000, -0xff098200, -0x8d0e0000, -0xff098200, -0x018d082b, -0x10200000, -0xff050833, -0x01c94821, -0x8d2d0000, -0xff098200, -0x910f0000, -0xff098200, -0x11be0000, -0xff050805, -0xd6e00000, -0xff06000b, -0x31e10000, -0xff090200, -0x14200000, -0xff050807, -0xf5200000, -0xff06000c, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x8d0e0000, -0xff098200, -0x11c00000, -0xff05080b, -0x00000000, -0x91cd0000, -0xff098200, -0x31ad0000, -0xff090200, -0x15a00000, -0xff05080b, -0x00000000, -0x10000000, -0xff050833, -0x00000000, -0xff060011, -0x8e6c0000, -0xff098200, -0xff000000, -0x31ef0000, -0xff090200, -0xae680000, -0xff098200, -0xa10f0000, -0xff098200, -0x10000000, -0xff05080c, -0xad0c0000, -0xff098200, -0xff000000, -0x0217b821, -0xff06000b, -0x022a7821, -0x8ee50000, -0xff098200, -0x26acfff8, -0x8def0000, -0xff098200, -0x11800000, -0xff050804, -0x000c30c2, -0x00cf3021, -0x8cae0000, -0xff098200, -0x000f68c0, -0x90af0000, -0xff098200, -0x8ca40000, -0xff098200, -0x01c6082b, -0x14200000, -0xff050805, -0x02ec7021, -0x01a46821, -0x31ec0000, -0xff090200, -0xff06000d, -0xd6e00000, -0x26f70008, -0x02ee082b, -0xf5a00000, -0x14200000, -0xff05080d, -0x25ad0008, -0x15800000, -0xff050807, -0x00000000, -0xff06000e, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x8e790000, -0xff098200, -0xae900000, -0xff098200, -0xafb20014, -0x01408021, -0x0320f809, -0x02802021, -0x02005021, -0x10000000, -0xff05080b, -0x8e900000, -0xff098200, -0xff060011, -0x8e6c0000, -0xff098200, -0x31ef0000, -0xff090200, -0xae650000, -0xff098200, -0xa0af0000, -0xff098200, -0xff000000, -0x10000000, -0xff05080e, -0xacac0000, -0xff098200, -0xff000000, -0x314907f8, -0x10000000, -0xff05089b, -0x01354821, -0xff000000, -0x314907f8, -0xff06009b, -0x02007021, -0x02178021, -0x24010000, -0xff098200, -0x8e0c0000, -0xff098200, -0x8e080000, -0xff098200, -0x26100008, -0x15810000, -0xff050825, -0x2529fff8, -0xae120000, -0xff098200, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff000000, -0x01555021, -0xff000000, -0x0217b821, -0x24010000, -0xff098200, -0x8eec0000, -0xff098200, -0x8ee80000, -0xff098200, -0x01404821, -0x8e0d0000, -0xff098200, -0x26f70008, -0x15810000, -0xff050840, -0x2529fff8, -0xff060041, -0x31ac0000, -0xff090200, -0x910f0000, -0xff098200, -0x15800000, -0xff050807, -0x39ae0000, -0xff090200, -0xff06000b, -0xae080000, -0xff098200, -0x2de10002, -0x02007021, -0x11200000, -0xff050803, -0x01207821, -0xff06000c, -0xd6e00000, -0x26f70008, -0x25effff8, -0xf5c00000, -0x15e00000, -0xff05080c, -0x25ce0008, -0xff06000d, -0x01816025, -0x11800000, -0xff050805, -0x00000000, -0xff06000e, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff06000f, -0x8dabfffc, -0x000bb942, -0x32f707f8, -0x02176823, -0x8dad0000, -0xff098200, -0x8dad0000, -0xff098200, -0x10000000, -0xff05080e, -0xff000000, -0x8db10000, -0xff098200, -0xff060011, -0x31c10000, -0xff090200, -0x14200000, -0xff05080b, -0x020e7023, -0x01c08021, -0x8dcd0000, -0xff098200, -0x10000000, -0xff05080b, -0x31ac0000, -0xff090200, -0xff000000, -0x02007021, -0x02178021, -0x24010000, -0xff098200, -0x8e0d0000, -0xff098200, -0x8e080000, -0xff098200, -0xd602fff8, -0xd600fff0, -0xae0d0000, -0xff098200, -0xae080000, -0xff098200, -0xf6020010, -0xf6000008, -0x26100008, -0x15a10000, -0xff050825, -0x24090010, -0xae120000, -0xff098200, -0x8d120000, -0xff098200, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000bb942, -0x000d6880, -0x32f707f8, -0x026d6021, -0x8d8c0000, -0x01800008, -0x02f0b821, -0xff000000, -0x0217b821, -0x8ee80000, -0xff098200, -0x8ee90000, -0xff098200, -0x8d0c0000, -0xff098200, -0x8d0d0000, -0xff098200, -0x26520004, -0xff06000b, -0x012c082b, -0x10200000, -0xff050805, -0x000978c0, -0x01af7821, -0x8dee0000, -0xff098200, -0xd5e00000, -0x44891000, -0x964a0000, -0xff098200, -0x11de0000, -0xff05080b, -0x25290001, -0x468010a1, -0x3c0f0000, -0xff090200, -0xf6e00008, -0x000a5080, -0x014f5021, -0xaee90000, -0xff098200, -0x024a9021, -0xf6e20000, -0xff06000d, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x8d0d0000, -0xff098200, -0x012c4823, -0x8d0e0000, -0xff098200, -0xff060010, -0x01a9082b, -0x14200000, -0xff05080d, -0x00097940, -0x000940c0, -0x01e87823, -0x01ee7821, -0x8de80000, -0xff098200, -0xd5e00000, -0x964a0000, -0xff098200, -0x111e0000, -0xff050810, -0x25290001, -0xd5e20000, -0xff098200, -0x3c0f0000, -0xff090200, -0xf6e00008, -0x012c4821, -0x000a5080, -0x014f5021, -0xf6e20000, -0x024a9021, -0x10000000, -0xff05080d, -0xff000000, -0xaee90000, -0xff098200, -0xff000000, -0x0217b821, -0x8eec0000, -0xff098200, -0x8eed0000, -0xff098200, -0x8eee0000, -0xff098200, -0x8eef0000, -0xff098200, -0x24010000, -0xff098200, -0x15810000, -0xff050805, -0x25ce0000, -0xff098200, -0x91ad0000, -0xff098200, -0x25ef0000, -0xff098200, -0x000a6042, -0x01cf7025, -0x25ad0000, -0xff098200, -0x024c6021, -0x01ae6825, -0x15a00000, -0xff050805, -0x3c0e0000, -0xff090200, -0x018e9021, -0xaee00000, -0xff098200, -0xff06000b, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x240f0000, -0xff098200, -0x240d0000, -0xff098200, -0xa24f0000, -0xff098200, -0x018e9021, -0x10000000, -0xff05080b, -0xa24d0000, -0xff098200, -0xff000000, -0x8e0c0000, -0xff098200, -0x314907f8, -0x000b4542, -0x02094821, -0x310807f8, -0x0217b821, -0x25290000, -0xff098200, -0x02e87021, -0x260ffff8, -0x012c4823, -0x11000000, -0xff050805, -0x01e96823, -0x25cefff0, -0xff06000b, -0x8d240000, -0xff098200, -0x012f082b, -0x8d250000, -0xff098200, -0x25290008, -0x03c1200a, -0xaee40000, -0xff098200, -0xaee50000, -0xff098200, -0x02ee082b, -0x14200000, -0xff05080b, -0x26f70008, -0xff06000d, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff06000f, -0x8e8c0000, -0xff098200, -0x19a00000, -0xff05080d, -0x24150008, -0x02ed7021, -0x018e082b, -0x14200000, -0xff050807, -0x25b50008, -0xff060010, -0xd5200000, -0x25290008, -0xf6e00000, -0x012f082b, -0x14200000, -0xff050810, -0x26f70008, -0x10000000, -0xff05080d, -0x00000000, -0xff060011, -0x8e790000, -0xff098200, -0xae970000, -0xff098200, -0x02f0b823, -0xae900000, -0xff098200, -0x01308023, -0xafb20014, -0x000d28c2, -0x0320f809, -0x02802021, -0x02004821, -0x8e900000, -0xff098200, -0x0217b821, -0x02094821, -0x10000000, -0xff050810, -0xff000000, -0x260ffff8, -0xff000000, -0x01555021, -0xff000000, -0x8e120000, -0xff098200, -0x0217b821, -0x0140a821, -0xff06000b, -0x324c0000, -0xff090200, -0x15800000, -0xff05089c, -0x3a4d0000, -0xff090200, -0xff060017, -0x8e4bfffc, -0x260efff8, -0x2549fff8, -0x000b6142, -0x000b4542, -0x318c07f8, -0x310807f8, -0x01c87821, -0x11200000, -0xff050803, -0x01cc8023, -0xff06000c, -0xd6e00000, -0x26f70008, -0x2529fff8, -0xf5c00000, -0x15200000, -0xff05080c, -0x25ce0008, -0xff06000d, -0x25effff8, -0xff06000f, -0x01cf082b, -0x14200000, -0xff050806, -0x8e0d0000, -0xff098200, -0x8e4b0000, -0x26520004, -0x8dad0000, -0xff098200, -0x8db10000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff060010, -0xadde0000, -0xff098200, -0x10000000, -0xff05080f, -0x25ce0008, -0xff06009c, -0x31ae0000, -0xff090200, -0x15c00000, -0xff050818, -0x00000000, -0x020d8023, -0x10000000, -0xff05080b, -0x8e120000, -0xff098200, -0xff000000, -0x8e120000, -0xff098200, -0x0217b821, -0x0140a821, -0x324c0000, -0xff090200, -0x15800000, -0xff05089c, -0x3a4d0000, -0xff090200, -0x8e4bfffc, -0x260efff8, -0xff000000, -0xd6e00000, -0xff000000, -0x000b4542, -0x000bb942, -0x310807f8, -0x32f707f8, -0xff000000, -0xf5c00000, -0xff000000, -0x01d78023, -0xff06000f, -0x0148082b, -0x14200000, -0xff050806, -0x8e0d0000, -0xff098200, -0x8e4b0000, -0x26520004, -0x8dad0000, -0xff098200, -0x8db10000, -0xff098200, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff060010, -0x25ce0008, -0x254a0008, -0x10000000, -0xff05080f, -0xff000000, -0xadde0000, -0xff098200, -0xff000000, -0xadde0000, -0xff098200, -0xff000000, -0x00126842, -0x31ad007e, -0x01b36821, -0x95ae0000, -0xff098200, -0x25ce0000, -0xff098200, -0x05c00000, -0xff050890, -0xa5ae0000, -0xff098200, -0xff000000, -0x0217b821, -0xff000000, -0xd6e00000, -0xff098200, -0xd6e40000, -0xff098200, -0xd6e20000, -0xff098200, -0x8eef0000, -0xff098200, -0x46240000, -0xf6e00000, -0xff098200, -0xff000000, -0x8eed0000, -0xff098200, -0x8eef0000, -0xff098200, -0x8eee0000, -0xff098200, -0x2dad0000, -0xff098200, -0x2dec0000, -0xff098200, -0x2dce0000, -0xff098200, -0x01ac6824, -0x01ae6824, -0xd6e00000, -0xff098200, -0x11a00000, -0xff050842, -0xd6e20000, -0xff098200, -0xff000000, -0x000a5042, -0x3c0c0000, -0xff090200, -0xff000000, -0x4622003e, -0x4620113e, -0xf6e00000, -0xff098200, -0xff000000, -0x240d0001, -0x240e0001, -0x014c6021, -0x01e0782a, -0x00006801, -0x024c9021, -0x00047001, -0x964a0000, -0xff098200, -0x01cf680b, -0x15a00000, -0xff070800, -0x000a50c0, -0xff000000, -0x240d0001, -0x240e0001, -0x01e0782a, -0x00006801, -0x00047001, -0x01cf680b, -0x15a00000, -0xff070800, -0x00000000, -0xff000000, -0x014c6821, -0x01e0782a, -0x01a07021, -0xff000000, -0x00016801, -0x00057001, -0xff000000, -0x00006801, -0x00047001, -0xff000000, -0x01cf680b, -0x024d9021, -0xff000000, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x00126842, -0x31ad007e, -0x01b36821, -0x95ae0000, -0xff098200, -0x25ce0000, -0xff098200, -0x05c00000, -0xff050890, -0xa5ae0000, -0xff098200, -0xff000000, -0x0217b821, -0x8eed0000, -0xff098200, -0x11be0000, -0xff050801, -0x8eee0000, -0xff098200, -0xff000000, -0xaeed0000, -0xff098200, -0x10000000, -0xff070800, -0xaeee0000, -0xff098200, -0xff000000, -0x000a6042, -0x3c010000, -0xff090200, -0x01816021, -0x024c9021, -0xaeed0000, -0xff098200, -0xaeee0000, -0xff098200, -0xff000000, -0xff06000b, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x00126842, -0x31ad007e, -0x01b36821, -0x95ae0000, -0xff098200, -0x25ce0000, -0xff098200, -0x05c00000, -0xff050890, -0xa5ae0000, -0xff098200, -0xff000000, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x8e6d0000, -0xff098200, -0x000a5042, -0x24010000, -0x01aa6821, -0xae610000, -0xff098200, -0x8dae0000, -0xae700000, -0xff098200, -0xae740000, -0xff098200, -0x8dce0000, -0xff098200, -0x01c00008, -0x267e0000, -0xff098200, -0xff000000, -0x000a6042, -0x3c010000, -0xff090200, -0x01816021, -0x024c9021, -0x8e4b0000, -0x26520004, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x00126842, -0x31ad007e, -0x01b36821, -0x95ae0000, -0xff098200, -0x25ce0000, -0xff098200, -0x05c00000, -0xff050892, -0xa5ae0000, -0xff098200, -0xff000000, -0x8e8e0000, -0xff098200, -0x924d0000, -0xff098200, -0x8e510000, -0xff098200, -0x01d7082b, -0x14200000, -0xff050820, -0x000d68c0, -0xff000000, -0x8e4b0000, -0x26520004, -0xff000000, -0xff06000c, -0x012d082b, -0x14200000, -0xff050803, -0x02090821, -0xff000000, -0x000b5402, -0x10000000, -0xff070800, -0x000a50c0, -0xff000000, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0xff06000d, -0xac3e0000, -0xff098200, -0x10000000, -0xff05080c, -0x25290008, -0xff000000, -0xf0f0f0f0, -0xff000000, -0x02096821, -0x8e8e0000, -0xff098200, -0x02e96021, -0xada80000, -0xff098200, -0x252f0000, -0xff098200, -0x018e082b, -0x8e510000, -0xff098200, -0x10200000, -0xff050820, -0xadaf0000, -0xff098200, -0x924e0000, -0xff098200, -0x0200b821, -0x01a04821, -0x8e4b0000, -0x26520004, -0x11c00000, -0xff050803, -0x25b00008, -0xff06000b, -0x8eec0000, -0xff098200, -0x8eef0000, -0xff098200, -0x02e9082b, -0x01802021, -0x03c1600a, -0x03c1200b, -0xadaf0000, -0xff098200, -0x25ceffff, -0xadac0000, -0xff098200, -0x25ad0008, -0xaee40000, -0xff098200, -0x15c00000, -0xff05080b, -0x26f70008, -0xff06000d, -0x316d00ff, -0x000d6880, -0x026d6021, -0x000b5402, -0x8d810000, -0x000bb942, -0x000a50c0, -0x00200008, -0x32f707f8, -0xff000000, -0x8d190000, -0xff098200, -0xff000000, -0x8e790000, -0xff098200, -0xff000000, -0x02e96821, -0x8e8e0000, -0xff098200, -0x02094821, -0xae900000, -0xff098200, -0x01cd082b, -0xae890000, -0xff098200, -0x240c0000, -0xff098200, -0xff000000, -0x8d050000, -0xff098200, -0xff000000, -0x14200000, -0xff05081f, -0x02802021, -0x0320f809, -0xae6c0000, -0xff098200, -0x8e900000, -0xff098200, -0x000250c0, -0x8e8d0000, -0xff098200, -0x240c0000, -0xff098200, -0x8e120000, -0xff098200, -0x01aab823, -0x10000000, -0xff050816, -0xae6c0000, -0xff098200, -0xff000000, -0xff010000 -}; - -enum { - GLOB_vm_returnp, - GLOB_cont_dispatch, - GLOB_vm_returnc, - GLOB_BC_RET_Z, - GLOB_vm_return, - GLOB_vm_leave_cp, - GLOB_vm_leave_unw, - GLOB_vm_unwind_c, - GLOB_vm_unwind_c_eh, - GLOB_vm_unwind_ff, - GLOB_vm_unwind_ff_eh, - GLOB_vm_growstack_c, - GLOB_vm_growstack_l, - GLOB_vm_resume, - GLOB_vm_pcall, - GLOB_vm_call, - GLOB_vm_call_dispatch, - GLOB_vmeta_call, - GLOB_vm_call_dispatch_f, - GLOB_vm_cpcall, - GLOB_cont_ffi_callback, - GLOB_vm_call_tail, - GLOB_cont_cat, - GLOB_BC_CAT_Z, - GLOB_cont_nop, - GLOB_vmeta_tgets1, - GLOB_vmeta_tgets, - GLOB_vmeta_tgetb, - GLOB_vmeta_tgetv, - GLOB_vmeta_tsets1, - GLOB_vmeta_tsets, - GLOB_vmeta_tsetb, - GLOB_vmeta_tsetv, - GLOB_vmeta_comp, - GLOB_vmeta_binop, - GLOB_cont_ra, - GLOB_cont_condt, - GLOB_cont_condf, - GLOB_vmeta_equal, - GLOB_vmeta_equal_cd, - GLOB_vmeta_unm, - GLOB_vmeta_arith, - GLOB_vmeta_len, - GLOB_BC_LEN_Z, - GLOB_vmeta_callt, - GLOB_BC_CALLT_Z, - GLOB_vmeta_for, - GLOB_ff_assert, - GLOB_fff_fallback, - GLOB_fff_res, - GLOB_ff_type, - GLOB_fff_resn, - GLOB_ff_getmetatable, - GLOB_fff_restv, - GLOB_ff_setmetatable, - GLOB_ff_rawget, - GLOB_ff_tonumber, - GLOB_ff_tostring, - GLOB_fff_gcstep, - GLOB_ff_next, - GLOB_ff_pairs, - GLOB_ff_ipairs_aux, - GLOB_ff_ipairs, - GLOB_ff_pcall, - GLOB_ff_xpcall, - GLOB_ff_coroutine_resume, - GLOB_ff_coroutine_wrap_aux, - GLOB_ff_coroutine_yield, - GLOB_ff_math_abs, - GLOB_fff_res1, - GLOB_ff_math_floor, - GLOB_vm_floor, - GLOB_ff_math_ceil, - GLOB_vm_ceil, - GLOB_ff_math_log, - GLOB_ff_math_log10, - GLOB_ff_math_exp, - GLOB_ff_math_sin, - GLOB_ff_math_cos, - GLOB_ff_math_tan, - GLOB_ff_math_asin, - GLOB_ff_math_acos, - GLOB_ff_math_atan, - GLOB_ff_math_sinh, - GLOB_ff_math_cosh, - GLOB_ff_math_tanh, - GLOB_ff_math_pow, - GLOB_ff_math_atan2, - GLOB_ff_math_fmod, - GLOB_ff_math_sqrt, - GLOB_ff_math_deg, - GLOB_ff_math_rad, - GLOB_ff_math_ldexp, - GLOB_ff_math_frexp, - GLOB_ff_math_modf, - GLOB_ff_math_min, - GLOB_ff_math_max, - GLOB_ff_string_len, - GLOB_fff_resi, - GLOB_ff_string_byte, - GLOB_ff_string_char, - GLOB_fff_newstr, - GLOB_ff_string_sub, - GLOB_fff_emptystr, - GLOB_ff_string_rep, - GLOB_ff_string_reverse, - GLOB_ff_string_lower, - GLOB_ff_string_upper, - GLOB_ff_table_getn, - GLOB_ff_bit_band, - GLOB_ff_bit_bor, - GLOB_ff_bit_bxor, - GLOB_ff_bit_bswap, - GLOB_ff_bit_bnot, - GLOB_ff_bit_lshift, - GLOB_ff_bit_rshift, - GLOB_ff_bit_arshift, - GLOB_ff_bit_rol, - GLOB_ff_bit_ror, - GLOB_ff_bit_tobit, - GLOB_vm_record, - GLOB_vm_rethook, - GLOB_vm_inshook, - GLOB_cont_hook, - GLOB_vm_hotloop, - GLOB_vm_callhook, - GLOB_vm_hotcall, - GLOB_vm_exit_handler, - GLOB_vm_exit_interp, - GLOB_vm_trunc, - GLOB_vm_ffi_callback, - GLOB_vm_ffi_call, - GLOB_BC_MODVN_Z, - GLOB_BC_TGETS_Z, - GLOB_BC_TSETS_Z, - GLOB_BC_CALL_Z, - GLOB_BC_RETV_Z, - GLOB__MAX -}; -static const char *const globnames[] = { - "vm_returnp", - "cont_dispatch", - "vm_returnc", - "BC_RET_Z", - "vm_return", - "vm_leave_cp", - "vm_leave_unw", - "vm_unwind_c", - "vm_unwind_c_eh", - "vm_unwind_ff", - "vm_unwind_ff_eh", - "vm_growstack_c", - "vm_growstack_l", - "vm_resume", - "vm_pcall", - "vm_call", - "vm_call_dispatch", - "vmeta_call", - "vm_call_dispatch_f", - "vm_cpcall", - "cont_ffi_callback", - "vm_call_tail", - "cont_cat", - "BC_CAT_Z", - "cont_nop", - "vmeta_tgets1", - "vmeta_tgets", - "vmeta_tgetb", - "vmeta_tgetv", - "vmeta_tsets1", - "vmeta_tsets", - "vmeta_tsetb", - "vmeta_tsetv", - "vmeta_comp", - "vmeta_binop", - "cont_ra", - "cont_condt", - "cont_condf", - "vmeta_equal", - "vmeta_equal_cd", - "vmeta_unm", - "vmeta_arith", - "vmeta_len", - "BC_LEN_Z", - "vmeta_callt", - "BC_CALLT_Z", - "vmeta_for", - "ff_assert", - "fff_fallback", - "fff_res", - "ff_type", - "fff_resn", - "ff_getmetatable", - "fff_restv", - "ff_setmetatable", - "ff_rawget", - "ff_tonumber", - "ff_tostring", - "fff_gcstep", - "ff_next", - "ff_pairs", - "ff_ipairs_aux", - "ff_ipairs", - "ff_pcall", - "ff_xpcall", - "ff_coroutine_resume", - "ff_coroutine_wrap_aux", - "ff_coroutine_yield", - "ff_math_abs", - "fff_res1", - "ff_math_floor", - "vm_floor", - "ff_math_ceil", - "vm_ceil", - "ff_math_log", - "ff_math_log10", - "ff_math_exp", - "ff_math_sin", - "ff_math_cos", - "ff_math_tan", - "ff_math_asin", - "ff_math_acos", - "ff_math_atan", - "ff_math_sinh", - "ff_math_cosh", - "ff_math_tanh", - "ff_math_pow", - "ff_math_atan2", - "ff_math_fmod", - "ff_math_sqrt", - "ff_math_deg", - "ff_math_rad", - "ff_math_ldexp", - "ff_math_frexp", - "ff_math_modf", - "ff_math_min", - "ff_math_max", - "ff_string_len", - "fff_resi", - "ff_string_byte", - "ff_string_char", - "fff_newstr", - "ff_string_sub", - "fff_emptystr", - "ff_string_rep", - "ff_string_reverse", - "ff_string_lower", - "ff_string_upper", - "ff_table_getn", - "ff_bit_band", - "ff_bit_bor", - "ff_bit_bxor", - "ff_bit_bswap", - "ff_bit_bnot", - "ff_bit_lshift", - "ff_bit_rshift", - "ff_bit_arshift", - "ff_bit_rol", - "ff_bit_ror", - "ff_bit_tobit", - "vm_record", - "vm_rethook", - "vm_inshook", - "cont_hook", - "vm_hotloop", - "vm_callhook", - "vm_hotcall", - "vm_exit_handler", - "vm_exit_interp", - "vm_trunc", - "vm_ffi_callback", - "vm_ffi_call", - "BC_MODVN_Z", - "BC_TGETS_Z", - "BC_TSETS_Z", - "BC_CALL_Z", - "BC_RETV_Z", - (const char *)0 -}; -static const char *const extnames[] = { - (const char *)0 -}; -#define Dt1(_V) (int)(ptrdiff_t)&(((lua_State *)0)_V) -#define Dt2(_V) (int)(ptrdiff_t)&(((global_State *)0)_V) -#define Dt3(_V) (int)(ptrdiff_t)&(((TValue *)0)_V) -#define Dt4(_V) (int)(ptrdiff_t)&(((GCobj *)0)_V) -#define Dt5(_V) (int)(ptrdiff_t)&(((GCstr *)0)_V) -#define Dt6(_V) (int)(ptrdiff_t)&(((GCtab *)0)_V) -#define Dt7(_V) (int)(ptrdiff_t)&(((GCfuncL *)0)_V) -#define Dt8(_V) (int)(ptrdiff_t)&(((GCfuncC *)0)_V) -#define Dt9(_V) (int)(ptrdiff_t)&(((GCproto *)0)_V) -#define DtA(_V) (int)(ptrdiff_t)&(((GCupval *)0)_V) -#define DtB(_V) (int)(ptrdiff_t)&(((Node *)0)_V) -#define DtC(_V) (int)(ptrdiff_t)&(((int *)0)_V) -#define DtD(_V) (int)(ptrdiff_t)&(((GCtrace *)0)_V) -#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) -#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) -#define GG_DISP2GOT (GG_OFS(got) - GG_OFS(dispatch)) -#define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name) -#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) - -/* Generate subroutines used by opcodes and other parts of the VM. */ -/* The .code_sub section should be last to help static branch prediction. */ -static void build_subroutines(BuildCtx *ctx) -{ - dasm_put(Dst, 0); - dasm_put(Dst, 1, FRAME_P, LJ_TTRUE, LJ_ENDIAN_SELECT(-4,-8), LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_C, Dt1(->base), ~LJ_VMST_C, DISPATCH_GL(vmstate), Dt1(->top)); - dasm_put(Dst, 57, Dt1(->cframe), 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt1(->maxstack), LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 109, DISPATCH_GOT(lj_state_growstack), Dt1(->top), ~LJ_VMST_C, Dt1(->glref), Dt2(->vmstate), LJ_TNIL, Dt1(->base), Dt1(->glref), LJ_TFALSE, ~LJ_VMST_INTERP, LJ_ENDIAN_SELECT(-4,-8), GG_G2DISP, LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 172, DISPATCH_GL(vmstate), LUA_MINSTACK, Dt1(->base), Dt1(->top), DISPATCH_GOT(lj_state_growstack), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4); - dasm_put(Dst, 235, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt1(->glref), Dt1(->status), FRAME_CP, CFRAME_RESUME, GG_G2DISP, Dt1(->cframe), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-4,-8), Dt1(->status), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate), FRAME_TYPE); - dasm_put(Dst, 296, LJ_TNIL, 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, FRAME_CP, 72+9*4); - dasm_put(Dst, 345, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, Dt1(->base)); - dasm_put(Dst, 396, Dt1(->top), ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), LJ_ENDIAN_SELECT(-4,-8), LJ_TFUNC, LJ_ENDIAN_SELECT(-8,-4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc), 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4); - dasm_put(Dst, 457, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP, -16+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-8,-4)); -#if LJ_HASFFI - dasm_put(Dst, 506); -#endif - dasm_put(Dst, 508, -16+LJ_ENDIAN_SELECT(4,0), Dt7(->pc)); -#if LJ_HASFFI - dasm_put(Dst, 514); -#endif - dasm_put(Dst, 517, -8+LJ_ENDIAN_SELECT(4,0), PC2PROTO(k)); -#if LJ_HASFFI - dasm_put(Dst, 523); -#endif - dasm_put(Dst, 531, Dt1(->base), DISPATCH_GL(tmptv), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GL(tmptv), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), DISPATCH_GL(tmptv2), LJ_ENDIAN_SELECT(4,0), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GL(tmptv)); - dasm_put(Dst, 589, DISPATCH_GOT(lj_meta_tget), Dt1(->base), -FRAME_CONT, Dt1(->top), -16+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(-8,-4), DISPATCH_GL(tmptv), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GL(tmptv), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), DISPATCH_GL(tmptv2), LJ_ENDIAN_SELECT(4,0), LJ_TSTR, LJ_ENDIAN_SELECT(0,4)); - dasm_put(Dst, 651, LJ_ENDIAN_SELECT(4,0), DISPATCH_GL(tmptv), DISPATCH_GOT(lj_meta_tset), Dt1(->base), -FRAME_CONT, Dt1(->top), -16+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(-8,-4), DISPATCH_GOT(lj_meta_comp), Dt1(->base), LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535)); - dasm_put(Dst, 721, -4+LJ_ENDIAN_SELECT(1,2), LJ_ENDIAN_SELECT(4,0), LJ_TISTRUECOND, LJ_ENDIAN_SELECT(4,0), LJ_TISTRUECOND, DISPATCH_GOT(lj_meta_equal), Dt1(->base)); -#if LJ_HASFFI - dasm_put(Dst, 776, DISPATCH_GOT(lj_meta_equal_cd), Dt1(->base)); -#endif - dasm_put(Dst, 789, DISPATCH_GOT(lj_meta_arith), Dt1(->base), -16+LJ_ENDIAN_SELECT(4,0), FRAME_CONT); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 818); -#endif - dasm_put(Dst, 820, DISPATCH_GOT(lj_meta_len), Dt1(->base)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 828); -#else - dasm_put(Dst, 835); -#endif - dasm_put(Dst, 839, DISPATCH_GOT(lj_meta_call), Dt1(->base), LJ_ENDIAN_SELECT(-8,-4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc), DISPATCH_GOT(lj_meta_call), Dt1(->base), LJ_ENDIAN_SELECT(-4,-8), LJ_ENDIAN_SELECT(-8,-4), DISPATCH_GOT(lj_meta_for), Dt1(->base)); -#if LJ_HASJIT - dasm_put(Dst, 896, BC_JFORI); -#endif - dasm_put(Dst, 900); -#if LJ_HASJIT - dasm_put(Dst, 904, BC_JFORI, BC_FORI); -#else - dasm_put(Dst, 911, BC_FORI); -#endif - dasm_put(Dst, 915, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TISTRUECOND, LJ_ENDIAN_SELECT(-4,-8), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, Dt8(->upvalue), LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 970, LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TUDATA, Dt6(->metatable), DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]), LJ_TNIL, Dt6(->hmask), LJ_TTAB, Dt5(->hash), Dt6(->node), LJ_TSTR, offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, val)+LJ_ENDIAN_SELECT(0,4)); - dasm_put(Dst, 1020, LJ_TISNUM, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT]), LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(0,4), LJ_TTAB, -LJ_TTAB, Dt6(->metatable), Dt6(->marked)); - dasm_put(Dst, 1075, LJ_GC_BLACK, Dt6(->metatable), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), DISPATCH_GOT(lj_tab_get), -LJ_TTAB, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); - dasm_put(Dst, 1129, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), LJ_TISNUM, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), DISPATCH_GOT(lj_str_fromnum), LJ_TSTR, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GOT(lj_tab_next)); - dasm_put(Dst, 1184, Dt1(->base), Dt1(->top), LJ_TNIL, (2+1)*8, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_ENDIAN_SELECT(-4,-8)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1219, Dt6(->metatable), Dt8(->upvalue[0])); -#else - dasm_put(Dst, 1226, Dt8(->upvalue[0])); -#endif - dasm_put(Dst, 1229, 8+LJ_ENDIAN_SELECT(4,0), (3+1)*8, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(4,0), -LJ_TTAB, LJ_TISNUM, LJ_ENDIAN_SELECT(-4,-8), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), (0+1)*8, (2+1)*8, Dt6(->hmask)); - dasm_put(Dst, 1292, DISPATCH_GOT(lj_tab_getinth), (0+1)*8, (0+1)*8, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_ENDIAN_SELECT(-4,-8)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1323, Dt6(->metatable), Dt8(->upvalue[0])); -#else - dasm_put(Dst, 1330, Dt8(->upvalue[0])); -#endif - dasm_put(Dst, 1333, 8+LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(0,4), (3+1)*8, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 8+FRAME_PCALL, 8+LJ_ENDIAN_SELECT(4,0), DISPATCH_GL(hookmask), LJ_TFUNC, HOOK_ACTIVE_SHIFT, 16+FRAME_PCALL, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); - dasm_put(Dst, 1392, LJ_TTHREAD, Dt1(->status), Dt1(->cframe), Dt1(->top), Dt1(->base), -LUA_YIELD, Dt1(->maxstack), LJ_ENDIAN_SELECT(-4,-8), Dt1(->base), Dt1(->top), Dt1(->top)); - dasm_put(Dst, 1451, Dt1(->base), LUA_YIELD+1, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, LJ_TTRUE, -8+LJ_ENDIAN_SELECT(4,0), LJ_TFALSE, Dt1(->top)); - dasm_put(Dst, 1511, (2+1)*8, -8+LJ_ENDIAN_SELECT(4,0), FRAME_TYPE, DISPATCH_GOT(lj_state_growstack), Dt8(->upvalue[0].gcr), Dt1(->status), Dt1(->cframe), Dt1(->top), Dt1(->base), -LUA_YIELD, Dt1(->maxstack), LJ_ENDIAN_SELECT(-4,-8), Dt1(->base), Dt1(->top)); - dasm_put(Dst, 1566, Dt1(->top), Dt1(->base), LUA_YIELD+1, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 1627, DISPATCH_GOT(lj_ffh_coroutine_wrap_err), DISPATCH_GOT(lj_state_growstack), Dt1(->cframe), Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); - dasm_put(Dst, 1682, LJ_ENDIAN_SELECT(-4,-8), LJ_ENDIAN_SELECT(-4,-8), -8+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(0,4), (1+1)*8, FRAME_TYPE, -8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); - dasm_put(Dst, 1750, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(log), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(log10), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 1806, DISPATCH_GOT(exp), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(sin), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(cos), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(tan)); - dasm_put(Dst, 1862, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(asin), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(acos), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(atan), LJ_TISNUM); - dasm_put(Dst, 1918, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(sinh), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(cosh), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(tanh), LJ_TISNUM); - dasm_put(Dst, 1977, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, DISPATCH_GOT(pow), LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, DISPATCH_GOT(atan2), LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 2039, DISPATCH_GOT(fmod), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, Dt8(->upvalue[0]), LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 2094, DISPATCH_GOT(ldexp), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, DISPATCH_GOT(frexp), LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv), (2+1)*8, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, DISPATCH_GOT(modf), LJ_ENDIAN_SELECT(-4,-8), (2+1)*8); - dasm_put(Dst, 2158, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); - dasm_put(Dst, 2217, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, Dt5(->len), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), -LJ_TSTR, Dt5(->len), Dt5([1]), LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 2276, LJ_TISNUM, DISPATCH_GOT(lj_str_new), Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 16+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 2337, LJ_TSTR, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), -LJ_TSTR, LJ_TISNUM, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 2407, DISPATCH_GL(tmpbuf.buf), Dt5([1]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 2464, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2527, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, DISPATCH_GOT(lj_tab_len), LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 2586, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 2649, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 2719, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0)); - dasm_put(Dst, 2790, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, Dt8(->f)); - dasm_put(Dst, 2863, LJ_ENDIAN_SELECT(-4,-8), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), FRAME_TYPE, LJ_ENDIAN_SELECT(1,2), DISPATCH_GOT(lj_state_growstack), LUA_MINSTACK, Dt1(->base)); - dasm_put(Dst, 2932, DISPATCH_GOT(lj_gc_step), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); -#if LJ_HASJIT - dasm_put(Dst, 2958, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); -#endif - dasm_put(Dst, 2981, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, DISPATCH_GOT(lj_dispatch_ins), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 3029, GG_DISP2STATIC, -24+LJ_ENDIAN_SELECT(0,4)); -#if LJ_HASJIT - dasm_put(Dst, 3048, LJ_ENDIAN_SELECT(-8,-4), GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), DISPATCH_GOT(lj_trace_hot), Dt1(->base), Dt1(->top)); -#endif - dasm_put(Dst, 3073); -#if LJ_HASJIT - dasm_put(Dst, 3075); -#endif - dasm_put(Dst, 3078); -#if LJ_HASJIT - dasm_put(Dst, 3081); -#endif - dasm_put(Dst, 3084, DISPATCH_GOT(lj_dispatch_call), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); -#if LJ_HASJIT - dasm_put(Dst, 3108, -(16+32*8+32*4), 16+0*8, 16+32*8+0*4, 16+32*8+1*4, 16+2*8, 16+32*8+2*4, 16+32*8+3*4, 16+4*8, 16+32*8+4*4, 16+32*8+5*4, 16+6*8, 16+32*8+6*4, 16+32*8+7*4, 16+8*8, 16+32*8+8*4, 16+32*8+9*4, 16+10*8, 16+32*8+10*4, 16+32*8+11*4, 16+12*8, 16+32*8+12*4, 16+32*8+13*4, 16+14*8); - dasm_put(Dst, 3155, 16+32*8+14*4, 16+32*8+15*4, 16+16*8, 16+32*8+16*4, 16+32*8+17*4, 16+18*8, 16+32*8+18*4, 16+32*8+19*4, 16+20*8, 16+32*8+20*4, 16+32*8+21*4, 16+22*8, 16+32*8+22*4, 16+32*8+23*4, 16+24*8, 16+32*8+24*4, 16+32*8+25*4, 16+26*8, 16+32*8+26*4, 16+32*8+27*4, 16+28*8, 16+32*8+28*4, 16+30*8); - dasm_put(Dst, 3202, 16+32*8+30*4, 16+32*8+31*4, ~LJ_VMST_EXIT, 16+32*8+32*4, -GG_DISP2G-32768, DISPATCH_GL(vmstate), 16+32*8+29*4, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_GOT(lj_trace_exit), DISPATCH_J(L), DISPATCH_J(parent), DISPATCH_J(exitno), GG_DISP2J, Dt1(->base), Dt1(->cframe), Dt1(->base)); -#endif - dasm_put(Dst, 3246); -#if LJ_HASJIT - dasm_put(Dst, 3248, -GG_DISP2G-32768, LJ_ENDIAN_SELECT(-8,-4), LJ_TNIL, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF*4, DISPATCH_GOT(lj_err_throw)); -#endif - dasm_put(Dst, 3297); -#if LJ_HASJIT - dasm_put(Dst, 3345); -#endif - dasm_put(Dst, 3368); -#if LJ_HASFFI -#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) - dasm_put(Dst, 3370, 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt2(->ctype_state), GG_G2DISP, DISPATCH_GOT(lj_ccallback_enter), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[0])); - dasm_put(Dst, 3418, DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[1]), 112+16, DtE(->cb.stack), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), Dt7(->pc)); -#endif - dasm_put(Dst, 3462); -#if LJ_HASFFI - dasm_put(Dst, 3464, DISPATCH_GOT(lj_ccallback_leave), DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1])); -#endif - dasm_put(Dst, 3488); -#if LJ_HASFFI -#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 3490, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->fpr[0]), DtF(->fpr[1])); -#endif -} - -/* Generate the code for a single instruction. */ -static void build_ins(BuildCtx *ctx, BCOp op, int defop) -{ - int vk = 0; - dasm_put(Dst, 3546, defop); - - switch (op) { - - /* -- Comparison ops ---------------------------------------------------- */ - - /* Remember: all ops branch for a true comparison, fall through otherwise. */ - - case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - dasm_put(Dst, 3548, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535)); - if (op == BC_ISLT || op == BC_ISGE) { - dasm_put(Dst, 3571); - } else { - dasm_put(Dst, 3573); - } - if (op == BC_ISLT || op == BC_ISLE) { - dasm_put(Dst, 3575); - } else { - dasm_put(Dst, 3577); - } - dasm_put(Dst, 3579); - break; - - case BC_ISEQV: case BC_ISNEV: - vk = op == BC_ISEQV; - dasm_put(Dst, 3593, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM, LJ_TISNUM); - if (vk) { - dasm_put(Dst, 3617); - } else { - dasm_put(Dst, 3619); - } - dasm_put(Dst, 3621, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4)); - if (LJ_HASFFI) { - dasm_put(Dst, 3640, LJ_TCDATA); - } - dasm_put(Dst, 3645, LJ_TISPRI); - if (LJ_HASFFI) { - dasm_put(Dst, 3648); - } - dasm_put(Dst, 3651, LJ_TISTABUD+1); - if (vk) { - dasm_put(Dst, 3662); - } else { - dasm_put(Dst, 3664); - } - dasm_put(Dst, 3666, Dt6(->metatable), Dt6(->nomm), 1<> 16) & 65535)); - if (vk) { - dasm_put(Dst, 3709); - } else { - dasm_put(Dst, 3711); - } - dasm_put(Dst, 3713); - break; - - case BC_ISEQN: case BC_ISNEN: - vk = op == BC_ISEQN; - dasm_put(Dst, 3726, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM); - if (LJ_HASFFI) { - dasm_put(Dst, 3741); - } else { - dasm_put(Dst, 3744); - } - dasm_put(Dst, 3747); - if (vk) { - dasm_put(Dst, 3750); - } else { - dasm_put(Dst, 3754); - } - dasm_put(Dst, 3758); - if (LJ_HASFFI) { - dasm_put(Dst, 3770, LJ_TCDATA); - } - break; - - case BC_ISEQP: case BC_ISNEP: - vk = op == BC_ISEQP; - dasm_put(Dst, 3780, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(2,0)); - if (LJ_HASFFI) { - dasm_put(Dst, 3789, LJ_TCDATA); - } - dasm_put(Dst, 3794, (-(BCBIAS_J*4 >> 16) & 65535)); - if (vk) { - dasm_put(Dst, 3800); - } else { - dasm_put(Dst, 3802); - } - dasm_put(Dst, 3804); - break; - - /* -- Unary test and copy ops ------------------------------------------- */ - - case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: - dasm_put(Dst, 3817, LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0)); - if (op == BC_IST || op == BC_ISF) { - dasm_put(Dst, 3824, LJ_TISTRUECOND, (-(BCBIAS_J*4 >> 16) & 65535)); - if (op == BC_IST) { - dasm_put(Dst, 3831); - } else { - dasm_put(Dst, 3833); - } - dasm_put(Dst, 3835); - } else { - dasm_put(Dst, 3837, LJ_TISTRUECOND); - if (op == BC_ISTC) { - dasm_put(Dst, 3841); - } else { - dasm_put(Dst, 3844); - } - dasm_put(Dst, 3847, (-(BCBIAS_J*4 >> 16) & 65535)); - } - dasm_put(Dst, 3856); - break; - - /* -- Unary ops --------------------------------------------------------- */ - - case BC_MOV: - dasm_put(Dst, 3868); - break; - case BC_NOT: - dasm_put(Dst, 3884, LJ_ENDIAN_SELECT(4,0), LJ_TFALSE, LJ_TISTRUECOND, LJ_TTRUE, LJ_ENDIAN_SELECT(4,0)); - break; - case BC_UNM: - dasm_put(Dst, 3908, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); - break; - case BC_LEN: - dasm_put(Dst, 3931, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, LJ_TTAB, Dt5(->len)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 3965, Dt6(->metatable)); -#endif - dasm_put(Dst, 3972, DISPATCH_GOT(lj_tab_len)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 3981, Dt6(->nomm), 1<base), DISPATCH_GOT(lj_meta_cat), Dt1(->base)); - break; - - /* -- Constant ops ------------------------------------------------------ */ - - case BC_KSTR: - dasm_put(Dst, 4377, LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); - break; - case BC_KCDATA: -#if LJ_HASFFI - dasm_put(Dst, 4399, LJ_TCDATA, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); -#endif - break; - case BC_KSHORT: - dasm_put(Dst, 4421); - break; - case BC_KNUM: - dasm_put(Dst, 4438); - break; - case BC_KPRI: - dasm_put(Dst, 4454, LJ_ENDIAN_SELECT(4,0)); - break; - case BC_KNIL: - dasm_put(Dst, 4471, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); - break; - - /* -- Upvalue and function ops ------------------------------------------ */ - - case BC_UGET: - dasm_put(Dst, 4495, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); - break; - case BC_USETV: - dasm_put(Dst, 4518, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK|1, -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), LJ_ENDIAN_SELECT(0,4), Dt4(->gch.marked), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); - break; - case BC_USETS: - dasm_put(Dst, 4578, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), Dt5(->marked), LJ_GC_BLACK, DtA(->closed), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); - break; - case BC_USETN: - dasm_put(Dst, 4633, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); - break; - case BC_USETP: - dasm_put(Dst, 4656, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v), LJ_ENDIAN_SELECT(4,0)); - break; - - case BC_UCLO: - dasm_put(Dst, 4680, Dt1(->openupval), (-(BCBIAS_J*4 >> 16) & 65535), DISPATCH_GOT(lj_func_closeuv), Dt1(->base), Dt1(->base)); - break; - - case BC_FNEW: - dasm_put(Dst, 4711, DISPATCH_GOT(lj_func_newL_gc), LJ_ENDIAN_SELECT(-8,-4), Dt1(->base), Dt1(->base), LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); - break; - - /* -- Table ops --------------------------------------------------------- */ - - case BC_TNEW: - case BC_TDUP: - dasm_put(Dst, 4744, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); - if (op == BC_TNEW) { - dasm_put(Dst, 4756, DISPATCH_GOT(lj_tab_new)); - } else { - dasm_put(Dst, 4767, DISPATCH_GOT(lj_tab_dup)); - } - dasm_put(Dst, 4775, Dt1(->base), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(lj_gc_step_fixtop)); - break; - - case BC_GGET: - case BC_GSET: - dasm_put(Dst, 4805, LJ_ENDIAN_SELECT(-8,-4), Dt7(->env)); - if (op == BC_GGET) { - dasm_put(Dst, 4813); - } else { - dasm_put(Dst, 4816); - } - dasm_put(Dst, 4819); - break; - - case BC_TGETV: - dasm_put(Dst, 4821, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), Dt6(->node), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), -LJ_TSTR, Dt6(->metatable), offsetof(Node, val)+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); - dasm_put(Dst, 4971, LJ_TNIL, Dt6(->nomm), 1<asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), Dt6(->marked), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); - break; - case BC_TSETS: - dasm_put(Dst, 5146, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), Dt6(->marked), Dt6(->metatable), LJ_GC_BLACK); - dasm_put(Dst, 5204, DtB(->val), Dt6(->nomm), 1<metatable), DISPATCH_GL(tmptv), Dt6(->nomm), 1<base), Dt1(->base)); - dasm_put(Dst, 5266, DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); - break; - case BC_TSETB: - dasm_put(Dst, 5283, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); - break; - - case BC_TSETM: - dasm_put(Dst, 5361, -8+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->marked), Dt6(->array), LJ_GC_BLACK, DISPATCH_GOT(lj_tab_reasize), Dt1(->base), Dt1(->base), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked)); - dasm_put(Dst, 5434, Dt6(->gclist)); - break; - - /* -- Calls and vararg handling ----------------------------------------- */ - - case BC_CALLM: - dasm_put(Dst, 5439); - break; - case BC_CALL: - dasm_put(Dst, 5444, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); - break; - - case BC_CALLMT: - dasm_put(Dst, 5473); - break; - case BC_CALLT: - dasm_put(Dst, 5475, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, Dt7(->ffid), FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), -8+LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc)); - dasm_put(Dst, 5544, PC2PROTO(k), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE); - break; - - case BC_ITERC: - dasm_put(Dst, 5560, LJ_TFUNC, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); - break; - - case BC_ITERN: -#if LJ_HASJIT -#endif - dasm_put(Dst, 5595, -16+LJ_ENDIAN_SELECT(0,4), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt6(->node), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), DtB(->key), (-(BCBIAS_J*4 >> 16) & 65535)); - dasm_put(Dst, 5677, -8+LJ_ENDIAN_SELECT(0,4)); - break; - - case BC_ISNEXT: - dasm_put(Dst, 5680, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), -16+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(4,0), LJ_TFUNC, -LJ_TTAB, Dt8(->ffid), -LJ_TNIL, -FF_next_N, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), BC_JMP, BC_ITERC, -4+LJ_ENDIAN_SELECT(0,3), LJ_ENDIAN_SELECT(0,3)); - break; - - case BC_VARG: - dasm_put(Dst, 5737, LJ_ENDIAN_SELECT(-4,-8), FRAME_VARG, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), Dt1(->maxstack), DISPATCH_GOT(lj_state_growstack), Dt1(->top), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 5824); - break; - - /* -- Returns ----------------------------------------------------------- */ - - case BC_RETM: - dasm_put(Dst, 5826); - break; - - case BC_RET: - dasm_put(Dst, 5828, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8)); - break; - - case BC_RET0: case BC_RET1: - dasm_put(Dst, 5900, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG); - if (op == BC_RET1) { - dasm_put(Dst, 5913); - } - dasm_put(Dst, 5915); - if (op == BC_RET1) { - dasm_put(Dst, 5920); - } - dasm_put(Dst, 5922, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k)); - if (op == BC_RET1) { - dasm_put(Dst, 5950, LJ_ENDIAN_SELECT(4,0)); - } else { - dasm_put(Dst, 5953, -8+LJ_ENDIAN_SELECT(4,0)); - } - break; - - /* -- Loops and branches ------------------------------------------------ */ - - case BC_FORL: -#if LJ_HASJIT - dasm_put(Dst, 5956, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); -#endif - break; - - case BC_JFORI: - case BC_JFORL: -#if !LJ_HASJIT - break; -#endif - case BC_FORI: - case BC_IFORL: - vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 5968); - if (vk) { - dasm_put(Dst, 5970, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_IDX*8); - } else { - dasm_put(Dst, 5982, FORL_IDX*8+LJ_ENDIAN_SELECT(4,0), FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_STOP*8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_TISNUM, FORL_IDX*8, FORL_STOP*8); - } - if (op != BC_JFORL) { - dasm_put(Dst, 6003, (-(BCBIAS_J*4 >> 16) & 65535)); - } - dasm_put(Dst, 6007, FORL_EXT*8); - if (op == BC_JFORI) { - dasm_put(Dst, 6012, -4+LJ_ENDIAN_SELECT(2,0), BC_JLOOP); - } else if (op == BC_JFORL) { - dasm_put(Dst, 6026, BC_JLOOP); - } else { - dasm_put(Dst, 6036); - if (op == BC_FORI) { - dasm_put(Dst, 6040); - } else { - dasm_put(Dst, 6043); - } - dasm_put(Dst, 6046); - } - dasm_put(Dst, 6049); - break; - - case BC_ITERL: -#if LJ_HASJIT - dasm_put(Dst, 6061, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); -#endif - break; - - case BC_JITERL: -#if !LJ_HASJIT - break; -#endif - case BC_IITERL: - dasm_put(Dst, 6073, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); - if (op == BC_JITERL) { - dasm_put(Dst, 6081, -8+LJ_ENDIAN_SELECT(4,0), BC_JLOOP, -8+LJ_ENDIAN_SELECT(0,4)); - } else { - dasm_put(Dst, 6088, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(0,4)); - } - dasm_put(Dst, 6098); - break; - - case BC_LOOP: -#if LJ_HASJIT - dasm_put(Dst, 6111, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); -#endif - break; - - case BC_ILOOP: - dasm_put(Dst, 6123); - break; - - case BC_JLOOP: -#if LJ_HASJIT - dasm_put(Dst, 6135, DISPATCH_J(trace), DISPATCH_GL(vmstate), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), DtD(->mcode), GG_DISP2G+32768); -#endif - break; - - case BC_JMP: - dasm_put(Dst, 6153, (-(BCBIAS_J*4 >> 16) & 65535)); - break; - - /* -- Function headers -------------------------------------------------- */ - - case BC_FUNCF: -#if LJ_HASJIT - dasm_put(Dst, 6170, GG_DISP2HOT, -HOTCOUNT_CALL, GG_DISP2HOT); -#endif - case BC_FUNCV: /* NYI: compiled vararg functions. */ - break; - - case BC_JFUNCF: -#if !LJ_HASJIT - break; -#endif - case BC_IFUNCF: - dasm_put(Dst, 6182, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k)); - if (op != BC_JFUNCF) { - dasm_put(Dst, 6193); - } - dasm_put(Dst, 6196); - if (op == BC_JFUNCF) { - dasm_put(Dst, 6202, BC_JLOOP); - } else { - dasm_put(Dst, 6207); - } - dasm_put(Dst, 6217, LJ_ENDIAN_SELECT(4,0)); - break; - - case BC_JFUNCV: -#if !LJ_HASJIT - break; -#endif - dasm_put(Dst, 6224); - break; /* NYI: compiled vararg functions. */ - - case BC_IFUNCV: - dasm_put(Dst, 6226, Dt1(->maxstack), LJ_ENDIAN_SELECT(0,4), 8+FRAME_VARG, -4+PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), -4+PC2PROTO(numparams), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); - break; - - case BC_FUNCC: - case BC_FUNCCW: - if (op == BC_FUNCC) { - dasm_put(Dst, 6281, Dt8(->f)); - } else { - dasm_put(Dst, 6284, DISPATCH_GL(wrapf)); - } - dasm_put(Dst, 6287, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); - if (op == BC_FUNCCW) { - dasm_put(Dst, 6299, Dt8(->f)); - } - dasm_put(Dst, 6302, DISPATCH_GL(vmstate), Dt1(->base), Dt1(->top), ~LJ_VMST_INTERP, LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GL(vmstate)); - break; - - /* ---------------------------------------------------------------------- */ - - default: - fprintf(stderr, "Error: undefined opcode BC_%s\n", bc_names[op]); - exit(2); - break; - } -} - -static int build_backend(BuildCtx *ctx) -{ - int op; - - dasm_growpc(Dst, BC__MAX); - - build_subroutines(ctx); - - dasm_put(Dst, 6323); - for (op = 0; op < BC__MAX; op++) - build_ins(ctx, (BCOp)op, op); - - return BC__MAX; -} - -/* Emit pseudo frame-info for all assembler functions. */ -static void emit_asm_debug(BuildCtx *ctx) -{ - int fcofs = (int)((uint8_t *)ctx->glob[GLOB_vm_ffi_call] - ctx->code); - int i; - switch (ctx->mode) { - case BUILD_elfasm: - fprintf(ctx->fp, "\t.section .debug_frame,\"\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe0:\n" - "\t.4byte .LECIE0-.LSCIE0\n" - ".LSCIE0:\n" - "\t.4byte 0xffffffff\n" - "\t.byte 0x1\n" - "\t.string \"\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 31\n" - "\t.byte 0xc\n\t.uleb128 29\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE0:\n\n"); - fprintf(ctx->fp, - ".LSFDE0:\n" - "\t.4byte .LEFDE0-.LASFDE0\n" - ".LASFDE0:\n" - "\t.4byte .Lframe0\n" - "\t.4byte .Lbegin\n" - "\t.4byte %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x9f\n\t.sleb128 1\n" - "\t.byte 0x9e\n\t.sleb128 2\n", - fcofs, CFRAME_SIZE); - for (i = 23; i >= 16; i--) - fprintf(ctx->fp, "\t.byte %d\n\t.uleb128 %d\n", 0x80+i, 26-i); - for (i = 30; i >= 20; i -= 2) - fprintf(ctx->fp, "\t.byte %d\n\t.uleb128 %d\n", 0x80+32+i, 42-i); - fprintf(ctx->fp, - "\t.align 2\n" - ".LEFDE0:\n\n"); -#if LJ_HASFFI - fprintf(ctx->fp, - ".LSFDE1:\n" - "\t.4byte .LEFDE1-.LASFDE1\n" - ".LASFDE1:\n" - "\t.4byte .Lframe0\n" - "\t.4byte lj_vm_ffi_call\n" - "\t.4byte %d\n" - "\t.byte 0x9f\n\t.uleb128 1\n" - "\t.byte 0x90\n\t.uleb128 2\n" - "\t.byte 0xd\n\t.uleb128 0x10\n" - "\t.align 2\n" - ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); -#endif - fprintf(ctx->fp, "\t.section .eh_frame,\"aw\",@progbits\n"); - fprintf(ctx->fp, - "\t.globl lj_err_unwind_dwarf\n" - ".Lframe1:\n" - "\t.4byte .LECIE1-.LSCIE1\n" - ".LSCIE1:\n" - "\t.4byte 0\n" - "\t.byte 0x1\n" - "\t.string \"zPR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 31\n" - "\t.uleb128 6\n" /* augmentation length */ - "\t.byte 0\n" - "\t.4byte lj_err_unwind_dwarf\n" - "\t.byte 0\n" - "\t.byte 0xc\n\t.uleb128 29\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE1:\n\n"); - fprintf(ctx->fp, - ".LSFDE2:\n" - "\t.4byte .LEFDE2-.LASFDE2\n" - ".LASFDE2:\n" - "\t.4byte .LASFDE2-.Lframe1\n" - "\t.4byte .Lbegin\n" - "\t.4byte %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x9f\n\t.sleb128 1\n" - "\t.byte 0x9e\n\t.sleb128 2\n", - fcofs, CFRAME_SIZE); - for (i = 23; i >= 16; i--) - fprintf(ctx->fp, "\t.byte %d\n\t.uleb128 %d\n", 0x80+i, 26-i); - for (i = 30; i >= 20; i -= 2) - fprintf(ctx->fp, "\t.byte %d\n\t.uleb128 %d\n", 0x80+32+i, 42-i); - fprintf(ctx->fp, - "\t.align 2\n" - ".LEFDE2:\n\n"); -#if LJ_HASFFI - fprintf(ctx->fp, - ".Lframe2:\n" - "\t.4byte .LECIE2-.LSCIE2\n" - ".LSCIE2:\n" - "\t.4byte 0\n" - "\t.byte 0x1\n" - "\t.string \"zR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 31\n" - "\t.uleb128 1\n" /* augmentation length */ - "\t.byte 0\n" - "\t.byte 0xc\n\t.uleb128 29\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE2:\n\n"); - fprintf(ctx->fp, - ".LSFDE3:\n" - "\t.4byte .LEFDE3-.LASFDE3\n" - ".LASFDE3:\n" - "\t.4byte .LASFDE3-.Lframe2\n" - "\t.4byte lj_vm_ffi_call\n" - "\t.4byte %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0x9f\n\t.uleb128 1\n" - "\t.byte 0x90\n\t.uleb128 2\n" - "\t.byte 0xd\n\t.uleb128 0x10\n" - "\t.align 2\n" - ".LEFDE3:\n\n", (int)ctx->codesz - fcofs); -#endif - break; - default: - break; - } -} - diff --git a/src/buildvm_ppc.h b/src/buildvm_ppc.h deleted file mode 100644 index ce0941ec..00000000 --- a/src/buildvm_ppc.h +++ /dev/null @@ -1,9797 +0,0 @@ -/* -** This file has been pre-processed with DynASM. -** http://luajit.org/dynasm.html -** DynASM version 1.3.0, DynASM ppc version 1.3.0 -** DO NOT EDIT! The original file is in "buildvm_ppc.dasc". -*/ - -#if DASM_VERSION != 10300 -#error "Version mismatch between DynASM and included encoding engine" -#endif - -#define DASM_SECTION_CODE_OP 0 -#define DASM_SECTION_CODE_SUB 1 -#define DASM_MAXSECTION 2 -static const unsigned int build_actionlist[7763] = { -0x00010001, -0x00060014, -0x72000000, -0x00090200, -0x39000000, -0x00098200, -0x41820000, -0x00050815, -0x8209fff8, -0x7d2e4b78, -0x9514fff8, -0x00060016, -0x72000000, -0x00090200, -0x398c0008, -0x7d936378, -0x41820000, -0x00050817, -0x00060018, -0x2c000000, -0x00098200, -0x56090038, -0x38000000, -0x00098200, -0x7d297050, -0x40a20000, -0x00050814, -0x350cfff8, -0x91320000, -0x00098200, -0x8121002c, -0x39cefff8, -0x90110000, -0x00098200, -0x55291800, -0x000900a1, -0x41820000, -0x00050802, -0x0006000b, -0x3508fff8, -0xc8140000, -0x3a940008, -0xd80e0000, -0x39ce0008, -0x40a20000, -0x0005080b, -0x0006000c, -0x7c096000, -0x40820000, -0x00050806, -0x0006000d, -0x91d20000, -0x00098200, -0x00060019, -0x00000000, -0x80010028, -0x38600000, -0x90120000, -0x00098200, -0x0006001a, -0x80010114, -0x81810034, -0x81c10000, -0x00098200, -0xc9c10000, -0x00098200, -0x81e10000, -0x00098200, -0xc9e10000, -0x00098200, -0x82010000, -0x00098200, -0xca010000, -0x00098200, -0x82210000, -0x00098200, -0xca210000, -0x00098200, -0x82410000, -0x00098200, -0xca410000, -0x00098200, -0x82610000, -0x00098200, -0xca610000, -0x00098200, -0x7c0803a6, -0x7d838120, -0x82810000, -0x00098200, -0xca810000, -0x00098200, -0x82a10000, -0x00098200, -0xcaa10000, -0x00098200, -0x82c10000, -0x00098200, -0xcac10000, -0x00098200, -0x82e10000, -0x00098200, -0xcae10000, -0x00098200, -0x00000000, -0x83010000, -0x00098200, -0xcb010000, -0x00098200, -0x83210000, -0x00098200, -0xcb210000, -0x00098200, -0x83410000, -0x00098200, -0xcb410000, -0x00098200, -0x83610000, -0x00098200, -0xcb610000, -0x00098200, -0x83810000, -0x00098200, -0xcb810000, -0x00098200, -0x83a10000, -0x00098200, -0xcba10000, -0x00098200, -0x83c10000, -0x00098200, -0xcbc10000, -0x00098200, -0x83e10000, -0x00098200, -0xcbe10000, -0x00098200, -0x38210110, -0x4e800020, -0x00060010, -0x40810000, -0x00050807, -0x81120000, -0x00098200, -0x7c0e4040, -0x40800000, -0x00050808, -0x92ee0000, -0x398c0008, -0x39ce0008, -0x48000000, -0x0005000c, -0x00060011, -0x00000000, -0x20c90000, -0x7c096050, -0x7d084110, -0x7c004038, -0x7dc07050, -0x48000000, -0x0005000d, -0x00060012, -0x91d20000, -0x00098200, -0x7d956378, -0x7d244b78, -0x7e439378, -0x48000001, -0x00030000, -0x8121002c, -0x7eacab78, -0x55291800, -0x000900a1, -0x81d20000, -0x00098200, -0x48000000, -0x0005000c, -0x0006001b, -0x7c611b78, -0x7c832378, -0x0006001c, -0x82410024, -0x38000000, -0x00098200, -0x81120000, -0x00098200, -0x90080000, -0x00098200, -0x48000000, -0x0005001a, -0x0006001d, -0x5461003a, -0x0006001e, -0x82410024, -0x3ac00000, -0x00098200, -0x81d20000, -0x00098200, -0x3cc059c0, -0x82320000, -0x00098200, -0x3b000000, -0x90c10010, -0x39000000, -0x00098200, -0x60c60004, -0x3ae00000, -0x00098200, -0x38000000, -0x00098200, -0xc3c10010, -0x820efff8, -0x3a8efff8, -0x90c10010, -0x3a310000, -0x00098200, -0x00000000, -0x91140000, -0x39800010, -0x90110000, -0x00098200, -0xc3e10010, -0x48000000, -0x00050016, -0x0006001f, -0x38800000, -0x00098200, -0x48000000, -0x00050002, -0x00060020, -0x7d6e5a14, -0x7e8ea050, -0x91d20000, -0x00098200, -0x3a100004, -0x91720000, -0x00098200, -0x568400fe, -0x000900ab, -0x0006000c, -0x92010020, -0x7e439378, -0x48000001, -0x00030000, -0x81d20000, -0x00098200, -0x81720000, -0x00098200, -0x814efffc, -0x7d6e5850, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060021, -0x9421fef0, -0x91c10000, -0x00098200, -0xd9c10000, -0x00098200, -0x91e10000, -0x00098200, -0xd9e10000, -0x00098200, -0x92010000, -0x00098200, -0xda010000, -0x00098200, -0x7c0802a6, -0x92210000, -0x00098200, -0x00000000, -0xda210000, -0x00098200, -0x92410000, -0x00098200, -0xda410000, -0x00098200, -0x92610000, -0x00098200, -0xda610000, -0x00098200, -0x92810000, -0x00098200, -0xda810000, -0x00098200, -0x92a10000, -0x00098200, -0xdaa10000, -0x00098200, -0x92c10000, -0x00098200, -0xdac10000, -0x00098200, -0x90010114, -0x92e10000, -0x00098200, -0xdae10000, -0x00098200, -0x93010000, -0x00098200, -0xdb010000, -0x00098200, -0x93210000, -0x00098200, -0xdb210000, -0x00098200, -0x7c000026, -0x93410000, -0x00098200, -0xdb410000, -0x00098200, -0x93610000, -0x00098200, -0xdb610000, -0x00098200, -0x93810000, -0x00098200, -0x00000000, -0xdb810000, -0x00098200, -0x93a10000, -0x00098200, -0xdba10000, -0x00098200, -0x93c10000, -0x00098200, -0xdbc10000, -0x00098200, -0x93e10000, -0x00098200, -0xdbe10000, -0x00098200, -0x90010034, -0x7c721b78, -0x82320000, -0x00098200, -0x7c8e2378, -0x89120000, -0x00098200, -0x92410024, -0x3a000000, -0x00098200, -0x38010000, -0x00098200, -0x3a310000, -0x00098200, -0x90a1002c, -0x28080000, -0x90a10030, -0x90120000, -0x00098200, -0x90a10028, -0x90610020, -0x41820000, -0x00050803, -0x7dd47378, -0x81d20000, -0x00098200, -0x3ac00000, -0x00098200, -0x81120000, -0x00098200, -0x820efff8, -0x3cc059c0, -0x98b20000, -0x00098200, -0x90c10010, -0x60c60004, -0xc3c10010, -0x7d8e4050, -0x90c10010, -0x3c004338, -0x398c0008, -0x90010008, -0x38000000, -0x00098200, -0x3b000000, -0x90110000, -0x00098200, -0x72000000, -0x00090200, -0x7d936378, -0xc3e10010, -0x3ae00000, -0x00098200, -0x00000000, -0x41820000, -0x00050817, -0x48000000, -0x00050018, -0x00060022, -0x9421fef0, -0x91c10000, -0x00098200, -0xd9c10000, -0x00098200, -0x91e10000, -0x00098200, -0xd9e10000, -0x00098200, -0x92010000, -0x00098200, -0xda010000, -0x00098200, -0x7c0802a6, -0x92210000, -0x00098200, -0xda210000, -0x00098200, -0x92410000, -0x00098200, -0xda410000, -0x00098200, -0x92610000, -0x00098200, -0xda610000, -0x00098200, -0x92810000, -0x00098200, -0xda810000, -0x00098200, -0x92a10000, -0x00098200, -0xdaa10000, -0x00098200, -0x92c10000, -0x00098200, -0xdac10000, -0x00098200, -0x90010114, -0x92e10000, -0x00098200, -0x00000000, -0xdae10000, -0x00098200, -0x93010000, -0x00098200, -0xdb010000, -0x00098200, -0x93210000, -0x00098200, -0xdb210000, -0x00098200, -0x7c000026, -0x93410000, -0x00098200, -0xdb410000, -0x00098200, -0x93610000, -0x00098200, -0xdb610000, -0x00098200, -0x93810000, -0x00098200, -0xdb810000, -0x00098200, -0x93a10000, -0x00098200, -0xdba10000, -0x00098200, -0x93c10000, -0x00098200, -0xdbc10000, -0x00098200, -0x93e10000, -0x00098200, -0xdbe10000, -0x00098200, -0x90010034, -0x3a000000, -0x00098200, -0x90c10030, -0x48000000, -0x00050001, -0x00060023, -0x9421fef0, -0x91c10000, -0x00098200, -0xd9c10000, -0x00098200, -0x00000000, -0x91e10000, -0x00098200, -0xd9e10000, -0x00098200, -0x92010000, -0x00098200, -0xda010000, -0x00098200, -0x7c0802a6, -0x92210000, -0x00098200, -0xda210000, -0x00098200, -0x92410000, -0x00098200, -0xda410000, -0x00098200, -0x92610000, -0x00098200, -0xda610000, -0x00098200, -0x92810000, -0x00098200, -0xda810000, -0x00098200, -0x92a10000, -0x00098200, -0xdaa10000, -0x00098200, -0x92c10000, -0x00098200, -0xdac10000, -0x00098200, -0x90010114, -0x92e10000, -0x00098200, -0xdae10000, -0x00098200, -0x93010000, -0x00098200, -0xdb010000, -0x00098200, -0x93210000, -0x00098200, -0xdb210000, -0x00098200, -0x00000000, -0x7c000026, -0x93410000, -0x00098200, -0xdb410000, -0x00098200, -0x93610000, -0x00098200, -0xdb610000, -0x00098200, -0x93810000, -0x00098200, -0xdb810000, -0x00098200, -0x93a10000, -0x00098200, -0xdba10000, -0x00098200, -0x93c10000, -0x00098200, -0xdbc10000, -0x00098200, -0x93e10000, -0x00098200, -0xdbe10000, -0x00098200, -0x90010034, -0x3a000000, -0x00098200, -0x0006000b, -0x81030000, -0x00098200, -0x90a1002c, -0x7c721b78, -0x90610024, -0x7c8e2378, -0x90320000, -0x00098200, -0x82320000, -0x00098200, -0x90610020, -0x91010028, -0x3a310000, -0x00098200, -0x0006000d, -0x81320000, -0x00098200, -0x3ac00000, -0x00098200, -0x81120000, -0x00098200, -0x00000000, -0x3cc059c0, -0x7e107214, -0x90c10010, -0x3b000000, -0x60c60004, -0xc3c10010, -0x7e098050, -0x90c10010, -0x3c004338, -0x7d6e4050, -0x90010008, -0x38000000, -0x00098200, -0xc3e10010, -0x3ae00000, -0x00098200, -0x90110000, -0x00098200, -0x00060024, -0x800efff8, -0x814efffc, -0x2c000000, -0x00098200, -0x40820000, -0x00050825, -0x00060026, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060027, -0x9421fef0, -0x91c10000, -0x00098200, -0xd9c10000, -0x00098200, -0x91e10000, -0x00098200, -0xd9e10000, -0x00098200, -0x92010000, -0x00098200, -0xda010000, -0x00098200, -0x7c0802a6, -0x92210000, -0x00098200, -0xda210000, -0x00098200, -0x92410000, -0x00098200, -0xda410000, -0x00098200, -0x92610000, -0x00098200, -0xda610000, -0x00098200, -0x92810000, -0x00098200, -0x00000000, -0xda810000, -0x00098200, -0x92a10000, -0x00098200, -0xdaa10000, -0x00098200, -0x92c10000, -0x00098200, -0xdac10000, -0x00098200, -0x90010114, -0x92e10000, -0x00098200, -0xdae10000, -0x00098200, -0x93010000, -0x00098200, -0xdb010000, -0x00098200, -0x93210000, -0x00098200, -0xdb210000, -0x00098200, -0x7c000026, -0x93410000, -0x00098200, -0xdb410000, -0x00098200, -0x93610000, -0x00098200, -0xdb610000, -0x00098200, -0x93810000, -0x00098200, -0xdb810000, -0x00098200, -0x93a10000, -0x00098200, -0xdba10000, -0x00098200, -0x93c10000, -0x00098200, -0xdbc10000, -0x00098200, -0x93e10000, -0x00098200, -0x00000000, -0xdbe10000, -0x00098200, -0x90010034, -0x7c721b78, -0x80030000, -0x00098200, -0x90610024, -0x81120000, -0x00098200, -0x90610020, -0x7c080050, -0x81120000, -0x00098200, -0x90320000, -0x00098200, -0x39200000, -0x9001002c, -0x91210030, -0x91010028, -0x7cc903a6, -0x4e800421, -0x7c6e1b79, -0x82320000, -0x00098200, -0x3a000000, -0x00098200, -0x3a310000, -0x00098200, -0x40820000, -0x0005080d, -0x48000000, -0x00050019, -0x00060015, -0x800efff4, -0x7dca7378, -0x7d2e4b78, -0x8109fffc, -0x00000000, -0x28000001, -0x00000000, -0x820afff0, -0x392cfff8, -0x81080000, -0x00098200, -0x7ef4492e, -0x00000000, -0x40810000, -0x00050801, -0x00000000, -0x81e80000, -0x00098200, -0x7c0903a6, -0x4e800420, -0x00000000, -0x0006000b, -0x41820000, -0x00050828, -0x390afff0, -0x7d6e4050, -0x48000000, -0x00050029, -0x00000000, -0x0006002a, -0x80f0fffc, -0x388afff0, -0x54f55d78, -0xc8140000, -0x7d0eaa14, -0x91d20000, -0x00098200, -0x7c082040, -0x7ca82050, -0x54f4dd78, -0xd8040000, -0x40a20000, -0x0005082b, -0x7c0ea5ae, -0x48000000, -0x0005002c, -0x0006002d, -0x38b10000, -0x00098200, -0x38000000, -0x00098200, -0x54ea5d78, -0x91650004, -0x7c8e5214, -0x90050000, -0x48000000, -0x00050001, -0x0006002e, -0x38910000, -0x00098200, -0x38000000, -0x00098200, -0x91440004, -0x38b10000, -0x00098200, -0x90040000, -0x39000000, -0x00098200, -0x91650004, -0x91050000, -0x48000000, -0x00050001, -0x0006002f, -0x00000000, -0x9001000c, -0xc8010008, -0xfc00f028, -0x00000000, -0x54ea5d78, -0x38b10000, -0x00098200, -0x7c8e5214, -0x00000000, -0x92c50000, -0x90050004, -0x00000000, -0xd8050000, -0x00000000, -0x48000000, -0x00050001, -0x00060030, -0x54ea5d78, -0x54eb9d78, -0x7c8e5214, -0x7cae5a14, -0x0006000b, -0x91d20000, -0x00098200, -0x7e439378, -0x92010020, -0x48000001, -0x00030001, -0x28030000, -0x41820000, -0x00050803, -0xc8030000, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000d, -0x210e0000, -0x00098200, -0x81d20000, -0x00098200, -0x920efff0, -0x7e087214, -0x814efffc, -0x39600010, -0x48000000, -0x00050026, -0x00060031, -0x38b10000, -0x00098200, -0x38000000, -0x00098200, -0x54ea5d78, -0x91650004, -0x7c8e5214, -0x90050000, -0x48000000, -0x00050001, -0x00060032, -0x38910000, -0x00098200, -0x38000000, -0x00098200, -0x91440004, -0x38b10000, -0x00098200, -0x90040000, -0x39000000, -0x00098200, -0x91650004, -0x91050000, -0x48000000, -0x00050001, -0x00060033, -0x00000000, -0x9001000c, -0xc8010008, -0xfc00f028, -0x00000000, -0x54ea5d78, -0x38b10000, -0x00098200, -0x7c8e5214, -0x00000000, -0x92c50000, -0x90050004, -0x00000000, -0xd8050000, -0x00000000, -0x48000000, -0x00050001, -0x00060034, -0x54ea5d78, -0x54eb9d78, -0x7c8e5214, -0x7cae5a14, -0x0006000b, -0x91d20000, -0x00098200, -0x7e439378, -0x92010020, -0x48000001, -0x00030002, -0x28030000, -0x7c0ea4ae, -0x41820000, -0x00050803, -0x80f00000, -0x3a100004, -0xd8030000, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000d, -0x210e0000, -0x00098200, -0x81d20000, -0x00098200, -0x920efff0, -0x7e087214, -0x814efffc, -0x39600018, -0xd80e0010, -0x48000000, -0x00050026, -0x00060035, -0x7e439378, -0x3a10fffc, -0x00000000, -0x7e84a378, -0x00000000, -0x7c8ea214, -0x00000000, -0x92010020, -0x00000000, -0x7d856378, -0x00000000, -0x7cae6214, -0x00000000, -0x91d20000, -0x00098200, -0x54e6063e, -0x48000001, -0x00030003, -0x0006000d, -0x28030001, -0x41810000, -0x00050836, -0x20630000, -0x0006000e, -0x80f00000, -0x3a100004, -0x54e993ba, -0x3d290000, -0x00098200, -0x7d291838, -0x7e104a14, -0x0006002c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00060037, -0x80f0fffc, -0xc8140000, -0x54e8dd78, -0x7c0e45ae, -0x48000000, -0x0005002c, -0x00060038, -0x80140000, -0x20000000, -0x00098200, -0x7c631910, -0x7c6318f8, -0x48000000, -0x0005000e, -0x00060039, -0x80140000, -0x20000000, -0x00098200, -0x7c631910, -0x48000000, -0x0005000e, -0x0006003a, -0x3a10fffc, -0x91d20000, -0x00098200, -0x7e439378, -0x92010020, -0x48000001, -0x00030004, -0x48000000, -0x0005000d, -0x0006003b, -0x00000000, -0x7ce43b78, -0x3a10fffc, -0x91d20000, -0x00098200, -0x7e439378, -0x92010020, -0x48000001, -0x00030005, -0x48000000, -0x0005000d, -0x00000000, -0x0006003c, -0x7caf5a14, -0x7cce5214, -0x48000000, -0x00050001, -0x0006003d, -0x00000000, -0x7d655b78, -0x7d465378, -0x48000000, -0x00050001, -0x00000000, -0x0006003e, -0x7d856378, -0x7d866378, -0x48000000, -0x00050001, -0x0006003f, -0x7cae5214, -0x7ccf5a14, -0x48000000, -0x00050001, -0x00060040, -0x7cae5214, -0x7cce5a14, -0x00000000, -0x48000000, -0x00050001, -0x00000000, -0x00060041, -0x00060042, -0x00000000, -0x7d455378, -0x7d665b78, -0x00000000, -0x0006000b, -0x7c8ea214, -0x91d20000, -0x00098200, -0x7e439378, -0x92010020, -0x54e7063e, -0x48000001, -0x00030006, -0x28030000, -0x41820000, -0x0005082c, -0x00060036, -0x7d0e1850, -0x9203fff0, -0x7dc97378, -0x3a080000, -0x00098200, -0x7c6e1b78, -0x39600010, -0x48000000, -0x00050024, -0x00060043, -0x00000000, -0x7c751b78, -0x00000000, -0x7d846378, -0x91d20000, -0x00098200, -0x7e439378, -0x92010020, -0x48000001, -0x00030007, -0x00000000, -0x28030000, -0x40820000, -0x00050836, -0x7ea3ab78, -0x48000000, -0x00050044, -0x00000000, -0x48000000, -0x00050036, -0x00000000, -0x00060025, -0x7e439378, -0x91320000, -0x00098200, -0x388efff8, -0x92010020, -0x7cae5a14, -0x7d755b78, -0x48000001, -0x00030008, -0x814efffc, -0x39750008, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060045, -0x7e439378, -0x91d20000, -0x00098200, -0x3894fff8, -0x92010020, -0x7cb45a14, -0x7d755b78, -0x48000001, -0x00030008, -0x810efff8, -0x39750008, -0x8154fffc, -0x48000000, -0x00050046, -0x00060047, -0x7e439378, -0x91d20000, -0x00098200, -0x7e84a378, -0x92010020, -0x7cf53b78, -0x48000001, -0x00030009, -0x00000000, -0x56a0063e, -0x00000000, -0x56b4dd78, -0x00000000, -0x2c000000, -0x00098200, -0x00000000, -0x56ac9b78, -0x00000000, -0x41a20000, -0x00070800, -0x00000000, -0x48000000, -0x00070000, -0x00060048, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x39000000, -0x00098200, -0x3a8efff8, -0x7c854040, -0x820efff8, -0x40840000, -0x00050849, -0x90b40000, -0x398b0008, -0x90740004, -0x41820000, -0x0005084a, -0x39000008, -0x396bfff8, -0x0006000b, -0x7c085840, -0x7c0e44ae, -0x7c1445ae, -0x39080008, -0x40a20000, -0x0005080b, -0x48000000, -0x0005004a, -0x0006004b, -0x280b0008, -0x806e0000, -0x41800000, -0x00050849, -0x7c161810, -0x7d231910, -0x7d280338, -0x39080000, -0x00098200, -0x55081800, -0x000900a1, -0x392a0000, -0x00098200, -0x7c2944ae, -0x48000000, -0x0005004c, -0x0006004d, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x40820000, -0x00050806, -0x0006000b, -0x80630000, -0x00098200, -0x0006000c, -0x00000000, -0x38a00000, -0x00098200, -0x28030000, -0x81710000, -0x00098200, -0x41820000, -0x0005084e, -0x80030000, -0x00098200, -0x38a00000, -0x00098200, -0x810b0000, -0x00098200, -0x81230000, -0x00098200, -0x7d080038, -0x55002800, -0x000900a1, -0x55081800, -0x000900a1, -0x7d080050, -0x7d294214, -0x0006000d, -0x80c90000, -0x00098200, -0x80090000, -0x00098200, -0x80890000, -0x00098200, -0x81090000, -0x00098200, -0x2c060000, -0x00098200, -0x40820000, -0x00050804, -0x7c005800, -0x41820000, -0x00050805, -0x0006000e, -0x81290000, -0x00098200, -0x28090000, -0x41820000, -0x0005084e, -0x48000000, -0x0005000d, -0x0006000f, -0x00000000, -0x2c040000, -0x00098200, -0x41820000, -0x0005084e, -0x7c852378, -0x7d034378, -0x48000000, -0x0005004e, -0x00060010, -0x2c050000, -0x00098200, -0x41820000, -0x0005080b, -0x7c162810, -0x7d252910, -0x7d280338, -0x39080000, -0x00098200, -0x55081000, -0x000900a1, -0x39310000, -0x00098200, -0x7c69402e, -0x48000000, -0x0005000c, -0x0006004f, -0x280b0010, -0x80ae0000, -0x80ce0008, -0x806e0004, -0x808e000c, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x40820000, -0x00050849, -0x81030000, -0x00098200, -0x2c060000, -0x00098200, -0x40820000, -0x00050849, -0x28080000, -0x88c30000, -0x00098200, -0x40820000, -0x00050849, -0x70c00000, -0x00090200, -0x90830000, -0x00098200, -0x41820000, -0x0005084e, -0x00000000, -0x80110000, -0x00098200, -0x54c607b8, -0x90710000, -0x00098200, -0x98c30000, -0x00098200, -0x90030000, -0x00098200, -0x48000000, -0x0005004e, -0x00060050, -0x280b0010, -0x80ce0000, -0x808e0004, -0x41800000, -0x00050849, -0x2c060000, -0x00098200, -0x40820000, -0x00050849, -0x38ae0008, -0x7e439378, -0x48000001, -0x0003000a, -0xc8230000, -0x48000000, -0x0005004c, -0x00060051, -0x280b0008, -0x806e0000, -0xc82e0000, -0x40820000, -0x00050849, -0x7c03b040, -0x41810000, -0x00050849, -0x48000000, -0x0005004c, -0x00060052, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x41820000, -0x0005084e, -0x80110000, -0x00098200, -0x7c05b040, -0x28800000, -0x91d20000, -0x00098200, -0x4c413342, -0x92010020, -0x41820000, -0x00050849, -0x00000000, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x00050853, -0x7e439378, -0x7dc47378, -0x00000000, -0x48000001, -0x0003000b, -0x00000000, -0x48000001, -0x0003000c, -0x00000000, -0x38a00000, -0x00098200, -0x48000000, -0x0005004e, -0x00060054, -0x280b0008, -0x806e0000, -0x808e0004, -0x41800000, -0x00050849, -0x7eee592e, -0x2c030000, -0x00098200, -0x820efff8, -0x40820000, -0x00050849, -0x91d20000, -0x00098200, -0x7e439378, -0x91d20000, -0x00098200, -0x38ae0008, -0x92010020, -0x48000001, -0x0003000d, -0x28030000, -0x38a00000, -0x00098200, -0x41820000, -0x0005084e, -0xc80e0008, -0x3a8efff8, -0xc82e0010, -0xd8140000, -0x39800000, -0x00098200, -0xd8340008, -0x48000000, -0x0005004a, -0x00060055, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x820efff8, -0x40820000, -0x00050849, -0x00000000, -0x81230000, -0x00098200, -0xc80a0000, -0x00098200, -0x28090000, -0x3a8efff8, -0x40820000, -0x00050849, -0x00000000, -0xc80a0000, -0x00098200, -0x3a8efff8, -0x00000000, -0x92ee0008, -0x39800000, -0x00098200, -0xd8140000, -0x48000000, -0x0005004a, -0x00060056, -0x280b0010, -0x80ae0000, -0x806e0004, -0x80ce0008, -0x00000000, -0x812e000c, -0x00000000, -0xc84e0008, -0x00000000, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x7c86b040, -0x820efff8, -0x00000000, -0x40820000, -0x00050849, -0x40860000, -0x00050849, -0x00000000, -0x3c003ff0, -0x93010014, -0x40820000, -0x00050849, -0x90010010, -0x40840000, -0x00050849, -0xc8210010, -0xfc00101e, -0xd8010010, -0x81210014, -0x00000000, -0x80030000, -0x00098200, -0x81030000, -0x00098200, -0x00000000, -0xfc42082a, -0x00000000, -0x39290001, -0x3a8efff8, -0x7c004840, -0x00000000, -0x92d40000, -0x55261800, -0x000900a1, -0x91340004, -0x00000000, -0x55261800, -0x000900a1, -0xd8540000, -0x00000000, -0x40810000, -0x00050802, -0x7d28302e, -0x7c0834ae, -0x0006000b, -0x2c090000, -0x00098200, -0x39800000, -0x00098200, -0x41820000, -0x0005084a, -0x39800000, -0x00098200, -0xd8140008, -0x48000000, -0x0005004a, -0x0006000c, -0x80030000, -0x00098200, -0x28000000, -0x39800000, -0x00098200, -0x41820000, -0x0005084a, -0x7d244b78, -0x48000001, -0x0003000e, -0x28030000, -0x39800000, -0x00098200, -0x41820000, -0x0005084a, -0x81230000, -0xc8030000, -0x48000000, -0x0005000b, -0x00060057, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x820efff8, -0x40820000, -0x00050849, -0x00000000, -0x81230000, -0x00098200, -0xc80a0000, -0x00098200, -0x28090000, -0x3a8efff8, -0x40820000, -0x00050849, -0x00000000, -0xc80a0000, -0x00098200, -0x3a8efff8, -0x00000000, -0x92ce0008, -0x00000000, -0x930e0008, -0x00000000, -0x930e000c, -0x39800000, -0x00098200, -0xd8140000, -0x48000000, -0x0005004a, -0x00060058, -0x280b0008, -0x88d10000, -0x00098200, -0x41800000, -0x00050849, -0x7dc97378, -0x39ce0008, -0x54c607fe, -0x000900ab, -0x396bfff8, -0x3a060000, -0x00098200, -0x48000000, -0x00050024, -0x00060059, -0x280b0010, -0x80ce0008, -0xc84e0008, -0xc82e0000, -0x41800000, -0x00050849, -0x89110000, -0x00098200, -0x7dc97378, -0x2c060000, -0x00098200, -0x40820000, -0x00050849, -0x39ce0010, -0x550807fe, -0x000900ab, -0xd8490000, -0x396bfff0, -0xd8290008, -0x3a080000, -0x00098200, -0x48000000, -0x00050024, -0x0006005a, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x40820000, -0x00050849, -0x88030000, -0x00098200, -0x81030000, -0x00098200, -0x00000000, -0x80830000, -0x00098200, -0x28000000, -0x00090200, -0x81230000, -0x00098200, -0x28880000, -0x80030000, -0x00098200, -0x7f844840, -0x820efff8, -0x4f013342, -0x7d245a14, -0x4f3e1102, -0x7c890040, -0x4f18cb82, -0x92010020, -0x4f182b82, -0x91d20000, -0x00098200, -0x41980000, -0x00050849, -0x0006000b, -0x39ce0008, -0x396bfff8, -0x3929fff8, -0x91230000, -0x00098200, -0x39000000, -0x91d20000, -0x00098200, -0x0006000c, -0x7c085800, -0x7c0e44ae, -0x41820000, -0x00050803, -0x7c0445ae, -0x39080008, -0x48000000, -0x0005000c, -0x0006000d, -0x38a00000, -0x7c751b78, -0x38c00000, -0x48000001, -0x00050021, -0x0006000e, -0x81350000, -0x00098200, -0x28030000, -0x00090200, -0x80d50000, -0x00098200, -0x38000000, -0x00098200, -0x81d20000, -0x00098200, -0x90110000, -0x00098200, -0x41810000, -0x00050808, -0x00000000, -0x7d893050, -0x80120000, -0x00098200, -0x280c0000, -0x7d0e6214, -0x41820000, -0x00050806, -0x7c080040, -0x39000000, -0x41810000, -0x00050809, -0x38ccfff8, -0x91350000, -0x00098200, -0x0006000f, -0x7c083040, -0x7c0944ae, -0x7c0e45ae, -0x39080008, -0x40820000, -0x0005080f, -0x00060010, -0x72000000, -0x00090200, -0x39000000, -0x00098200, -0x3a8efff8, -0x910efff8, -0x398c0010, -0x00060011, -0x92010020, -0x7d936378, -0x41820000, -0x00050817, -0x48000000, -0x00050018, -0x00060012, -0x72000000, -0x00090200, -0x38c6fff8, -0x39000000, -0x00098200, -0xc8060000, -0x90d50000, -0x00098200, -0x39800000, -0x00098200, -0x910efff8, -0x3a8efff8, -0xd80e0000, -0x48000000, -0x00050011, -0x00060013, -0x7e439378, -0x558400fe, -0x000900ab, -0x48000001, -0x00030000, -0x38600000, -0x48000000, -0x0005000e, -0x0006005b, -0x00000000, -0x806a0000, -0x00098200, -0x88030000, -0x00098200, -0x81030000, -0x00098200, -0x80830000, -0x00098200, -0x28000000, -0x00090200, -0x81230000, -0x00098200, -0x28880000, -0x80030000, -0x00098200, -0x7f844840, -0x820efff8, -0x4f013342, -0x7d245a14, -0x4f3e1102, -0x7c890040, -0x4f18cb82, -0x92010020, -0x4f182b82, -0x91d20000, -0x00098200, -0x41980000, -0x00050849, -0x0006000b, -0x91230000, -0x00098200, -0x39000000, -0x91d20000, -0x00098200, -0x0006000c, -0x7c085800, -0x7c0e44ae, -0x41820000, -0x00050803, -0x7c0445ae, -0x39080008, -0x48000000, -0x0005000c, -0x0006000d, -0x38a00000, -0x7c751b78, -0x38c00000, -0x48000001, -0x00050021, -0x0006000e, -0x81350000, -0x00098200, -0x28030000, -0x00090200, -0x80d50000, -0x00098200, -0x38000000, -0x00098200, -0x00000000, -0x81d20000, -0x00098200, -0x90110000, -0x00098200, -0x41810000, -0x00050808, -0x7d893050, -0x80120000, -0x00098200, -0x280c0000, -0x7d0e6214, -0x41820000, -0x00050806, -0x7c080040, -0x39000000, -0x41810000, -0x00050809, -0x38ccfff8, -0x91350000, -0x00098200, -0x0006000f, -0x7c083040, -0x7c0944ae, -0x7c0e45ae, -0x39080008, -0x40820000, -0x0005080f, -0x00060010, -0x72000000, -0x00090200, -0x7dd47378, -0x398c0008, -0x00060011, -0x92010020, -0x7d936378, -0x41820000, -0x00050817, -0x48000000, -0x00050018, -0x00060012, -0x7e439378, -0x7ea4ab78, -0x48000001, -0x0003000f, -0x00060013, -0x7e439378, -0x558400fe, -0x000900ab, -0x48000001, -0x00030000, -0x38600000, -0x48000000, -0x0005000e, -0x0006005c, -0x80120000, -0x00098200, -0x00000000, -0x7d0e5a14, -0x91d20000, -0x00098200, -0x70000000, -0x00090200, -0x91120000, -0x00098200, -0x38600000, -0x00098200, -0x41820000, -0x00050849, -0x93120000, -0x00098200, -0x98720000, -0x00098200, -0x48000000, -0x0005001a, -0x0006005d, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x00000000, -0x40820000, -0x00050802, -0x7c68fe70, -0x7d091a78, -0x7c684851, -0x41800000, -0x00050801, -0x0006005e, -0x820efff8, -0x3a8efff8, -0x92cefff8, -0x906efffc, -0x48000000, -0x0005005f, -0x0006000b, -0x3ca041e0, -0x38600000, -0x48000000, -0x0005004e, -0x0006000c, -0x00000000, -0x40800000, -0x00050849, -0x54a5007e, -0x0006004e, -0x820efff8, -0x90aefff8, -0x3a8efff8, -0x906efffc, -0x0006005f, -0x39800000, -0x00098200, -0x0006004a, -0x72000000, -0x00090200, -0x7d936378, -0x40a20000, -0x00050818, -0x80f0fffc, -0x54ea5d78, -0x0006000f, -0x7c0a6040, -0x54e0dd78, -0x41810000, -0x00050806, -0x80f00000, -0x3a100004, -0x7dc0a050, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00060010, -0x390cfff8, -0x398c0008, -0x7ef4412e, -0x48000000, -0x0005000f, -0x00000000, -0x00060060, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x41a20000, -0x0005084e, -0x54a9657e, -0x40800000, -0x00050849, -0x3529fc01, -0x2889001f, -0x2009001f, -0x41800000, -0x00050803, -0x54a85800, -0x000900a1, -0x5466057e, -0x000900ab, -0x65088000, -0x39290001, -0x7d083378, -0x54645800, -0x000900a1, -0x40840000, -0x00050804, -0x7d064830, -0x7d030430, -0x7cc62378, -0x7ca9fe70, -0x7cc84838, -0x3008ffff, -0x7d004110, -0x7c634214, -0x7c634a78, -0x7c691850, -0x48000000, -0x0005005e, -0x0006000d, -0x7d252a14, -0x7ca8fe70, -0x7c694b78, -0x7d284038, -0x21280000, -0x7c631910, -0x48000000, -0x0005005e, -0x0006000e, -0x6d088000, -0x7ca9fe70, -0x7d082378, -0x7d084b39, -0x4c423202, -0x3c608000, -0x41a20000, -0x0005085e, -0x0006000f, -0xc82e0000, -0x48000001, -0x00030010, -0x48000000, -0x0005004c, -0x00060061, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x41a20000, -0x0005084e, -0x54a9657e, -0x40800000, -0x00050849, -0x3529fc01, -0x2889001f, -0x2009001f, -0x41800000, -0x00050803, -0x00000000, -0x54a85800, -0x000900a1, -0x5466057e, -0x000900ab, -0x65088000, -0x39290001, -0x7d083378, -0x54645800, -0x000900a1, -0x40840000, -0x00050804, -0x7d064830, -0x7d030430, -0x7cc62378, -0x7ca9fe70, -0x7cc84878, -0x3008ffff, -0x7d004110, -0x7c634615, -0x7c634a78, -0x7c691850, -0x40830000, -0x0005085e, -0x7c000400, -0x40a10000, -0x0005085e, -0x3ca041e0, -0x38600000, -0x48000000, -0x0005004e, -0x0006000d, -0x7d252a14, -0x7ca8fe70, -0x7c694b78, -0x7d284078, -0x3128ffff, -0x7c694110, -0x48000000, -0x0005005e, -0x0006000e, -0x6d088000, -0x7ca9fe70, -0x7d084b39, -0x4c423202, -0x3c608000, -0x41a20000, -0x0005085e, -0x0006000f, -0xc82e0000, -0x48000001, -0x00030011, -0x48000000, -0x0005004c, -0x00000000, -0x00060060, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030010, -0x48000000, -0x0005004c, -0x00060061, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030011, -0x48000000, -0x0005004c, -0x00000000, -0x00060062, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030012, -0x48000000, -0x0005004c, -0x00060063, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030013, -0x48000000, -0x0005004c, -0x00060064, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030014, -0x48000000, -0x0005004c, -0x00060065, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030015, -0x48000000, -0x0005004c, -0x00060066, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x00000000, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030016, -0x48000000, -0x0005004c, -0x00060067, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030017, -0x48000000, -0x0005004c, -0x00060068, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030018, -0x48000000, -0x0005004c, -0x00060069, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x00030019, -0x48000000, -0x0005004c, -0x0006006a, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x0003001a, -0x00000000, -0x48000000, -0x0005004c, -0x0006006b, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x0003001b, -0x48000000, -0x0005004c, -0x0006006c, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x0003001c, -0x48000000, -0x0005004c, -0x0006006d, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x0003001d, -0x48000000, -0x0005004c, -0x0006006e, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x48000001, -0x0003001e, -0x48000000, -0x0005004c, -0x0006006f, -0x00000000, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0x48000001, -0x0003001f, -0x48000000, -0x0005004c, -0x00060070, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0x48000001, -0x00030020, -0x48000000, -0x0005004c, -0x00060071, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0x48000001, -0x00030021, -0x48000000, -0x0005004c, -0x00060072, -0x00060073, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xc84a0000, -0x00098200, -0x00000000, -0xfc2100b2, -0x48000000, -0x0005004c, -0x00000000, -0x00060074, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0x806e000c, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40820000, -0x00050849, -0x00000000, -0x00060074, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0xfc40101e, -0xd8410010, -0x80610014, -0x00000000, -0x48000001, -0x00030022, -0x48000000, -0x0005004c, -0x00060075, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x38710000, -0x00098200, -0x820efff8, -0x48000001, -0x00030023, -0x81110000, -0x00098200, -0x3a8efff8, -0x00000000, -0x6d088000, -0x9101000c, -0xc8410008, -0xfc42f828, -0x00000000, -0xd8340000, -0x39800000, -0x00098200, -0x00000000, -0x92d40008, -0x9114000c, -0x00000000, -0xd8540008, -0x00000000, -0x48000000, -0x0005004a, -0x00060076, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x386efff8, -0x820efff8, -0x48000001, -0x00030024, -0x3a8efff8, -0xd82e0000, -0x39800000, -0x00098200, -0x48000000, -0x0005004a, -0x00000000, -0x00060077, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x390e0008, -0x7d2e5a14, -0x40820000, -0x00050804, -0x0006000b, -0x80c80000, -0x7c884840, -0x80880004, -0x40840000, -0x0005085e, -0x7c06b040, -0x6c608000, -0x6c868000, -0x40820000, -0x00050803, -0x7cc60010, -0x7c000110, -0x7cc60038, -0x7c662214, -0x39080008, -0x48000000, -0x0005000b, -0x0006000d, -0x40800000, -0x00050849, -0x6c638000, -0x9061000c, -0xc8210008, -0xfc21f828, -0xc8480000, -0x48000000, -0x00050006, -0x0006000e, -0xc82e0000, -0x40800000, -0x00050849, -0x0006000f, -0x80c80000, -0x7c884840, -0xc8480000, -0x40840000, -0x0005084c, -0x7c06b040, -0x40800000, -0x00050807, -0x00060010, -0xfc011028, -0x39080008, -0xfc2008ae, -0x48000000, -0x0005000f, -0x00060011, -0x80880004, -0x40820000, -0x00050849, -0x6c848000, -0x9081000c, -0xc8410008, -0xfc42f828, -0x48000000, -0x00050010, -0x00000000, -0x00060077, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x39000008, -0x0006000b, -0x7c8e402e, -0x7c4e44ae, -0x7c885840, -0x7c04b040, -0x40840000, -0x0005084c, -0x40800000, -0x00050849, -0xfc011028, -0x39080008, -0xfc2008ae, -0x48000000, -0x0005000b, -0x00000000, -0x00060078, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x390e0008, -0x7d2e5a14, -0x40820000, -0x00050804, -0x0006000b, -0x80c80000, -0x7c884840, -0x80880004, -0x40840000, -0x0005085e, -0x7c06b040, -0x6c608000, -0x6c868000, -0x40820000, -0x00050803, -0x7cc60010, -0x7c000110, -0x7cc60078, -0x7c662214, -0x39080008, -0x48000000, -0x0005000b, -0x0006000d, -0x40800000, -0x00050849, -0x6c638000, -0x9061000c, -0xc8210008, -0xfc21f828, -0xc8480000, -0x48000000, -0x00050006, -0x0006000e, -0xc82e0000, -0x40800000, -0x00050849, -0x0006000f, -0x80c80000, -0x7c884840, -0xc8480000, -0x40840000, -0x0005084c, -0x7c06b040, -0x40800000, -0x00050807, -0x00060010, -0xfc011028, -0x39080008, -0xfc20106e, -0x48000000, -0x0005000f, -0x00060011, -0x80880004, -0x40820000, -0x00050849, -0x6c848000, -0x9081000c, -0xc8410008, -0xfc42f828, -0x48000000, -0x00050010, -0x00000000, -0x00060078, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x39000008, -0x0006000b, -0x7c8e402e, -0x7c4e44ae, -0x7c885840, -0x7c04b040, -0x40840000, -0x0005084c, -0x40800000, -0x00050849, -0xfc011028, -0x39080008, -0xfc20106e, -0x48000000, -0x0005000b, -0x00000000, -0x00060079, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x40820000, -0x00050849, -0x80630000, -0x00098200, -0x48000000, -0x0005005e, -0x0006007a, -0x280b0008, -0x80ae0000, -0x806e0004, -0x40820000, -0x00050849, -0x2c050000, -0x00098200, -0x40820000, -0x00050849, -0x80030000, -0x00098200, -0x00000000, -0x88630000, -0x00098200, -0x39800000, -0x00098200, -0x820efff8, -0x28000000, -0x3a8efff8, -0x41a20000, -0x0005084a, -0x48000000, -0x0005005e, -0x00000000, -0x89030000, -0x00098200, -0x30c0ffff, -0x7d860110, -0x9101000c, -0x398c0001, -0xc8010008, -0x3a8efff8, -0x820efff8, -0xfc00f028, -0x558c1800, -0x000900a1, -0xd8140000, -0x48000000, -0x0005004a, -0x00000000, -0x0006007b, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x00050853, -0x280b0008, -0x80ae0000, -0x00000000, -0x800e0004, -0x40820000, -0x00050849, -0x7c05b040, -0x40820000, -0x00050849, -0x388e0007, -0x00000000, -0xc82e0000, -0x40820000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xfc20081e, -0xd8210010, -0x80010014, -0x38810017, -0x00000000, -0x38a00001, -0x280000ff, -0x41810000, -0x00050849, -0x0006007c, -0x7e439378, -0x91d20000, -0x00098200, -0x92010020, -0x48000001, -0x00030025, -0x81d20000, -0x00098200, -0x38a00000, -0x00098200, -0x48000000, -0x0005004e, -0x0006007d, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x00050853, -0x280b0010, -0x80ae0010, -0x00000000, -0xc80e0010, -0x00000000, -0x800e0000, -0x806e0004, -0x41800000, -0x00050849, -0x808e0008, -0x00000000, -0x810e000c, -0x00000000, -0xc82e0008, -0x00000000, -0x3920ffff, -0x41820000, -0x00050801, -0x00000000, -0x7c05b040, -0x812e0014, -0x40820000, -0x00050849, -0x0006000b, -0x7c04b040, -0x40820000, -0x00050849, -0x00000000, -0x7c05b040, -0x40800000, -0x00050849, -0xfc00001e, -0xd8010010, -0x81210014, -0x0006000b, -0x7c04b040, -0x40800000, -0x00050849, -0x00000000, -0x2c000000, -0x00098200, -0x40820000, -0x00050849, -0x00000000, -0xfc20081e, -0xd8210010, -0x81010014, -0x00000000, -0x80030000, -0x00098200, -0x7c004840, -0x38c90001, -0x41800000, -0x00050805, -0x0006000c, -0x2c080000, -0x7cc80214, -0x40810000, -0x00050807, -0x0006000d, -0x7ca84850, -0x38830000, -0x00098200, -0x7ca0fe70, -0x38a50001, -0x7c844214, -0x7ca50078, -0x48000000, -0x0005007c, -0x0006000f, -0x7c890050, -0x7c84fe70, -0x7cc62078, -0x7d203214, -0x48000000, -0x0005000c, -0x00060011, -0x30a8ffff, -0x7ca52910, -0x7cc4fe70, -0x7cc62878, -0x7cc82078, -0x39080001, -0x48000000, -0x0005000d, -0x0006007e, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x00050853, -0x280b0010, -0x800e0000, -0x806e0004, -0x80ce0008, -0x00000000, -0x80ae000c, -0x00000000, -0xc84e0008, -0x00000000, -0x41800000, -0x00050849, -0x2c000000, -0x00098200, -0x40820000, -0x00050849, -0x00000000, -0x7c06b040, -0x40820000, -0x00050849, -0x00000000, -0x7c06b040, -0x40800000, -0x00050849, -0xfc40101e, -0xd8410010, -0x80a10014, -0x00000000, -0x80030000, -0x00098200, -0x2c050000, -0x81110000, -0x00098200, -0x40810000, -0x00050802, -0x28000001, -0x3925ffff, -0x41800000, -0x00050802, -0x7c882840, -0x40820000, -0x00050849, -0x88030000, -0x00098200, -0x80910000, -0x00098200, -0x41840000, -0x00050849, -0x0006000b, -0x28090000, -0x7c0449ae, -0x3929ffff, -0x40820000, -0x0005080b, -0x48000000, -0x0005007c, -0x0006000c, -0x38710000, -0x00098200, -0x38a00000, -0x00098200, -0x48000000, -0x0005004e, -0x0006007f, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x00050853, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x81110000, -0x00098200, -0x00000000, -0x40820000, -0x00050849, -0x80a30000, -0x00098200, -0x38630000, -0x00098200, -0x80910000, -0x00098200, -0x39200000, -0x7c082840, -0x38c5ffff, -0x41800000, -0x00050849, -0x0006000b, -0x2c060000, -0x7d0348ae, -0x41a00000, -0x0005087c, -0x7d0431ae, -0x38c6ffff, -0x39290001, -0x48000000, -0x0005000b, -0x00060080, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x00050853, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x81110000, -0x00098200, -0x40820000, -0x00050849, -0x80a30000, -0x00098200, -0x38630000, -0x00098200, -0x80910000, -0x00098200, -0x7c082840, -0x39200000, -0x41800000, -0x00050849, -0x0006000b, -0x7c092840, -0x7d0348ae, -0x40a00000, -0x0005087c, -0x00000000, -0x3808ffbf, -0x69060020, -0x3000ffe6, -0x7cc63110, -0x70c60020, -0x7d083278, -0x7d0449ae, -0x39290001, -0x48000000, -0x0005000b, -0x00060081, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x00050853, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x81110000, -0x00098200, -0x40820000, -0x00050849, -0x80a30000, -0x00098200, -0x38630000, -0x00098200, -0x80910000, -0x00098200, -0x7c082840, -0x39200000, -0x41800000, -0x00050849, -0x0006000b, -0x7c092840, -0x7d0348ae, -0x40a00000, -0x0005087c, -0x3808ff9f, -0x69060020, -0x3000ffe6, -0x7cc63110, -0x70c60020, -0x7d083278, -0x7d0449ae, -0x39290001, -0x48000000, -0x0005000b, -0x00060082, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x2c050000, -0x00098200, -0x40820000, -0x00050849, -0x48000001, -0x00030026, -0x48000000, -0x0005005e, -0x00000000, -0x00060083, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x00000000, -0x00060083, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80610014, -0x00000000, -0x390e0008, -0x7d2e5a14, -0x0006000b, -0x80c80000, -0x7c884840, -0x00000000, -0x80880004, -0x00000000, -0xc8280000, -0x00000000, -0x40a40000, -0x0005085e, -0x7c06b040, -0x00000000, -0x40820001, -0x00050885, -0x00000000, -0xfc21f02a, -0x40800000, -0x00050849, -0xd8210010, -0x80810014, -0x00000000, -0x7c632038, -0x39080008, -0x48000000, -0x0005000b, -0x00000000, -0x00060086, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x00000000, -0x00060086, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80610014, -0x00000000, -0x390e0008, -0x7d2e5a14, -0x0006000b, -0x80c80000, -0x7c884840, -0x00000000, -0x80880004, -0x00000000, -0xc8280000, -0x00000000, -0x40a40000, -0x0005085e, -0x7c06b040, -0x00000000, -0x40820001, -0x00050885, -0x00000000, -0xfc21f02a, -0x40800000, -0x00050849, -0xd8210010, -0x80810014, -0x00000000, -0x7c632378, -0x39080008, -0x48000000, -0x0005000b, -0x00000000, -0x00060087, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x00000000, -0x00060087, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80610014, -0x00000000, -0x390e0008, -0x7d2e5a14, -0x0006000b, -0x80c80000, -0x7c884840, -0x00000000, -0x80880004, -0x00000000, -0xc8280000, -0x00000000, -0x40a40000, -0x0005085e, -0x7c06b040, -0x00000000, -0x40820001, -0x00050885, -0x00000000, -0xfc21f02a, -0x40800000, -0x00050849, -0xd8210010, -0x80810014, -0x00000000, -0x7c632278, -0x39080008, -0x48000000, -0x0005000b, -0x00000000, -0x00060088, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x00000000, -0x00060088, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80610014, -0x00000000, -0x5460403e, -0x5060c00e, -0x5060c42e, -0x7c030378, -0x48000000, -0x0005005e, -0x00000000, -0x00060089, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x00000000, -0x00060089, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80610014, -0x00000000, -0x7c6318f8, -0x48000000, -0x0005005e, -0x00000000, -0x0006008a, -0x280b0010, -0x80ae0000, -0x80ce0008, -0x806e0004, -0x808e000c, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x7c06b040, -0x40820000, -0x00050849, -0x00000000, -0x0006008a, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xfc42f02a, -0xd8210010, -0x80610014, -0xd8410010, -0x80810014, -0x00000000, -0x548406fe, -0x7c632030, -0x48000000, -0x0005005e, -0x00000000, -0x0006008b, -0x280b0010, -0x80ae0000, -0x80ce0008, -0x806e0004, -0x808e000c, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x7c06b040, -0x40820000, -0x00050849, -0x00000000, -0x0006008b, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xfc42f02a, -0xd8210010, -0x80610014, -0xd8410010, -0x80810014, -0x00000000, -0x548406fe, -0x7c632430, -0x48000000, -0x0005005e, -0x00000000, -0x0006008c, -0x280b0010, -0x80ae0000, -0x80ce0008, -0x806e0004, -0x808e000c, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x7c06b040, -0x40820000, -0x00050849, -0x00000000, -0x0006008c, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xfc42f02a, -0xd8210010, -0x80610014, -0xd8410010, -0x80810014, -0x00000000, -0x548406fe, -0x7c632630, -0x48000000, -0x0005005e, -0x00000000, -0x0006008d, -0x280b0010, -0x80ae0000, -0x80ce0008, -0x806e0004, -0x808e000c, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x7c06b040, -0x40820000, -0x00050849, -0x00000000, -0x0006008d, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xfc42f02a, -0xd8210010, -0x80610014, -0xd8410010, -0x80810014, -0x00000000, -0x5c63203e, -0x48000000, -0x0005005e, -0x00000000, -0x0006008e, -0x280b0010, -0x80ae0000, -0x80ce0008, -0x806e0004, -0x808e000c, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x7c06b040, -0x40820000, -0x00050849, -0x00000000, -0x0006008e, -0x280b0010, -0x80ae0000, -0xc82e0000, -0x80ce0008, -0xc84e0008, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0x7c06b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xfc42f02a, -0xd8210010, -0x80610014, -0xd8410010, -0x80810014, -0x00000000, -0x7c8400d0, -0x5c63203e, -0x48000000, -0x0005005e, -0x00000000, -0x0006008f, -0x280b0008, -0x80ae0000, -0x806e0004, -0x41800000, -0x00050849, -0x7c05b040, -0x40820001, -0x00050884, -0x00000000, -0x0006008f, -0x280b0008, -0x80ae0000, -0xc82e0000, -0x41800000, -0x00050849, -0x7c05b040, -0x40800000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80610014, -0x00000000, -0x48000000, -0x0005005e, -0x00000000, -0x0006005e, -0x6c638000, -0x9061000c, -0xc8210008, -0xfc21f828, -0x00000000, -0x0006004c, -0x820efff8, -0x3a8efff8, -0xd82efff8, -0x48000000, -0x0005005f, -0x00060084, -0x00000000, -0xc82e0000, -0x41810000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80610014, -0x4e800020, -0x00000000, -0x00060085, -0x00000000, -0xc8280000, -0x41810000, -0x00050849, -0xfc21f02a, -0xd8210010, -0x80810014, -0x4e800020, -0x00000000, -0x00060049, -0x80ca0000, -0x00098200, -0x7d0e5a14, -0x820efff8, -0x38080000, -0x00098200, -0x81320000, -0x00098200, -0x92010020, -0x7c004840, -0x91d20000, -0x00098200, -0x91120000, -0x00098200, -0x7e439378, -0x41810000, -0x00050805, -0x7cc903a6, -0x4e800421, -0x81d20000, -0x00098200, -0x2c030000, -0x546c1800, -0x000900a1, -0x3a8efff8, -0x41810000, -0x0005084a, -0x0006000b, -0x80120000, -0x00098200, -0x814efffc, -0x7d6e0050, -0x40820000, -0x00050829, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060029, -0x72000000, -0x00090200, -0x56080038, -0x40820000, -0x00050803, -0x80f0fffc, -0x54e8dd78, -0x39080008, -0x0006000d, -0x7d287050, -0x48000000, -0x00050024, -0x0006000f, -0x38800000, -0x00098200, -0x48000001, -0x00030000, -0x00000000, -0x81d20000, -0x00098200, -0x7c000000, -0x48000000, -0x0005000b, -0x00060053, -0x7ea802a6, -0x91d20000, -0x00098200, -0x7c0e5a14, -0x92010020, -0x90120000, -0x00098200, -0x7e439378, -0x48000001, -0x00030027, -0x81d20000, -0x00098200, -0x7ea803a6, -0x80120000, -0x00098200, -0x7d6e0050, -0x814efffc, -0x4e800020, -0x00060090, -0x00000000, -0x88d10000, -0x00098200, -0x70c00000, -0x00090200, -0x40820000, -0x00050805, -0x81310000, -0x00098200, -0x70c00000, -0x00090200, -0x40820000, -0x00050801, -0x3929ffff, -0x70c00000, -0x00090200, -0x41a20000, -0x00050801, -0x91310000, -0x00098200, -0x48000000, -0x00050001, -0x00000000, -0x00060091, -0x88d10000, -0x00098200, -0x70c00000, -0x00090200, -0x41820000, -0x00050801, -0x0006000f, -0x39080000, -0x00098200, -0x7c11402e, -0x7c0903a6, -0x4e800420, -0x00060092, -0x88d10000, -0x00098200, -0x81310000, -0x00098200, -0x70c00000, -0x00090200, -0x54c007c0, -0x000900ab, -0x40820000, -0x0005080f, -0x2c800000, -0x3529ffff, -0x41860000, -0x0005080f, -0x91310000, -0x00098200, -0x41820000, -0x00050801, -0x40840000, -0x0005080f, -0x0006000b, -0x7e439378, -0x9261001c, -0x7e048378, -0x91d20000, -0x00098200, -0x48000001, -0x00030028, -0x0006000d, -0x81d20000, -0x00098200, -0x0006000e, -0x00000000, -0x80f0fffc, -0x54e815ba, -0x54ea5d78, -0x39080000, -0x00098200, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00060093, -0x3a100004, -0x826affec, -0x48000000, -0x0005000e, -0x00060094, -0x00000000, -0x810efffc, -0x38710000, -0x00098200, -0x92010020, -0x81080000, -0x00098200, -0x7e048378, -0x92510000, -0x00098200, -0x89080000, -0x00098200, -0x91d20000, -0x00098200, -0x55081800, -0x000900a1, -0x7d0e4214, -0x91120000, -0x00098200, -0x48000001, -0x00030029, -0x48000000, -0x0005000d, -0x00000000, -0x00060095, -0x7e048378, -0x00000000, -0x48000000, -0x00050001, -0x00000000, -0x00060096, -0x00000000, -0x62040001, -0x0006000b, -0x00000000, -0x7c0e5a14, -0x92010020, -0x7e439378, -0x91d20000, -0x00098200, -0x7e8ea050, -0x90120000, -0x00098200, -0x48000001, -0x0003002a, -0x81d20000, -0x00098200, -0x80120000, -0x00098200, -0x93010020, -0x7d6e0050, -0x7e8ea214, -0x814efffc, -0x80f0fffc, -0x7c6903a6, -0x4e800420, -0x00060097, -0x00000000, -0x38210000, -0x00098200, -0xbc410000, -0x00098200, -0x3a3f0000, -0x00098200, -0x38800000, -0x00098200, -0x80610000, -0x00098200, -0x90910000, -0x00098200, -0xd8010000, -0x00098200, -0xd8210000, -0x00098200, -0xd8410000, -0x00098200, -0xd8610000, -0x00098200, -0x90610000, -0x7c000400, -0xd8810000, -0x00098200, -0xd8a10000, -0x00098200, -0xd8c10000, -0x00098200, -0xd8e10000, -0x00098200, -0x38810000, -0x00098200, -0xd9010000, -0x00098200, -0xd9210000, -0x00098200, -0xd9410000, -0x00098200, -0xd9610000, -0x00098200, -0x90810000, -0x00098200, -0xd9810000, -0x00098200, -0xd9a10000, -0x00098200, -0x00000000, -0xd9c10000, -0x00098200, -0xd9e10000, -0x00098200, -0x7ca802a6, -0x39000000, -0xda010000, -0x00098200, -0xda210000, -0x00098200, -0xda410000, -0x00098200, -0xda610000, -0x00098200, -0x91010000, -0x00098200, -0xda810000, -0x00098200, -0xdaa10000, -0x00098200, -0xdac10000, -0x00098200, -0xdae10000, -0x00098200, -0xa0c50002, -0xdb010000, -0x00098200, -0xdb210000, -0x00098200, -0xdb410000, -0x00098200, -0xdb610000, -0x00098200, -0x82510000, -0x00098200, -0xdb810000, -0x00098200, -0xdba10000, -0x00098200, -0xdbc10000, -0x00098200, -0xdbe10000, -0x00098200, -0x7ca50050, -0x81d10000, -0x00098200, -0x54a500be, -0x000900ab, -0x00000000, -0x92510000, -0x00098200, -0x38a5fffe, -0x91110000, -0x00098200, -0x90d10000, -0x00098200, -0x91d20000, -0x00098200, -0x38710000, -0x00098200, -0x90b10000, -0x00098200, -0x38810010, -0x48000001, -0x0003002b, -0x81120000, -0x00098200, -0x81210000, -0x81d20000, -0x00098200, -0x5501003a, -0x82010020, -0x91210000, -0x92410024, -0x48000000, -0x00050001, -0x00000000, -0x00060098, -0x00000000, -0x82410024, -0x3a3f0000, -0x00098200, -0x0006000b, -0x2c030000, -0x41800000, -0x00050803, -0x810efffc, -0x54731800, -0x000900a1, -0x39200000, -0x9261001c, -0x81080000, -0x00098200, -0x91310000, -0x00098200, -0x81e80000, -0x00098200, -0x3ac00000, -0x00098200, -0x3cc059c0, -0x90c10010, -0x3b000000, -0x60c60004, -0xc3c10010, -0x90c10010, -0x3c004338, -0x3ae00000, -0x00098200, -0x90010008, -0xc3e10010, -0x80f00000, -0x3a100004, -0x92f10000, -0x00098200, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7c0903a6, -0x28080000, -0x00090200, -0x40800000, -0x00050802, -0x54ea5d78, -0x54ec9b78, -0x54eb9d78, -0x4e800420, -0x0006000c, -0x3973fff8, -0x7e947214, -0x4e800420, -0x0006000d, -0x7c8300d0, -0x7e439378, -0x48000001, -0x0003002c, -0x00000000, -0x00060099, -0x48000000, -0x00030010, -0x0006009a, -0x48000000, -0x00030011, -0x0006009b, -0x00000000, -0x48000000, -0x0003002d, -0x00000000, -0x0006009c, -0x7c0327d7, -0x41830000, -0x00050801, -0x7c652279, -0x7c0021d6, -0x7c601850, -0x4c800020, -0x2c030000, -0x4d820020, -0x7c632214, -0x4e800020, -0x0006000b, -0x2c040000, -0x38600000, -0x4d820020, -0x7c000400, -0x4e800020, -0x0006009d, -0x28030001, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0xfc21102a, -0x4e800020, -0x0006000b, -0xfc211028, -0x4e800020, -0x0006000c, -0x28030003, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0xfc2100b2, -0x4e800020, -0x0006000b, -0xfc211024, -0x4e800020, -0x0006000c, -0x28030005, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0x9421ffe0, -0xd9c10010, -0xd9e10018, -0x7c0802a6, -0xfdc00890, -0xfc211024, -0x90010024, -0xfde01090, -0x48000001, -0x00030010, -0x80010024, -0xfc2103f2, -0x7c0803a6, -0xfc2e0828, -0xc9c10010, -0xc9e10018, -0x38210020, -0x4e800020, -0x0006000b, -0x48000000, -0x0003001f, -0x0006000c, -0x28030007, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0xfc200850, -0x4e800020, -0x0006000b, -0xfc200a10, -0x4e800020, -0x0006000c, -0x00000000, -0x28030009, -0x41820000, -0x00050809, -0x41810000, -0x00050802, -0x48000000, -0x00030020, -0x0006000c, -0x2803000b, -0x41810000, -0x00050809, -0xfc011028, -0x41820000, -0x00050801, -0xfc2008ae, -0x4e800020, -0x0006000b, -0xfc20106e, -0x4e800020, -0x00060013, -0x7c810808, -0x00000000, -0x7c810808, -0x00000000, -0x0006009e, -0x54630034, -0x7c832050, -0x3884001f, -0x5484d97f, -0x4d820020, -0x7c8903a6, -0x7c651b78, -0x0006000b, -0x7c00186c, -0x38630020, -0x42000000, -0x0005080b, -0x7c0004ac, -0x7c8903a6, -0x0006000b, -0x7c002fac, -0x38a50020, -0x42000000, -0x0005080b, -0x4c00012c, -0x4e800020, -0x0006009f, -0x00000000, -0x9421fef0, -0x91c10000, -0x00098200, -0xd9c10000, -0x00098200, -0x91e10000, -0x00098200, -0xd9e10000, -0x00098200, -0x92010000, -0x00098200, -0xda010000, -0x00098200, -0x7c0802a6, -0x92210000, -0x00098200, -0xda210000, -0x00098200, -0x92410000, -0x00098200, -0xda410000, -0x00098200, -0x92610000, -0x00098200, -0xda610000, -0x00098200, -0x92810000, -0x00098200, -0xda810000, -0x00098200, -0x92a10000, -0x00098200, -0xdaa10000, -0x00098200, -0x92c10000, -0x00098200, -0xdac10000, -0x00098200, -0x90010114, -0x92e10000, -0x00098200, -0xdae10000, -0x00098200, -0x93010000, -0x00098200, -0xdb010000, -0x00098200, -0x00000000, -0x93210000, -0x00098200, -0xdb210000, -0x00098200, -0x7c000026, -0x93410000, -0x00098200, -0xdb410000, -0x00098200, -0x93610000, -0x00098200, -0xdb610000, -0x00098200, -0x93810000, -0x00098200, -0xdb810000, -0x00098200, -0x93a10000, -0x00098200, -0xdba10000, -0x00098200, -0x93c10000, -0x00098200, -0xdbc10000, -0x00098200, -0x93e10000, -0x00098200, -0xdbe10000, -0x00098200, -0x90010034, -0x820c0000, -0x00098200, -0x3a2c0000, -0x00098200, -0x91700000, -0x00098200, -0x90700000, -0x00098200, -0xd8300000, -0x00098200, -0x90900000, -0x00098200, -0xd8500000, -0x00098200, -0x90b00000, -0x00098200, -0x00000000, -0xd8700000, -0x00098200, -0x90d00000, -0x00098200, -0xd8900000, -0x00098200, -0x90f00000, -0x00098200, -0xd8b00000, -0x00098200, -0x91100000, -0x00098200, -0xd8d00000, -0x00098200, -0x91300000, -0x00098200, -0xd8f00000, -0x00098200, -0x91500000, -0x00098200, -0xd9100000, -0x00098200, -0x38010000, -0x00098200, -0x90100000, -0x00098200, -0x7e038378, -0x92010020, -0x7c240b78, -0x48000001, -0x0003002e, -0x81c30000, -0x00098200, -0x3ac00000, -0x00098200, -0x81630000, -0x00098200, -0x3cc059c0, -0x3b000000, -0x7c721b78, -0x90c10010, -0x814efffc, -0x60c60004, -0x3ae00000, -0x00098200, -0x38000000, -0x00098200, -0xc3c10010, -0x90c10010, -0x7d6e5850, -0x90110000, -0x00098200, -0xc3e10010, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00000000, -0x00060028, -0x00000000, -0x82110000, -0x00098200, -0x91d20000, -0x00098200, -0x91520000, -0x00098200, -0x92500000, -0x00098200, -0x7e038378, -0x7e84a378, -0x48000001, -0x0003002f, -0x80700000, -0x00098200, -0xc8300000, -0x00098200, -0x80900000, -0x00098200, -0x48000000, -0x0005001a, -0x00000000, -0x000600a0, -0x00000000, -0x81030000, -0x00098200, -0x7c0802a6, -0x88830000, -0x00098200, -0x88a30000, -0x00098200, -0x7d0800d0, -0x90010004, -0x2c850000, -0x7c290b78, -0x3484ffff, -0x7c21416e, -0x4cc63042, -0x91c9fffc, -0x9069fff8, -0x7d2e4b78, -0x39030000, -0x00098200, -0x54841000, -0x000900a1, -0x41a00000, -0x00050802, -0x39210008, -0x0006000b, -0x7c08202e, -0x7c09212e, -0x3484fffc, -0x40800000, -0x0005080b, -0x0006000c, -0x40a60000, -0x00050803, -0xc8230000, -0x00098200, -0xc8430000, -0x00098200, -0xc8630000, -0x00098200, -0xc8830000, -0x00098200, -0xc8a30000, -0x00098200, -0xc8c30000, -0x00098200, -0xc8e30000, -0x00098200, -0xc9030000, -0x00098200, -0x0006000d, -0x80030000, -0x00098200, -0x80830000, -0x00098200, -0x80a30000, -0x00098200, -0x00000000, -0x80c30000, -0x00098200, -0x80e30000, -0x00098200, -0x7c0903a6, -0x81030000, -0x00098200, -0x81230000, -0x00098200, -0x81430000, -0x00098200, -0x80630000, -0x00098200, -0x4e800421, -0x810efff8, -0x812efffc, -0x800e0004, -0x90680000, -0x00098200, -0xd8280000, -0x00098200, -0x90880000, -0x00098200, -0x7c0803a6, -0x90a80000, -0x00098200, -0x7dc17378, -0x90c80000, -0x00098200, -0x7d2e4b78, -0x4e800020, -0x00000000, -0x00080000, -0x00000000, -0x7c14706e, -0x3a100004, -0x80940004, -0x7d0c706e, -0x8130fffc, -0x7c00b040, -0x80ac0004, -0x552993ba, -0x7c88b040, -0x3d290000, -0x00098200, -0x40820000, -0x00050807, -0x40860000, -0x00050808, -0x7c042800, -0x00000000, -0x40800000, -0x00050802, -0x00000000, -0x41800000, -0x00050802, -0x00000000, -0x41810000, -0x00050802, -0x00000000, -0x40810000, -0x00050802, -0x00000000, -0x0006000b, -0x7e104a14, -0x0006000c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00060011, -0x41810000, -0x00050835, -0xc8140000, -0x41850000, -0x00050835, -0x41840000, -0x00050804, -0x6ca58000, -0x90a1000c, -0xc8210008, -0xfc21f828, -0x48000000, -0x00050005, -0x00060012, -0x41850000, -0x00050835, -0x6c848000, -0x9081000c, -0xc8010008, -0xfc00f828, -0x0006000e, -0xc82c0000, -0x0006000f, -0xfc000800, -0x00000000, -0x40800000, -0x0005080c, -0x00000000, -0x41800000, -0x0005080c, -0x00000000, -0x4c001382, -0x40800000, -0x0005080c, -0x00000000, -0x4c001382, -0x41800000, -0x0005080c, -0x00000000, -0x48000000, -0x0005000b, -0x00000000, -0x7c0ea02e, -0x3a100004, -0x7c0ea4ae, -0x7d0e602e, -0x7c00b040, -0x8130fffc, -0x7c2e64ae, -0x7c88b040, -0x552993ba, -0x40800000, -0x00050835, -0x3d290000, -0x00098200, -0x40840000, -0x00050835, -0xfc000800, -0x00000000, -0x40800000, -0x00050801, -0x00000000, -0x41800000, -0x00050801, -0x00000000, -0x4c001382, -0x40800000, -0x00050801, -0x00000000, -0x4c001382, -0x41800000, -0x00050801, -0x00000000, -0x7e104a14, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7c14706e, -0x3a100004, -0x80940004, -0x7d0c706e, -0x7c00b040, -0x8130fffc, -0x7c88b040, -0x552993ba, -0x80ac0004, -0x4fa12b82, -0x3d290000, -0x00098200, -0x00000000, -0x409d0000, -0x000508a1, -0x00000000, -0x409d0000, -0x000508a2, -0x00000000, -0x7c14706e, -0x81300000, -0xc8140000, -0x3a100004, -0x7d0c706e, -0x7c00b040, -0x552993ba, -0xc82c0000, -0x7c88b040, -0x3d290000, -0x00098200, -0x40800000, -0x00050805, -0x40840000, -0x00050805, -0xfc000800, -0x00000000, -0x40820000, -0x00050801, -0x7e104a14, -0x00000000, -0x41820000, -0x00050801, -0x7e104a14, -0x00000000, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x0006000f, -0x00000000, -0x80940004, -0x80ac0004, -0x00000000, -0x2f800000, -0x00098200, -0x2e880000, -0x00098200, -0x00000000, -0x7c0600f8, -0x7c004040, -0x28860000, -0x00090200, -0x00000000, -0x4fdeb382, -0x00000000, -0x2b060000, -0x00090200, -0x00000000, -0x419e0000, -0x0005083b, -0x00000000, -0x7e842840, -0x4c222902, -0x4c161342, -0x4c42b202, -0x7e158378, -0x4c420b82, -0x4c000b82, -0x00000000, -0x40820000, -0x00050806, -0x7e104a14, -0x00060010, -0x00000000, -0x41820000, -0x00050806, -0x7e104a14, -0x00060010, -0x00000000, -0x40800000, -0x00050802, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000c, -0x00000000, -0x41800000, -0x0005080b, -0x00000000, -0x41980000, -0x0005080b, -0x81240000, -0x00098200, -0x38c00000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x89290000, -0x00098200, -0x71290000, -0x00090200, -0x40820000, -0x0005080b, -0x7eb0ab78, -0x48000000, -0x0005003a, -0x00000000, -0x7c14706e, -0x558c007e, -0x000900ab, -0x80d40004, -0x81300000, -0x218cfffc, -0x3a100004, -0x00000000, -0x2c000000, -0x00098200, -0x00000000, -0x7d0f602e, -0x20000000, -0x00098200, -0x00000000, -0x41820000, -0x0005083b, -0x00000000, -0x7d064050, -0x7c004378, -0x552993ba, -0x20000000, -0x3d290000, -0x00098200, -0x7d084110, -0x00000000, -0x7d294078, -0x00000000, -0x7d294038, -0x00000000, -0x7e104a14, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7c14706e, -0x3a100004, -0x80940004, -0x7d0c786e, -0x7c00b040, -0x8130fffc, -0x7c88b040, -0x552993ba, -0x80ac0004, -0x3d290000, -0x00098200, -0x00000000, -0x000600a1, -0x00000000, -0x000600a2, -0x00000000, -0x40820000, -0x00050807, -0x40860000, -0x00050808, -0x7c042800, -0x0006000e, -0x00000000, -0x000600a1, -0x00000000, -0x000600a2, -0x00000000, -0x7c0ea02e, -0x3a100004, -0x7c0ea4ae, -0x8130fffc, -0x7c2f64ae, -0x552993ba, -0x7c00b040, -0x3d290000, -0x00098200, -0x40800000, -0x00050803, -0xfc000800, -0x00000000, -0x40820000, -0x00050801, -0x7e104a14, -0x0006000b, -0x00000000, -0x0006000d, -0x00000000, -0x41820000, -0x00050802, -0x0006000b, -0x00000000, -0x0006000d, -0x00000000, -0x7e104a14, -0x0006000c, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x0006000d, -0x2c000000, -0x00098200, -0x41820000, -0x0005083b, -0x48000000, -0x0005000b, -0x00000000, -0x00060011, -0x40800000, -0x0005080d, -0xc8140000, -0x41840000, -0x00050801, -0x6ca58000, -0x90a1000c, -0xc8210008, -0xfc21f828, -0x48000000, -0x00050002, -0x00060012, -0x6c848000, -0x9081000c, -0xc8010008, -0xfc00f828, -0x0006000b, -0xc82c0000, -0x0006000c, -0xfc000800, -0x48000000, -0x0005000e, -0x00000000, -0x7c0ea02e, -0x558800fe, -0x000900ab, -0x81300000, -0x7d0840f8, -0x3a100004, -0x00000000, -0x2c000000, -0x00098200, -0x00000000, -0x7c080050, -0x00000000, -0x41820000, -0x0005083b, -0x00000000, -0x552993ba, -0x3000ffff, -0x3d290000, -0x00098200, -0x7d084110, -0x00000000, -0x7d294038, -0x00000000, -0x7d294078, -0x00000000, -0x7e104a14, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7c0e602e, -0x80f00000, -0x3a100004, -0x00000000, -0x20000000, -0x00098200, -0x54e993ba, -0x7d084110, -0x3d290000, -0x00098200, -0x00000000, -0x7d294078, -0x00000000, -0x7d294038, -0x00000000, -0x7e104a14, -0x00000000, -0x39000000, -0x00098200, -0x7c0e64ae, -0x7c004040, -0x00000000, -0x40800000, -0x00050801, -0x00000000, -0x41800000, -0x00050801, -0x00000000, -0x3e100000, -0x00098200, -0x54e993ba, -0x7c0ea5ae, -0x7e104a14, -0x0006000b, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x7c0e64ae, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x7c0e602e, -0x21000000, -0x00098200, -0x7c004114, -0x7c0ea12e, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7d0c706e, -0x800c0004, -0x7c08b040, -0x00000000, -0x40820000, -0x00050805, -0x7c0004d1, -0x41830000, -0x00050804, -0x0006000b, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x90140004, -0x0006000d, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x7c000400, -0x40a10000, -0x0005080b, -0x3d0041e0, -0x38000000, -0x48000000, -0x00050007, -0x00000000, -0x0006000f, -0x40800000, -0x0005083e, -0x6d088000, -0x00060011, -0x80f00000, -0x3a100004, -0x7d14716e, -0x90140004, -0x00000000, -0x48000000, -0x0005000d, -0x00000000, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7c0c706e, -0x806c0004, -0x2c000000, -0x00098200, -0x40820000, -0x00050802, -0x80630000, -0x00098200, -0x0006000b, -0x00000000, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x90740004, -0x00000000, -0x9061000c, -0xc8010008, -0xfc00f028, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x00000000, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000c, -0x2c000000, -0x00098200, -0x40820000, -0x00050843, -0x00000000, -0x81230000, -0x00098200, -0x28090000, -0x40820000, -0x00050809, -0x0006000d, -0x00000000, -0x00060044, -0x48000001, -0x00030026, -0x48000000, -0x0005000b, -0x00000000, -0x00060013, -0x88090000, -0x00098200, -0x70000000, -0x00090200, -0x40820000, -0x0005080d, -0x48000000, -0x00050043, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x808a0004, -0x7c08b040, -0x806b0004, -0x00000000, -0x7d0a706e, -0x7d2b706e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7c89b040, -0x40820000, -0x00050805, -0x40860000, -0x00050805, -0x7c632615, -0x41830000, -0x00050804, -0x0006000b, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x90740004, -0x0006000c, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x7c000400, -0x40a10000, -0x0005080b, -0x00000000, -0x48000000, -0x00050041, -0x00000000, -0x48000000, -0x0005003d, -0x00000000, -0x48000000, -0x00050042, -0x00000000, -0x0006000f, -0x00000000, -0xc9ea0000, -0x4c002202, -0xc9cb0000, -0x00000000, -0xc9ca0000, -0x4c002202, -0xc9eb0000, -0x00000000, -0x40800000, -0x00050841, -0x00000000, -0x40800000, -0x0005083d, -0x00000000, -0x40800000, -0x00050842, -0x00000000, -0xfc0e782a, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x48000000, -0x0005000c, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dce54ae, -0x7def5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083f, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083f, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dee54ae, -0x7dcf5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083c, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083c, -0x00000000, -0x7d0e502e, -0x7d2e582e, -0x7dce54ae, -0x7dee5cae, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x00050840, -0x00000000, -0xfc0e782a, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x808a0004, -0x7c08b040, -0x806b0004, -0x00000000, -0x7d0a706e, -0x7d2b706e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7c89b040, -0x40820000, -0x00050805, -0x40860000, -0x00050805, -0x7c641c51, -0x41830000, -0x00050804, -0x0006000b, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x90740004, -0x0006000c, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x7c000400, -0x40a10000, -0x0005080b, -0x00000000, -0x48000000, -0x00050041, -0x00000000, -0x48000000, -0x0005003d, -0x00000000, -0x48000000, -0x00050042, -0x00000000, -0x0006000f, -0x00000000, -0xc9ea0000, -0x4c002202, -0xc9cb0000, -0x00000000, -0xc9ca0000, -0x4c002202, -0xc9eb0000, -0x00000000, -0x40800000, -0x00050841, -0x00000000, -0x40800000, -0x0005083d, -0x00000000, -0x40800000, -0x00050842, -0x00000000, -0xfc0e7828, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x48000000, -0x0005000c, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dce54ae, -0x7def5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083f, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083f, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dee54ae, -0x7dcf5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083c, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083c, -0x00000000, -0x7d0e502e, -0x7d2e582e, -0x7dce54ae, -0x7dee5cae, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x00050840, -0x00000000, -0xfc0e7828, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x808a0004, -0x7c08b040, -0x806b0004, -0x00000000, -0x7d0a706e, -0x7d2b706e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7c89b040, -0x40820000, -0x00050805, -0x40860000, -0x00050805, -0x7c6325d7, -0x41830000, -0x00050804, -0x0006000b, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x90740004, -0x0006000c, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x7c000400, -0x40a10000, -0x0005080b, -0x00000000, -0x48000000, -0x00050041, -0x00000000, -0x48000000, -0x0005003d, -0x00000000, -0x48000000, -0x00050042, -0x00000000, -0x0006000f, -0x00000000, -0xc9ea0000, -0x4c002202, -0xc9cb0000, -0x00000000, -0xc9ca0000, -0x4c002202, -0xc9eb0000, -0x00000000, -0x40800000, -0x00050841, -0x00000000, -0x40800000, -0x0005083d, -0x00000000, -0x40800000, -0x00050842, -0x00000000, -0xfc0e03f2, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x48000000, -0x0005000c, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dce54ae, -0x7def5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083f, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083f, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dee54ae, -0x7dcf5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083c, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083c, -0x00000000, -0x7d0e502e, -0x7d2e582e, -0x7dce54ae, -0x7dee5cae, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x00050840, -0x00000000, -0xfc0e03f2, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dce54ae, -0x7def5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083f, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083f, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dee54ae, -0x7dcf5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083c, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083c, -0x00000000, -0x7d0e502e, -0x7d2e582e, -0x7dce54ae, -0x7dee5cae, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x00050840, -0x00000000, -0xfc0e7824, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x808a0004, -0x7c08b040, -0x806b0004, -0x00000000, -0x7d0a706e, -0x7d2b706e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7c89b040, -0x40820000, -0x00050805, -0x40860000, -0x00050805, -0x48000001, -0x0005009c, -0x41830000, -0x00050804, -0x0006000b, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x90740004, -0x0006000c, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x7c000400, -0x40a10000, -0x0005080b, -0x00000000, -0x48000000, -0x00050041, -0x00000000, -0x48000000, -0x0005003d, -0x00000000, -0x48000000, -0x00050042, -0x00000000, -0x0006000f, -0x00000000, -0xc9ea0000, -0x4c002202, -0xc9cb0000, -0x00000000, -0xc9ca0000, -0x4c002202, -0xc9eb0000, -0x00000000, -0x40800000, -0x00050841, -0x00000000, -0x40800000, -0x0005083d, -0x00000000, -0x40800000, -0x00050842, -0x00000000, -0x000600a3, -0xfc2e7824, -0x48000001, -0x00030010, -0xfc0103f2, -0xfc0e0028, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x48000000, -0x0005000c, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dce54ae, -0x7def5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083f, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083f, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dee54ae, -0x7dcf5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083c, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083c, -0x00000000, -0x7d0e502e, -0x7d2e582e, -0x7dce54ae, -0x7dee5cae, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x00050840, -0x00000000, -0x000600a3, -0xfc2e7824, -0x48000001, -0x00030010, -0xfc0103f2, -0xfc0e0028, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7d0a706e, -0x7d2b786e, -0x808a0004, -0x7c08b040, -0x806b0004, -0x00000000, -0x7d0a706e, -0x7d2b706e, -0x806a0004, -0x7c08b040, -0x808b0004, -0x00000000, -0x7c89b040, -0x40820000, -0x00050805, -0x40860000, -0x00050805, -0x48000001, -0x0005009c, -0x41830000, -0x00050804, -0x0006000b, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x90740004, -0x0006000c, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x7c000400, -0x40a10000, -0x0005080b, -0x00000000, -0x48000000, -0x00050041, -0x00000000, -0x48000000, -0x0005003d, -0x00000000, -0x48000000, -0x00050042, -0x00000000, -0x0006000f, -0x00000000, -0xc9ea0000, -0x4c002202, -0xc9cb0000, -0x00000000, -0xc9ca0000, -0x4c002202, -0xc9eb0000, -0x00000000, -0x40800000, -0x00050841, -0x00000000, -0x40800000, -0x0005083d, -0x00000000, -0x40800000, -0x00050842, -0x00000000, -0x48000000, -0x000500a3, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dce54ae, -0x7def5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083f, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083f, -0x00000000, -0x7d0e502e, -0x00000000, -0x7d2f582e, -0x00000000, -0x7dee54ae, -0x7dcf5cae, -0x00000000, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x0005083c, -0x00000000, -0x7c08b040, -0x40800000, -0x0005083c, -0x00000000, -0x7d0e502e, -0x7d2e582e, -0x7dce54ae, -0x7dee5cae, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x00050840, -0x00000000, -0x48000000, -0x000500a3, -0x00000000, -0x7d0e502e, -0x7c2e54ae, -0x7d2e582e, -0x7c4e5cae, -0x7c08b040, -0x7c89b040, -0x4c002202, -0x40800000, -0x00050840, -0x48000001, -0x0003001f, -0x80f00000, -0x3a100004, -0x7c2ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7caa5850, -0x91d20000, -0x00098200, -0x7c8e5a14, -0x7d555378, -0x0006002b, -0x92010020, -0x7e439378, -0x54a500fe, -0x000900ab, -0x48000001, -0x00030030, -0x28030000, -0x81d20000, -0x00098200, -0x40820000, -0x00050836, -0x80f00000, -0x3a100004, -0x7c0eacae, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x5588007e, -0x000900ab, -0x2108fffc, -0x80f00000, -0x3a100004, -0x7c0f402e, -0x39200000, -0x00098200, -0x7d34716e, -0x90140004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x5588007e, -0x000900ab, -0x2108fffc, -0x80f00000, -0x3a100004, -0x7c0f402e, -0x39200000, -0x00098200, -0x7d34716e, -0x90140004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x558c6800, -0x000900a1, -0x7d8c8670, -0x80f00000, -0x3a100004, -0x7ed4716e, -0x91940004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x558c6800, -0x000900a1, -0x7d88fe70, -0x7d096278, -0x7d284850, -0x7d260034, -0x2106040d, -0x7d293030, -0x20cc0000, -0x5508a000, -0x000900a1, -0x512ca87e, -0x7c000110, -0x7d8c4214, -0x7d8c0038, -0x80f00000, -0x3a100004, -0x7d94716e, -0x93140004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x7c0f64ae, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x558800fe, -0x000900ab, -0x7d0040f8, -0x80f00000, -0x3a100004, -0x7c0ea12e, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x7eeea12e, -0x3a940008, -0x0006000b, -0x7eeea12e, -0x7c146000, -0x3a940008, -0x41800000, -0x0005080b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x814efffc, -0x558c007e, -0x000900ab, -0x398c0000, -0x00098200, -0x7d4a602e, -0x80f00000, -0x3a100004, -0x810a0000, -0x00098200, -0xc8080000, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x814efffc, -0x5694007e, -0x000900ab, -0x3a940000, -0x00098200, -0x7c0c74ee, -0x7d4aa02e, -0x88ca0000, -0x00098200, -0x808a0000, -0x00098200, -0x70c60000, -0x00090200, -0x880a0000, -0x00098200, -0x812c0000, -0xd8040000, -0x28800000, -0x810c0004, -0x4c423382, -0x39290000, -0x00098200, -0x40820000, -0x00050802, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000c, -0x28090000, -0x00090200, -0x40800000, -0x0005080b, -0x88c80000, -0x00098200, -0x70c60000, -0x00090200, -0x38710000, -0x00098200, -0x41820000, -0x0005080b, -0x48000001, -0x00030031, -0x48000000, -0x0005000b, -0x00000000, -0x814efffc, -0x5588007e, -0x000900ab, -0x5694007e, -0x000900ab, -0x2108fffc, -0x3a940000, -0x00098200, -0x7d0f402e, -0x7d4aa02e, -0x88ca0000, -0x00098200, -0x808a0000, -0x00098200, -0x70c60000, -0x00090200, -0x88c80000, -0x00098200, -0x892a0000, -0x00098200, -0x38000000, -0x00098200, -0x91040004, -0x90040000, -0x40820000, -0x00050802, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000c, -0x70c60000, -0x00090200, -0x28890000, -0x4c423382, -0x38710000, -0x00098200, -0x41820000, -0x0005080b, -0x48000001, -0x00030031, -0x48000000, -0x0005000b, -0x00000000, -0x814efffc, -0x5694007e, -0x000900ab, -0x3a940000, -0x00098200, -0x7c0f64ae, -0x7d4aa02e, -0x80f00000, -0x3a100004, -0x810a0000, -0x00098200, -0xd8080000, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x814efffc, -0x5694007e, -0x000900ab, -0x558000fe, -0x000900ab, -0x3a940000, -0x00098200, -0x7c0000f8, -0x7d4aa02e, -0x80f00000, -0x3a100004, -0x810a0000, -0x00098200, -0x90080000, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x81120000, -0x00098200, -0x5580007e, -0x000900ab, -0x3e100000, -0x00098200, -0x7e100214, -0x91d20000, -0x00098200, -0x28080000, -0x7e439378, -0x41820000, -0x00050801, -0x7c8ea214, -0x48000001, -0x00030032, -0x81d20000, -0x00098200, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x5588007e, -0x000900ab, -0x91d20000, -0x00098200, -0x2108fffc, -0x92010020, -0x7c8f402e, -0x7e439378, -0x80aefffc, -0x48000001, -0x00030033, -0x81d20000, -0x00098200, -0x38000000, -0x00098200, -0x7c14716e, -0x90740004, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x80110000, -0x00098200, -0x7e439378, -0x81110000, -0x00098200, -0x91d20000, -0x00098200, -0x7c004040, -0x92010020, -0x40800000, -0x00050805, -0x0006000b, -0x00000000, -0x5584ed7e, -0x558596fe, -0x2c0407ff, -0x41820000, -0x00050803, -0x0006000c, -0x48000001, -0x00030034, -0x00000000, -0x5588007e, -0x000900ab, -0x2108fffc, -0x7c8f402e, -0x48000001, -0x00030035, -0x00000000, -0x81d20000, -0x00098200, -0x38000000, -0x00098200, -0x7c14716e, -0x90740004, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x0006000d, -0x38800801, -0x48000000, -0x0005000c, -0x00000000, -0x0006000f, -0x7d956378, -0x48000001, -0x00030036, -0x7eacab78, -0x7e439378, -0x48000000, -0x0005000b, -0x00000000, -0x812efffc, -0x5588007e, -0x000900ab, -0x81490000, -0x00098200, -0x2108fffc, -0x7d6f402e, -0x00000000, -0x48000000, -0x000500a4, -0x00000000, -0x48000000, -0x000500a5, -0x00000000, -0x7c6a706e, -0x7c8b706e, -0x814a0004, -0x00000000, -0x816b0004, -0x00000000, -0xc80b0000, -0x00000000, -0x2c030000, -0x00098200, -0x7c84b040, -0x40820000, -0x00050830, -0x00000000, -0x800a0000, -0x00098200, -0x40860000, -0x00050805, -0x810a0000, -0x00098200, -0x7c005840, -0x55691800, -0x000900a1, -0x00000000, -0x40840000, -0x00050805, -0xfc20001e, -0xfc40f02a, -0xd8210010, -0x800a0000, -0x00098200, -0xfc42f028, -0x81210014, -0x810a0000, -0x00098200, -0xfc801000, -0x7c004840, -0x4c213202, -0x55291800, -0x000900a1, -0x00000000, -0x40810000, -0x00050830, -0x7c08482e, -0x7dc84cae, -0x2c000000, -0x00098200, -0x41820000, -0x00050802, -0x0006000b, -0x80f00000, -0x3a100004, -0x7dcea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000c, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x88090000, -0x00098200, -0x70000000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x00050030, -0x0006000f, -0x2c040000, -0x00098200, -0x40820000, -0x00050830, -0x00000000, -0x816b0004, -0x00000000, -0x48000000, -0x000500a4, -0x00000000, -0x7c6a706e, -0x5568007e, -0x000900ab, -0x814a0004, -0x2108fffc, -0x2c030000, -0x00098200, -0x7d6f402e, -0x40820000, -0x0005082d, -0x000600a4, -0x800a0000, -0x00098200, -0x810b0000, -0x00098200, -0x812a0000, -0x00098200, -0x7d080038, -0x55002800, -0x000900a1, -0x55081800, -0x000900a1, -0x7d080050, -0x7d294214, -0x0006000b, -0x80690000, -0x00098200, -0x80090000, -0x00098200, -0x80890000, -0x00098200, -0x81090000, -0x00098200, -0x2c030000, -0x00098200, -0x40820000, -0x00050804, -0x7c005800, -0x40820000, -0x00050804, -0x2c040000, -0x00098200, -0x41820000, -0x00050805, -0x0006000d, -0x7c94716e, -0x91140004, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x81290000, -0x00098200, -0x00000000, -0x28090000, -0x40820000, -0x0005080b, -0x38800000, -0x00098200, -0x0006000f, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080d, -0x88090000, -0x00098200, -0x70000000, -0x00090200, -0x40820000, -0x0005080d, -0x48000000, -0x0005002e, -0x00000000, -0x7c6a706e, -0x556000fe, -0x000900ab, -0x814a0004, -0x2c030000, -0x00098200, -0x40820000, -0x0005082f, -0x810a0000, -0x00098200, -0x812a0000, -0x00098200, -0x7c004040, -0x40800000, -0x0005082f, -0x7d09582e, -0x7c095cae, -0x2c080000, -0x00098200, -0x41820000, -0x00050805, -0x0006000b, -0x80f00000, -0x3a100004, -0x7c0ea5ae, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000f, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x89290000, -0x00098200, -0x71290000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x0005002f, -0x00000000, -0x7c6a706e, -0x7c8b706e, -0x814a0004, -0x00000000, -0x816b0004, -0x00000000, -0xc80b0000, -0x00000000, -0x2c030000, -0x00098200, -0x7c84b040, -0x40820000, -0x00050834, -0x00000000, -0x800a0000, -0x00098200, -0x40860000, -0x00050805, -0x810a0000, -0x00098200, -0x7c005840, -0x55601800, -0x000900a1, -0x00000000, -0x40840000, -0x00050805, -0xfc20001e, -0xfc40f02a, -0xd8210010, -0x800a0000, -0x00098200, -0xfc42f028, -0x81210014, -0x810a0000, -0x00098200, -0xfc801000, -0x7c004840, -0x4c213202, -0x55201800, -0x000900a1, -0x00000000, -0x40810000, -0x00050834, -0x7d28002e, -0x88ca0000, -0x00098200, -0x7dcea4ae, -0x2c090000, -0x00098200, -0x41820000, -0x00050803, -0x0006000b, -0x70c90000, -0x00090200, -0x7dc805ae, -0x40820000, -0x00050807, -0x0006000c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000d, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x89290000, -0x00098200, -0x71290000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x00050034, -0x0006000f, -0x2c040000, -0x00098200, -0x40820000, -0x00050834, -0x00000000, -0x816b0004, -0x00000000, -0x48000000, -0x000500a5, -0x00060011, -0x80110000, -0x00098200, -0x54c607b8, -0x91510000, -0x00098200, -0x98ca0000, -0x00098200, -0x900a0000, -0x00098200, -0x48000000, -0x0005000c, -0x00000000, -0x7c6a706e, -0x5568007e, -0x000900ab, -0x814a0004, -0x2108fffc, -0x2c030000, -0x00098200, -0x7d6f402e, -0x40820000, -0x00050831, -0x000600a5, -0x800a0000, -0x00098200, -0x810b0000, -0x00098200, -0x812a0000, -0x00098200, -0x9b0a0000, -0x00098200, -0x7d080038, -0x7dcea4ae, -0x55002800, -0x000900a1, -0x55081800, -0x000900a1, -0x7d080050, -0x88ca0000, -0x00098200, -0x7d294214, -0x0006000b, -0x80690000, -0x00098200, -0x80090000, -0x00098200, -0x80890000, -0x00098200, -0x81090000, -0x00098200, -0x2c030000, -0x00098200, -0x40820000, -0x00050805, -0x7c005800, -0x40820000, -0x00050805, -0x2c040000, -0x00098200, -0x41820000, -0x00050804, -0x0006000c, -0x00000000, -0x70c00000, -0x00090200, -0xd9c90000, -0x00098200, -0x40820000, -0x00050807, -0x0006000d, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x810a0000, -0x00098200, -0x28080000, -0x41820000, -0x0005080c, -0x88080000, -0x00098200, -0x70000000, -0x00090200, -0x40820000, -0x0005080c, -0x48000000, -0x00050032, -0x0006000f, -0x28080000, -0x7d094378, -0x40820000, -0x0005080b, -0x810a0000, -0x00098200, -0x38b10000, -0x00098200, -0x92010020, -0x7e439378, -0x28080000, -0x91d20000, -0x00098200, -0x41820000, -0x00050806, -0x88080000, -0x00098200, -0x70000000, -0x00090200, -0x41820000, -0x00050832, -0x00060010, -0x38000000, -0x00098200, -0x00000000, -0x91650004, -0x7d445378, -0x90050000, -0x48000001, -0x00030037, -0x81d20000, -0x00098200, -0xd9c30000, -0x48000000, -0x0005000d, -0x00060011, -0x80110000, -0x00098200, -0x54c607b8, -0x91510000, -0x00098200, -0x98ca0000, -0x00098200, -0x900a0000, -0x00098200, -0x48000000, -0x0005000d, -0x00000000, -0x7c6a706e, -0x556000fe, -0x000900ab, -0x814a0004, -0x2c030000, -0x00098200, -0x40820000, -0x00050833, -0x810a0000, -0x00098200, -0x812a0000, -0x00098200, -0x88ca0000, -0x00098200, -0x7c004040, -0x7dcea4ae, -0x40800000, -0x00050833, -0x7d09582e, -0x2c080000, -0x00098200, -0x41820000, -0x00050805, -0x0006000b, -0x70c00000, -0x00090200, -0x7dc95dae, -0x40820000, -0x00050807, -0x0006000c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000f, -0x810a0000, -0x00098200, -0x28080000, -0x41820000, -0x0005080b, -0x89080000, -0x00098200, -0x71080000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x00050033, -0x00060011, -0x80110000, -0x00098200, -0x00000000, -0x54c607b8, -0x91510000, -0x00098200, -0x98ca0000, -0x00098200, -0x900a0000, -0x00098200, -0x48000000, -0x0005000c, -0x00000000, -0x7e8ea214, -0x0006000b, -0x7ccf6214, -0x8094fffc, -0x3413fff8, -0x80c60004, -0x540500fe, -0x000900ab, -0x41820000, -0x00050804, -0x7ca53214, -0x81240000, -0x00098200, -0x54c81800, -0x000900a1, -0x88c40000, -0x00098200, -0x7c054840, -0x7d340214, -0x80040000, -0x00098200, -0x41810000, -0x00050805, -0x7d080214, -0x70c00000, -0x00090200, -0x0006000d, -0xc8140000, -0x3a940008, -0x7c944800, -0xd8080000, -0x39080008, -0x41840000, -0x0005080d, -0x40820000, -0x00050807, -0x0006000e, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000f, -0x91d20000, -0x00098200, -0x7e439378, -0x92010020, -0x7d956378, -0x48000001, -0x00030038, -0x7eacab78, -0x48000000, -0x0005000b, -0x00060011, -0x80110000, -0x00098200, -0x54c607b8, -0x90910000, -0x00098200, -0x98c40000, -0x00098200, -0x90040000, -0x00098200, -0x00000000, -0x48000000, -0x0005000e, -0x00000000, -0x7d6b9a14, -0x00000000, -0x7dc97378, -0x7c0ea06e, -0x814e0004, -0x396bfff8, -0x39ce0008, -0x2c000000, -0x00098200, -0x40820000, -0x00050825, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7d6b9a14, -0x00000000, -0x7c14706e, -0x81540004, -0x396bfff8, -0x810efff8, -0x2c000000, -0x00098200, -0x3a940008, -0x40820000, -0x00050845, -0x00060046, -0x71000000, -0x00090200, -0x88ca0000, -0x00098200, -0x69090000, -0x00090200, -0x288b0000, -0x40820000, -0x00050807, -0x0006000b, -0x914efffc, -0x39200000, -0x2b860001, -0x41860000, -0x00050803, -0x0006000c, -0x38c90008, -0x7c144cae, -0x7c865840, -0x7c0e4dae, -0x7cc93378, -0x40860000, -0x0005080c, -0x0006000d, -0x4c42ea02, -0x41820000, -0x00050805, -0x0006000e, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x80e8fffc, -0x54f4dd78, -0x7d147050, -0x81080000, -0x00098200, -0x81080000, -0x00098200, -0x81e80000, -0x00098200, -0x48000000, -0x0005000e, -0x00060011, -0x71200000, -0x00090200, -0x00000000, -0x40820000, -0x0005080b, -0x7dc97050, -0x810efff8, -0x71000000, -0x00090200, -0x48000000, -0x0005000b, -0x00000000, -0x7dc97378, -0x7dcea214, -0x810effe8, -0x814effec, -0xc82efff8, -0xc80efff0, -0x910e0000, -0x914e0004, -0x2c080000, -0x00098200, -0xd82e0010, -0x39600010, -0xdc0e0008, -0x40820000, -0x00050825, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7e8ea214, -0x8154fff4, -0x8174fffc, -0x800a0000, -0x00098200, -0x810a0000, -0x00098200, -0x3a100004, -0x0006000b, -0x7c0b0040, -0x55661800, -0x000900a1, -0x40800000, -0x00050805, -0x7d28302e, -0x7c0834ae, -0x2c090000, -0x00098200, -0x80f0fffc, -0x41820000, -0x00050804, -0x00000000, -0x91740004, -0x92d40000, -0x00000000, -0x9161000c, -0xc8210008, -0xfc21f028, -0x00000000, -0x396b0001, -0x3cd00000, -0x00098200, -0xd8140008, -0x54e893ba, -0x9174fffc, -0x7e083214, -0x00000000, -0xd8340000, -0x00000000, -0x0006000d, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x396b0001, -0x48000000, -0x0005000b, -0x0006000f, -0x810a0000, -0x00098200, -0x7d605850, -0x812a0000, -0x00098200, -0x00060010, -0x7c0b4040, -0x55662800, -0x000900a1, -0x41a10000, -0x0005080d, -0x556a1800, -0x000900a1, -0x7cca3050, -0x7d49302e, -0x7c0934ae, -0x7cc93214, -0x2c0a0000, -0x00098200, -0x80f0fffc, -0x41820000, -0x00050807, -0xc8260000, -0x00098200, -0x3d300000, -0x00098200, -0xd8140008, -0x7d6b0214, -0x54e893ba, -0xd8340000, -0x396b0001, -0x7e084a14, -0x9174fffc, -0x48000000, -0x0005000d, -0x00060011, -0x396b0001, -0x48000000, -0x00050010, -0x00000000, -0x7e8ea214, -0x8014ffe8, -0x8114ffec, -0x8134fff0, -0x80d4fff8, -0x2c090000, -0x00098200, -0x2c800000, -0x00098200, -0x2f060000, -0x00098200, -0x40860000, -0x00050805, -0x89080000, -0x00098200, -0x4c42d202, -0x2f880000, -0x00098200, -0x5580007e, -0x000900ab, -0x4c42f202, -0x7cd00214, -0x40820000, -0x00050805, -0x9314fffc, -0x3e060000, -0x00098200, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000f, -0x38000000, -0x00098200, -0x39000000, -0x00098200, -0x9810ffff, -0x3e060000, -0x00098200, -0x99100003, -0x48000000, -0x0005000b, -0x00000000, -0x800efff8, -0x7d6e5a14, -0x7e8ea214, -0x396b0000, -0x00098200, -0x7d345214, -0x38cefff8, -0x7d605850, -0x288a0000, -0x7d0b3051, -0x41860000, -0x00050805, -0x3929fff0, -0x40810000, -0x00050802, -0x0006000b, -0xc80b0000, -0x396b0008, -0xd8140000, -0x7c144840, -0x7c8b3040, -0x40800000, -0x00050803, -0x3a940008, -0x41840000, -0x0005080b, -0x0006000c, -0x92f40000, -0x7c144840, -0x3a940008, -0x41800000, -0x0005080c, -0x0006000d, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000f, -0x80120000, -0x00098200, -0x3a600008, -0x40a10000, -0x0005080d, -0x7d344214, -0x7c090040, -0x3a680008, -0x41810000, -0x00050807, -0x00060010, -0xc80b0000, -0x396b0008, -0xd8140000, -0x7c0b3040, -0x3a940008, -0x41800000, -0x00050810, -0x48000000, -0x0005000d, -0x00060011, -0x7e439378, -0x92920000, -0x00098200, -0x7eae5850, -0x91d20000, -0x00098200, -0x7e8ea050, -0x92010020, -0x550400fe, -0x000900ab, -0x48000001, -0x00030000, -0x81d20000, -0x00098200, -0x00000000, -0x7e8ea214, -0x7d6eaa14, -0x38cefff8, -0x48000000, -0x00050010, -0x00000000, -0x7d8c9a14, -0x00000000, -0x820efff8, -0x7e8ea214, -0x7d936378, -0x0006000b, -0x72000000, -0x00090200, -0x6a080000, -0x00090200, -0x40820000, -0x000508a6, -0x00060017, -0x80f0fffc, -0x2c0c0008, -0x392efff8, -0x396cfff8, -0x54ea5d78, -0x41820000, -0x00050803, -0x39000000, -0x0006000c, -0x38c80008, -0x7c1444ae, -0x7c065800, -0x7c0945ae, -0x41820000, -0x00050803, -0x39060008, -0x7c3434ae, -0x7c085800, -0x7c2935ae, -0x40820000, -0x0005080c, -0x0006000d, -0x0006000f, -0x7c0a6040, -0x54f4dd78, -0x41810000, -0x00050806, -0x7dd44850, -0x810efffc, -0x80f00000, -0x3a100004, -0x81080000, -0x00098200, -0x81e80000, -0x00098200, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00060010, -0x390cfff8, -0x398c0008, -0x7ee9412e, -0x48000000, -0x0005000f, -0x000600a6, -0x71090000, -0x00090200, -0x40820000, -0x00050818, -0x7dc87050, -0x820efff8, -0x48000000, -0x0005000b, -0x00000000, -0x820efff8, -0x7e8ea214, -0x7d936378, -0x72000000, -0x00090200, -0x6a080000, -0x00090200, -0x40a20000, -0x000508a6, -0x80f0fffc, -0x392efff8, -0x54ea5d78, -0x00000000, -0xc8140000, -0xd8090000, -0x00000000, -0x0006000f, -0x7c0a6040, -0x54f4dd78, -0x41810000, -0x00050806, -0x7dd44850, -0x810efffc, -0x80f00000, -0x3a100004, -0x81080000, -0x00098200, -0x81e80000, -0x00098200, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00060010, -0x390cfff8, -0x398c0008, -0x7ee9412e, -0x48000000, -0x0005000f, -0x00000000, -0x5608fe7c, -0x39080000, -0x00098200, -0x7d31422e, -0x35290000, -0x00098200, -0x7d31432e, -0x41800000, -0x00050894, -0x00000000, -0x7d14706e, -0x80740000, -0x00098200, -0x7c08b040, -0x00000000, -0x80b40000, -0x00098200, -0x40820000, -0x00050809, -0x7c632e15, -0x2f050000, -0x80940000, -0x00098200, -0x41830000, -0x00050806, -0x0006000e, -0x90740000, -0x00098200, -0x00000000, -0x80d40000, -0x00098200, -0x80b40000, -0x00098200, -0x81340000, -0x00098200, -0x80940000, -0x00098200, -0x7f86b040, -0x7c89b040, -0x4c42f202, -0x4c423202, -0x2f050000, -0x40820000, -0x00050809, -0x00000000, -0x41980000, -0x00050805, -0x7c032000, -0x0006000b, -0x92d40000, -0x00098200, -0x00000000, -0x558c007e, -0x000900ab, -0x00000000, -0x90740000, -0x00098200, -0x00000000, -0x7d906214, -0x00000000, -0x41810000, -0x00050803, -0x00000000, -0x3e0c0000, -0x00098200, -0x40a10000, -0x00050807, -0x00000000, -0x41810000, -0x00050802, -0x3e0c0000, -0x00098200, -0x00000000, -0x40a10000, -0x00070800, -0x00000000, -0x0006000c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000f, -0x7c041800, -0x48000000, -0x0005000b, -0x00000000, -0x00060010, -0x7c000400, -0x40a10000, -0x0005080e, -0x48000000, -0x0005000c, -0x00000000, -0x00060013, -0xc8340000, -0x00098200, -0x00000000, -0x7c3474ee, -0x00000000, -0xc8740000, -0x00098200, -0xc8540000, -0x00098200, -0x80d40000, -0x00098200, -0xfc21182a, -0xd8340000, -0x00098200, -0x00000000, -0x00060013, -0x00000000, -0x7d14706e, -0x80d40000, -0x00098200, -0x81340000, -0x00098200, -0x7c08b040, -0x7f86b040, -0x7c89b040, -0x00000000, -0xc8340000, -0x00098200, -0x4c00e202, -0x4c002202, -0xc8540000, -0x00098200, -0x40800000, -0x00050847, -0x00000000, -0x2f060000, -0x00000000, -0x558c007e, -0x000900ab, -0x00000000, -0xd8340000, -0x00098200, -0x00000000, -0x7d906214, -0x00000000, -0xfc011000, -0x00000000, -0x3e0c0000, -0x00098200, -0x00000000, -0x41980000, -0x00050805, -0x00000000, -0x41810000, -0x00050803, -0x00000000, -0x41a10000, -0x0005080c, -0x00000000, -0x41810000, -0x00050802, -0x00000000, -0x0006000b, -0x3e0c0000, -0x00098200, -0x00000000, -0x40a10000, -0x00050807, -0x00000000, -0x40a10000, -0x00070800, -0x00000000, -0x48000000, -0x0005000c, -0x00000000, -0x0006000c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x0006000f, -0x00000000, -0x40800000, -0x0005080c, -0x0006000d, -0x3e0c0000, -0x00098200, -0x00000000, -0x40a00000, -0x0005080b, -0x00000000, -0x40a00000, -0x00050807, -0x00000000, -0x40a00000, -0x00070800, -0x00000000, -0x48000000, -0x0005000c, -0x00000000, -0x00060011, -0x80f0fffc, -0x54ec9b78, -0x48000000, -0x00070000, -0x00000000, -0x5608fe7c, -0x39080000, -0x00098200, -0x7d31422e, -0x35290000, -0x00098200, -0x7d31432e, -0x41800000, -0x00050894, -0x00000000, -0x7d14706e, -0x81340004, -0x2c080000, -0x00098200, -0x41820000, -0x00050801, -0x00000000, -0x9114fff8, -0x9134fffc, -0x48000000, -0x00070000, -0x00000000, -0x5580007e, -0x000900ab, -0x3e100000, -0x00098200, -0x7e100214, -0x9114fff8, -0x9134fffc, -0x00000000, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x5608fe7c, -0x39080000, -0x00098200, -0x7d31422e, -0x35290000, -0x00098200, -0x7d31432e, -0x41800000, -0x00050894, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x81110000, -0x00098200, -0x558c007e, -0x000900ab, -0x93110000, -0x00098200, -0x7d28602e, -0x7c000400, -0x81290000, -0x00098200, -0x91d10000, -0x00098200, -0x7d2903a6, -0x92510000, -0x00098200, -0x3bf10000, -0x00098200, -0x4e800420, -0x00000000, -0x5580007e, -0x000900ab, -0x3e100000, -0x00098200, -0x7e100214, -0x80f00000, -0x3a100004, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x5608fe7c, -0x39080000, -0x00098200, -0x7d31422e, -0x35290000, -0x00098200, -0x7d31432e, -0x41800000, -0x00050896, -0x00000000, -0x81320000, -0x00098200, -0x89100000, -0x00098200, -0x81f00000, -0x00098200, -0x7c144840, -0x55081800, -0x000900a1, -0x41810000, -0x00050820, -0x00000000, -0x80f00000, -0x3a100004, -0x00000000, -0x0006000c, -0x7c0b4040, -0x41800000, -0x00050803, -0x00000000, -0x54ec9b78, -0x48000000, -0x00070000, -0x00000000, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x00000000, -0x0006000d, -0x7eee592e, -0x396b0008, -0x48000000, -0x0005000c, -0x00000000, -0x7c810808, -0x00000000, -0x81320000, -0x00098200, -0x7d0e5a14, -0x7c145a14, -0x91480004, -0x38cb0000, -0x00098200, -0x81f00000, -0x00098200, -0x7c004840, -0x90c80000, -0x40800000, -0x00050820, -0x89300000, -0x00098200, -0x7dd47378, -0x7d0b4378, -0x80f00000, -0x3a100004, -0x2c090000, -0x39c80008, -0x41820000, -0x00050803, -0x0006000b, -0x7c145840, -0x80140000, -0x80d40004, -0x40800000, -0x00050804, -0x92f40000, -0x3a940008, -0x0006000c, -0x3529ffff, -0x90080008, -0x90c8000c, -0x39080008, -0x40820000, -0x0005080b, -0x0006000d, -0x54e815ba, -0x7c11402e, -0x7c0903a6, -0x54ea5d78, -0x54ec9b78, -0x54f4dd78, -0x54eb9d78, -0x4e800420, -0x0006000e, -0x38000000, -0x00098200, -0x48000000, -0x0005000c, -0x00000000, -0x80ca0000, -0x00098200, -0x00000000, -0x80d10000, -0x00098200, -0x00000000, -0x7d145a14, -0x81320000, -0x00098200, -0x7d6e5a14, -0x91d20000, -0x00098200, -0x7c084840, -0x91720000, -0x00098200, -0x38000000, -0x00098200, -0x7cc903a6, -0x00000000, -0x808a0000, -0x00098200, -0x00000000, -0x7e439378, -0x41810000, -0x0005081f, -0x90110000, -0x00098200, -0x4e800421, -0x81d20000, -0x00098200, -0x546c1800, -0x000900a1, -0x81120000, -0x00098200, -0x38000000, -0x00098200, -0x820efff8, -0x7e8c4050, -0x90110000, -0x00098200, -0x48000000, -0x00050016, -0x00000000, -0x00010000 -}; - -enum { - GLOB_vm_returnp, - GLOB_cont_dispatch, - GLOB_vm_returnc, - GLOB_BC_RET_Z, - GLOB_vm_return, - GLOB_vm_leave_cp, - GLOB_vm_leave_unw, - GLOB_vm_unwind_c, - GLOB_vm_unwind_c_eh, - GLOB_vm_unwind_ff, - GLOB_vm_unwind_ff_eh, - GLOB_vm_growstack_c, - GLOB_vm_growstack_l, - GLOB_vm_resume, - GLOB_vm_pcall, - GLOB_vm_call, - GLOB_vm_call_dispatch, - GLOB_vmeta_call, - GLOB_vm_call_dispatch_f, - GLOB_vm_cpcall, - GLOB_cont_ffi_callback, - GLOB_vm_call_tail, - GLOB_cont_cat, - GLOB_BC_CAT_Z, - GLOB_cont_nop, - GLOB_vmeta_tgets1, - GLOB_vmeta_tgets, - GLOB_vmeta_tgetb, - GLOB_vmeta_tgetv, - GLOB_vmeta_tsets1, - GLOB_vmeta_tsets, - GLOB_vmeta_tsetb, - GLOB_vmeta_tsetv, - GLOB_vmeta_comp, - GLOB_vmeta_binop, - GLOB_cont_ra, - GLOB_cont_condt, - GLOB_cont_condf, - GLOB_vmeta_equal, - GLOB_vmeta_equal_cd, - GLOB_vmeta_arith_nv, - GLOB_vmeta_arith_nv2, - GLOB_vmeta_unm, - GLOB_vmeta_arith_vn, - GLOB_vmeta_arith_vv, - GLOB_vmeta_arith_vn2, - GLOB_vmeta_arith_vv2, - GLOB_vmeta_len, - GLOB_BC_LEN_Z, - GLOB_vmeta_callt, - GLOB_BC_CALLT_Z, - GLOB_vmeta_for, - GLOB_ff_assert, - GLOB_fff_fallback, - GLOB_fff_res, - GLOB_ff_type, - GLOB_fff_resn, - GLOB_ff_getmetatable, - GLOB_fff_restv, - GLOB_ff_setmetatable, - GLOB_ff_rawget, - GLOB_ff_tonumber, - GLOB_ff_tostring, - GLOB_fff_gcstep, - GLOB_ff_next, - GLOB_ff_pairs, - GLOB_ff_ipairs_aux, - GLOB_ff_ipairs, - GLOB_ff_pcall, - GLOB_ff_xpcall, - GLOB_ff_coroutine_resume, - GLOB_ff_coroutine_wrap_aux, - GLOB_ff_coroutine_yield, - GLOB_ff_math_abs, - GLOB_fff_resi, - GLOB_fff_res1, - GLOB_ff_math_floor, - GLOB_ff_math_ceil, - GLOB_ff_math_sqrt, - GLOB_ff_math_log, - GLOB_ff_math_log10, - GLOB_ff_math_exp, - GLOB_ff_math_sin, - GLOB_ff_math_cos, - GLOB_ff_math_tan, - GLOB_ff_math_asin, - GLOB_ff_math_acos, - GLOB_ff_math_atan, - GLOB_ff_math_sinh, - GLOB_ff_math_cosh, - GLOB_ff_math_tanh, - GLOB_ff_math_pow, - GLOB_ff_math_atan2, - GLOB_ff_math_fmod, - GLOB_ff_math_deg, - GLOB_ff_math_rad, - GLOB_ff_math_ldexp, - GLOB_ff_math_frexp, - GLOB_ff_math_modf, - GLOB_ff_math_min, - GLOB_ff_math_max, - GLOB_ff_string_len, - GLOB_ff_string_byte, - GLOB_ff_string_char, - GLOB_fff_newstr, - GLOB_ff_string_sub, - GLOB_ff_string_rep, - GLOB_ff_string_reverse, - GLOB_ff_string_lower, - GLOB_ff_string_upper, - GLOB_ff_table_getn, - GLOB_ff_bit_band, - GLOB_fff_tobit_fb, - GLOB_fff_bitop_fb, - GLOB_ff_bit_bor, - GLOB_ff_bit_bxor, - GLOB_ff_bit_bswap, - GLOB_ff_bit_bnot, - GLOB_ff_bit_lshift, - GLOB_ff_bit_rshift, - GLOB_ff_bit_arshift, - GLOB_ff_bit_rol, - GLOB_ff_bit_ror, - GLOB_ff_bit_tobit, - GLOB_vm_record, - GLOB_vm_rethook, - GLOB_vm_inshook, - GLOB_cont_hook, - GLOB_vm_hotloop, - GLOB_vm_callhook, - GLOB_vm_hotcall, - GLOB_vm_exit_handler, - GLOB_vm_exit_interp, - GLOB_vm_floor, - GLOB_vm_ceil, - GLOB_vm_trunc, - GLOB_vm_modi, - GLOB_vm_foldarith, - GLOB_vm_cachesync, - GLOB_vm_ffi_callback, - GLOB_vm_ffi_call, - GLOB_BC_ISEQN_Z, - GLOB_BC_ISNEN_Z, - GLOB_BC_MODVN_Z, - GLOB_BC_TGETS_Z, - GLOB_BC_TSETS_Z, - GLOB_BC_RETV_Z, - GLOB__MAX -}; -static const char *const globnames[] = { - "vm_returnp", - "cont_dispatch", - "vm_returnc", - "BC_RET_Z", - "vm_return", - "vm_leave_cp", - "vm_leave_unw", - "vm_unwind_c", - "vm_unwind_c_eh", - "vm_unwind_ff", - "vm_unwind_ff_eh", - "vm_growstack_c", - "vm_growstack_l", - "vm_resume", - "vm_pcall", - "vm_call", - "vm_call_dispatch", - "vmeta_call", - "vm_call_dispatch_f", - "vm_cpcall", - "cont_ffi_callback", - "vm_call_tail", - "cont_cat", - "BC_CAT_Z", - "cont_nop", - "vmeta_tgets1", - "vmeta_tgets", - "vmeta_tgetb", - "vmeta_tgetv", - "vmeta_tsets1", - "vmeta_tsets", - "vmeta_tsetb", - "vmeta_tsetv", - "vmeta_comp", - "vmeta_binop", - "cont_ra", - "cont_condt", - "cont_condf", - "vmeta_equal", - "vmeta_equal_cd", - "vmeta_arith_nv", - "vmeta_arith_nv2", - "vmeta_unm", - "vmeta_arith_vn", - "vmeta_arith_vv", - "vmeta_arith_vn2", - "vmeta_arith_vv2", - "vmeta_len", - "BC_LEN_Z", - "vmeta_callt", - "BC_CALLT_Z", - "vmeta_for", - "ff_assert", - "fff_fallback", - "fff_res", - "ff_type", - "fff_resn", - "ff_getmetatable", - "fff_restv", - "ff_setmetatable", - "ff_rawget", - "ff_tonumber", - "ff_tostring", - "fff_gcstep", - "ff_next", - "ff_pairs", - "ff_ipairs_aux", - "ff_ipairs", - "ff_pcall", - "ff_xpcall", - "ff_coroutine_resume", - "ff_coroutine_wrap_aux", - "ff_coroutine_yield", - "ff_math_abs", - "fff_resi", - "fff_res1", - "ff_math_floor", - "ff_math_ceil", - "ff_math_sqrt", - "ff_math_log", - "ff_math_log10", - "ff_math_exp", - "ff_math_sin", - "ff_math_cos", - "ff_math_tan", - "ff_math_asin", - "ff_math_acos", - "ff_math_atan", - "ff_math_sinh", - "ff_math_cosh", - "ff_math_tanh", - "ff_math_pow", - "ff_math_atan2", - "ff_math_fmod", - "ff_math_deg", - "ff_math_rad", - "ff_math_ldexp", - "ff_math_frexp", - "ff_math_modf", - "ff_math_min", - "ff_math_max", - "ff_string_len", - "ff_string_byte", - "ff_string_char", - "fff_newstr", - "ff_string_sub", - "ff_string_rep", - "ff_string_reverse", - "ff_string_lower", - "ff_string_upper", - "ff_table_getn", - "ff_bit_band", - "fff_tobit_fb", - "fff_bitop_fb", - "ff_bit_bor", - "ff_bit_bxor", - "ff_bit_bswap", - "ff_bit_bnot", - "ff_bit_lshift", - "ff_bit_rshift", - "ff_bit_arshift", - "ff_bit_rol", - "ff_bit_ror", - "ff_bit_tobit", - "vm_record", - "vm_rethook", - "vm_inshook", - "cont_hook", - "vm_hotloop", - "vm_callhook", - "vm_hotcall", - "vm_exit_handler", - "vm_exit_interp", - "vm_floor", - "vm_ceil", - "vm_trunc", - "vm_modi", - "vm_foldarith", - "vm_cachesync", - "vm_ffi_callback", - "vm_ffi_call", - "BC_ISEQN_Z", - "BC_ISNEN_Z", - "BC_MODVN_Z", - "BC_TGETS_Z", - "BC_TSETS_Z", - "BC_RETV_Z", - (const char *)0 -}; -static const char *const extnames[] = { - "lj_state_growstack", - "lj_meta_tget", - "lj_meta_tset", - "lj_meta_comp", - "lj_meta_equal", - "lj_meta_equal_cd", - "lj_meta_arith", - "lj_meta_len", - "lj_meta_call", - "lj_meta_for", - "lj_tab_get", - "lj_str_fromnumber", - "lj_str_fromnum", - "lj_tab_next", - "lj_tab_getinth", - "lj_ffh_coroutine_wrap_err", - "floor", - "ceil", - "sqrt", - "log", - "log10", - "exp", - "sin", - "cos", - "tan", - "asin", - "acos", - "atan", - "sinh", - "cosh", - "tanh", - "pow", - "atan2", - "fmod", - "ldexp", - "frexp", - "modf", - "lj_str_new", - "lj_tab_len", - "lj_gc_step", - "lj_dispatch_ins", - "lj_trace_hot", - "lj_dispatch_call", - "lj_trace_exit", - "lj_err_throw", - "trunc", - "lj_ccallback_enter", - "lj_ccallback_leave", - "lj_meta_cat", - "lj_gc_barrieruv", - "lj_func_closeuv", - "lj_func_newL_gc", - "lj_tab_new", - "lj_tab_dup", - "lj_gc_step_fixtop", - "lj_tab_newkey", - "lj_tab_reasize", - (const char *)0 -}; -#define Dt1(_V) (int)(ptrdiff_t)&(((lua_State *)0)_V) -#define Dt2(_V) (int)(ptrdiff_t)&(((global_State *)0)_V) -#define Dt3(_V) (int)(ptrdiff_t)&(((TValue *)0)_V) -#define Dt4(_V) (int)(ptrdiff_t)&(((GCobj *)0)_V) -#define Dt5(_V) (int)(ptrdiff_t)&(((GCstr *)0)_V) -#define Dt6(_V) (int)(ptrdiff_t)&(((GCtab *)0)_V) -#define Dt7(_V) (int)(ptrdiff_t)&(((GCfuncL *)0)_V) -#define Dt8(_V) (int)(ptrdiff_t)&(((GCfuncC *)0)_V) -#define Dt9(_V) (int)(ptrdiff_t)&(((GCproto *)0)_V) -#define DtA(_V) (int)(ptrdiff_t)&(((GCupval *)0)_V) -#define DtB(_V) (int)(ptrdiff_t)&(((Node *)0)_V) -#define DtC(_V) (int)(ptrdiff_t)&(((int *)0)_V) -#define DtD(_V) (int)(ptrdiff_t)&(((GCtrace *)0)_V) -#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) -#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) -#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) - -/* Generate subroutines used by opcodes and other parts of the VM. */ -/* The .code_sub section should be last to help static branch prediction. */ -static void build_subroutines(BuildCtx *ctx) -{ - dasm_put(Dst, 0); - dasm_put(Dst, 1, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, ~LJ_VMST_C, Dt1(->base), DISPATCH_GL(vmstate), 31-3, Dt1(->top)); - dasm_put(Dst, 55, Dt1(->cframe), 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8); - dasm_put(Dst, 105, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt1(->maxstack)); - dasm_put(Dst, 154, Dt1(->top), 31-3, Dt1(->top), ~LJ_VMST_C, Dt1(->glref), Dt2(->vmstate), LJ_TISNUM, Dt1(->base), Dt1(->glref), LJ_TFALSE, LJ_TNIL, ~LJ_VMST_INTERP, GG_G2DISP); - dasm_put(Dst, 217, DISPATCH_GL(vmstate), LUA_MINSTACK, Dt1(->base), Dt1(->top), 32-3, Dt1(->base), Dt1(->top), Dt7(->pc), 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4); - dasm_put(Dst, 278, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4); - dasm_put(Dst, 325, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt1(->glref), Dt1(->status), FRAME_CP, CFRAME_RESUME, GG_G2DISP, Dt1(->cframe), Dt1(->base), LJ_TISNUM, Dt1(->top), Dt1(->status), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate), FRAME_TYPE, LJ_TNIL); - dasm_put(Dst, 393, 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4); - dasm_put(Dst, 440, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, FRAME_CP, 56+(14-14)*4, 128+(14-14)*8); - dasm_put(Dst, 488, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8); - dasm_put(Dst, 535, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, Dt1(->base), LJ_TISNUM, Dt1(->top)); - dasm_put(Dst, 586, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), LJ_TFUNC, Dt7(->pc), 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4); - dasm_put(Dst, 653, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4); - dasm_put(Dst, 700, 128+(31-14)*8, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP); -#if LJ_HASFFI - dasm_put(Dst, 738); -#endif - dasm_put(Dst, 740, Dt7(->pc)); -#if LJ_HASFFI - dasm_put(Dst, 746); -#endif - dasm_put(Dst, 749, PC2PROTO(k)); -#if LJ_HASFFI - dasm_put(Dst, 754); -#endif - dasm_put(Dst, 762, Dt1(->base), DISPATCH_GL(tmptv), LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR); - if (!LJ_DUALNUM) { - dasm_put(Dst, 807); - } - dasm_put(Dst, 811, DISPATCH_GL(tmptv)); - if (LJ_DUALNUM) { - dasm_put(Dst, 816); - } else { - dasm_put(Dst, 819); - } - dasm_put(Dst, 821, Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv), LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR); - if (!LJ_DUALNUM) { - dasm_put(Dst, 889); - } - dasm_put(Dst, 893, DISPATCH_GL(tmptv)); - if (LJ_DUALNUM) { - dasm_put(Dst, 898); - } else { - dasm_put(Dst, 901); - } - dasm_put(Dst, 903, Dt1(->base), FRAME_CONT, Dt1(->top)); - if (LJ_DUALNUM) { - dasm_put(Dst, 948); - } else { - dasm_put(Dst, 950); - } - dasm_put(Dst, 952); - if (LJ_DUALNUM) { - dasm_put(Dst, 954); - } else { - dasm_put(Dst, 956); - } - dasm_put(Dst, 958, Dt1(->base), -(BCBIAS_J*4 >> 16), LJ_TTRUE, LJ_TTRUE, Dt1(->base)); -#if LJ_HASFFI - dasm_put(Dst, 1021, Dt1(->base)); -#endif - dasm_put(Dst, 1032); - if (LJ_DUALNUM) { - dasm_put(Dst, 1039); - } - dasm_put(Dst, 1044); - if (LJ_DUALNUM) { - dasm_put(Dst, 1058); - } - dasm_put(Dst, 1061); - if (LJ_DUALNUM) { - dasm_put(Dst, 1064); - } - dasm_put(Dst, 1067, Dt1(->base), FRAME_CONT); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1091); -#endif - dasm_put(Dst, 1093, Dt1(->base)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1101); -#else - dasm_put(Dst, 1108); -#endif - dasm_put(Dst, 1111, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base)); -#if LJ_HASJIT - dasm_put(Dst, 1159); -#endif - dasm_put(Dst, 1161); -#if LJ_HASJIT - dasm_put(Dst, 1163, BC_JFORI); -#endif - dasm_put(Dst, 1166); -#if LJ_HASJIT - dasm_put(Dst, 1168, BC_JFORI); -#endif - dasm_put(Dst, 1171, BC_FORI, LJ_TFALSE, ~LJ_TISNUM+1, 31-3, Dt8(->upvalue), LJ_TTAB, Dt6(->metatable)); - dasm_put(Dst, 1234, LJ_TNIL, DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]), Dt6(->hmask), LJ_TTAB, Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, DtB(->next)); - dasm_put(Dst, 1282, LJ_TNIL, LJ_TUDATA, ~LJ_TISNUM+1, 31-2, DISPATCH_GL(gcroot[GCROOT_BASEMT]), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 1337, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), LJ_TTAB, LJ_TSTR, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base)); - dasm_put(Dst, 1397, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - if (LJ_DUALNUM) { - dasm_put(Dst, 1407); - } else { - dasm_put(Dst, 1410); - } - dasm_put(Dst, 1413, LJ_TSTR, LJ_TTAB, Dt1(->base), Dt1(->top), LJ_TNIL, (2+1)*8, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1464, Dt6(->metatable), Dt8(->upvalue[0])); -#else - dasm_put(Dst, 1473, Dt8(->upvalue[0])); -#endif - dasm_put(Dst, 1477, (3+1)*8); - if (LJ_DUALNUM) { - dasm_put(Dst, 1489); - } else { - dasm_put(Dst, 1491); - } - dasm_put(Dst, 1493, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 1500); - } else { - dasm_put(Dst, 1505); - } - dasm_put(Dst, 1517, Dt6(->asize), Dt6(->array)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 1522); - } - dasm_put(Dst, 1524); - if (LJ_DUALNUM) { - dasm_put(Dst, 1528, 31-3); - } else { - dasm_put(Dst, 1533, 31-3); - } - dasm_put(Dst, 1537, LJ_TNIL, (0+1)*8, (2+1)*8, Dt6(->hmask), (0+1)*8, (0+1)*8, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1585, Dt6(->metatable), Dt8(->upvalue[0])); -#else - dasm_put(Dst, 1594, Dt8(->upvalue[0])); -#endif - if (LJ_DUALNUM) { - dasm_put(Dst, 1598); - } else { - dasm_put(Dst, 1600); - } - dasm_put(Dst, 1602, (3+1)*8, DISPATCH_GL(hookmask), 32-HOOK_ACTIVE_SHIFT, 8+FRAME_PCALL, DISPATCH_GL(hookmask), LJ_TFUNC, 32-HOOK_ACTIVE_SHIFT, 16+FRAME_PCALL, LJ_TTHREAD, Dt1(->status), Dt1(->cframe)); - dasm_put(Dst, 1662, Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate)); - dasm_put(Dst, 1724, Dt1(->maxstack), Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3); - dasm_put(Dst, 1787, Dt8(->upvalue[0].gcr), Dt1(->status), Dt1(->cframe), Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP); - dasm_put(Dst, 1846, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe)); - dasm_put(Dst, 1903, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status)); - if (LJ_DUALNUM) { - dasm_put(Dst, 1928); - } - dasm_put(Dst, 1949, (1+1)*8, FRAME_TYPE); - if (LJ_DUALNUM) { - dasm_put(Dst, 1991, 31-11, 32-21, 31-11); - dasm_put(Dst, 2073, 31-11, 32-21, 31-11); - } else { - dasm_put(Dst, 2127); - } - dasm_put(Dst, 2154); - dasm_put(Dst, 2213); - dasm_put(Dst, 2271); - dasm_put(Dst, 2327, Dt8(->upvalue[0])); - dasm_put(Dst, 2393); - if (LJ_DUALNUM) { - dasm_put(Dst, 2397); - } else { - dasm_put(Dst, 2412); - } - dasm_put(Dst, 2430, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 2452); - } - dasm_put(Dst, 2457, (2+1)*8); - if (LJ_DUALNUM) { - dasm_put(Dst, 2461); - } else { - dasm_put(Dst, 2464); - } - dasm_put(Dst, 2466, (2+1)*8); - if (LJ_DUALNUM) { - dasm_put(Dst, 2488); - } else { - dasm_put(Dst, 2557); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 2582); - } else { - dasm_put(Dst, 2651); - } - dasm_put(Dst, 2676, LJ_TSTR, Dt5(->len), LJ_TSTR, Dt5(->len)); - if (LJ_DUALNUM) { - dasm_put(Dst, 2703, Dt5([1]), (0+1)*8); - } else { - dasm_put(Dst, 2715, Dt5([1]), 31-3); - } - dasm_put(Dst, 2731, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - if (LJ_DUALNUM) { - dasm_put(Dst, 2742); - } else { - dasm_put(Dst, 2750); - } - dasm_put(Dst, 2761, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 2789); - } - dasm_put(Dst, 2791); - if (LJ_DUALNUM) { - dasm_put(Dst, 2797); - } else { - dasm_put(Dst, 2799); - } - dasm_put(Dst, 2801); - if (LJ_DUALNUM) { - dasm_put(Dst, 2805); - } else { - dasm_put(Dst, 2814); - } - dasm_put(Dst, 2825, LJ_TSTR); - if (!LJ_DUALNUM) { - dasm_put(Dst, 2830); - } - dasm_put(Dst, 2834, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - if (LJ_DUALNUM) { - dasm_put(Dst, 2884); - } else { - dasm_put(Dst, 2886); - } - dasm_put(Dst, 2888, LJ_TSTR); - if (LJ_DUALNUM) { - dasm_put(Dst, 2895); - } else { - dasm_put(Dst, 2899); - } - dasm_put(Dst, 2906, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 2959, Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 3017, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 3086); - } else { - dasm_put(Dst, 3096); - } - dasm_put(Dst, 3109); - if (LJ_DUALNUM) { - dasm_put(Dst, 3115); - } else { - dasm_put(Dst, 3117); - } - dasm_put(Dst, 3119); - if (LJ_DUALNUM) { - dasm_put(Dst, 3123); - } else { - dasm_put(Dst, 3126); - } - dasm_put(Dst, 3132); - if (LJ_DUALNUM) { - dasm_put(Dst, 3137); - } else { - dasm_put(Dst, 3147); - } - dasm_put(Dst, 3160); - if (LJ_DUALNUM) { - dasm_put(Dst, 3166); - } else { - dasm_put(Dst, 3168); - } - dasm_put(Dst, 3170); - if (LJ_DUALNUM) { - dasm_put(Dst, 3174); - } else { - dasm_put(Dst, 3177); - } - dasm_put(Dst, 3183); - if (LJ_DUALNUM) { - dasm_put(Dst, 3188); - } else { - dasm_put(Dst, 3198); - } - dasm_put(Dst, 3211); - if (LJ_DUALNUM) { - dasm_put(Dst, 3217); - } else { - dasm_put(Dst, 3219); - } - dasm_put(Dst, 3221); - if (LJ_DUALNUM) { - dasm_put(Dst, 3225); - } else { - dasm_put(Dst, 3228); - } - dasm_put(Dst, 3234); - if (LJ_DUALNUM) { - dasm_put(Dst, 3239); - } else { - dasm_put(Dst, 3249); - } - dasm_put(Dst, 3262); - if (LJ_DUALNUM) { - dasm_put(Dst, 3269); - } else { - dasm_put(Dst, 3279); - } - dasm_put(Dst, 3292); - if (LJ_DUALNUM) { - dasm_put(Dst, 3296); - } else { - dasm_put(Dst, 3311); - } - dasm_put(Dst, 3332); - if (LJ_DUALNUM) { - dasm_put(Dst, 3337); - } else { - dasm_put(Dst, 3352); - } - dasm_put(Dst, 3373); - if (LJ_DUALNUM) { - dasm_put(Dst, 3378); - } else { - dasm_put(Dst, 3393); - } - dasm_put(Dst, 3414); - if (LJ_DUALNUM) { - dasm_put(Dst, 3419); - } else { - dasm_put(Dst, 3434); - } - dasm_put(Dst, 3455); - if (LJ_DUALNUM) { - dasm_put(Dst, 3459); - } else { - dasm_put(Dst, 3474); - } - dasm_put(Dst, 3495); - if (LJ_DUALNUM) { - dasm_put(Dst, 3500); - } else { - dasm_put(Dst, 3510); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 3523); - } else { - dasm_put(Dst, 3526); - } - dasm_put(Dst, 3532); - if (LJ_DUALNUM) { - dasm_put(Dst, 3540); - } - dasm_put(Dst, 3548); - if (LJ_DUALNUM) { - dasm_put(Dst, 3550); - } - dasm_put(Dst, 3558, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); - dasm_put(Dst, 3622, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 3648, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); -#endif - dasm_put(Dst, 3670, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 3717, GG_DISP2STATIC); -#if LJ_HASJIT - dasm_put(Dst, 3735, GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), 31-3, Dt1(->top)); -#endif - dasm_put(Dst, 3758); -#if LJ_HASJIT - dasm_put(Dst, 3761); -#endif - dasm_put(Dst, 3764); -#if LJ_HASJIT - dasm_put(Dst, 3766); -#endif - dasm_put(Dst, 3769, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 3792, -(16+32*8+32*4), 16+32*8+2*4, -GG_DISP2G-32768, ~LJ_VMST_EXIT, 16+32*8+32*4, DISPATCH_GL(vmstate), 16+0*8, 16+1*8, 16+2*8, 16+3*8, 16+4*8, 16+5*8, 16+6*8, 16+7*8, 16+32*8+32*4, 16+8*8, 16+9*8, 16+10*8, 16+11*8, 16+32*8+1*4, 16+12*8, 16+13*8); - dasm_put(Dst, 3839, 16+14*8, 16+15*8, 16+16*8, 16+17*8, 16+18*8, 16+19*8, 16+32*8+0*4, 16+20*8, 16+21*8, 16+22*8, 16+23*8, 16+24*8, 16+25*8, 16+26*8, 16+27*8, DISPATCH_GL(jit_L), 16+28*8, 16+29*8, 16+30*8, 16+31*8, DISPATCH_GL(jit_base), 32-2); - dasm_put(Dst, 3888, DISPATCH_J(L), DISPATCH_GL(jit_L), DISPATCH_J(parent), Dt1(->base), GG_DISP2J, DISPATCH_J(exitno), Dt1(->cframe), Dt1(->base)); -#endif - dasm_put(Dst, 3916); -#if LJ_HASJIT - dasm_put(Dst, 3918, -GG_DISP2G-32768, 31-3, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), LJ_TISNUM, LJ_TNIL, DISPATCH_GL(vmstate), BC_FUNCF*4); -#endif - dasm_put(Dst, 3975); -#if LJ_HASJIT - dasm_put(Dst, 3983); -#endif - dasm_put(Dst, 3986); -#if LJ_HASJIT - dasm_put(Dst, 4066); -#else - dasm_put(Dst, 4088); -#endif - dasm_put(Dst, 4090); -#if LJ_HASFFI -#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) - dasm_put(Dst, 4114, 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8); - dasm_put(Dst, 4162, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1]), DtE(->cb.gpr[2])); - dasm_put(Dst, 4209, DtE(->cb.fpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[3]), DtE(->cb.gpr[4]), DtE(->cb.fpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[5]), DtE(->cb.gpr[6]), DtE(->cb.fpr[6]), DtE(->cb.gpr[7]), DtE(->cb.fpr[7]), 272+8, DtE(->cb.stack), Dt1(->base), LJ_TISNUM, Dt1(->top), LJ_TNIL, ~LJ_VMST_INTERP, DISPATCH_GL(vmstate), Dt7(->pc)); -#endif - dasm_put(Dst, 4273); -#if LJ_HASFFI - dasm_put(Dst, 4275, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1])); -#endif - dasm_put(Dst, 4296); -#if LJ_HASFFI -#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 4298, DtF(->spadj), DtF(->nsp), DtF(->nfpr), DtF(->stack), 31-2, DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2])); - dasm_put(Dst, 4355, DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->gpr[6]), DtF(->gpr[7]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3])); -#endif -} - -/* Generate the code for a single instruction. */ -static void build_ins(BuildCtx *ctx, BCOp op, int defop) -{ - int vk = 0; - dasm_put(Dst, 4387, defop); - - switch (op) { - - /* -- Comparison ops ---------------------------------------------------- */ - - /* Remember: all ops branch for a true comparison, fall through otherwise. */ - - case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - if (LJ_DUALNUM) { - dasm_put(Dst, 4389, -(BCBIAS_J*4 >> 16)); - if (op == BC_ISLT) { - dasm_put(Dst, 4406); - } else if (op == BC_ISGE) { - dasm_put(Dst, 4409); - } else if (op == BC_ISLE) { - dasm_put(Dst, 4412); - } else { - dasm_put(Dst, 4415); - } - dasm_put(Dst, 4418); - if (op == BC_ISLT) { - dasm_put(Dst, 4457); - } else if (op == BC_ISGE) { - dasm_put(Dst, 4460); - } else if (op == BC_ISLE) { - dasm_put(Dst, 4463); - } else { - dasm_put(Dst, 4467); - } - dasm_put(Dst, 4471); - } else { - dasm_put(Dst, 4474, -(BCBIAS_J*4 >> 16)); - if (op == BC_ISLT) { - dasm_put(Dst, 4491); - } else if (op == BC_ISGE) { - dasm_put(Dst, 4494); - } else if (op == BC_ISLE) { - dasm_put(Dst, 4497); - } else { - dasm_put(Dst, 4501); - } - dasm_put(Dst, 4505); - } - break; - - case BC_ISEQV: case BC_ISNEV: - vk = op == BC_ISEQV; - if (LJ_DUALNUM) { - dasm_put(Dst, 4518, -(BCBIAS_J*4 >> 16)); - if (vk) { - dasm_put(Dst, 4531); - } else { - dasm_put(Dst, 4534); - } - } else { - dasm_put(Dst, 4537, -(BCBIAS_J*4 >> 16)); - if (vk) { - dasm_put(Dst, 4554); - } else { - dasm_put(Dst, 4558); - } - dasm_put(Dst, 4562); - } - dasm_put(Dst, 4574); - if (!LJ_DUALNUM) { - dasm_put(Dst, 4576); - } - if (LJ_HASFFI) { - dasm_put(Dst, 4579, LJ_TCDATA, LJ_TCDATA); - } - dasm_put(Dst, 4584, ~LJ_TISPRI); - if (LJ_HASFFI) { - dasm_put(Dst, 4589); - } - dasm_put(Dst, 4591, ~LJ_TISTABUD); - if (LJ_HASFFI) { - dasm_put(Dst, 4594); - } - dasm_put(Dst, 4597); - if (vk) { - dasm_put(Dst, 4605); - } else { - dasm_put(Dst, 4610); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 4615); - } else { - dasm_put(Dst, 4630); - } - dasm_put(Dst, 4633, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<> 16)); - if (vk) { - dasm_put(Dst, 4678); - } else { - dasm_put(Dst, 4680); - } - dasm_put(Dst, 4682); - break; - - case BC_ISEQN: case BC_ISNEN: - vk = op == BC_ISEQN; - if (LJ_DUALNUM) { - dasm_put(Dst, 4694, -(BCBIAS_J*4 >> 16)); - if (vk) { - dasm_put(Dst, 4706); - } else { - dasm_put(Dst, 4708); - } - dasm_put(Dst, 4710); - } else { - if (vk) { - dasm_put(Dst, 4717); - } else { - dasm_put(Dst, 4719); - } - dasm_put(Dst, 4721, -(BCBIAS_J*4 >> 16)); - } - if (vk) { - dasm_put(Dst, 4734); - if (!LJ_HASFFI) { - dasm_put(Dst, 4739); - } - } else { - dasm_put(Dst, 4741); - if (!LJ_HASFFI) { - dasm_put(Dst, 4745); - } - dasm_put(Dst, 4747); - } - dasm_put(Dst, 4750); - if (LJ_HASFFI) { - dasm_put(Dst, 4761, LJ_TCDATA); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 4769); - } - break; - - case BC_ISEQP: case BC_ISNEP: - vk = op == BC_ISEQP; - dasm_put(Dst, 4793, 32-3); - if (LJ_HASFFI) { - dasm_put(Dst, 4800, LJ_TCDATA); - } - dasm_put(Dst, 4803); - if (LJ_HASFFI) { - dasm_put(Dst, 4805); - } - dasm_put(Dst, 4808, -(BCBIAS_J*4 >> 16)); - if (vk) { - dasm_put(Dst, 4814); - } else { - dasm_put(Dst, 4816); - } - dasm_put(Dst, 4818); - break; - - /* -- Unary test and copy ops ------------------------------------------- */ - - case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: - dasm_put(Dst, 4830); - if (op == BC_IST || op == BC_ISF) { - dasm_put(Dst, 4834, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); - if (op == BC_IST) { - dasm_put(Dst, 4841); - } else { - dasm_put(Dst, 4843); - } - dasm_put(Dst, 4845); - } else { - dasm_put(Dst, 4847, LJ_TFALSE); - if (op == BC_ISTC) { - dasm_put(Dst, 4852); - } else { - dasm_put(Dst, 4855); - } - dasm_put(Dst, 4858, -(BCBIAS_J*4 >> 16)); - } - dasm_put(Dst, 4865); - break; - - /* -- Unary ops --------------------------------------------------------- */ - - case BC_MOV: - dasm_put(Dst, 4876); - break; - case BC_NOT: - dasm_put(Dst, 4889, LJ_TTRUE); - break; - case BC_UNM: - dasm_put(Dst, 4905); - if (LJ_DUALNUM) { - dasm_put(Dst, 4909); - } - dasm_put(Dst, 4937); - if (LJ_DUALNUM) { - dasm_put(Dst, 4947); - } else { - dasm_put(Dst, 4950); - } - break; - case BC_LEN: - dasm_put(Dst, 4959, LJ_TSTR, Dt5(->len)); - if (LJ_DUALNUM) { - dasm_put(Dst, 4969); - } else { - dasm_put(Dst, 4974); - } - dasm_put(Dst, 4981, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 4995, Dt6(->metatable)); -#endif - dasm_put(Dst, 5002); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 5008, Dt6(->nomm), 1<base), 32-3, Dt1(->base)); - break; - - /* -- Constant ops ------------------------------------------------------ */ - - case BC_KSTR: - dasm_put(Dst, 5811, 32-1, LJ_TSTR); - break; - case BC_KCDATA: -#if LJ_HASFFI - dasm_put(Dst, 5830, 32-1, LJ_TCDATA); -#endif - break; - case BC_KSHORT: - if (LJ_DUALNUM) { - dasm_put(Dst, 5849, 31-13); - } else { - dasm_put(Dst, 5865, 31-13, 31-20); - } - break; - case BC_KNUM: - dasm_put(Dst, 5893); - break; - case BC_KPRI: - dasm_put(Dst, 5906, 32-3); - break; - case BC_KNIL: - dasm_put(Dst, 5921); - break; - - /* -- Upvalue and function ops ------------------------------------------ */ - - case BC_UGET: - dasm_put(Dst, 5940, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETV: - dasm_put(Dst, 5961, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - break; - case BC_USETS: - dasm_put(Dst, 6014, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); - break; - case BC_USETN: - dasm_put(Dst, 6065, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETP: - dasm_put(Dst, 6086, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - - case BC_UCLO: - dasm_put(Dst, 6109, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); - break; - - case BC_FNEW: - dasm_put(Dst, 6139, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); - break; - - /* -- Table ops --------------------------------------------------------- */ - - case BC_TNEW: - case BC_TDUP: - dasm_put(Dst, 6167, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); - if (op == BC_TNEW) { - dasm_put(Dst, 6180); - } else { - dasm_put(Dst, 6189, 32-1); - } - dasm_put(Dst, 6196, Dt1(->base), LJ_TTAB); - if (op == BC_TNEW) { - dasm_put(Dst, 6213); - } - dasm_put(Dst, 6218); - break; - - case BC_GGET: - case BC_GSET: - dasm_put(Dst, 6227, 32-1, Dt7(->env)); - if (op == BC_GGET) { - dasm_put(Dst, 6235); - } else { - dasm_put(Dst, 6238); - } - break; - - case BC_TGETV: - dasm_put(Dst, 6241); - if (LJ_DUALNUM) { - dasm_put(Dst, 6245); - } else { - dasm_put(Dst, 6247); - } - dasm_put(Dst, 6249, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 6255, Dt6(->asize), Dt6(->array), 31-3); - } else { - dasm_put(Dst, 6265, Dt6(->asize), Dt6(->array), 31-3); - } - dasm_put(Dst, 6282, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); - dasm_put(Dst, 6388, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), 31-3); - } else { - dasm_put(Dst, 6480, Dt6(->asize), Dt6(->array), 31-3); - } - dasm_put(Dst, 6497, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); - break; - case BC_TSETS: - dasm_put(Dst, 6561, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), DtB(->next), LJ_TSTR, LJ_TNIL); - dasm_put(Dst, 6612, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); - break; - case BC_TSETB: - dasm_put(Dst, 6692, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); - break; - - case BC_TSETM: - dasm_put(Dst, 6760, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); - dasm_put(Dst, 6829); - break; - - /* -- Calls and vararg handling ----------------------------------------- */ - - case BC_CALLM: - dasm_put(Dst, 6832); - break; - case BC_CALL: - dasm_put(Dst, 6834, LJ_TFUNC, Dt7(->pc)); - break; - - case BC_CALLMT: - dasm_put(Dst, 6855); - break; - case BC_CALLT: - dasm_put(Dst, 6857, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); - dasm_put(Dst, 6921, FRAME_TYPE); - break; - - case BC_ITERC: - dasm_put(Dst, 6930, LJ_TFUNC, Dt7(->pc)); - break; - - case BC_ITERN: -#if LJ_HASJIT -#endif - dasm_put(Dst, 6957, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); - if (LJ_DUALNUM) { - dasm_put(Dst, 6979); - } else { - dasm_put(Dst, 6982); - } - dasm_put(Dst, 6986, -(BCBIAS_J*4 >> 16)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 6994); - } - dasm_put(Dst, 6996, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); - break; - - case BC_ISNEXT: - dasm_put(Dst, 7052, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); - break; - - case BC_VARG: - dasm_put(Dst, 7102, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); - dasm_put(Dst, 7182); - break; - - /* -- Returns ----------------------------------------------------------- */ - - case BC_RETM: - dasm_put(Dst, 7188); - break; - - case BC_RET: - dasm_put(Dst, 7190, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); - break; - - case BC_RET0: case BC_RET1: - dasm_put(Dst, 7260, FRAME_TYPE, FRAME_VARG); - if (op == BC_RET1) { - dasm_put(Dst, 7273); - } - dasm_put(Dst, 7276, Dt7(->pc), PC2PROTO(k)); - break; - - /* -- Loops and branches ------------------------------------------------ */ - - case BC_FORL: -#if LJ_HASJIT - dasm_put(Dst, 7304, GG_DISP2HOT, -HOTCOUNT_LOOP); -#endif - break; - - case BC_JFORI: - case BC_JFORL: -#if !LJ_HASJIT - break; -#endif - case BC_FORI: - case BC_IFORL: - vk = (op == BC_IFORL || op == BC_JFORL); - if (LJ_DUALNUM) { - dasm_put(Dst, 7314, FORL_IDX*8+4); - if (vk) { - dasm_put(Dst, 7319, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); - } else { - dasm_put(Dst, 7333, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); - } - dasm_put(Dst, 7349, FORL_EXT*8); - if (op != BC_JFORL) { - dasm_put(Dst, 7356, 32-1); - } - dasm_put(Dst, 7359, FORL_EXT*8+4); - if (op != BC_JFORL) { - dasm_put(Dst, 7362); - } - if (op == BC_FORI) { - dasm_put(Dst, 7364); - } else if (op == BC_JFORI) { - dasm_put(Dst, 7367, -(BCBIAS_J*4 >> 16)); - } else if (op == BC_IFORL) { - dasm_put(Dst, 7372, -(BCBIAS_J*4 >> 16)); - } else { - dasm_put(Dst, 7377, BC_JLOOP); - } - dasm_put(Dst, 7380); - if (vk) { - dasm_put(Dst, 7396); - } - } - if (vk) { - if (LJ_DUALNUM) { - dasm_put(Dst, 7403, FORL_IDX*8); - } else { - dasm_put(Dst, 7407); - } - dasm_put(Dst, 7409, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); - } else { - if (LJ_DUALNUM) { - dasm_put(Dst, 7419); - } else { - dasm_put(Dst, 7421, FORL_STEP*8, FORL_STOP*8); - } - dasm_put(Dst, 7430, FORL_IDX*8, FORL_STOP*8); - } - dasm_put(Dst, 7439); - if (op != BC_JFORL) { - dasm_put(Dst, 7441, 32-1); - } - dasm_put(Dst, 7444, FORL_EXT*8); - if (op != BC_JFORL) { - dasm_put(Dst, 7447); - } - dasm_put(Dst, 7449); - if (op == BC_JFORI) { - dasm_put(Dst, 7451, -(BCBIAS_J*4 >> 16)); - } - dasm_put(Dst, 7454); - if (op == BC_FORI) { - dasm_put(Dst, 7457); - } else if (op == BC_IFORL) { - if (LJ_DUALNUM) { - dasm_put(Dst, 7460); - } else { - dasm_put(Dst, 7463); - } - dasm_put(Dst, 7466, -(BCBIAS_J*4 >> 16)); - } else if (op == BC_JFORI) { - dasm_put(Dst, 7470); - } else { - dasm_put(Dst, 7473, BC_JLOOP); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 7476); - } else { - dasm_put(Dst, 7479); - } - dasm_put(Dst, 7491); - if (op == BC_FORI) { - dasm_put(Dst, 7493, -(BCBIAS_J*4 >> 16)); - } else if (op == BC_IFORL) { - dasm_put(Dst, 7499); - } else if (op == BC_JFORI) { - dasm_put(Dst, 7502); - } else { - dasm_put(Dst, 7505, BC_JLOOP); - } - dasm_put(Dst, 7508); - if (op == BC_JFORI) { - dasm_put(Dst, 7511, BC_JLOOP); - } - break; - - case BC_ITERL: -#if LJ_HASJIT - dasm_put(Dst, 7517, GG_DISP2HOT, -HOTCOUNT_LOOP); -#endif - break; - - case BC_JITERL: -#if !LJ_HASJIT - break; -#endif - case BC_IITERL: - dasm_put(Dst, 7527, LJ_TNIL); - if (op == BC_JITERL) { - dasm_put(Dst, 7534, BC_JLOOP); - } else { - dasm_put(Dst, 7539, 32-1, -(BCBIAS_J*4 >> 16)); - } - dasm_put(Dst, 7547); - break; - - case BC_LOOP: -#if LJ_HASJIT - dasm_put(Dst, 7559, GG_DISP2HOT, -HOTCOUNT_LOOP); -#endif - break; - - case BC_ILOOP: - dasm_put(Dst, 7569); - break; - - case BC_JLOOP: -#if LJ_HASJIT - dasm_put(Dst, 7580, DISPATCH_J(trace), 32-1, DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), GG_DISP2G+32768); -#endif - break; - - case BC_JMP: - dasm_put(Dst, 7599, 32-1, -(BCBIAS_J*4 >> 16)); - break; - - /* -- Function headers -------------------------------------------------- */ - - case BC_FUNCF: -#if LJ_HASJIT - dasm_put(Dst, 7615, GG_DISP2HOT, -HOTCOUNT_CALL); -#endif - case BC_FUNCV: /* NYI: compiled vararg functions. */ - break; - - case BC_JFUNCF: -#if !LJ_HASJIT - break; -#endif - case BC_IFUNCF: - dasm_put(Dst, 7625, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); - if (op != BC_JFUNCF) { - dasm_put(Dst, 7637); - } - dasm_put(Dst, 7640); - if (op == BC_JFUNCF) { - dasm_put(Dst, 7645, BC_JLOOP); - } else { - dasm_put(Dst, 7649); - } - dasm_put(Dst, 7658); - break; - - case BC_JFUNCV: -#if !LJ_HASJIT - break; -#endif - dasm_put(Dst, 7664); - break; /* NYI: compiled vararg functions. */ - - case BC_IFUNCV: - dasm_put(Dst, 7666, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); - break; - - case BC_FUNCC: - case BC_FUNCCW: - if (op == BC_FUNCC) { - dasm_put(Dst, 7719, Dt8(->f)); - } else { - dasm_put(Dst, 7722, DISPATCH_GL(wrapf)); - } - dasm_put(Dst, 7725, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); - if (op == BC_FUNCCW) { - dasm_put(Dst, 7738, Dt8(->f)); - } - dasm_put(Dst, 7741, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); - break; - - /* ---------------------------------------------------------------------- */ - - default: - fprintf(stderr, "Error: undefined opcode BC_%s\n", bc_names[op]); - exit(2); - break; - } -} - -static int build_backend(BuildCtx *ctx) -{ - int op; - - dasm_growpc(Dst, BC__MAX); - - build_subroutines(ctx); - - dasm_put(Dst, 7762); - for (op = 0; op < BC__MAX; op++) - build_ins(ctx, (BCOp)op, op); - - return BC__MAX; -} - -/* Emit pseudo frame-info for all assembler functions. */ -static void emit_asm_debug(BuildCtx *ctx) -{ - int fcofs = (int)((uint8_t *)ctx->glob[GLOB_vm_ffi_call] - ctx->code); - int i; - switch (ctx->mode) { - case BUILD_elfasm: - fprintf(ctx->fp, "\t.section .debug_frame,\"\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe0:\n" - "\t.long .LECIE0-.LSCIE0\n" - ".LSCIE0:\n" - "\t.long 0xffffffff\n" - "\t.byte 0x1\n" - "\t.string \"\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 65\n" - "\t.byte 0xc\n\t.uleb128 1\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE0:\n\n"); - fprintf(ctx->fp, - ".LSFDE0:\n" - "\t.long .LEFDE0-.LASFDE0\n" - ".LASFDE0:\n" - "\t.long .Lframe0\n" - "\t.long .Lbegin\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" - "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", - fcofs, CFRAME_SIZE); - for (i = 14; i <= 31; i++) - fprintf(ctx->fp, - "\t.byte %d\n\t.uleb128 %d\n" - "\t.byte %d\n\t.uleb128 %d\n", - 0x80+i, 37+(31-i), 0x80+32+i, 2+2*(31-i)); - fprintf(ctx->fp, - "\t.align 2\n" - ".LEFDE0:\n\n"); -#if LJ_HASFFI - fprintf(ctx->fp, - ".LSFDE1:\n" - "\t.long .LEFDE1-.LASFDE1\n" - ".LASFDE1:\n" - "\t.long .Lframe0\n" - "\t.long lj_vm_ffi_call\n" - "\t.long %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" - "\t.byte 0x8e\n\t.uleb128 2\n" - "\t.byte 0xd\n\t.uleb128 0xe\n" - "\t.align 2\n" - ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); -#endif - fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe1:\n" - "\t.long .LECIE1-.LSCIE1\n" - ".LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zPR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 65\n" - "\t.uleb128 6\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.long lj_err_unwind_dwarf-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 1\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE1:\n\n"); - fprintf(ctx->fp, - ".LSFDE2:\n" - "\t.long .LEFDE2-.LASFDE2\n" - ".LASFDE2:\n" - "\t.long .LASFDE2-.Lframe1\n" - "\t.long .Lbegin-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" - "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", - fcofs, CFRAME_SIZE); - for (i = 14; i <= 31; i++) - fprintf(ctx->fp, - "\t.byte %d\n\t.uleb128 %d\n" - "\t.byte %d\n\t.uleb128 %d\n", - 0x80+i, 37+(31-i), 0x80+32+i, 2+2*(31-i)); - fprintf(ctx->fp, - "\t.align 2\n" - ".LEFDE2:\n\n"); -#if LJ_HASFFI - fprintf(ctx->fp, - ".Lframe2:\n" - "\t.long .LECIE2-.LSCIE2\n" - ".LSCIE2:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 65\n" - "\t.uleb128 1\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 1\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE2:\n\n"); - fprintf(ctx->fp, - ".LSFDE3:\n" - "\t.long .LEFDE3-.LASFDE3\n" - ".LASFDE3:\n" - "\t.long .LASFDE3-.Lframe2\n" - "\t.long lj_vm_ffi_call-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" - "\t.byte 0x8e\n\t.uleb128 2\n" - "\t.byte 0xd\n\t.uleb128 0xe\n" - "\t.align 2\n" - ".LEFDE3:\n\n", (int)ctx->codesz - fcofs); -#endif - break; - default: - break; - } -} - diff --git a/src/buildvm_ppcspe.h b/src/buildvm_ppcspe.h deleted file mode 100644 index 44fed683..00000000 --- a/src/buildvm_ppcspe.h +++ /dev/null @@ -1,6094 +0,0 @@ -/* -** This file has been pre-processed with DynASM. -** http://luajit.org/dynasm.html -** DynASM version 1.3.0, DynASM ppc version 1.3.0 -** DO NOT EDIT! The original file is in "buildvm_ppcspe.dasc". -*/ - -#if DASM_VERSION != 10300 -#error "Version mismatch between DynASM and included encoding engine" -#endif - -#define DASM_SECTION_CODE_OP 0 -#define DASM_SECTION_CODE_SUB 1 -#define DASM_MAXSECTION 2 -static const unsigned int build_actionlist[4996] = { -0x00010001, -0x00060014, -0x72000000, -0x00090200, -0x11000229, -0x000980b0, -0x41820000, -0x00050815, -0x8209fff8, -0x7d2e4b78, -0x9514fff8, -0x00060016, -0x72000000, -0x00090200, -0x398c0008, -0x7d936378, -0x41820000, -0x00050817, -0x00060018, -0x2c000000, -0x00098200, -0x56090038, -0x38000000, -0x00098200, -0x7d297050, -0x40820000, -0x00050814, -0x350cfff8, -0x91320000, -0x00098200, -0x81210018, -0x39cefff8, -0x90110000, -0x00098200, -0x55291800, -0x000900a1, -0x41820000, -0x00050802, -0x0006000b, -0x3508fff8, -0x10140301, -0x3a940008, -0x100e0321, -0x39ce0008, -0x40820000, -0x0005080b, -0x0006000c, -0x7c096000, -0x40820000, -0x00050806, -0x0006000d, -0x91d20000, -0x00098200, -0x00060019, -0x00000000, -0x80010014, -0x38600000, -0x90120000, -0x00098200, -0x0006001a, -0x800100bc, -0x81810024, -0x11c12b01, -0x11e13301, -0x12013b01, -0x12214301, -0x12414b01, -0x12615301, -0x7c0803a6, -0x7d838120, -0x12815b01, -0x12a16301, -0x12c16b01, -0x12e17301, -0x13017b01, -0x13218301, -0x13418b01, -0x13619301, -0x13819b01, -0x13a1a301, -0x13c1ab01, -0x13e1b301, -0x382100b8, -0x4e800020, -0x00060010, -0x40810000, -0x00050807, -0x81120000, -0x00098200, -0x7c0e4040, -0x40800000, -0x00050808, -0x134e0321, -0x398c0008, -0x39ce0008, -0x48000000, -0x0005000c, -0x00060011, -0x7c096050, -0x2c090000, -0x7c007050, -0x7dce009e, -0x48000000, -0x0005000d, -0x00060012, -0x91d20000, -0x00098200, -0x7d956378, -0x7d244b78, -0x7e439378, -0x48000001, -0x00030000, -0x81210018, -0x7eacab78, -0x55291800, -0x000900a1, -0x81d20000, -0x00098200, -0x48000000, -0x0005000c, -0x0006001b, -0x7c611b78, -0x7c832378, -0x0006001c, -0x82410010, -0x38000000, -0x00098200, -0x81120000, -0x00098200, -0x90080000, -0x00098200, -0x48000000, -0x0005001a, -0x0006001d, -0x00000000, -0x5461003a, -0x0006001e, -0x82410010, -0x12c00229, -0x000980b0, -0x13200229, -0x000980b0, -0x3f604338, -0x13000229, -0x000980b0, -0x38000000, -0x81d20000, -0x00098200, -0x137b022d, -0x82320000, -0x00098200, -0x12e00229, -0x000980b0, -0x39000000, -0x00098200, -0x13400229, -0x000980b0, -0x38000000, -0x00098200, -0x820efff8, -0x3a8efff8, -0x3a310000, -0x00098200, -0x91140000, -0x39800010, -0x90110000, -0x00098200, -0x48000000, -0x00050016, -0x0006001f, -0x38800000, -0x00098200, -0x48000000, -0x00050002, -0x00060020, -0x7d6e5a14, -0x7e8ea050, -0x91d20000, -0x00098200, -0x3a100004, -0x91720000, -0x00098200, -0x568400fe, -0x000900ab, -0x0006000c, -0x9201000c, -0x7e439378, -0x48000001, -0x00030000, -0x00000000, -0x81d20000, -0x00098200, -0x81720000, -0x00098200, -0x814efffc, -0x7d6e5850, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060021, -0x9421ff48, -0x11c12b21, -0x11e13321, -0x12013b21, -0x12214321, -0x12414b21, -0x12615321, -0x7c0802a6, -0x7d800026, -0x12815b21, -0x12a16321, -0x12c16b21, -0x12e17321, -0x13017b21, -0x13218321, -0x900100bc, -0x91810024, -0x13418b21, -0x13619321, -0x13819b21, -0x13a1a321, -0x13c1ab21, -0x13e1b321, -0x7c721b78, -0x82320000, -0x00098200, -0x7c8e2378, -0x89120000, -0x00098200, -0x92410010, -0x3a000000, -0x00098200, -0x38010000, -0x00098200, -0x3a310000, -0x00098200, -0x90a10018, -0x28080000, -0x90a1001c, -0x90120000, -0x00098200, -0x90a10014, -0x9061000c, -0x41820000, -0x00050803, -0x7dd47378, -0x81d20000, -0x00098200, -0x12c00229, -0x000980b0, -0x81120000, -0x00098200, -0x13200229, -0x000980b0, -0x3f604338, -0x13000229, -0x000980b0, -0x820efff8, -0x39200000, -0x12e00229, -0x000980b0, -0x7d8e4050, -0x137b4a2d, -0x98b20000, -0x00098200, -0x72000000, -0x00090200, -0x38000000, -0x00098200, -0x398c0008, -0x13400229, -0x000980b0, -0x7d936378, -0x90110000, -0x00098200, -0x00000000, -0x41820000, -0x00050817, -0x48000000, -0x00050018, -0x00060022, -0x9421ff48, -0x11c12b21, -0x11e13321, -0x12013b21, -0x12214321, -0x12414b21, -0x12615321, -0x7c0802a6, -0x7d800026, -0x12815b21, -0x12a16321, -0x12c16b21, -0x12e17321, -0x13017b21, -0x13218321, -0x900100bc, -0x91810024, -0x13418b21, -0x13619321, -0x13819b21, -0x13a1a321, -0x13c1ab21, -0x13e1b321, -0x3a000000, -0x00098200, -0x90c1001c, -0x48000000, -0x00050001, -0x00060023, -0x9421ff48, -0x11c12b21, -0x11e13321, -0x12013b21, -0x12214321, -0x12414b21, -0x12615321, -0x7c0802a6, -0x7d800026, -0x12815b21, -0x12a16321, -0x12c16b21, -0x12e17321, -0x13017b21, -0x13218321, -0x900100bc, -0x91810024, -0x13418b21, -0x13619321, -0x13819b21, -0x13a1a321, -0x13c1ab21, -0x13e1b321, -0x3a000000, -0x00098200, -0x0006000b, -0x81030000, -0x00098200, -0x90a10018, -0x7c721b78, -0x90610010, -0x7c8e2378, -0x90320000, -0x00098200, -0x82320000, -0x00098200, -0x9061000c, -0x91010014, -0x3a310000, -0x00098200, -0x0006000d, -0x81320000, -0x00098200, -0x12c00229, -0x000980b0, -0x81120000, -0x00098200, -0x13200229, -0x000980b0, -0x7e107214, -0x13000229, -0x000980b0, -0x3f604338, -0x38000000, -0x7e098050, -0x12e00229, -0x000980b0, -0x7d6e4050, -0x137b022d, -0x38000000, -0x00098200, -0x13400229, -0x000980b0, -0x90110000, -0x00098200, -0x00060024, -0x00000000, -0x3800fff8, -0x114e0300, -0x100aca34, -0x40800000, -0x00050825, -0x00060026, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060027, -0x9421ff48, -0x11c12b21, -0x11e13321, -0x12013b21, -0x12214321, -0x12414b21, -0x12615321, -0x7c0802a6, -0x7d800026, -0x12815b21, -0x12a16321, -0x12c16b21, -0x12e17321, -0x13017b21, -0x13218321, -0x900100bc, -0x91810024, -0x13418b21, -0x13619321, -0x13819b21, -0x13a1a321, -0x13c1ab21, -0x13e1b321, -0x7c721b78, -0x80030000, -0x00098200, -0x90610010, -0x81120000, -0x00098200, -0x9061000c, -0x7c080050, -0x81120000, -0x00098200, -0x90320000, -0x00098200, -0x39200000, -0x90010018, -0x9121001c, -0x91010014, -0x7cc903a6, -0x4e800421, -0x7c6e1b79, -0x82320000, -0x00098200, -0x3a000000, -0x00098200, -0x3a310000, -0x00098200, -0x40820000, -0x0005080d, -0x48000000, -0x00050019, -0x00060015, -0x800efff4, -0x7dca7378, -0x7d2e4b78, -0x8109fffc, -0x28000000, -0x820afff0, -0x41820000, -0x00050801, -0x392cfff8, -0x81080000, -0x00098200, -0x13544b20, -0x81e80000, -0x00098200, -0x7c0903a6, -0x4e800420, -0x0006000b, -0x390afff0, -0x7d6e4050, -0x48000000, -0x00050028, -0x00060029, -0x80f0fffc, -0x388afff0, -0x54f55d78, -0x10140301, -0x7d0eaa14, -0x91d20000, -0x00098200, -0x7c082040, -0x7ca82050, -0x54f4dd78, -0x10040321, -0x40820000, -0x0005082a, -0x00000000, -0x100ea320, -0x48000000, -0x0005002b, -0x0006002c, -0x11775a2d, -0x38b10000, -0x00098200, -0x54ea5d78, -0x11650321, -0x7c8e5214, -0x48000000, -0x00050001, -0x0006002d, -0x1158522d, -0x38910000, -0x00098200, -0x11775a2d, -0x11440321, -0x38b10000, -0x00098200, -0x11650321, -0x48000000, -0x00050001, -0x0006002e, -0x100002f1, -0x54ea5d78, -0x38b10000, -0x00098200, -0x7c8e5214, -0x10050321, -0x48000000, -0x00050001, -0x0006002f, -0x54ea5d78, -0x54eb9d78, -0x7c8e5214, -0x7cae5a14, -0x0006000b, -0x91d20000, -0x00098200, -0x7e439378, -0x9201000c, -0x48000001, -0x00030001, -0x28030000, -0x41820000, -0x00050803, -0x10030301, -0x100ea320, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000d, -0x210e0000, -0x00098200, -0x81d20000, -0x00098200, -0x920efff0, -0x7e087214, -0x814efffc, -0x39600010, -0x48000000, -0x00050026, -0x00060030, -0x11775a2d, -0x38b10000, -0x00098200, -0x00000000, -0x54ea5d78, -0x11650321, -0x7c8e5214, -0x48000000, -0x00050001, -0x00060031, -0x1158522d, -0x38910000, -0x00098200, -0x11775a2d, -0x11440321, -0x38b10000, -0x00098200, -0x11650321, -0x48000000, -0x00050001, -0x00060032, -0x100002f1, -0x54ea5d78, -0x38b10000, -0x00098200, -0x7c8e5214, -0x10050321, -0x48000000, -0x00050001, -0x00060033, -0x54ea5d78, -0x54eb9d78, -0x7c8e5214, -0x7cae5a14, -0x0006000b, -0x91d20000, -0x00098200, -0x7e439378, -0x9201000c, -0x48000001, -0x00030002, -0x28030000, -0x100ea300, -0x41820000, -0x00050803, -0x10030321, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000d, -0x210e0000, -0x00098200, -0x81d20000, -0x00098200, -0x920efff0, -0x7e087214, -0x814efffc, -0x39600018, -0x100e1321, -0x48000000, -0x00050026, -0x00060034, -0x7e439378, -0x3a10fffc, -0x7c8ea214, -0x9201000c, -0x7cae6214, -0x91d20000, -0x00098200, -0x54e6063e, -0x48000001, -0x00030003, -0x0006000d, -0x28030001, -0x41810000, -0x00050835, -0x0006000e, -0x00000000, -0x80f00000, -0x3a100004, -0x54e993ba, -0x3cd00000, -0x00098200, -0x7d293214, -0x7e10481e, -0x0006002b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00060036, -0x80f0fffc, -0x10140301, -0x54e8dd78, -0x100e4320, -0x48000000, -0x0005002b, -0x00060037, -0x80140000, -0x39000000, -0x00098200, -0x7c080040, -0x48000000, -0x0005000e, -0x00060038, -0x80140000, -0x39000000, -0x00098200, -0x7c004040, -0x48000000, -0x0005000e, -0x00060039, -0x3a10fffc, -0x91d20000, -0x00098200, -0x7e439378, -0x9201000c, -0x48000001, -0x00030004, -0x48000000, -0x0005000d, -0x0006003a, -0x7cae5214, -0x7ccf5a14, -0x48000000, -0x00050001, -0x0006003b, -0x7caf5a14, -0x7cce5214, -0x48000000, -0x00050001, -0x0006003c, -0x7cae6214, -0x7ca62b78, -0x48000000, -0x00050001, -0x0006003d, -0x7cae5214, -0x7cce5a14, -0x0006000b, -0x00000000, -0x7c8ea214, -0x91d20000, -0x00098200, -0x7e439378, -0x9201000c, -0x54e7063e, -0x48000001, -0x00030005, -0x28030000, -0x41820000, -0x0005082b, -0x00060035, -0x7d0e1850, -0x9203fff0, -0x7dc97378, -0x3a080000, -0x00098200, -0x7c6e1b78, -0x39600010, -0x48000000, -0x00050024, -0x0006003e, -0x00000000, -0x7c751b78, -0x00000000, -0x7c8e6214, -0x91d20000, -0x00098200, -0x7e439378, -0x9201000c, -0x48000001, -0x00030006, -0x00000000, -0x28030000, -0x40820000, -0x00050835, -0x7ea3ab78, -0x48000000, -0x0005003f, -0x00000000, -0x48000000, -0x00050035, -0x00000000, -0x00060025, -0x7e439378, -0x91320000, -0x00098200, -0x388efff8, -0x9201000c, -0x7cae5a14, -0x7d755b78, -0x48000001, -0x00030007, -0x814efffc, -0x39750008, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060040, -0x7e439378, -0x91d20000, -0x00098200, -0x3894fff8, -0x9201000c, -0x7cb45a14, -0x7d755b78, -0x48000001, -0x00030007, -0x810efff8, -0x39750008, -0x8154fffc, -0x48000000, -0x00050041, -0x00060042, -0x7e439378, -0x91d20000, -0x00098200, -0x7e84a378, -0x9201000c, -0x7cf53b78, -0x48000001, -0x00030008, -0x00000000, -0x56a0063e, -0x00000000, -0x56b4dd78, -0x00000000, -0x2c000000, -0x00098200, -0x00000000, -0x56ac9b78, -0x00000000, -0x41820000, -0x00070800, -0x00000000, -0x48000000, -0x00070000, -0x00060043, -0x280b0008, -0x100e0301, -0x41800000, -0x00050844, -0x111ad200, -0x3a8efff8, -0x10804232, -0x820efff8, -0x40840000, -0x00050844, -0x10140321, -0x398b0008, -0x41820000, -0x00050845, -0x39000008, -0x396bfff8, -0x0006000b, -0x7c085840, -0x100e4300, -0x10144320, -0x39080008, -0x40820000, -0x0005080b, -0x48000000, -0x00050045, -0x00060046, -0x280b0008, -0x806e0000, -0x41800000, -0x00050844, -0x39200000, -0x00098200, -0x7c03b040, -0x7c6818f8, -0x7d09401e, -0x55081800, -0x000900a1, -0x392a0000, -0x00098200, -0x10694300, -0x48000000, -0x00050047, -0x00060048, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003c234, -0x11031a2c, -0x40800000, -0x00050806, -0x0006000b, -0x81430000, -0x00098200, -0x0006000c, -0x107ad217, -0x280a0000, -0x81710000, -0x00098200, -0x41820000, -0x00050847, -0x00000000, -0x800a0000, -0x00098200, -0x1078522d, -0x810b0000, -0x00098200, -0x812a0000, -0x00098200, -0x11775a2d, -0x7d080038, -0x55002800, -0x000900a1, -0x55081800, -0x000900a1, -0x7d080050, -0x7d294214, -0x0006000d, -0x10090301, -0x00090cab, -0x11090301, -0x00090cab, -0x10005a34, -0x81290000, -0x00098200, -0x41830000, -0x00050805, -0x28090000, -0x41820000, -0x00050847, -0x48000000, -0x0005000d, -0x0006000f, -0x1008d234, -0x41800000, -0x00050847, -0x10684217, -0x48000000, -0x00050047, -0x00060010, -0x2c080000, -0x00098200, -0x7d0840f8, -0x41820000, -0x0005080b, -0x1003b232, -0x55081000, -0x000900a1, -0x39200000, -0x00098200, -0x7d09401e, -0x39310000, -0x00098200, -0x7d49402e, -0x48000000, -0x0005000c, -0x00060049, -0x00000000, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1003222c, -0x1000c234, -0x40830000, -0x00050844, -0x81030000, -0x00098200, -0x28080000, -0x88c30000, -0x00098200, -0x40820000, -0x00050844, -0x70c00000, -0x00090200, -0x90830000, -0x00098200, -0x41820000, -0x00050847, -0x80110000, -0x00098200, -0x54c607b8, -0x90710000, -0x00098200, -0x98c30000, -0x00098200, -0x90030000, -0x00098200, -0x48000000, -0x00050047, -0x0006004a, -0x280b0010, -0x108e0301, -0x41800000, -0x00050844, -0x1004c234, -0x38ae0008, -0x40800000, -0x00050844, -0x7e439378, -0x48000001, -0x00030009, -0x10630301, -0x48000000, -0x00050047, -0x0006004b, -0x280b0008, -0x106e0301, -0x40820000, -0x00050844, -0x1003b232, -0x41800000, -0x00050847, -0x48000000, -0x00050044, -0x0006004c, -0x00000000, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003ba34, -0x41800000, -0x00050847, -0x80110000, -0x00098200, -0x1003b232, -0x28800000, -0x91d20000, -0x00098200, -0x4c403202, -0x9201000c, -0x40820000, -0x00050844, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x0005084d, -0x7e439378, -0x7dc47378, -0x48000001, -0x0003000a, -0x10771a2d, -0x48000000, -0x00050047, -0x0006004e, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x134e5b20, -0x1004c234, -0x820efff8, -0x40800000, -0x00050844, -0x91d20000, -0x00098200, -0x7e439378, -0x91d20000, -0x00098200, -0x38ae0008, -0x9201000c, -0x48000001, -0x0003000b, -0x28030000, -0x107ad217, -0x41820000, -0x00050847, -0x100e0b01, -0x3a8efff8, -0x110e1301, -0x10140321, -0x39800000, -0x00098200, -0x11140b21, -0x48000000, -0x00050045, -0x0006004f, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003c234, -0x820efff8, -0x40800000, -0x00050844, -0x00000000, -0x81230000, -0x00098200, -0x100a0301, -0x00090cab, -0x28090000, -0x3a8efff8, -0x40820000, -0x00050844, -0x00000000, -0x100a0301, -0x00090cab, -0x3a8efff8, -0x00000000, -0x134e0b21, -0x39800000, -0x00098200, -0x10140321, -0x48000000, -0x00050045, -0x00060050, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1003c234, -0x820efff8, -0x40800000, -0x00050844, -0x1004b232, -0x3cc03ff0, -0x40800000, -0x00050844, -0x112022f5, -0x80030000, -0x00098200, -0x10c6da2d, -0x81030000, -0x00098200, -0x108432e0, -0x39290001, -0x3a8efff8, -0x7c004840, -0x55261800, -0x000900a1, -0x10940321, -0x40810000, -0x00050802, -0x11083300, -0x0006000b, -0x1008d234, -0x39800000, -0x00098200, -0x41800000, -0x00050845, -0x39800000, -0x00098200, -0x11140b21, -0x48000000, -0x00050045, -0x0006000c, -0x80030000, -0x00098200, -0x28000000, -0x39800000, -0x00098200, -0x41820000, -0x00050845, -0x7d244b78, -0x48000001, -0x0003000c, -0x28030000, -0x39800000, -0x00098200, -0x41820000, -0x00050845, -0x00000000, -0x11030301, -0x48000000, -0x0005000b, -0x00060051, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003c234, -0x820efff8, -0x40800000, -0x00050844, -0x00000000, -0x81230000, -0x00098200, -0x100a0301, -0x00090cab, -0x28090000, -0x3a8efff8, -0x40820000, -0x00050844, -0x00000000, -0x100a0301, -0x00090cab, -0x3a8efff8, -0x00000000, -0x11000229, -0x39800000, -0x00098200, -0x110e0b21, -0x10140321, -0x48000000, -0x00050045, -0x00060052, -0x280b0008, -0x88d10000, -0x00098200, -0x41800000, -0x00050844, -0x7dc97378, -0x39ce0008, -0x54c607fe, -0x000900ab, -0x396bfff8, -0x3a060000, -0x00098200, -0x48000000, -0x00050024, -0x00060053, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x88d10000, -0x00098200, -0x7dc97378, -0x1004ca34, -0x40800000, -0x00050844, -0x39ce0010, -0x54c607fe, -0x000900ab, -0x10890321, -0x396bfff0, -0x10690b21, -0x3a060000, -0x00098200, -0x48000000, -0x00050024, -0x00060054, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x10031a2c, -0x2c000000, -0x00098200, -0x40820000, -0x00050844, -0x88030000, -0x00098200, -0x81030000, -0x00098200, -0x80830000, -0x00098200, -0x00000000, -0x28000000, -0x00090200, -0x81230000, -0x00098200, -0x28880000, -0x80030000, -0x00098200, -0x7f844840, -0x820efff8, -0x4f013342, -0x7d245a14, -0x4f3e1102, -0x7c890040, -0x4f18cb82, -0x9201000c, -0x4f182b82, -0x91d20000, -0x00098200, -0x41980000, -0x00050844, -0x0006000b, -0x39ce0008, -0x396bfff8, -0x3929fff8, -0x91230000, -0x00098200, -0x39000000, -0x91d20000, -0x00098200, -0x0006000c, -0x7c085800, -0x100e4300, -0x41820000, -0x00050803, -0x10044320, -0x39080008, -0x48000000, -0x0005000c, -0x0006000d, -0x38a00000, -0x7c751b78, -0x38c00000, -0x48000001, -0x00050021, -0x0006000e, -0x81350000, -0x00098200, -0x28030000, -0x00090200, -0x80d50000, -0x00098200, -0x38000000, -0x00098200, -0x81d20000, -0x00098200, -0x90110000, -0x00098200, -0x41810000, -0x00050808, -0x7d893050, -0x80120000, -0x00098200, -0x00000000, -0x280c0000, -0x7d0e6214, -0x41820000, -0x00050806, -0x7c080040, -0x39000000, -0x41810000, -0x00050809, -0x38ccfff8, -0x91350000, -0x00098200, -0x0006000f, -0x7c083040, -0x10094300, -0x100e4320, -0x39080008, -0x40820000, -0x0005080f, -0x00060010, -0x72000000, -0x00090200, -0x39000000, -0x00098200, -0x3a8efff8, -0x910efff8, -0x398c0010, -0x00060011, -0x9201000c, -0x7d936378, -0x41820000, -0x00050817, -0x48000000, -0x00050018, -0x00060012, -0x72000000, -0x00090200, -0x38c6fff8, -0x39000000, -0x00098200, -0x10060301, -0x90d50000, -0x00098200, -0x39800000, -0x00098200, -0x910efff8, -0x3a8efff8, -0x100e0321, -0x48000000, -0x00050011, -0x00060013, -0x7e439378, -0x558400fe, -0x000900ab, -0x48000001, -0x00030000, -0x38600000, -0x48000000, -0x0005000e, -0x00060055, -0x00000000, -0x806a0000, -0x00098200, -0x88030000, -0x00098200, -0x81030000, -0x00098200, -0x80830000, -0x00098200, -0x28000000, -0x00090200, -0x81230000, -0x00098200, -0x28880000, -0x80030000, -0x00098200, -0x7f844840, -0x820efff8, -0x4f013342, -0x7d245a14, -0x4f3e1102, -0x7c890040, -0x4f18cb82, -0x9201000c, -0x4f182b82, -0x91d20000, -0x00098200, -0x41980000, -0x00050844, -0x0006000b, -0x91230000, -0x00098200, -0x39000000, -0x91d20000, -0x00098200, -0x0006000c, -0x7c085800, -0x100e4300, -0x41820000, -0x00050803, -0x10044320, -0x39080008, -0x48000000, -0x0005000c, -0x0006000d, -0x38a00000, -0x7c751b78, -0x38c00000, -0x48000001, -0x00050021, -0x0006000e, -0x81350000, -0x00098200, -0x28030000, -0x00090200, -0x80d50000, -0x00098200, -0x38000000, -0x00098200, -0x00000000, -0x81d20000, -0x00098200, -0x90110000, -0x00098200, -0x41810000, -0x00050808, -0x7d893050, -0x80120000, -0x00098200, -0x280c0000, -0x7d0e6214, -0x41820000, -0x00050806, -0x7c080040, -0x39000000, -0x41810000, -0x00050809, -0x38ccfff8, -0x91350000, -0x00098200, -0x0006000f, -0x7c083040, -0x10094300, -0x100e4320, -0x39080008, -0x40820000, -0x0005080f, -0x00060010, -0x72000000, -0x00090200, -0x7dd47378, -0x398c0008, -0x00060011, -0x9201000c, -0x7d936378, -0x41820000, -0x00050817, -0x48000000, -0x00050018, -0x00060012, -0x7e439378, -0x7ea4ab78, -0x48000001, -0x0003000d, -0x00060013, -0x7e439378, -0x558400fe, -0x000900ab, -0x48000001, -0x00030000, -0x38600000, -0x48000000, -0x0005000e, -0x00060056, -0x80120000, -0x00098200, -0x00000000, -0x7d0e5a14, -0x91d20000, -0x00098200, -0x70000000, -0x00090200, -0x91120000, -0x00098200, -0x38600000, -0x00098200, -0x41820000, -0x00050844, -0x93720000, -0x00098200, -0x98720000, -0x00098200, -0x48000000, -0x0005001a, -0x00060057, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x40800000, -0x00050844, -0x106302e4, -0x00060047, -0x820efff8, -0x3a8efff8, -0x10740321, -0x00060058, -0x39800000, -0x00098200, -0x00060045, -0x72000000, -0x00090200, -0x7d936378, -0x40820000, -0x00050818, -0x80f0fffc, -0x54ea5d78, -0x0006000f, -0x7c0a6040, -0x54e0dd78, -0x41810000, -0x00050806, -0x80f00000, -0x3a100004, -0x7dc0a050, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00060010, -0x390cfff8, -0x398c0008, -0x13544320, -0x48000000, -0x0005000f, -0x00060059, -0x00000000, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x820efff8, -0x48000001, -0x0005005a, -0x3a8efff8, -0x10940321, -0x48000000, -0x00050058, -0x0006005b, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x820efff8, -0x48000001, -0x0005005c, -0x3a8efff8, -0x10940321, -0x48000000, -0x00050058, -0x0006005d, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x0003000e, -0x1063222d, -0x48000000, -0x00050047, -0x0006005e, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x0003000f, -0x1063222d, -0x48000000, -0x00050047, -0x0006005f, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x00000000, -0x48000001, -0x00030010, -0x1063222d, -0x48000000, -0x00050047, -0x00060060, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030011, -0x1063222d, -0x48000000, -0x00050047, -0x00060061, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030012, -0x1063222d, -0x48000000, -0x00050047, -0x00060062, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030013, -0x1063222d, -0x48000000, -0x00050047, -0x00060063, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030014, -0x1063222d, -0x48000000, -0x00050047, -0x00060064, -0x00000000, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030015, -0x1063222d, -0x48000000, -0x00050047, -0x00060065, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030016, -0x1063222d, -0x48000000, -0x00050047, -0x00060066, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030017, -0x1063222d, -0x48000000, -0x00050047, -0x00060067, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x00030018, -0x1063222d, -0x48000000, -0x00050047, -0x00060068, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x00000000, -0x48000001, -0x00030019, -0x1063222d, -0x48000000, -0x00050047, -0x00060069, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x48000001, -0x0003001a, -0x1063222d, -0x48000000, -0x00050047, -0x0006006a, -0x280b0010, -0x108e0301, -0x10ce0b01, -0x41800000, -0x00050844, -0x1066222c, -0x1003b232, -0x10a6322c, -0x40830000, -0x00050844, -0x48000001, -0x0003001b, -0x1063222d, -0x48000000, -0x00050047, -0x0006006b, -0x280b0010, -0x108e0301, -0x10ce0b01, -0x41800000, -0x00050844, -0x1066222c, -0x1003b232, -0x10a6322c, -0x40830000, -0x00050844, -0x48000001, -0x0003001c, -0x1063222d, -0x48000000, -0x00050047, -0x0006006c, -0x280b0010, -0x108e0301, -0x10ce0b01, -0x41800000, -0x00050844, -0x1066222c, -0x1003b232, -0x10a6322c, -0x40830000, -0x00050844, -0x48000001, -0x0003001d, -0x1063222d, -0x48000000, -0x00050047, -0x0006006d, -0x0006006e, -0x00000000, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x40800000, -0x00050844, -0x108a0301, -0x00090cab, -0x106322e8, -0x48000000, -0x00050047, -0x0006006f, -0x280b0010, -0x108e0301, -0x10ce0b01, -0x41800000, -0x00050844, -0x1066222c, -0x1003b232, -0x40830000, -0x00050844, -0x10a032f5, -0x48000001, -0x0003001e, -0x1063222d, -0x48000000, -0x00050047, -0x00060070, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x38b10000, -0x00098200, -0x820efff8, -0x48000001, -0x0003001f, -0x81110000, -0x00098200, -0x1063222d, -0x108042f1, -0x3a8efff8, -0x10740321, -0x39800000, -0x00098200, -0x10940b21, -0x48000000, -0x00050045, -0x00060071, -0x280b0008, -0x108e0301, -0x41800000, -0x00050844, -0x1004b232, -0x1064222c, -0x40800000, -0x00050844, -0x38aefff8, -0x820efff8, -0x48000001, -0x00030020, -0x1063222d, -0x3a8efff8, -0x106e0321, -0x39800000, -0x00098200, -0x00000000, -0x48000000, -0x00050045, -0x00060072, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x39000008, -0x40800000, -0x00050844, -0x0006000b, -0x108e4300, -0x7c885840, -0x1004b232, -0x40840000, -0x00050847, -0x40800000, -0x00050844, -0x10041afd, -0x39080008, -0x4c010b82, -0x10641a78, -0x48000000, -0x0005000b, -0x00060073, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x39000008, -0x40800000, -0x00050844, -0x0006000b, -0x108e4300, -0x7c885840, -0x1004b232, -0x40840000, -0x00050847, -0x40800000, -0x00050844, -0x10041afc, -0x39080008, -0x4c010b82, -0x10641a78, -0x48000000, -0x0005000b, -0x00060074, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003ba34, -0x40800000, -0x00050844, -0x80030000, -0x00098200, -0x106002f1, -0x48000000, -0x00050047, -0x00060075, -0x280b0008, -0x106e0301, -0x40820000, -0x00050844, -0x00000000, -0x1003ba34, -0x3a8efff8, -0x40800000, -0x00050844, -0x80030000, -0x00098200, -0x39800000, -0x00098200, -0x89030000, -0x00098200, -0x39200000, -0x00098200, -0x28000000, -0x820efff8, -0x106042f1, -0x7d8c489e, -0x10740321, -0x48000000, -0x00050045, -0x00060076, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x0005084d, -0x280b0008, -0x106e0301, -0x40820000, -0x00050844, -0x1003b232, -0x38910000, -0x00098200, -0x40800000, -0x00050844, -0x10001afa, -0x38a00001, -0x280000ff, -0x98040000, -0x41810000, -0x00050844, -0x00060077, -0x7e439378, -0x91d20000, -0x00098200, -0x9201000c, -0x48000001, -0x00030021, -0x81d20000, -0x00098200, -0x10771a2d, -0x48000000, -0x00050047, -0x00060078, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x00000000, -0x7c004040, -0x40800001, -0x0005084d, -0x280b0010, -0x10ae1301, -0x106e0301, -0x41800000, -0x00050844, -0x108e0b01, -0x3920ffff, -0x41820000, -0x00050801, -0x1005b232, -0x40800000, -0x00050844, -0x11202afa, -0x0006000b, -0x1004b232, -0x40800000, -0x00050844, -0x1003ba34, -0x110022fa, -0x40800000, -0x00050844, -0x80030000, -0x00098200, -0x7c004840, -0x7cc90214, -0x41800000, -0x00050805, -0x0006000c, -0x2c080000, -0x7cc80214, -0x40810000, -0x00050807, -0x0006000d, -0x7ca84851, -0x38830000, -0x00098200, -0x38a50001, -0x7c844214, -0x7ca0281e, -0x48000000, -0x00050077, -0x0006000f, -0x7c004800, -0x38c60001, -0x7d26005e, -0x48000000, -0x0005000c, -0x00060011, -0x2c860000, -0x7d00309e, -0x7d00411e, -0x39080001, -0x48000000, -0x0005000d, -0x00060079, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x0005084d, -0x00000000, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1004b232, -0x40800000, -0x00050844, -0x1003ba34, -0x10a022fa, -0x40800000, -0x00050844, -0x80030000, -0x00098200, -0x2c050000, -0x81110000, -0x00098200, -0x40810000, -0x00050802, -0x28000001, -0x3925ffff, -0x41800000, -0x00050802, -0x7c882840, -0x40820000, -0x00050844, -0x88030000, -0x00098200, -0x80910000, -0x00098200, -0x41840000, -0x00050844, -0x0006000b, -0x28090000, -0x7c0449ae, -0x3929ffff, -0x40820000, -0x0005080b, -0x48000000, -0x00050077, -0x0006000c, -0x38710000, -0x00098200, -0x10771a2d, -0x48000000, -0x00050047, -0x0006007a, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x0005084d, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x00000000, -0x1003ba34, -0x81110000, -0x00098200, -0x40800000, -0x00050844, -0x80a30000, -0x00098200, -0x38630000, -0x00098200, -0x80910000, -0x00098200, -0x39200000, -0x7c082840, -0x38c5ffff, -0x41800000, -0x00050844, -0x0006000b, -0x2c060000, -0x7d0348ae, -0x41800000, -0x00050877, -0x7d0431ae, -0x38c6ffff, -0x39290001, -0x48000000, -0x0005000b, -0x0006007b, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x0005084d, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003ba34, -0x81110000, -0x00098200, -0x40800000, -0x00050844, -0x80a30000, -0x00098200, -0x38630000, -0x00098200, -0x80910000, -0x00098200, -0x7c082840, -0x39200000, -0x41800000, -0x00050844, -0x0006000b, -0x7c092840, -0x7d0348ae, -0x40800000, -0x00050877, -0x00000000, -0x3808ffbf, -0x69060020, -0x2800001a, -0x7d06401e, -0x7d0449ae, -0x39290001, -0x48000000, -0x0005000b, -0x0006007c, -0x80110000, -0x00098200, -0x81110000, -0x00098200, -0x7c004040, -0x40800001, -0x0005084d, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003ba34, -0x81110000, -0x00098200, -0x40800000, -0x00050844, -0x80a30000, -0x00098200, -0x38630000, -0x00098200, -0x80910000, -0x00098200, -0x7c082840, -0x39200000, -0x41800000, -0x00050844, -0x0006000b, -0x7c092840, -0x7d0348ae, -0x40800000, -0x00050877, -0x3808ff9f, -0x69060020, -0x2800001a, -0x7d06401e, -0x7d0449ae, -0x39290001, -0x48000000, -0x0005000b, -0x0006007d, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003c234, -0x40800000, -0x00050844, -0x48000001, -0x00030022, -0x10601af1, -0x48000000, -0x00050047, -0x0006007e, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x00000000, -0x1003b232, -0x40800000, -0x00050844, -0x1063dae0, -0x0006007f, -0x10601af1, -0x48000000, -0x00050047, -0x00060080, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x40800000, -0x00050844, -0x1063dae0, -0x39000008, -0x0006000b, -0x108e4300, -0x7c885840, -0x1004b232, -0x40840000, -0x0005087f, -0x40800000, -0x00050844, -0x1084dae0, -0x7c632038, -0x39080008, -0x48000000, -0x0005000b, -0x00060081, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x40800000, -0x00050844, -0x1063dae0, -0x39000008, -0x0006000b, -0x108e4300, -0x7c885840, -0x1004b232, -0x40840000, -0x0005087f, -0x40800000, -0x00050844, -0x1084dae0, -0x7c632378, -0x39080008, -0x48000000, -0x0005000b, -0x00060082, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x40800000, -0x00050844, -0x1063dae0, -0x39000008, -0x0006000b, -0x108e4300, -0x7c885840, -0x1004b232, -0x40840000, -0x0005087f, -0x00000000, -0x40800000, -0x00050844, -0x1084dae0, -0x7c632278, -0x39080008, -0x48000000, -0x0005000b, -0x00060083, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x40800000, -0x00050844, -0x1063dae0, -0x5460403e, -0x5060c00e, -0x5060c42e, -0x106002f1, -0x48000000, -0x00050047, -0x00060084, -0x280b0008, -0x106e0301, -0x41800000, -0x00050844, -0x1003b232, -0x40800000, -0x00050844, -0x1063dae0, -0x7c6018f8, -0x106002f1, -0x48000000, -0x00050047, -0x00060085, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1003222c, -0x1000b232, -0x40830000, -0x00050844, -0x1084dae0, -0x1063dae0, -0x548406fe, -0x7c602030, -0x106002f1, -0x48000000, -0x00050047, -0x00060086, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1003222c, -0x1000b232, -0x40830000, -0x00050844, -0x1084dae0, -0x1063dae0, -0x548406fe, -0x7c602430, -0x106002f1, -0x48000000, -0x00050047, -0x00060087, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1003222c, -0x1000b232, -0x40830000, -0x00050844, -0x1084dae0, -0x1063dae0, -0x548406fe, -0x7c602630, -0x106002f1, -0x48000000, -0x00050047, -0x00060088, -0x00000000, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1003222c, -0x1000b232, -0x40830000, -0x00050844, -0x1084dae0, -0x1063dae0, -0x5c60203e, -0x106002f1, -0x48000000, -0x00050047, -0x00060089, -0x280b0010, -0x106e0301, -0x108e0b01, -0x41800000, -0x00050844, -0x1003222c, -0x1000b232, -0x40830000, -0x00050844, -0x1084dae0, -0x1063dae0, -0x7c8400d0, -0x5c60203e, -0x106002f1, -0x48000000, -0x00050047, -0x00060044, -0x80ca0000, -0x00098200, -0x7d0e5a14, -0x820efff8, -0x38080000, -0x00098200, -0x81320000, -0x00098200, -0x9201000c, -0x7c004840, -0x91d20000, -0x00098200, -0x91120000, -0x00098200, -0x7e439378, -0x41810000, -0x00050805, -0x7cc903a6, -0x4e800421, -0x81d20000, -0x00098200, -0x2c030000, -0x546c1800, -0x000900a1, -0x3a8efff8, -0x41810000, -0x00050845, -0x0006000b, -0x80120000, -0x00098200, -0x814efffc, -0x7d6e0050, -0x40820000, -0x00050828, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00060028, -0x00000000, -0x72000000, -0x00090200, -0x56080038, -0x40820000, -0x00050803, -0x80f0fffc, -0x54e8dd78, -0x39080008, -0x0006000d, -0x7d287050, -0x48000000, -0x00050024, -0x0006000f, -0x38800000, -0x00098200, -0x48000001, -0x00030000, -0x81d20000, -0x00098200, -0x7c000000, -0x48000000, -0x0005000b, -0x0006004d, -0x7ea802a6, -0x91d20000, -0x00098200, -0x7c0e5a14, -0x9201000c, -0x90120000, -0x00098200, -0x7e439378, -0x48000001, -0x00030023, -0x81d20000, -0x00098200, -0x7ea803a6, -0x80120000, -0x00098200, -0x7d6e0050, -0x814efffc, -0x4e800020, -0x0006008a, -0x00000000, -0x7c810808, -0x00000000, -0x0006008b, -0x88d10000, -0x00098200, -0x70c00000, -0x00090200, -0x41820000, -0x00050801, -0x0006000f, -0x39080000, -0x00098200, -0x7c11402e, -0x7c0903a6, -0x4e800420, -0x0006008c, -0x88d10000, -0x00098200, -0x81310000, -0x00098200, -0x70c00000, -0x00090200, -0x54c007c0, -0x000900ab, -0x40820000, -0x0005080f, -0x2c800000, -0x3529ffff, -0x41860000, -0x0005080f, -0x91310000, -0x00098200, -0x41820000, -0x00050801, -0x40840000, -0x0005080f, -0x0006000b, -0x7e439378, -0x92610008, -0x7e048378, -0x91d20000, -0x00098200, -0x48000001, -0x00030024, -0x0006000d, -0x81d20000, -0x00098200, -0x0006000e, -0x00000000, -0x80f0fffc, -0x54e815ba, -0x54ea5d78, -0x39080000, -0x00098200, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006008d, -0x3a100004, -0x826affec, -0x48000000, -0x0005000e, -0x0006008e, -0x00000000, -0x7c810808, -0x00000000, -0x0006008f, -0x7e048378, -0x00000000, -0x48000000, -0x00050001, -0x00000000, -0x00060090, -0x00000000, -0x62040001, -0x0006000b, -0x00000000, -0x7c0e5a14, -0x9201000c, -0x7e439378, -0x91d20000, -0x00098200, -0x7e8ea050, -0x90120000, -0x00098200, -0x48000001, -0x00030025, -0x81d20000, -0x00098200, -0x80120000, -0x00098200, -0x9361000c, -0x7d6e0050, -0x7e8ea214, -0x814efffc, -0x7c6903a6, -0x4e800420, -0x00060091, -0x00000000, -0x7c810808, -0x00000000, -0x00060092, -0x00000000, -0x7c810808, -0x00000000, -0x00060093, -0x7ca802a6, -0x48000001, -0x0005005a, -0x7ca803a6, -0x1064222c, -0x4e800020, -0x00060094, -0x1064222c, -0x0006005a, -0x5469657e, -0x3529fc01, -0x3900ffff, -0x28890033, -0x20090034, -0x41850000, -0x00050801, -0x3cc0fff0, -0x7d000030, -0x7cc84e30, -0x7c890078, -0x7c664078, -0x7d293378, -0x7c66fe70, -0x7d293039, -0x7c840038, -0x7c634038, -0x7c002010, -0x7c04009e, -0x7d081910, -0x7d03409e, -0x1088022d, -0x4e800020, -0x0006000b, -0x4d810020, -0x5469007e, -0x7c60fe70, -0x7d292378, -0x3d003ff0, -0x7d290039, -0x38000000, -0x7d00409e, -0x5103007e, -0x1083022d, -0x4e800020, -0x00060095, -0x1064222c, -0x0006005c, -0x5469657e, -0x3529fc01, -0x3900ffff, -0x28890033, -0x20090034, -0x41850000, -0x00050801, -0x3cc0fff0, -0x7d000030, -0x7cc84e30, -0x7c890078, -0x7c664078, -0x7d293378, -0x7c66fe70, -0x7d293079, -0x7c840038, -0x7c634038, -0x7c002010, -0x7c04009e, -0x7d081910, -0x7d03409e, -0x1088022d, -0x4e800020, -0x0006000b, -0x4d810020, -0x5469007e, -0x7c60fe70, -0x7d292378, -0x3d003ff0, -0x7d290079, -0x38000000, -0x7d00409e, -0x5103007e, -0x1083022d, -0x4e800020, -0x00000000, -0x00060096, -0x1064222c, -0x00060097, -0x5469657e, -0x3529fc01, -0x3900ffff, -0x28890033, -0x20090034, -0x41850000, -0x00050801, -0x3cc0fff0, -0x7d000030, -0x7cc84e30, -0x1008022d, -0x10840211, -0x4e800020, -0x0006000b, -0x4d810020, -0x54680000, -0x38000000, -0x1088022d, -0x4e800020, -0x00000000, -0x00060096, -0x00060097, -0x00000000, -0x00060098, -0x1083222d, -0x28070001, -0x10c5322d, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0x108432e0, -0x1064222c, -0x4e800020, -0x0006000b, -0x108432e1, -0x1064222c, -0x4e800020, -0x0006000c, -0x28070003, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0x108432e8, -0x1064222c, -0x4e800020, -0x0006000b, -0x108432e9, -0x1064222c, -0x4e800020, -0x0006000c, -0x28070005, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0x10a42217, -0x108432e9, -0x11463217, -0x7d6802a6, -0x48000001, -0x00050094, -0x7d6803a6, -0x108452e8, -0x108522e1, -0x1064222c, -0x4e800020, -0x0006000b, -0x48000000, -0x0003001b, -0x0006000c, -0x28070007, -0x41820000, -0x00050801, -0x41810000, -0x00050802, -0x6c638000, -0x4e800020, -0x0006000b, -0x5463007e, -0x4e800020, -0x0006000c, -0x7c810808, -0x00060099, -0x00000000, -0x7c810808, -0x00000000, -0x00080000, -0x00000000, -0x100ea300, -0x3a100004, -0x110e6300, -0x3cd00000, -0x00098200, -0x8130fffc, -0x1140422c, -0x552993ba, -0x100ab232, -0x7d293214, -0x40830000, -0x00050834, -0x100042ed, -0x00000000, -0x108042ee, -0x4c212b82, -0x00000000, -0x7e09805e, -0x00000000, -0x7e10485e, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x108ea300, -0x3a100004, -0x10ae6300, -0x3cd00000, -0x00098200, -0x8130fffc, -0x11442a2c, -0x552993ba, -0x100ab232, -0x7d293214, -0x40830000, -0x00050805, -0x10042aee, -0x00000000, -0x7e09805e, -0x00000000, -0x7e10485e, -0x00000000, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x10042a34, -0x7d4650f8, -0x28860000, -0x00090200, -0x4f830342, -0x2b060000, -0x00090200, -0x4fa02902, -0x7e158378, -0x00000000, -0x7e09875e, -0x00000000, -0x7d304f5e, -0x00000000, -0x4f9ceb82, -0x00000000, -0x7e0980de, -0x00000000, -0x7e1048de, -0x00000000, -0x419c0000, -0x0005080b, -0x41980000, -0x0005080b, -0x81240000, -0x00098200, -0x38c00000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x89290000, -0x00098200, -0x71290000, -0x00090200, -0x40820000, -0x0005080b, -0x7eb0ab78, -0x48000000, -0x00050039, -0x00000000, -0x100ea300, -0x558c007e, -0x000900ab, -0x80f00000, -0x218cfffc, -0x3a100004, -0x7d0f602e, -0x3cd00000, -0x00098200, -0x54e993ba, -0x1117422d, -0x7d293214, -0x10004234, -0x00000000, -0x7e0980de, -0x00000000, -0x7e1048de, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x100ea300, -0x3a100004, -0x110f6300, -0x3cd00000, -0x00098200, -0x80f0fffc, -0x1000b232, -0x40800000, -0x00050805, -0x100042ee, -0x0006000b, -0x54e993ba, -0x7d293214, -0x00000000, -0x7e09805e, -0x0006000f, -0x00000000, -0x7e10485e, -0x00000000, -0x0006000d, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x0006000f, -0x54e993ba, -0x7e093214, -0x48000000, -0x0005000d, -0x00000000, -0x7c0ea02e, -0x558800fe, -0x000900ab, -0x80f00000, -0x3a100004, -0x7d0840f8, -0x3cd00000, -0x00098200, -0x7c004040, -0x54e993ba, -0x7d293214, -0x00000000, -0x7e09809e, -0x00000000, -0x7e10489e, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x100e6300, -0x111ad200, -0x80f00000, -0x10004232, -0x3a100004, -0x00000000, -0x3cd00000, -0x00098200, -0x54e993ba, -0x7d293214, -0x00000000, -0x7e09801e, -0x00000000, -0x7e10481e, -0x00000000, -0x40800000, -0x00050801, -0x00000000, -0x41800000, -0x00050801, -0x00000000, -0x3e100000, -0x00098200, -0x54e993ba, -0x100ea320, -0x7e104a14, -0x0006000b, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x100e6300, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x7c0e602e, -0x21000000, -0x00098200, -0x7c004114, -0x7c0ea12e, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x100e6300, -0x1000b232, -0x40800000, -0x0005083c, -0x100002e6, -0x80f00000, -0x3a100004, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x106e6300, -0x1003ba34, -0x40800000, -0x00050802, -0x80630000, -0x00098200, -0x0006000b, -0x80f00000, -0x3a100004, -0x10001af1, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000c, -0x1003c234, -0x40800000, -0x0005083e, -0x00000000, -0x81230000, -0x00098200, -0x28090000, -0x40820000, -0x00050809, -0x0006000d, -0x00000000, -0x0006003f, -0x48000001, -0x00030022, -0x48000000, -0x0005000b, -0x00000000, -0x00060013, -0x88090000, -0x00098200, -0x70000000, -0x00090200, -0x40820000, -0x0005080d, -0x48000000, -0x0005003e, -0x00000000, -0x100e5300, -0x1000b232, -0x110f5b00, -0x40800000, -0x0005083a, -0x00000000, -0x110e5300, -0x1008b232, -0x100f5b00, -0x40800000, -0x0005083b, -0x00000000, -0x100e5300, -0x110e5b00, -0x1120422c, -0x1009b232, -0x40830000, -0x0005083d, -0x00000000, -0x80f00000, -0x3a100004, -0x100042e0, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x100e5300, -0x1000b232, -0x110f5b00, -0x40800000, -0x0005083a, -0x00000000, -0x110e5300, -0x1008b232, -0x100f5b00, -0x40800000, -0x0005083b, -0x00000000, -0x100e5300, -0x110e5b00, -0x1120422c, -0x1009b232, -0x40830000, -0x0005083d, -0x00000000, -0x80f00000, -0x3a100004, -0x100042e1, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x100e5300, -0x1000b232, -0x110f5b00, -0x40800000, -0x0005083a, -0x00000000, -0x110e5300, -0x1008b232, -0x100f5b00, -0x40800000, -0x0005083b, -0x00000000, -0x100e5300, -0x110e5b00, -0x1120422c, -0x1009b232, -0x40830000, -0x0005083d, -0x00000000, -0x80f00000, -0x3a100004, -0x100042e8, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x100e5300, -0x1000b232, -0x110f5b00, -0x40800000, -0x0005083a, -0x00000000, -0x110e5300, -0x1008b232, -0x100f5b00, -0x40800000, -0x0005083b, -0x00000000, -0x100e5300, -0x110e5b00, -0x1120422c, -0x1009b232, -0x40830000, -0x0005083d, -0x00000000, -0x80f00000, -0x3a100004, -0x100042e9, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x118e5300, -0x100cb232, -0x12af5b00, -0x40800000, -0x0005083a, -0x00000000, -0x12ae5300, -0x1015b232, -0x118f5b00, -0x40800000, -0x0005083b, -0x00000000, -0x118e5300, -0x12ae5b00, -0x112caa2c, -0x1009b232, -0x40830000, -0x0005083d, -0x00000000, -0x0006009a, -0x108caae9, -0x48000001, -0x00050094, -0x1004aae8, -0x80f00000, -0x3a100004, -0x100c02e1, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x118e5300, -0x100cb232, -0x12af5b00, -0x40800000, -0x0005083a, -0x00000000, -0x12ae5300, -0x1015b232, -0x118f5b00, -0x40800000, -0x0005083b, -0x00000000, -0x118e5300, -0x12ae5b00, -0x112caa2c, -0x1009b232, -0x40830000, -0x0005083d, -0x00000000, -0x48000000, -0x0005009a, -0x00000000, -0x108e5300, -0x10ce5b00, -0x1066222c, -0x1003b232, -0x10a6322c, -0x40830000, -0x0005083d, -0x48000001, -0x0003001b, -0x1083222d, -0x108ea320, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7caa5850, -0x91d20000, -0x00098200, -0x7c8e5a14, -0x7d555378, -0x0006002a, -0x9201000c, -0x7e439378, -0x54a500fe, -0x000900ab, -0x48000001, -0x00030026, -0x28030000, -0x81d20000, -0x00098200, -0x40820000, -0x00050835, -0x100eab00, -0x100ea320, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x5588007e, -0x000900ab, -0x2108fffc, -0x7c0f402e, -0x1017022d, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x5588007e, -0x000900ab, -0x2108fffc, -0x7c0f402e, -0x39200000, -0x00098200, -0x1009022d, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x558800fe, -0x000900ab, -0x7d080734, -0x80f00000, -0x3a100004, -0x100042f1, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x100f6300, -0x80f00000, -0x3a100004, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x558800fe, -0x000900ab, -0x7d0040f8, -0x80f00000, -0x3a100004, -0x7c0ea12e, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x134ea320, -0x3a940008, -0x0006000b, -0x134ea320, -0x7c146000, -0x3a940008, -0x41800000, -0x0005080b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x814efffc, -0x558c007e, -0x000900ab, -0x398c0000, -0x00098200, -0x7d4a602e, -0x810a0000, -0x00098200, -0x10080301, -0x100ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x814efffc, -0x5694007e, -0x000900ab, -0x3a940000, -0x00098200, -0x110e6300, -0x7d4aa02e, -0x88ca0000, -0x00098200, -0x808a0000, -0x00098200, -0x70c60000, -0x00090200, -0x880a0000, -0x00098200, -0x1128422c, -0x11040321, -0x28800000, -0x4c423382, -0x39290000, -0x00098200, -0x40820000, -0x00050802, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000c, -0x28090000, -0x00090200, -0x40800000, -0x0005080b, -0x88c80000, -0x00098200, -0x70c60000, -0x00090200, -0x38710000, -0x00098200, -0x41820000, -0x0005080b, -0x48000001, -0x00030027, -0x48000000, -0x0005000b, -0x00000000, -0x814efffc, -0x5588007e, -0x000900ab, -0x5694007e, -0x000900ab, -0x2108fffc, -0x3a940000, -0x00098200, -0x7d0f402e, -0x7d4aa02e, -0x1117422d, -0x88ca0000, -0x00098200, -0x808a0000, -0x00098200, -0x70c60000, -0x00090200, -0x88c80000, -0x00098200, -0x892a0000, -0x00098200, -0x11040321, -0x40820000, -0x00050802, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000c, -0x70c60000, -0x00090200, -0x28890000, -0x4c423382, -0x38710000, -0x00098200, -0x41820000, -0x0005080b, -0x48000001, -0x00030027, -0x48000000, -0x0005000b, -0x00000000, -0x80f00000, -0x3a100004, -0x814efffc, -0x5694007e, -0x000900ab, -0x3a940000, -0x00098200, -0x100f6300, -0x7d4aa02e, -0x810a0000, -0x00098200, -0x10080321, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x80f00000, -0x3a100004, -0x814efffc, -0x5694007e, -0x000900ab, -0x3a940000, -0x00098200, -0x558000fe, -0x000900ab, -0x7d4aa02e, -0x7c0000f8, -0x810a0000, -0x00098200, -0x90080000, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x81120000, -0x00098200, -0x5580007e, -0x000900ab, -0x7e100214, -0x3e100000, -0x00098200, -0x91d20000, -0x00098200, -0x28080000, -0x7e439378, -0x41820000, -0x00050801, -0x7c8ea214, -0x48000001, -0x00030028, -0x81d20000, -0x00098200, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x5588007e, -0x000900ab, -0x91d20000, -0x00098200, -0x2108fffc, -0x9201000c, -0x7c8f402e, -0x7e439378, -0x80aefffc, -0x48000001, -0x00030029, -0x81d20000, -0x00098200, -0x10791a2d, -0x106ea320, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x80110000, -0x00098200, -0x7e439378, -0x81110000, -0x00098200, -0x91d20000, -0x00098200, -0x7c004040, -0x9201000c, -0x40800000, -0x00050805, -0x0006000b, -0x00000000, -0x5584ed7e, -0x558596fe, -0x2c0407ff, -0x39000801, -0x7c88209e, -0x48000001, -0x0003002a, -0x00000000, -0x5588007e, -0x000900ab, -0x2108fffc, -0x7c8f402e, -0x48000001, -0x0003002b, -0x00000000, -0x81d20000, -0x00098200, -0x10781a2d, -0x106ea320, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x7d956378, -0x48000001, -0x0003002c, -0x7eacab78, -0x7e439378, -0x48000000, -0x0005000b, -0x00000000, -0x812efffc, -0x5588007e, -0x000900ab, -0x81490000, -0x00098200, -0x2108fffc, -0x7d6f402e, -0x00000000, -0x48000000, -0x0005009b, -0x00000000, -0x48000000, -0x0005009c, -0x00000000, -0x114e5300, -0x116e5b00, -0x100ac234, -0x40800000, -0x0005082f, -0x100bb232, -0x40800000, -0x00050805, -0x11205af5, -0x800a0000, -0x00098200, -0x11004af1, -0x7c004840, -0x108b42ee, -0x810a0000, -0x00098200, -0x4c212a02, -0x55291800, -0x000900a1, -0x40810000, -0x0005082f, -0x11084b00, -0x1008d234, -0x41800000, -0x00050802, -0x0006000b, -0x110ea320, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000c, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x88090000, -0x00098200, -0x70000000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x0005002f, -0x0006000f, -0x100bba34, -0x41800000, -0x0005089b, -0x48000000, -0x0005002f, -0x00000000, -0x114e5300, -0x5568007e, -0x000900ab, -0x100ac234, -0x2108fffc, -0x7d6f402e, -0x40800000, -0x0005082c, -0x0006009b, -0x800a0000, -0x00098200, -0x810b0000, -0x00098200, -0x812a0000, -0x00098200, -0x11775a2d, -0x7d080038, -0x55002800, -0x000900a1, -0x55081800, -0x000900a1, -0x7d080050, -0x7d294214, -0x0006000b, -0x10090301, -0x00090cab, -0x11090301, -0x00090cab, -0x10005a34, -0x40830000, -0x00050804, -0x1008d234, -0x41800000, -0x00050805, -0x0006000d, -0x110ea320, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000e, -0x81290000, -0x00098200, -0x28090000, -0x40820000, -0x0005080b, -0x111ad217, -0x0006000f, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080d, -0x88090000, -0x00098200, -0x70000000, -0x00090200, -0x00000000, -0x40820000, -0x0005080d, -0x48000000, -0x0005002d, -0x00000000, -0x114e5300, -0x556000fe, -0x000900ab, -0x100ac234, -0x40800000, -0x0005082e, -0x810a0000, -0x00098200, -0x812a0000, -0x00098200, -0x7c004040, -0x40800000, -0x0005082e, -0x11095b00, -0x1008d234, -0x41800000, -0x00050805, -0x0006000b, -0x80f00000, -0x3a100004, -0x110ea320, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x89290000, -0x00098200, -0x71290000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x0005002e, -0x00000000, -0x114e5300, -0x116e5b00, -0x100ac234, -0x40800000, -0x00050833, -0x100bb232, -0x40800000, -0x00050805, -0x11205af5, -0x12aea300, -0x800a0000, -0x00098200, -0x11004af1, -0x7c004840, -0x108b42ee, -0x810a0000, -0x00098200, -0x4c212a02, -0x55201800, -0x000900a1, -0x40810000, -0x00050833, -0x88ca0000, -0x00098200, -0x11280300, -0x1009d234, -0x41800000, -0x00050803, -0x0006000b, -0x70c90000, -0x00090200, -0x12a80320, -0x40820000, -0x00050807, -0x0006000c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000d, -0x812a0000, -0x00098200, -0x28090000, -0x41820000, -0x0005080b, -0x89290000, -0x00098200, -0x71290000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x00050033, -0x0006000f, -0x100bba34, -0x41800000, -0x0005089c, -0x48000000, -0x00050033, -0x00060011, -0x00000000, -0x80110000, -0x00098200, -0x54c607b8, -0x91510000, -0x00098200, -0x98ca0000, -0x00098200, -0x900a0000, -0x00098200, -0x48000000, -0x0005000c, -0x00000000, -0x114e5300, -0x5568007e, -0x000900ab, -0x100ac234, -0x2108fffc, -0x7d6f402e, -0x40800000, -0x00050830, -0x0006009c, -0x800a0000, -0x00098200, -0x810b0000, -0x00098200, -0x812a0000, -0x00098200, -0x11775a2d, -0x9b6a0000, -0x00098200, -0x7d080038, -0x12aea300, -0x55002800, -0x000900a1, -0x55081800, -0x000900a1, -0x7d080050, -0x88ca0000, -0x00098200, -0x7d294214, -0x0006000b, -0x10090301, -0x00090cab, -0x11090301, -0x00090cab, -0x10005a34, -0x40830000, -0x00050805, -0x1008d234, -0x41800000, -0x00050804, -0x0006000c, -0x70c00000, -0x00090200, -0x12a90321, -0x00090cab, -0x40820000, -0x00050807, -0x0006000d, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000e, -0x810a0000, -0x00098200, -0x00000000, -0x28080000, -0x41820000, -0x0005080c, -0x88080000, -0x00098200, -0x70000000, -0x00090200, -0x40820000, -0x0005080c, -0x48000000, -0x00050031, -0x0006000f, -0x81290000, -0x00098200, -0x28090000, -0x40820000, -0x0005080b, -0x810a0000, -0x00098200, -0x38b10000, -0x00098200, -0x9201000c, -0x7e439378, -0x28080000, -0x91d20000, -0x00098200, -0x41820000, -0x00050806, -0x88080000, -0x00098200, -0x70000000, -0x00090200, -0x41820000, -0x00050831, -0x00060010, -0x7d445378, -0x11650321, -0x48000001, -0x0003002d, -0x81d20000, -0x00098200, -0x12a30321, -0x48000000, -0x0005000d, -0x00060011, -0x80110000, -0x00098200, -0x54c607b8, -0x91510000, -0x00098200, -0x00000000, -0x98ca0000, -0x00098200, -0x900a0000, -0x00098200, -0x48000000, -0x0005000d, -0x00000000, -0x114e5300, -0x556000fe, -0x000900ab, -0x100ac234, -0x40800000, -0x00050832, -0x810a0000, -0x00098200, -0x812a0000, -0x00098200, -0x88ca0000, -0x00098200, -0x7c004040, -0x12aea300, -0x40800000, -0x00050832, -0x11095b00, -0x1008d234, -0x41800000, -0x00050805, -0x0006000b, -0x70c00000, -0x00090200, -0x12a95b20, -0x40820000, -0x00050807, -0x0006000c, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x810a0000, -0x00098200, -0x28080000, -0x41820000, -0x0005080b, -0x89080000, -0x00098200, -0x71080000, -0x00090200, -0x40820000, -0x0005080b, -0x48000000, -0x00050032, -0x00060011, -0x80110000, -0x00098200, -0x54c607b8, -0x91510000, -0x00098200, -0x98ca0000, -0x00098200, -0x00000000, -0x900a0000, -0x00098200, -0x48000000, -0x0005000c, -0x00000000, -0x7e8ea214, -0x0006000b, -0x7ccf6214, -0x8094fffc, -0x3413fff8, -0x80c60004, -0x540500fe, -0x000900ab, -0x41820000, -0x00050804, -0x7ca53214, -0x81240000, -0x00098200, -0x54c81800, -0x000900a1, -0x88c40000, -0x00098200, -0x7c054840, -0x7d340214, -0x80040000, -0x00098200, -0x41810000, -0x00050805, -0x7d080214, -0x70c00000, -0x00090200, -0x0006000d, -0x10140301, -0x3a940008, -0x7c944800, -0x10080321, -0x39080008, -0x41840000, -0x0005080d, -0x40820000, -0x00050807, -0x0006000e, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x91d20000, -0x00098200, -0x7e439378, -0x9201000c, -0x7d956378, -0x48000001, -0x0003002e, -0x7eacab78, -0x48000000, -0x0005000b, -0x00060011, -0x80110000, -0x00098200, -0x54c607b8, -0x90910000, -0x00098200, -0x98c40000, -0x00098200, -0x90040000, -0x00098200, -0x00000000, -0x48000000, -0x0005000e, -0x00000000, -0x7d6b9a14, -0x00000000, -0x114ea300, -0x7dc97378, -0x7dcea214, -0x396bfff8, -0x100aca34, -0x39ce0008, -0x40800000, -0x00050825, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7d6b9a14, -0x00000000, -0x114ea300, -0x7e8ea214, -0x810efff8, -0x396bfff8, -0x100aca34, -0x3a940008, -0x40800000, -0x00050840, -0x00060041, -0x71000000, -0x00090200, -0x88ca0000, -0x00098200, -0x69090000, -0x00090200, -0x288b0000, -0x40820000, -0x00050807, -0x0006000b, -0x914efffc, -0x39200000, -0x2b860001, -0x41860000, -0x00050803, -0x0006000c, -0x38c90008, -0x10144b00, -0x7c865840, -0x100e4b20, -0x7cc93378, -0x40860000, -0x0005080c, -0x0006000d, -0x4c42ea02, -0x41820000, -0x00050805, -0x0006000e, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x80e8fffc, -0x54f4dd78, -0x7d147050, -0x81080000, -0x00098200, -0x81080000, -0x00098200, -0x81e80000, -0x00098200, -0x48000000, -0x0005000e, -0x00060011, -0x71200000, -0x00090200, -0x40820000, -0x0005080b, -0x00000000, -0x7dc97050, -0x810efff8, -0x71000000, -0x00090200, -0x48000000, -0x0005000b, -0x00000000, -0x3a94ffe8, -0x7dc97378, -0x114ea300, -0x7dcea214, -0x100e0b01, -0x110e1301, -0x114e1b21, -0x100aca34, -0x100e2321, -0x39600010, -0x110e2b21, -0x39ce0020, -0x40800000, -0x00050825, -0x920efff8, -0x820a0000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54f4dd78, -0x7c11402e, -0x7e947214, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7e8ea214, -0x8154fff4, -0x8174fffc, -0x800a0000, -0x00098200, -0x810a0000, -0x00098200, -0x3a100004, -0x0006000b, -0x7c0b0040, -0x55661800, -0x000900a1, -0x40800000, -0x00050805, -0x11283300, -0x1009d234, -0x80f0fffc, -0x41800000, -0x00050804, -0x10005af1, -0x396b0001, -0x3cd00000, -0x00098200, -0x11340b21, -0x54e893ba, -0x9174fffc, -0x7e083214, -0x10140321, -0x0006000d, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000e, -0x396b0001, -0x48000000, -0x0005000b, -0x0006000f, -0x810a0000, -0x00098200, -0x7d605850, -0x812a0000, -0x00098200, -0x00060010, -0x7c0b4040, -0x55662800, -0x000900a1, -0x41810000, -0x0005080d, -0x556a1800, -0x000900a1, -0x7cca3050, -0x11493300, -0x7cc93214, -0x100ad234, -0x80f0fffc, -0x41800000, -0x00050807, -0x10c60301, -0x00090cab, -0x3d300000, -0x00098200, -0x11540b21, -0x7d6b0214, -0x54e893ba, -0x10d40321, -0x396b0001, -0x7e084a14, -0x9174fffc, -0x48000000, -0x0005000d, -0x00060011, -0x00000000, -0x396b0001, -0x48000000, -0x00050010, -0x00000000, -0x7e8ea214, -0x3920ffe8, -0x11144b00, -0x8134fff0, -0x80d4fff8, -0x1008422c, -0x2c090000, -0x00098200, -0x2c800000, -0x00098200, -0x2f060000, -0x00098200, -0x40860000, -0x00050805, -0x89080000, -0x00098200, -0x4c42d202, -0x2f880000, -0x00098200, -0x5580007e, -0x000900ab, -0x4c42f202, -0x7cd00214, -0x40820000, -0x00050805, -0x9374fffc, -0x3e060000, -0x00098200, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x38000000, -0x00098200, -0x39000000, -0x00098200, -0x9810ffff, -0x3e060000, -0x00098200, -0x99100003, -0x48000000, -0x0005000b, -0x00000000, -0x800efff8, -0x7d6e5a14, -0x7e8ea214, -0x396b0000, -0x00098200, -0x7d345214, -0x38cefff8, -0x7d605850, -0x288a0000, -0x7d0b3051, -0x41860000, -0x00050805, -0x3929fff0, -0x40810000, -0x00050802, -0x0006000b, -0x100b0301, -0x396b0008, -0x10140321, -0x7c144840, -0x7c8b3040, -0x40800000, -0x00050803, -0x3a940008, -0x41840000, -0x0005080b, -0x0006000c, -0x13540321, -0x7c144840, -0x3a940008, -0x41800000, -0x0005080c, -0x0006000d, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000f, -0x80120000, -0x00098200, -0x3a600008, -0x40810000, -0x0005080d, -0x7d344214, -0x7c090040, -0x3a680008, -0x41810000, -0x00050807, -0x00060010, -0x100b0301, -0x396b0008, -0x10140321, -0x7c0b3040, -0x3a940008, -0x41800000, -0x00050810, -0x48000000, -0x0005000d, -0x00060011, -0x7e439378, -0x92920000, -0x00098200, -0x7eae5850, -0x91d20000, -0x00098200, -0x7e8ea050, -0x9201000c, -0x550400fe, -0x000900ab, -0x48000001, -0x00030000, -0x81d20000, -0x00098200, -0x00000000, -0x7e8ea214, -0x7d6eaa14, -0x38cefff8, -0x48000000, -0x00050010, -0x00000000, -0x7d8c9a14, -0x00000000, -0x820efff8, -0x7e8ea214, -0x7d936378, -0x0006000b, -0x72000000, -0x00090200, -0x6a080000, -0x00090200, -0x40820000, -0x0005089d, -0x00060017, -0x80f0fffc, -0x2c0c0008, -0x392efff8, -0x396cfff8, -0x54ea5d78, -0x41820000, -0x00050803, -0x39000000, -0x0006000c, -0x38c80008, -0x10144300, -0x7c065800, -0x10094320, -0x41820000, -0x00050803, -0x39060008, -0x10143300, -0x7c085800, -0x10093320, -0x40820000, -0x0005080c, -0x0006000d, -0x0006000f, -0x7c0a6040, -0x54f4dd78, -0x41810000, -0x00050806, -0x7dd44850, -0x810efffc, -0x80f00000, -0x3a100004, -0x81080000, -0x00098200, -0x81e80000, -0x00098200, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00060010, -0x390cfff8, -0x398c0008, -0x13494320, -0x48000000, -0x0005000f, -0x0006009d, -0x71090000, -0x00090200, -0x40820000, -0x00050818, -0x7dc87050, -0x820efff8, -0x48000000, -0x0005000b, -0x00000000, -0x820efff8, -0x7e8ea214, -0x7d936378, -0x72000000, -0x00090200, -0x6a080000, -0x00090200, -0x40820000, -0x0005089d, -0x80f0fffc, -0x392efff8, -0x54ea5d78, -0x00000000, -0x10140301, -0x10090321, -0x00000000, -0x0006000f, -0x7c0a6040, -0x54f4dd78, -0x41810000, -0x00050806, -0x7dd44850, -0x810efffc, -0x80f00000, -0x3a100004, -0x81080000, -0x00098200, -0x81e80000, -0x00098200, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00060010, -0x390cfff8, -0x398c0008, -0x13494320, -0x48000000, -0x0005000f, -0x00000000, -0x7c810808, -0x00000000, -0x7e8ea214, -0x11140301, -0x00090cab, -0x10d40301, -0x00090cab, -0x11340301, -0x00090cab, -0x00000000, -0x1008b230, -0x1386b230, -0x1089b230, -0x4c00e382, -0x4c002382, -0x41800000, -0x00050842, -0x00000000, -0x110832e0, -0x11140321, -0x00090cab, -0x00000000, -0x1006d231, -0x11140321, -0x00090cab, -0x40800000, -0x00050802, -0x10084aec, -0x0006000b, -0x00000000, -0x558c007e, -0x000900ab, -0x7d906214, -0x00000000, -0x3e0c0000, -0x00098200, -0x00000000, -0x3d8c0000, -0x00098200, -0x00000000, -0x7e0c805e, -0x00000000, -0x7e10605e, -0x00000000, -0x40810000, -0x00070800, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000c, -0x100942ec, -0x48000000, -0x0005000b, -0x00000000, -0x7c810808, -0x00000000, -0x110ea300, -0x3a94fff8, -0x1008d234, -0x41800000, -0x00050801, -0x00000000, -0x7c810808, -0x00000000, -0x5580007e, -0x000900ab, -0x7e100214, -0x3e100000, -0x00098200, -0x110ea320, -0x00000000, -0x0006000b, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7c810808, -0x00000000, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7c810808, -0x00000000, -0x5580007e, -0x000900ab, -0x7e100214, -0x3e100000, -0x00098200, -0x80f00000, -0x3a100004, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x7c810808, -0x00000000, -0x81320000, -0x00098200, -0x89100000, -0x00098200, -0x81f00000, -0x00098200, -0x7c144840, -0x55081800, -0x000900a1, -0x41810000, -0x00050820, -0x80f00000, -0x3a100004, -0x0006000c, -0x7c0b4040, -0x40810000, -0x00050803, -0x00000000, -0x7c810808, -0x00000000, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x00000000, -0x0006000d, -0x134e5b20, -0x396b0008, -0x48000000, -0x0005000c, -0x00000000, -0x7c810808, -0x00000000, -0x81320000, -0x00098200, -0x7d0e5a14, -0x7c145a14, -0x91480004, -0x38cb0000, -0x00098200, -0x81f00000, -0x00098200, -0x7c004840, -0x90c80000, -0x40800000, -0x00050820, -0x89300000, -0x00098200, -0x7dd47378, -0x7d0b4378, -0x80f00000, -0x3a100004, -0x2c090000, -0x39c80008, -0x41820000, -0x00050803, -0x0006000b, -0x7c145840, -0x10140301, -0x40800000, -0x00050804, -0x13540321, -0x3a940008, -0x0006000c, -0x3529ffff, -0x10080b21, -0x39080008, -0x40820000, -0x0005080b, -0x0006000d, -0x54e815ba, -0x54ea5d78, -0x54ec9b78, -0x7c11402e, -0x54f4dd78, -0x54eb9d78, -0x7c0903a6, -0x4e800420, -0x0006000e, -0x101ad217, -0x48000000, -0x0005000c, -0x00000000, -0x80ca0000, -0x00098200, -0x00000000, -0x80d10000, -0x00098200, -0x00000000, -0x7d145a14, -0x81320000, -0x00098200, -0x7d6e5a14, -0x91d20000, -0x00098200, -0x7c084840, -0x91720000, -0x00098200, -0x38000000, -0x00098200, -0x7cc903a6, -0x00000000, -0x808a0000, -0x00098200, -0x00000000, -0x7e439378, -0x41810000, -0x0005081f, -0x90110000, -0x00098200, -0x4e800421, -0x81120000, -0x00098200, -0x546c1800, -0x000900a1, -0x81d20000, -0x00098200, -0x38000000, -0x00098200, -0x820efff8, -0x7e8c4050, -0x90110000, -0x00098200, -0x48000000, -0x00050016, -0x00000000, -0x00010000 -}; - -enum { - GLOB_vm_returnp, - GLOB_cont_dispatch, - GLOB_vm_returnc, - GLOB_BC_RET_Z, - GLOB_vm_return, - GLOB_vm_leave_cp, - GLOB_vm_leave_unw, - GLOB_vm_unwind_c, - GLOB_vm_unwind_c_eh, - GLOB_vm_unwind_ff, - GLOB_vm_unwind_ff_eh, - GLOB_vm_growstack_c, - GLOB_vm_growstack_l, - GLOB_vm_resume, - GLOB_vm_pcall, - GLOB_vm_call, - GLOB_vm_call_dispatch, - GLOB_vmeta_call, - GLOB_vm_call_dispatch_f, - GLOB_vm_cpcall, - GLOB_vm_call_tail, - GLOB_cont_cat, - GLOB_BC_CAT_Z, - GLOB_cont_nop, - GLOB_vmeta_tgets1, - GLOB_vmeta_tgets, - GLOB_vmeta_tgetb, - GLOB_vmeta_tgetv, - GLOB_vmeta_tsets1, - GLOB_vmeta_tsets, - GLOB_vmeta_tsetb, - GLOB_vmeta_tsetv, - GLOB_vmeta_comp, - GLOB_vmeta_binop, - GLOB_cont_ra, - GLOB_cont_condt, - GLOB_cont_condf, - GLOB_vmeta_equal, - GLOB_vmeta_arith_vn, - GLOB_vmeta_arith_nv, - GLOB_vmeta_unm, - GLOB_vmeta_arith_vv, - GLOB_vmeta_len, - GLOB_BC_LEN_Z, - GLOB_vmeta_callt, - GLOB_BC_CALLT_Z, - GLOB_vmeta_for, - GLOB_ff_assert, - GLOB_fff_fallback, - GLOB_fff_res, - GLOB_ff_type, - GLOB_fff_restv, - GLOB_ff_getmetatable, - GLOB_ff_setmetatable, - GLOB_ff_rawget, - GLOB_ff_tonumber, - GLOB_ff_tostring, - GLOB_fff_gcstep, - GLOB_ff_next, - GLOB_ff_pairs, - GLOB_ff_ipairs_aux, - GLOB_ff_ipairs, - GLOB_ff_pcall, - GLOB_ff_xpcall, - GLOB_ff_coroutine_resume, - GLOB_ff_coroutine_wrap_aux, - GLOB_ff_coroutine_yield, - GLOB_ff_math_abs, - GLOB_fff_res1, - GLOB_ff_math_floor, - GLOB_vm_floor_hilo, - GLOB_ff_math_ceil, - GLOB_vm_ceil_hilo, - GLOB_ff_math_sqrt, - GLOB_ff_math_log, - GLOB_ff_math_log10, - GLOB_ff_math_exp, - GLOB_ff_math_sin, - GLOB_ff_math_cos, - GLOB_ff_math_tan, - GLOB_ff_math_asin, - GLOB_ff_math_acos, - GLOB_ff_math_atan, - GLOB_ff_math_sinh, - GLOB_ff_math_cosh, - GLOB_ff_math_tanh, - GLOB_ff_math_pow, - GLOB_ff_math_atan2, - GLOB_ff_math_fmod, - GLOB_ff_math_deg, - GLOB_ff_math_rad, - GLOB_ff_math_ldexp, - GLOB_ff_math_frexp, - GLOB_ff_math_modf, - GLOB_ff_math_min, - GLOB_ff_math_max, - GLOB_ff_string_len, - GLOB_ff_string_byte, - GLOB_ff_string_char, - GLOB_fff_newstr, - GLOB_ff_string_sub, - GLOB_ff_string_rep, - GLOB_ff_string_reverse, - GLOB_ff_string_lower, - GLOB_ff_string_upper, - GLOB_ff_table_getn, - GLOB_ff_bit_tobit, - GLOB_fff_resbit, - GLOB_ff_bit_band, - GLOB_ff_bit_bor, - GLOB_ff_bit_bxor, - GLOB_ff_bit_bswap, - GLOB_ff_bit_bnot, - GLOB_ff_bit_lshift, - GLOB_ff_bit_rshift, - GLOB_ff_bit_arshift, - GLOB_ff_bit_rol, - GLOB_ff_bit_ror, - GLOB_vm_record, - GLOB_vm_rethook, - GLOB_vm_inshook, - GLOB_cont_hook, - GLOB_vm_hotloop, - GLOB_vm_callhook, - GLOB_vm_hotcall, - GLOB_vm_exit_handler, - GLOB_vm_exit_interp, - GLOB_vm_floor, - GLOB_vm_floor_efd, - GLOB_vm_ceil_efd, - GLOB_vm_trunc_efd, - GLOB_vm_trunc_hilo, - GLOB_vm_foldarith, - GLOB_vm_ffi_call, - GLOB_BC_MODVN_Z, - GLOB_BC_TGETS_Z, - GLOB_BC_TSETS_Z, - GLOB_BC_RETV_Z, - GLOB__MAX -}; -static const char *const globnames[] = { - "vm_returnp", - "cont_dispatch", - "vm_returnc", - "BC_RET_Z", - "vm_return", - "vm_leave_cp", - "vm_leave_unw", - "vm_unwind_c", - "vm_unwind_c_eh", - "vm_unwind_ff", - "vm_unwind_ff_eh", - "vm_growstack_c", - "vm_growstack_l", - "vm_resume", - "vm_pcall", - "vm_call", - "vm_call_dispatch", - "vmeta_call", - "vm_call_dispatch_f", - "vm_cpcall", - "vm_call_tail", - "cont_cat", - "BC_CAT_Z", - "cont_nop", - "vmeta_tgets1", - "vmeta_tgets", - "vmeta_tgetb", - "vmeta_tgetv", - "vmeta_tsets1", - "vmeta_tsets", - "vmeta_tsetb", - "vmeta_tsetv", - "vmeta_comp", - "vmeta_binop", - "cont_ra", - "cont_condt", - "cont_condf", - "vmeta_equal", - "vmeta_arith_vn", - "vmeta_arith_nv", - "vmeta_unm", - "vmeta_arith_vv", - "vmeta_len", - "BC_LEN_Z", - "vmeta_callt", - "BC_CALLT_Z", - "vmeta_for", - "ff_assert", - "fff_fallback", - "fff_res", - "ff_type", - "fff_restv", - "ff_getmetatable", - "ff_setmetatable", - "ff_rawget", - "ff_tonumber", - "ff_tostring", - "fff_gcstep", - "ff_next", - "ff_pairs", - "ff_ipairs_aux", - "ff_ipairs", - "ff_pcall", - "ff_xpcall", - "ff_coroutine_resume", - "ff_coroutine_wrap_aux", - "ff_coroutine_yield", - "ff_math_abs", - "fff_res1", - "ff_math_floor", - "vm_floor_hilo", - "ff_math_ceil", - "vm_ceil_hilo", - "ff_math_sqrt", - "ff_math_log", - "ff_math_log10", - "ff_math_exp", - "ff_math_sin", - "ff_math_cos", - "ff_math_tan", - "ff_math_asin", - "ff_math_acos", - "ff_math_atan", - "ff_math_sinh", - "ff_math_cosh", - "ff_math_tanh", - "ff_math_pow", - "ff_math_atan2", - "ff_math_fmod", - "ff_math_deg", - "ff_math_rad", - "ff_math_ldexp", - "ff_math_frexp", - "ff_math_modf", - "ff_math_min", - "ff_math_max", - "ff_string_len", - "ff_string_byte", - "ff_string_char", - "fff_newstr", - "ff_string_sub", - "ff_string_rep", - "ff_string_reverse", - "ff_string_lower", - "ff_string_upper", - "ff_table_getn", - "ff_bit_tobit", - "fff_resbit", - "ff_bit_band", - "ff_bit_bor", - "ff_bit_bxor", - "ff_bit_bswap", - "ff_bit_bnot", - "ff_bit_lshift", - "ff_bit_rshift", - "ff_bit_arshift", - "ff_bit_rol", - "ff_bit_ror", - "vm_record", - "vm_rethook", - "vm_inshook", - "cont_hook", - "vm_hotloop", - "vm_callhook", - "vm_hotcall", - "vm_exit_handler", - "vm_exit_interp", - "vm_floor", - "vm_floor_efd", - "vm_ceil_efd", - "vm_trunc_efd", - "vm_trunc_hilo", - "vm_foldarith", - "vm_ffi_call", - "BC_MODVN_Z", - "BC_TGETS_Z", - "BC_TSETS_Z", - "BC_RETV_Z", - (const char *)0 -}; -static const char *const extnames[] = { - "lj_state_growstack", - "lj_meta_tget", - "lj_meta_tset", - "lj_meta_comp", - "lj_meta_equal", - "lj_meta_arith", - "lj_meta_len", - "lj_meta_call", - "lj_meta_for", - "lj_tab_get", - "lj_str_fromnum", - "lj_tab_next", - "lj_tab_getinth", - "lj_ffh_coroutine_wrap_err", - "sqrt", - "log", - "log10", - "exp", - "sin", - "cos", - "tan", - "asin", - "acos", - "atan", - "sinh", - "cosh", - "tanh", - "pow", - "atan2", - "fmod", - "ldexp", - "frexp", - "modf", - "lj_str_new", - "lj_tab_len", - "lj_gc_step", - "lj_dispatch_ins", - "lj_dispatch_call", - "lj_meta_cat", - "lj_gc_barrieruv", - "lj_func_closeuv", - "lj_func_newL_gc", - "lj_tab_new", - "lj_tab_dup", - "lj_gc_step_fixtop", - "lj_tab_newkey", - "lj_tab_reasize", - (const char *)0 -}; -#define Dt1(_V) (int)(ptrdiff_t)&(((lua_State *)0)_V) -#define Dt2(_V) (int)(ptrdiff_t)&(((global_State *)0)_V) -#define Dt3(_V) (int)(ptrdiff_t)&(((TValue *)0)_V) -#define Dt4(_V) (int)(ptrdiff_t)&(((GCobj *)0)_V) -#define Dt5(_V) (int)(ptrdiff_t)&(((GCstr *)0)_V) -#define Dt6(_V) (int)(ptrdiff_t)&(((GCtab *)0)_V) -#define Dt7(_V) (int)(ptrdiff_t)&(((GCfuncL *)0)_V) -#define Dt8(_V) (int)(ptrdiff_t)&(((GCfuncC *)0)_V) -#define Dt9(_V) (int)(ptrdiff_t)&(((GCproto *)0)_V) -#define DtA(_V) (int)(ptrdiff_t)&(((GCupval *)0)_V) -#define DtB(_V) (int)(ptrdiff_t)&(((Node *)0)_V) -#define DtC(_V) (int)(ptrdiff_t)&(((int *)0)_V) -#define DtD(_V) (int)(ptrdiff_t)&(((GCtrace *)0)_V) -#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) -#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) -#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) - -/* Generate subroutines used by opcodes and other parts of the VM. */ -/* The .code_sub section should be last to help static branch prediction. */ -static void build_subroutines(BuildCtx *ctx) -{ - dasm_put(Dst, 0); - dasm_put(Dst, 1, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, ~LJ_VMST_C, Dt1(->base), DISPATCH_GL(vmstate), 31-3, Dt1(->top)); - dasm_put(Dst, 55, Dt1(->cframe), Dt1(->maxstack), Dt1(->top), 31-3, Dt1(->top), ~LJ_VMST_C, Dt1(->glref), Dt2(->vmstate)); - dasm_put(Dst, 135, LJ_TISNUM+1, LJ_TFUNC, LJ_TTAB, Dt1(->base), Dt1(->glref), LJ_TSTR, LJ_TFALSE, LJ_TNIL, ~LJ_VMST_INTERP, GG_G2DISP, DISPATCH_GL(vmstate), LUA_MINSTACK, Dt1(->base), Dt1(->top), 32-3); - dasm_put(Dst, 190, Dt1(->base), Dt1(->top), Dt7(->pc), Dt1(->glref), Dt1(->status), FRAME_CP, CFRAME_RESUME, GG_G2DISP, Dt1(->cframe), Dt1(->base), LJ_TISNUM+1, Dt1(->top), LJ_TFUNC, LJ_TTAB, LJ_TSTR, Dt1(->status), FRAME_TYPE, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate)); - dasm_put(Dst, 283, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, Dt1(->base), LJ_TISNUM+1, Dt1(->top), LJ_TFUNC, LJ_TTAB, LJ_TSTR, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate)); - dasm_put(Dst, 384, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP, Dt7(->pc), PC2PROTO(k), Dt1(->base)); - dasm_put(Dst, 491, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv2), DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv)); - dasm_put(Dst, 566, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv2), DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), Dt1(->base)); - dasm_put(Dst, 647, -(BCBIAS_J*4 >> 16), LJ_TTRUE, LJ_TFALSE, Dt1(->base)); - dasm_put(Dst, 716, Dt1(->base), FRAME_CONT); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 739); -#endif - dasm_put(Dst, 741, Dt1(->base)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 749); -#else - dasm_put(Dst, 756); -#endif - dasm_put(Dst, 759, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base)); -#if LJ_HASJIT - dasm_put(Dst, 807); -#endif - dasm_put(Dst, 809); -#if LJ_HASJIT - dasm_put(Dst, 811, BC_JFORI); -#endif - dasm_put(Dst, 814); -#if LJ_HASJIT - dasm_put(Dst, 816, BC_JFORI); -#endif - dasm_put(Dst, 819, BC_FORI, ~LJ_TNUMX, 31-3, Dt8(->upvalue), Dt6(->metatable), DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable])); - dasm_put(Dst, 884, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), DtB(->val), DtB(->next), LJ_TUDATA, 31-2, 4*~LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT])); - dasm_put(Dst, 940, Dt6(->metatable), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); - dasm_put(Dst, 1000, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->top), (2+1)*8); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1073, Dt6(->metatable), Dt8(->upvalue[0])); -#else - dasm_put(Dst, 1082, Dt8(->upvalue[0])); -#endif - dasm_put(Dst, 1086, (3+1)*8, Dt6(->asize), Dt6(->array), 31-3, (0+1)*8, (2+1)*8, Dt6(->hmask), (0+1)*8, (0+1)*8); - dasm_put(Dst, 1150); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1163, Dt6(->metatable), Dt8(->upvalue[0])); -#else - dasm_put(Dst, 1172, Dt8(->upvalue[0])); -#endif - dasm_put(Dst, 1176, (3+1)*8, DISPATCH_GL(hookmask), 32-HOOK_ACTIVE_SHIFT, 8+FRAME_PCALL, DISPATCH_GL(hookmask), 32-HOOK_ACTIVE_SHIFT, 16+FRAME_PCALL, LJ_TTHREAD, Dt1(->status), Dt1(->cframe), Dt1(->top)); - dasm_put(Dst, 1237, LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack)); - dasm_put(Dst, 1300, Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3); - dasm_put(Dst, 1360, Dt8(->upvalue[0].gcr), Dt1(->status), Dt1(->cframe), Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP); - dasm_put(Dst, 1419, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe)); - dasm_put(Dst, 1476, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status), (1+1)*8, FRAME_TYPE); - dasm_put(Dst, 1541); - dasm_put(Dst, 1610); - dasm_put(Dst, 1673); - dasm_put(Dst, 1738); - dasm_put(Dst, 1808, Dt8(->upvalue[0]), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv), (2+1)*8, (2+1)*8); - dasm_put(Dst, 1880, Dt5(->len)); - dasm_put(Dst, 1947, Dt5(->len), (0+1)*8, Dt5([1]), (1+1)*8, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), DISPATCH_GL(tmptv), Dt1(->base), Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2007, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2073, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(strempty), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2132, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 2191, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 2258); - dasm_put(Dst, 2329); - dasm_put(Dst, 2417, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc)); - dasm_put(Dst, 2496, FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 2539); -#endif - dasm_put(Dst, 2541, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 2588, GG_DISP2STATIC); -#if LJ_HASJIT - dasm_put(Dst, 2606); -#endif - dasm_put(Dst, 2608); -#if LJ_HASJIT - dasm_put(Dst, 2611); -#endif - dasm_put(Dst, 2614); -#if LJ_HASJIT - dasm_put(Dst, 2616); -#endif - dasm_put(Dst, 2619, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 2641); -#endif - dasm_put(Dst, 2643); -#if LJ_HASJIT - dasm_put(Dst, 2645); -#endif - dasm_put(Dst, 2647); -#if LJ_HASJIT - dasm_put(Dst, 2731); -#else - dasm_put(Dst, 2754); -#endif - dasm_put(Dst, 2757); -#if LJ_HASFFI - dasm_put(Dst, 2820); -#endif -} - -/* Generate the code for a single instruction. */ -static void build_ins(BuildCtx *ctx, BCOp op, int defop) -{ - int vk = 0; - dasm_put(Dst, 2822, defop); - - switch (op) { - - /* -- Comparison ops ---------------------------------------------------- */ - - /* Remember: all ops branch for a true comparison, fall through otherwise. */ - - case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - dasm_put(Dst, 2824, -(BCBIAS_J*4 >> 16)); - if (op == BC_ISLE || op == BC_ISGT) { - dasm_put(Dst, 2838); - } - if (op == BC_ISLT || op == BC_ISLE) { - dasm_put(Dst, 2841); - } else { - dasm_put(Dst, 2843); - } - dasm_put(Dst, 2845); - break; - - case BC_ISEQV: case BC_ISNEV: - vk = op == BC_ISEQV; - dasm_put(Dst, 2856, -(BCBIAS_J*4 >> 16)); - if (vk) { - dasm_put(Dst, 2870); - } else { - dasm_put(Dst, 2872); - } - dasm_put(Dst, 2874, ~LJ_TISPRI, ~LJ_TISTABUD); - if (vk) { - dasm_put(Dst, 2896); - } else { - dasm_put(Dst, 2898); - } - dasm_put(Dst, 2900); - if (vk) { - dasm_put(Dst, 2902); - } else { - dasm_put(Dst, 2904); - } - dasm_put(Dst, 2906, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<> 16)); - if (vk) { - dasm_put(Dst, 2941); - } else { - dasm_put(Dst, 2943); - } - dasm_put(Dst, 2945); - break; - - case BC_ISEQN: case BC_ISNEN: - vk = op == BC_ISEQN; - dasm_put(Dst, 2956, -(BCBIAS_J*4 >> 16)); - if (vk) { - dasm_put(Dst, 2970); - } else { - dasm_put(Dst, 2973); - } - dasm_put(Dst, 2975); - if (!vk) { - dasm_put(Dst, 2987); - } - break; - - case BC_ISEQP: case BC_ISNEP: - vk = op == BC_ISEQP; - dasm_put(Dst, 2993, 32-3, -(BCBIAS_J*4 >> 16)); - if (vk) { - dasm_put(Dst, 3005); - } else { - dasm_put(Dst, 3007); - } - dasm_put(Dst, 3009); - break; - - /* -- Unary test and copy ops ------------------------------------------- */ - - case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: - dasm_put(Dst, 3020); - if (op == BC_IST || op == BC_ISF) { - dasm_put(Dst, 3026, -(BCBIAS_J*4 >> 16)); - if (op == BC_IST) { - dasm_put(Dst, 3031); - } else { - dasm_put(Dst, 3033); - } - } else { - if (op == BC_ISTC) { - dasm_put(Dst, 3035); - } else { - dasm_put(Dst, 3038); - } - dasm_put(Dst, 3041, -(BCBIAS_J*4 >> 16)); - } - dasm_put(Dst, 3048); - break; - - /* -- Unary ops --------------------------------------------------------- */ - - case BC_MOV: - dasm_put(Dst, 3059); - break; - case BC_NOT: - dasm_put(Dst, 3072, LJ_TTRUE); - break; - case BC_UNM: - dasm_put(Dst, 3088); - break; - case BC_LEN: - dasm_put(Dst, 3105, Dt5(->len)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 3129, Dt6(->metatable)); -#endif - dasm_put(Dst, 3136); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 3142, Dt6(->nomm), 1<base), 32-3, Dt1(->base)); - break; - - /* -- Constant ops ------------------------------------------------------ */ - - case BC_KSTR: - dasm_put(Dst, 3391, 32-1); - break; - case BC_KCDATA: -#if LJ_HASFFI - dasm_put(Dst, 3408, 32-1, LJ_TCDATA); -#endif - break; - case BC_KSHORT: - dasm_put(Dst, 3427, 32-3); - break; - case BC_KNUM: - dasm_put(Dst, 3443); - break; - case BC_KPRI: - dasm_put(Dst, 3456, 32-3); - break; - case BC_KNIL: - dasm_put(Dst, 3471); - break; - - /* -- Upvalue and function ops ------------------------------------------ */ - - case BC_UGET: - dasm_put(Dst, 3490, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETV: - dasm_put(Dst, 3511, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - break; - case BC_USETS: - dasm_put(Dst, 3563, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_GC_WHITES, GG_DISP2G); - break; - case BC_USETN: - dasm_put(Dst, 3612, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETP: - dasm_put(Dst, 3633, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v)); - break; - - case BC_UCLO: - dasm_put(Dst, 3656, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); - break; - - case BC_FNEW: - dasm_put(Dst, 3686, 32-1, Dt1(->base), Dt1(->base)); - break; - - /* -- Table ops --------------------------------------------------------- */ - - case BC_TNEW: - case BC_TDUP: - dasm_put(Dst, 3712, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); - if (op == BC_TNEW) { - dasm_put(Dst, 3725); - } else { - dasm_put(Dst, 3733, 32-1); - } - dasm_put(Dst, 3740, Dt1(->base)); - break; - - case BC_GGET: - case BC_GSET: - dasm_put(Dst, 3763, 32-1, Dt7(->env)); - if (op == BC_GGET) { - dasm_put(Dst, 3771); - } else { - dasm_put(Dst, 3774); - } - break; - - case BC_TGETV: - dasm_put(Dst, 3777, Dt6(->asize), Dt6(->array), 31-3, Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), DtB(->val), DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), 31-3, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); - break; - case BC_TSETS: - dasm_put(Dst, 4027, 32-1, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), DtB(->val), LJ_GC_BLACK, DtB(->val), Dt6(->metatable)); - dasm_put(Dst, 4088, Dt6(->nomm), 1<next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); - dasm_put(Dst, 4139, Dt6(->marked), Dt6(->gclist)); - break; - case BC_TSETB: - dasm_put(Dst, 4146, 32-3, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked)); - dasm_put(Dst, 4206, Dt6(->gclist)); - break; - - case BC_TSETM: - dasm_put(Dst, 4211, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); - dasm_put(Dst, 4280); - break; - - /* -- Calls and vararg handling ----------------------------------------- */ - - case BC_CALLM: - dasm_put(Dst, 4283); - break; - case BC_CALL: - dasm_put(Dst, 4285, Dt7(->pc)); - break; - - case BC_CALLMT: - dasm_put(Dst, 4305); - break; - case BC_CALLT: - dasm_put(Dst, 4307, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); - dasm_put(Dst, 4372, FRAME_TYPE); - break; - - case BC_ITERC: - dasm_put(Dst, 4379, Dt7(->pc)); - break; - - case BC_ITERN: -#if LJ_HASJIT -#endif - dasm_put(Dst, 4405, Dt6(->asize), Dt6(->array), 31-3, -(BCBIAS_J*4 >> 16), Dt6(->hmask), Dt6(->node), 31-5, 31-3, DtB(->key), -(BCBIAS_J*4 >> 16)); - dasm_put(Dst, 4484); - break; - - case BC_ISNEXT: - dasm_put(Dst, 4488, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); - break; - - case BC_VARG: - dasm_put(Dst, 4539, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); - dasm_put(Dst, 4619); - break; - - /* -- Returns ----------------------------------------------------------- */ - - case BC_RETM: - dasm_put(Dst, 4625); - break; - - case BC_RET: - dasm_put(Dst, 4627, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); - break; - - case BC_RET0: case BC_RET1: - dasm_put(Dst, 4697, FRAME_TYPE, FRAME_VARG); - if (op == BC_RET1) { - dasm_put(Dst, 4710); - } - dasm_put(Dst, 4713, Dt7(->pc), PC2PROTO(k)); - break; - - /* -- Loops and branches ------------------------------------------------ */ - - case BC_FORL: -#if LJ_HASJIT - dasm_put(Dst, 4741); -#endif - break; - - case BC_JFORI: - case BC_JFORL: -#if !LJ_HASJIT - break; -#endif - case BC_FORI: - case BC_IFORL: - vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 4743, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); - if (!vk) { - dasm_put(Dst, 4751); - } - if (vk) { - dasm_put(Dst, 4759, FORL_IDX*8); - } - dasm_put(Dst, 4763, FORL_EXT*8); - if (op != BC_JFORL) { - dasm_put(Dst, 4771, 32-1); - if (op == BC_JFORI) { - dasm_put(Dst, 4775, -(BCBIAS_J*4 >> 16)); - } else { - dasm_put(Dst, 4778, -(BCBIAS_J*4 >> 16)); - } - } - if (op == BC_FORI) { - dasm_put(Dst, 4781); - } else if (op == BC_IFORL) { - dasm_put(Dst, 4783); - } else { - dasm_put(Dst, 4785, BC_JLOOP); - } - dasm_put(Dst, 4788); - break; - - case BC_ITERL: -#if LJ_HASJIT - dasm_put(Dst, 4803); -#endif - break; - - case BC_JITERL: -#if !LJ_HASJIT - break; -#endif - case BC_IITERL: - dasm_put(Dst, 4805); - if (op == BC_JITERL) { - dasm_put(Dst, 4811); - } else { - dasm_put(Dst, 4813, 32-1, -(BCBIAS_J*4 >> 16)); - } - dasm_put(Dst, 4820); - break; - - case BC_LOOP: -#if LJ_HASJIT - dasm_put(Dst, 4832); -#endif - break; - - case BC_ILOOP: - dasm_put(Dst, 4834); - break; - - case BC_JLOOP: -#if LJ_HASJIT - dasm_put(Dst, 4845); -#endif - break; - - case BC_JMP: - dasm_put(Dst, 4847, 32-1, -(BCBIAS_J*4 >> 16)); - break; - - /* -- Function headers -------------------------------------------------- */ - - case BC_FUNCF: -#if LJ_HASJIT - dasm_put(Dst, 4863); -#endif - case BC_FUNCV: /* NYI: compiled vararg functions. */ - break; - - case BC_JFUNCF: -#if !LJ_HASJIT - break; -#endif - case BC_IFUNCF: - dasm_put(Dst, 4865, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); - if (op == BC_JFUNCF) { - dasm_put(Dst, 4883); - } else { - dasm_put(Dst, 4885); - } - dasm_put(Dst, 4894); - break; - - case BC_JFUNCV: -#if !LJ_HASJIT - break; -#endif - dasm_put(Dst, 4900); - break; /* NYI: compiled vararg functions. */ - - case BC_IFUNCV: - dasm_put(Dst, 4902, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams)); - break; - - case BC_FUNCC: - case BC_FUNCCW: - if (op == BC_FUNCC) { - dasm_put(Dst, 4952, Dt8(->f)); - } else { - dasm_put(Dst, 4955, DISPATCH_GL(wrapf)); - } - dasm_put(Dst, 4958, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); - if (op == BC_FUNCCW) { - dasm_put(Dst, 4971, Dt8(->f)); - } - dasm_put(Dst, 4974, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); - break; - - /* ---------------------------------------------------------------------- */ - - default: - fprintf(stderr, "Error: undefined opcode BC_%s\n", bc_names[op]); - exit(2); - break; - } -} - -static int build_backend(BuildCtx *ctx) -{ - int op; - - dasm_growpc(Dst, BC__MAX); - - build_subroutines(ctx); - - dasm_put(Dst, 4995); - for (op = 0; op < BC__MAX; op++) - build_ins(ctx, (BCOp)op, op); - - return BC__MAX; -} - -/* Emit pseudo frame-info for all assembler functions. */ -static void emit_asm_debug(BuildCtx *ctx) -{ - int i; - switch (ctx->mode) { - case BUILD_elfasm: - fprintf(ctx->fp, "\t.section .debug_frame,\"\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe0:\n" - "\t.long .LECIE0-.LSCIE0\n" - ".LSCIE0:\n" - "\t.long 0xffffffff\n" - "\t.byte 0x1\n" - "\t.string \"\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 65\n" - "\t.byte 0xc\n\t.uleb128 1\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE0:\n\n"); - fprintf(ctx->fp, - ".LSFDE0:\n" - "\t.long .LEFDE0-.LASFDE0\n" - ".LASFDE0:\n" - "\t.long .Lframe0\n" - "\t.long .Lbegin\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" - "\t.byte 0x5\n\t.uleb128 70\n\t.sleb128 37\n", - (int)ctx->codesz, CFRAME_SIZE); - for (i = 14; i <= 31; i++) - fprintf(ctx->fp, - "\t.byte %d\n\t.uleb128 %d\n" - "\t.byte 5\n\t.uleb128 %d\n\t.uleb128 %d\n", - 0x80+i, 1+2*(31-i), 1200+i, 2+2*(31-i)); - fprintf(ctx->fp, - "\t.align 2\n" - ".LEFDE0:\n\n"); - fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe1:\n" - "\t.long .LECIE1-.LSCIE1\n" - ".LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zPR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -4\n" - "\t.byte 65\n" - "\t.uleb128 6\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.long lj_err_unwind_dwarf-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 1\n\t.uleb128 0\n" - "\t.align 2\n" - ".LECIE1:\n\n"); - fprintf(ctx->fp, - ".LSFDE1:\n" - "\t.long .LEFDE1-.LASFDE1\n" - ".LASFDE1:\n" - "\t.long .LASFDE1-.Lframe1\n" - "\t.long .Lbegin-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" - "\t.byte 0x5\n\t.uleb128 70\n\t.sleb128 37\n", - (int)ctx->codesz, CFRAME_SIZE); - for (i = 14; i <= 31; i++) - fprintf(ctx->fp, - "\t.byte %d\n\t.uleb128 %d\n" - "\t.byte 5\n\t.uleb128 %d\n\t.uleb128 %d\n", - 0x80+i, 1+2*(31-i), 1200+i, 2+2*(31-i)); - fprintf(ctx->fp, - "\t.align 2\n" - ".LEFDE1:\n\n"); - break; - default: - break; - } -} - diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h deleted file mode 100644 index 55b22b2e..00000000 --- a/src/buildvm_x64.h +++ /dev/null @@ -1,3406 +0,0 @@ -/* -** This file has been pre-processed with DynASM. -** http://luajit.org/dynasm.html -** DynASM version 1.3.0, DynASM x64 version 1.3.0 -** DO NOT EDIT! The original file is in "buildvm_x86.dasc". -*/ - -#if DASM_VERSION != 10300 -#error "Version mismatch between DynASM and included encoding engine" -#endif - -#define DASM_SECTION_CODE_OP 0 -#define DASM_SECTION_CODE_SUB 1 -#define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[16378] = { - 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141, - 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4, - 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133, - 244,10,65,199,134,233,237,131,227,252,248,41,211,252,247,219,131,232,1,15, - 132,244,248,248,1,72,139,44,10,72,137,106,252,248,131,194,8,131,232,1,15, - 133,244,1,248,2,255,139,108,36,24,137,157,233,248,3,139,68,36,4,139,76,36, - 16,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,15,72, - 139,76,36,32,72,137,141,233,49,192,248,16,72,131,196,40,65,94,65,95,91,93, - 195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131, - 194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,20, - 202,252,233,244,5,248,8,137,149,233,137,68,36,4,137,206,137,252,239,232,251, - 1,0,139,149,233,252,233,244,3,248,17,137,252,240,72,137,252,252,248,18,139, - 108,36,24,139,173,233,199,133,233,237,252,233,244,16,248,19,139,124,36,24, - 137,198,72,131,196,40,65,94,65,95,91,93,252,233,251,1,1,248,20,72,129,231, - 239,72,137,252,252,248,21,255,139,108,36,24,72,199,193,252,248,252,255,252, - 255,252,255,184,237,139,149,233,68,139,181,233,65,129,198,239,139,90,252, - 252,199,66,252,252,237,65,199,134,233,237,252,233,244,12,248,22,190,237,252, - 233,244,248,248,23,131,232,8,252,233,244,247,248,24,141,68,194,252,248,248, - 1,15,182,139,233,131,195,4,137,149,233,255,137,133,233,137,92,36,28,137,206, - 248,2,137,252,239,232,251,1,0,139,149,233,139,133,233,139,106,252,248,41, - 208,193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,182,205,131, - 195,4,65,252,255,36,252,238,248,25,85,83,65,87,65,86,72,131,252,236,40,137, - 252,253,137,124,36,24,137,252,241,187,237,49,192,76,141,188,253,36,233,68, - 139,181,233,65,129,198,239,76,137,189,233,137,68,36,28,72,137,68,36,32,137, - 68,36,16,137,68,36,20,56,133,233,15,132,244,249,65,199,134,233,237,136,133, - 233,139,149,233,139,133,233,41,200,193,232,3,131,192,1,41,209,139,90,252, - 252,137,68,36,4,252,247,195,237,255,15,132,244,13,252,233,244,14,248,26,85, - 83,65,87,65,86,72,131,252,236,40,187,237,137,76,36,20,252,233,244,247,248, - 27,85,83,65,87,65,86,72,131,252,236,40,187,237,248,1,137,84,36,16,137,252, - 253,137,124,36,24,137,252,241,76,139,189,233,76,137,124,36,32,137,108,36, - 28,72,137,165,233,248,2,68,139,181,233,65,129,198,239,248,3,65,199,134,233, - 237,139,149,233,255,1,203,41,211,139,133,233,41,200,193,232,3,131,192,1,248, - 28,139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,30,137,202,137, - 90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252, - 255,36,252,238,248,31,85,83,65,87,65,86,72,131,252,236,40,137,252,253,137, - 124,36,24,137,108,36,28,68,139,189,233,68,43,189,233,199,68,36,20,0,0,0,0, - 68,137,124,36,16,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,209, - 133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,227, - 252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,72,99, - 77,252,240,255,131,252,249,1,15,134,244,247,255,76,141,61,245,76,1,252,249, - 255,68,139,122,252,248,69,139,191,233,69,139,191,233,252,255,225,255,248, - 1,15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248, - 34,15,182,75,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252, - 247,217,193,252,233,3,139,124,36,24,137,151,233,137,202,72,139,8,72,137,77, - 0,137,252,238,252,233,244,36,248,37,137,4,36,199,68,36,4,237,72,141,4,36, - 128,123,252,252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137, - 205,252,233,244,248,248,38,15,182,67,252,254,255,199,68,36,4,237,137,4,36, - 255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,4,36,252,233,244,247, - 248,39,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234, - 248,2,139,124,36,24,137,151,233,137,252,238,72,137,194,137,252,253,137,92, - 36,28,232,251,1,2,139,149,233,133,192,15,132,244,249,248,35,15,182,75,252, - 253,72,139,40,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232, - 16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,141,153,233,41, - 211,139,105,252,248,184,237,252,233,244,30,248,40,137,4,36,199,68,36,4,237, - 72,141,4,36,128,123,252,252,235,15,133,244,247,255,65,141,142,233,137,41, - 199,65,4,237,137,205,252,233,244,248,248,41,15,182,67,252,254,255,72,141, - 4,36,252,233,244,247,248,42,15,182,67,252,254,141,4,194,248,1,15,182,107, - 252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252,238,72,137, - 194,137,252,253,137,92,36,28,232,251,1,3,139,149,233,133,192,15,132,244,249, - 15,182,75,252,253,72,139,44,202,72,137,40,248,43,139,3,15,182,204,15,182, - 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252, - 244,15,182,67,252,253,72,139,44,194,72,137,105,16,141,153,233,41,211,139, - 105,252,248,184,237,252,233,244,30,248,44,139,108,36,24,137,149,233,141,52, - 202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,28,232,251,1,4,248, - 3,139,149,233,255,131,252,248,1,15,135,244,45,248,4,141,91,4,15,130,244,252, - 248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15,182, - 232,131,195,4,193,232,16,65,252,255,36,252,238,248,46,131,195,4,129,120,253, - 4,239,15,130,244,5,252,233,244,6,248,47,129,120,253,4,239,252,233,244,4,248, - 48,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255,137,194, - 137,252,239,137,92,36,28,232,251,1,5,252,233,244,3,248,49,255,131,252,235, - 4,139,108,36,24,137,149,233,137,252,239,139,115,252,252,137,92,36,28,232, - 251,1,6,252,233,244,3,255,248,50,255,15,182,107,252,255,255,248,51,65,141, - 4,199,252,233,244,247,248,52,255,248,53,65,141,4,199,141,44,252,234,149,252, - 233,244,248,248,54,141,4,194,137,197,252,233,244,248,248,55,255,248,56,141, - 4,194,248,1,141,44,252,234,248,2,141,12,202,68,15,182,67,252,252,137,206, - 137,193,139,124,36,24,137,151,233,137,252,234,137,252,253,137,92,36,28,232, - 251,1,7,139,149,233,133,192,15,132,244,43,248,45,137,193,41,208,137,89,252, - 244,141,152,233,184,237,252,233,244,28,248,57,139,108,36,24,137,149,233,141, - 52,194,137,252,239,137,92,36,28,232,251,1,8,139,149,233,255,133,192,15,133, - 244,45,15,183,67,252,254,139,60,194,252,233,244,58,255,252,233,244,45,255, - 248,59,141,76,202,8,248,29,137,76,36,4,137,4,36,131,252,233,8,139,108,36, - 24,137,149,233,137,206,141,20,193,137,252,239,137,92,36,28,232,251,1,9,139, - 149,233,139,76,36,4,139,4,36,139,105,252,248,131,192,1,65,57,215,15,132,244, - 60,137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131, - 195,4,65,252,255,36,252,238,248,61,139,108,36,24,137,149,233,137,206,137, - 252,239,137,92,36,28,232,251,1,10,139,149,233,139,67,252,252,15,182,204,15, - 182,232,193,232,16,65,252,255,164,253,252,238,233,248,62,129,252,248,239, - 15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,137, - 68,36,4,137,106,252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255, - 137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244, - 1,248,2,139,68,36,4,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139, - 106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237, - 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248, - 2,139,106,252,248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137, - 66,252,248,252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248, - 239,15,130,244,63,139,106,4,139,90,252,252,129,252,253,239,15,133,244,252, - 248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132, - 244,66,65,139,134,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136, - 233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233, - 15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66, - 248,5,139,105,4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66, - 252,248,252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239, - 15,135,244,254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248, - 7,255,189,237,248,8,252,247,213,65,139,172,253,174,233,252,233,244,2,248, - 68,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131, - 189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133, - 233,139,90,252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233, - 235,15,132,244,247,128,165,233,235,65,139,134,233,65,137,174,233,137,133, - 233,248,1,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253, - 4,239,15,133,244,63,137,213,139,50,141,82,8,139,124,36,24,232,251,1,11,137, - 252,234,72,139,40,139,90,252,252,72,137,106,252,248,252,233,244,66,248,70, - 255,129,252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139, - 42,252,233,244,71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16, - 2,252,233,244,72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130, - 244,63,139,90,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66, - 252,252,237,137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135, - 244,63,65,131,190,233,0,15,133,244,63,65,139,174,233,65,59,174,233,255,15, - 130,244,247,232,244,75,248,1,139,108,36,24,137,149,233,137,92,36,28,137,214, - 137,252,239,255,232,251,1,12,255,232,251,1,13,255,139,149,233,252,233,244, - 2,248,76,129,252,248,239,15,130,244,63,15,132,244,248,248,1,129,122,253,4, - 239,15,133,244,63,139,108,36,24,137,149,233,137,149,233,139,90,252,252,139, - 50,141,82,8,137,252,239,137,92,36,28,232,251,1,14,139,149,233,133,192,15, - 132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77, - 184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66, - 252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139,42,129, - 122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139,106,252, - 248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,199,66,12, - 237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63,129,122,253, - 4,239,15,133,244,63,129,122,253,12,239,255,139,90,252,252,255,139,66,8,131, - 192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237, - 237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66, - 252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129, - 120,253,4,239,15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131, - 189,233,0,15,132,244,81,137,252,239,137,213,137,198,232,251,1,15,137,252, - 234,133,192,15,133,244,1,248,81,184,237,252,233,244,78,248,82,255,139,106, - 252,248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,255, - 199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252, - 238,221,90,8,255,184,237,252,233,244,78,248,83,129,252,248,239,15,130,244, - 63,141,74,8,131,232,1,187,237,248,1,65,15,182,174,233,193,252,237,235,131, - 229,1,1,252,235,252,233,244,28,248,84,129,252,248,239,15,130,244,63,129,122, - 253,12,239,15,133,244,63,255,139,106,4,137,106,12,199,66,4,237,139,42,139, - 90,8,137,106,8,137,26,141,74,16,131,232,2,187,237,252,233,244,1,248,85,129, - 252,248,239,15,130,244,63,139,42,139,90,252,252,137,92,36,28,137,44,36,129, - 122,253,4,239,15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235, - 15,135,244,63,139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248, - 1,141,92,193,252,240,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137, - 149,233,131,194,8,137,149,233,141,108,194,232,72,41,221,57,203,15,132,244, - 249,248,2,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2, - 248,3,137,206,139,60,36,232,244,25,65,199,134,233,237,255,139,108,36,24,139, - 28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139, - 187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252, - 235,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4, - 41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237, - 248,7,139,92,36,28,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255, - 252,247,195,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237, - 139,139,233,131,252,233,8,137,139,233,72,139,1,72,137,2,184,237,252,233,244, - 7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,28,36, - 139,149,233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,90,252,252, - 137,92,36,28,137,44,36,72,131,189,233,0,15,133,244,63,255,128,189,233,235, - 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141, - 92,193,252,248,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137,149, - 233,137,149,233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2, - 255,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3, - 137,206,139,60,36,232,244,25,65,199,134,233,237,139,108,36,24,139,28,36,139, - 149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137, - 139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133, - 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193, - 8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,28,137,68,36, - 4,49,201,252,247,195,237,15,132,244,13,252,233,244,14,248,8,137,222,137,252, - 239,232,251,1,16,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251, - 1,0,139,28,36,139,149,233,252,233,244,4,248,87,139,108,36,24,72,252,247,133, - 233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,133,233,49,192, - 72,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71,255,248,73,139, - 90,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252,248,239,15,130, - 244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252,253,0,15,137,244, - 71,252,247,221,15,136,244,247,248,89,248,71,139,90,252,252,199,66,252,252, - 237,137,106,252,248,252,233,244,66,248,1,139,90,252,252,199,66,252,252,0, - 0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15,135,244,63,255,129, - 122,253,4,239,15,131,244,63,255,252,242,15,16,2,72,184,237,237,102,72,15, - 110,200,15,84,193,248,72,139,90,252,252,252,242,15,17,66,252,248,255,221, - 2,217,225,248,72,248,73,139,90,252,252,221,90,252,248,255,248,66,184,237, - 248,78,137,68,36,4,248,64,252,247,195,237,15,133,244,253,248,5,56,67,252, - 255,15,135,244,252,15,182,75,252,253,72,252,247,209,141,20,202,139,3,15,182, - 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,199,68,194, - 252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248,252,255,252, - 255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,15,133,244,247,139, - 42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,2,232,244,91,255, - 252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,242,15,42,205,102, - 15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,91,255,248,92,255, - 252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244, - 72,255,248,94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244, - 63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248,239,15,130,244, - 63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252,241,252,233, - 244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244, - 63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252,248,239,255, - 15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244, - 73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221, - 2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15,130,244,63,129, - 122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244,73,248,101,129, - 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242, - 221,216,252,233,244,73,248,102,129,252,248,239,15,130,244,63,255,129,122, - 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250, - 217,252,243,252,233,244,73,248,103,129,252,248,239,15,130,244,63,129,122, - 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250, - 217,201,217,252,243,252,233,244,73,248,104,129,252,248,239,15,130,244,63, - 129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243,252,233,244, - 73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244, - 63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72,255, - 248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252, - 242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,255,248,107, - 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15, - 16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,72,248,108,255,248, - 109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242, - 15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,248,109, - 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,139,106, - 252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,15,130,244, - 63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2, - 221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,244,63, - 129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,63,221, - 66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,239,15, - 130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,139,2,137, - 106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244, - 249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244, - 250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,44,36,219,4, - 36,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63, - 137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233, - 244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255, - 248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89, - 193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90,216,12,36,221, - 90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248, - 113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242, - 15,16,2,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131, - 244,63,221,2,255,139,106,4,139,90,252,252,209,229,129,252,253,0,0,224,252, - 255,15,132,244,250,255,15,40,224,232,244,114,252,242,15,92,224,248,1,252, - 242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,114,220,252,233, - 248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244, - 249,248,2,184,237,252,233,244,78,248,3,129,252,245,0,0,0,128,137,106,4,252, - 233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233, - 244,1,255,248,115,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131, - 244,63,129,122,253,12,239,15,131,244,63,221,66,8,221,2,248,1,217,252,248, - 223,224,158,15,138,244,1,221,217,252,233,244,73,255,248,116,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252,233,244,72,255,248, - 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122, - 253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252,233,244,73,255,248, - 118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193, - 15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248, - 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255,252, - 233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248,5,57,193,15,131,244, - 72,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,63,252,242,15, - 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248, - 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,119,185,2,0,0,0,129, - 122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124, - 253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248, - 131,193,1,252,233,244,1,248,3,15,135,244,63,255,248,6,252,242,15,16,76,202, - 252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216, - 252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252,242,15,42,133, - 233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121,129,252,248, - 239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139,90,252,252,131, - 189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42,197,252,233,244, - 72,255,137,44,36,219,4,36,252,233,244,73,255,248,122,65,139,174,233,65,59, - 174,233,15,130,244,247,232,244,75,248,1,129,252,248,239,15,133,244,63,129, - 122,253,4,239,255,15,133,244,63,139,42,129,252,253,252,255,0,0,0,15,135,244, - 63,137,108,36,4,255,15,131,244,63,252,242,15,44,42,129,252,253,252,255,0, - 0,0,15,135,244,63,137,108,36,4,255,15,131,244,63,221,2,219,92,36,4,129,124, - 36,4,252,255,0,0,0,15,135,244,63,255,199,68,36,8,1,0,0,0,72,141,68,36,4,248, - 123,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252,239,137,92,36, - 28,232,251,1,20,139,149,233,139,90,252,252,199,66,252,252,237,137,66,252, - 248,252,233,244,66,248,124,65,139,174,233,65,59,174,233,15,130,244,247,232, - 244,75,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,239, - 15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63,139,106, - 16,137,108,36,4,255,15,131,244,63,252,242,15,44,106,16,137,108,36,4,255,15, - 131,244,63,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,63, - 129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255,139,74,8,255,252, - 242,15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142, - 244,253,248,3,139,108,36,8,41,200,15,140,244,125,141,172,253,13,233,131,192, - 1,248,4,137,68,36,8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40, - 1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252, - 233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192, - 252,233,244,4,248,126,129,252,248,239,15,130,244,63,65,139,174,233,65,59, - 174,233,15,130,244,247,232,244,75,248,1,255,129,122,253,4,239,15,133,244, - 63,129,122,253,12,239,139,42,255,15,133,244,63,139,66,8,255,15,131,244,63, - 252,242,15,44,66,8,255,15,131,244,63,221,66,8,219,92,36,4,139,68,36,4,255, - 133,192,15,142,244,125,131,189,233,1,15,130,244,125,15,133,244,127,65,57, - 134,233,15,130,244,127,15,182,141,233,65,139,174,233,137,68,36,8,248,1,136, - 77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,233,244,123,248, - 128,129,252,248,239,255,15,130,244,63,65,139,174,233,65,59,174,233,15,130, - 244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233, - 133,192,15,132,244,125,65,57,134,233,15,130,244,129,129,197,239,137,92,36, - 4,137,68,36,8,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136, - 12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,123,248,130,129,252,248, - 239,15,130,244,63,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75, - 248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,255, - 15,130,244,129,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233, - 244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90, - 15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1, - 137,216,139,92,36,4,252,233,244,123,248,131,129,252,248,239,15,130,244,63, - 255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75,248,1,129,122, - 253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,15,130,244,129,129, - 197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182, - 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131, - 252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36, - 4,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,133,244,63,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252,233, - 244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248,239,15, - 130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248, - 1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252, - 242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248,239, - 15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,4,36,0,0,192,89, - 255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255,252,242, - 15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,4,141,68,194, - 252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35, - 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252, - 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233, - 244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11,40,131, - 232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242,15,88, - 193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252,248, - 239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2, - 15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205, - 255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129,122, - 253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15,130, - 244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15,42,197, - 252,233,244,72,255,248,135,139,68,36,4,252,233,244,63,255,248,140,129,252, - 248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133, - 244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15, - 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88, - 202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255,248,141, - 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252, - 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,252, - 237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129,122,253, - 4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131, - 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74, - 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102, - 15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248,143,129, - 252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248,239,15, - 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252, - 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,197, - 252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239, - 255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63, - 129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189, - 237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126, - 197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252,233,244, - 63,248,129,184,237,248,63,139,108,36,24,139,90,252,252,137,92,36,28,137,149, - 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233, - 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,143,244, - 78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252, - 248,15,133,244,33,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4, - 65,252,255,36,252,238,248,33,137,209,252,247,195,237,15,133,244,249,15,182, - 107,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137,221,131, - 229,252,248,41,252,234,252,233,244,28,248,5,190,237,137,252,239,232,251,1, - 0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,8,139,108,36,24, - 137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232, - 251,1,22,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36, - 8,85,195,248,145,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15, - 133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255, - 248,146,65,15,182,134,233,168,235,15,133,244,251,252,233,244,247,248,147, - 65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255, - 142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,24,137, - 149,233,137,222,137,252,239,232,251,1,23,248,3,139,149,233,248,4,15,182,75, - 252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252, - 238,233,248,148,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,149,255, - 139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,24,137,149, - 233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92,36,28,232,251, - 1,24,252,233,244,3,255,248,150,137,92,36,28,255,248,151,255,137,92,36,28, - 131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149,233,137,133, - 233,137,222,137,252,239,232,251,1,25,199,68,36,28,0,0,0,0,255,131,227,252, - 254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,75,252, - 253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83,65,82,65, - 81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101, - 252,240,76,137,125,252,248,76,137,117,252,240,68,139,117,0,65,139,142,233, - 65,199,134,233,237,65,137,134,233,65,137,142,233,72,129,252,236,239,72,131, - 197,128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242, - 68,15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242, - 68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15, - 17,125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101, - 160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242, - 15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233,65,199,134,233, - 0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,26,72,139,141,233, - 72,129,225,239,72,137,204,137,169,233,139,149,233,139,153,233,252,233,244, - 247,255,248,153,255,72,131,196,16,248,1,76,139,108,36,8,76,139,36,36,133, - 192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191,233,69,139,191, - 233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36,4,248,2,65, - 252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232,251,1,1,255, - 248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252, - 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68, - 36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,237,237,102, - 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, - 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102, - 72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40, - 193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36, - 4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108, - 36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,72,184, - 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244, - 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184, - 237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92, - 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12, - 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, - 68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,102, - 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, - 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72, - 15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86, - 202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184,237, - 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84, - 226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242, - 15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196, - 1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15, - 92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217, - 193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252, - 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252, - 233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,252,248,129,124, - 36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255, - 15,132,244,248,248,159,217,192,217,252,252,220,252,233,217,201,217,252,240, - 217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195, - 255,248,117,255,248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202, - 15,133,244,254,15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1, - 169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2, - 209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244, - 250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89, - 193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72, - 184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184, - 237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192, - 12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132, - 244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15, - 17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68,36, - 252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,217, - 232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36,252, - 248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,247, - 15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84,194, - 72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80,193, - 15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237,255, - 102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,192, - 195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,162,255,131, - 252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15,135, - 244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68,36, - 252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,98,252,233,244, - 253,248,1,232,244,158,255,252,233,244,253,248,2,131,252,255,7,15,132,244, - 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1, - 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132,244, - 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1, - 255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,135, - 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92, - 36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,4, - 131,252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15, - 135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,98,15,132,244, - 158,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252, - 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,9,15,132, - 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, - 252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255, - 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,131,252,255, - 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92, - 193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,193, - 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,157,15,132, - 244,117,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102, - 72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,84, - 193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,252, - 242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,247, - 217,252,243,248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,248,1, - 217,201,217,252,253,221,217,252,233,244,7,248,2,131,252,255,11,15,132,244, - 247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248, - 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, - 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, - 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, - 252,248,5,15,130,244,157,15,132,244,117,131,252,248,7,15,132,244,247,15,135, - 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, - 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, - 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, - 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, - 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, - 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, - 164,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,165, - 255,204,248,166,255,83,65,87,65,86,72,131,252,236,40,68,141,181,233,139,157, - 233,15,183,192,137,131,233,72,137,187,233,72,137,179,233,72,137,147,233,72, - 137,139,233,252,242,15,17,131,233,252,242,15,17,139,233,252,242,15,17,147, - 233,252,242,15,17,155,233,72,141,132,253,36,233,76,137,131,233,76,137,139, - 233,252,242,15,17,163,233,252,242,15,17,171,233,252,242,15,17,179,233,252, - 242,15,17,187,233,72,137,131,233,72,137,230,137,92,36,28,137,223,232,251, - 1,27,65,199,134,233,237,255,139,144,233,139,128,233,41,208,139,106,252,248, - 193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,182,205,131,195, - 4,65,252,255,36,252,238,255,248,32,255,139,76,36,24,65,139,158,233,72,137, - 139,233,137,145,233,137,169,233,137,223,137,198,232,251,1,28,72,139,131,233, - 252,242,15,16,131,233,252,233,244,16,255,248,167,255,85,72,137,229,83,72, - 137,252,251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136, - 244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1, - 15,137,244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147, - 233,72,139,139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15, - 40,131,233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15, - 134,244,251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5, - 252,255,147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233, - 255,72,139,93,252,248,201,195,255,129,124,253,202,4,239,15,133,244,253,129, - 124,253,194,4,239,15,133,244,254,139,44,202,131,195,4,59,44,194,255,15,141, - 244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,248, - 6,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,44,129,124,253, - 194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244, - 248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252, - 242,15,42,12,202,252,242,15,16,4,194,131,195,4,102,15,46,193,255,15,134,244, - 9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255, - 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124, - 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,195,4, - 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,195,4, - 255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,135,244,247,255, - 15,130,244,247,255,15,131,244,247,255,15,183,67,252,254,141,156,253,131,233, - 248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,255,139,108,194,4,131,195,4,255,129,252,253,239,15,133,244,253,129,124, - 253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,133,244,255,255, - 15,132,244,255,255,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182, - 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244, - 251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,252,242,15,42, - 4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,255,252,242, - 15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,244,250,255, - 129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,251,255,248, - 1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202,248, - 2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15, - 132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248, - 2,15,183,67,252,254,141,156,253,131,233,248,1,255,252,233,244,9,255,248,5, - 255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255, - 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, - 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244, - 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255, - 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255, - 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,195, - 4,129,252,253,239,15,133,244,249,139,12,202,65,59,12,135,255,139,108,202, - 4,131,195,4,255,129,252,253,239,15,133,244,253,65,129,124,253,199,4,239,15, - 133,244,254,65,139,44,199,59,44,202,255,15,183,67,252,254,141,156,253,131, - 233,248,9,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,248,7,15,135,244,249,65,129,124,253,199,4,239,15,130,244,247,255, - 252,242,65,15,42,4,199,255,65,219,4,199,255,252,233,244,248,248,8,255,252, - 242,15,42,4,202,102,65,15,46,4,199,255,219,4,202,65,221,4,199,255,129,252, - 253,239,15,131,244,249,255,248,1,252,242,65,15,16,4,199,248,2,102,15,46,4, - 202,248,4,255,248,1,65,221,4,199,248,2,221,4,202,248,4,255,72,252,247,208, - 139,108,202,4,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254,141,156, - 253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, - 255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132, - 244,248,129,252,253,239,15,132,244,49,15,183,67,252,254,141,156,253,131,233, - 248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,255,139,108,194,4,131,195,4,129,252,253,239,255,137,108,202,4,139,44, - 194,137,44,202,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194, - 4,239,129,213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193, - 232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,133,244,251,139, - 44,194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,3, - 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,199, - 68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255, - 129,124,253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,72,184,237,237, - 102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221, - 28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233, - 248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248, - 1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204, - 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194, - 4,239,15,133,244,57,139,60,194,255,139,175,233,131,252,253,0,15,133,244,255, - 248,3,255,248,58,137,213,232,251,1,21,255,252,242,15,42,192,255,137,252,234, - 15,182,75,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244, - 3,252,233,244,57,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4, - 239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65, - 3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129, - 124,253,199,4,239,15,133,244,53,65,139,4,199,3,4,252,234,15,128,244,52,255, - 129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244, - 56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237,255,129,124, - 253,252,234,4,239,15,131,244,51,255,65,129,124,253,199,4,239,15,131,244,51, - 255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,220, - 4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,65,129,124,253,199, - 4,239,15,131,244,53,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255, - 65,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129, - 124,253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88, - 4,194,255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244, - 51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65,43,44,199,15, - 128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129,124,253,199, - 4,239,15,133,244,53,65,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253, - 252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252, - 234,43,44,194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,65,15,92, - 4,199,255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242, - 15,92,4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234, - 252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,252,234, - 4,239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234, - 65,15,175,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53, - 65,129,124,253,199,4,239,15,133,244,53,65,139,4,199,15,175,4,252,234,15,128, - 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239, - 15,133,244,56,139,44,252,234,15,175,44,194,15,128,244,55,255,252,242,15,16, - 4,252,234,252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252, - 242,65,15,16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234, - 255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12, - 194,255,252,242,15,16,4,252,234,252,242,65,15,94,4,199,255,221,4,252,234, - 65,220,52,199,255,252,242,65,15,16,4,199,252,242,15,94,4,252,234,255,65,221, - 4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255, - 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12, - 199,255,221,4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15, - 16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234, - 252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,157, - 255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139,124, - 36,24,137,151,233,141,52,194,137,194,41,252,234,248,36,137,252,253,137,92, - 36,28,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,107,252,255,15, - 182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135, - 199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232, - 16,65,252,255,36,252,238,255,15,191,192,199,68,202,4,237,137,4,202,255,15, - 191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28,202, - 255,252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28,202, - 255,72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4,193, - 232,16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137,105, - 252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15,182, - 232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172, - 253,133,233,139,173,233,72,139,69,0,72,137,4,202,139,3,15,182,204,15,182, - 232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172, - 253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137, - 69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, - 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239, - 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238, - 137,213,65,141,190,233,255,232,251,1,30,137,252,234,252,233,244,1,255,72, - 252,247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233, - 137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, - 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129, - 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190, - 233,232,251,1,30,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, - 65,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255, - 221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233, - 137,65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137, - 149,233,141,52,202,137,252,239,232,251,1,31,139,149,233,248,1,139,3,15,182, - 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247, - 208,139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137, - 92,36,28,232,251,1,32,139,149,233,15,182,75,252,253,137,4,202,199,68,202, - 4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,255,139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36, - 28,15,131,244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255, - 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,33,139,149,233,15, - 182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131, - 195,4,193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248, - 5,137,252,239,232,251,1,34,15,183,67,252,254,252,233,244,1,255,72,252,247, - 208,139,108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15, - 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,35,139,149,233,15,182, - 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195, - 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,34,15,183, - 67,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248, - 139,173,233,65,139,4,135,252,233,244,169,255,72,252,247,208,139,106,252,248, - 139,173,233,65,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192,129, - 124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194,4, - 239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255, - 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, - 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253, - 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182, - 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132, - 244,249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,75,252,253,248, - 3,199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, - 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208, - 65,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169, - 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, - 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, - 67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68, - 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139, - 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244, - 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38, - 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4, - 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182, - 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132, - 244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,75,252,253, - 248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124, - 253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133, - 233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, - 1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,3, - 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131, - 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42, - 15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42, - 139,4,194,252,233,244,170,248,7,128,165,233,235,65,139,142,233,65,137,174, - 233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,182, - 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139, - 44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141, - 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121, - 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248, - 3,15,182,67,252,253,72,139,44,194,72,137,41,139,3,15,182,204,15,182,232,131, - 195,4,193,232,16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137, - 12,36,139,141,233,252,246,129,233,235,15,132,244,40,139,12,36,252,233,244, - 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244, - 252,252,246,129,233,235,15,132,244,40,248,6,137,4,36,199,68,36,4,237,137, - 108,36,8,139,124,36,24,137,151,233,72,141,20,36,137,252,238,137,252,253,137, - 92,36,28,232,251,1,36,139,149,233,139,108,36,8,137,193,252,233,244,2,248, - 7,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,3, - 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139, - 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239, - 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202, - 72,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235, - 15,132,244,41,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139, - 142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,68, - 137,60,36,69,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233, - 235,15,133,244,253,248,2,139,68,36,4,131,232,1,15,132,244,250,68,1,252,248, - 59,133,233,15,135,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,72, - 139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139, - 60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,248,5,139,124,36,24,137,151,233,137,252,238,137,194,137,252,253,137,92, - 36,28,232,251,1,37,139,149,233,15,182,75,252,253,252,233,244,1,248,7,255, - 128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,2,255, - 3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,59,141,84,202,8, - 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65, - 252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,129,121,253, - 252,252,239,15,133,244,29,248,60,139,90,252,252,252,247,195,237,15,133,244, - 253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139, - 41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248, - 248,3,139,68,36,4,128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15, - 182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,5,255,252,247, - 195,237,15,133,244,4,15,182,75,252,253,72,252,247,209,141,12,202,68,139,121, - 252,248,69,139,191,233,69,139,191,233,252,233,244,4,248,7,129,252,235,239, - 252,247,195,237,15,133,244,254,41,218,65,137,215,139,90,252,252,252,233,244, - 1,248,8,129,195,239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139, - 65,252,240,72,137,41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137, - 65,252,252,129,252,248,239,184,237,15,133,244,29,137,202,137,90,252,252,139, - 157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238, - 255,68,137,60,36,68,137,116,36,4,139,108,202,252,240,139,68,202,252,248,68, - 139,181,233,131,195,4,68,139,189,233,248,1,68,57,252,240,15,131,244,251,65, - 129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,255,73,139,44, - 199,72,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,67,252, - 254,141,156,253,131,233,248,3,68,139,116,36,4,68,139,60,36,139,3,15,182,204, - 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,131,192,1,255, - 137,68,202,252,248,255,252,233,244,1,248,5,68,41,252,240,248,6,59,133,233, - 15,135,244,3,68,105,252,248,239,68,3,189,233,65,129,191,233,239,15,132,244, - 253,70,141,116,48,1,73,139,175,233,73,139,135,233,72,137,44,202,72,137,68, - 202,8,68,137,116,202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6, - 255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,124,253, - 202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,244,251, - 128,189,233,235,15,133,244,251,141,156,253,131,233,199,68,202,252,248,0,0, - 0,0,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,248,5,198,67,252,252,235,141,156,253,131,233,198,3,235,252,233,244, - 1,255,15,182,252,236,15,182,192,68,137,60,36,68,141,188,253,194,233,141,12, - 202,68,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248, - 65,57,215,15,131,244,248,248,1,73,139,71,252,248,65,131,199,8,72,137,1,131, - 193,8,57,252,233,15,131,244,249,65,57,215,15,130,244,1,248,2,199,65,4,237, - 131,193,8,57,252,233,15,130,244,2,248,3,68,139,60,36,139,3,15,182,204,15, - 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,199,68,36,4,1,0, - 0,0,137,208,68,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137, - 108,36,4,139,108,36,24,1,200,59,133,233,15,135,244,253,248,6,255,73,139,71, - 252,248,65,131,199,8,72,137,1,131,193,8,65,57,215,15,130,244,6,252,233,244, - 3,248,7,137,149,233,137,141,233,137,92,36,28,65,41,215,139,116,36,4,131,252, - 238,1,137,252,239,232,251,1,0,139,149,233,139,141,233,65,1,215,252,233,244, - 6,255,193,225,3,255,248,1,139,90,252,252,137,68,36,4,252,247,195,237,15,133, - 244,253,255,248,13,65,137,215,131,232,1,15,132,244,249,248,2,73,139,44,15, - 73,137,111,252,248,65,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,4, - 15,182,107,252,255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106, - 252,248,255,248,5,56,67,252,255,15,135,244,252,255,15,182,75,252,253,72,252, - 247,209,141,20,202,68,139,122,252,248,69,139,191,233,69,139,191,233,139,3, - 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,255, - 65,199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192, - 1,252,233,244,5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234, - 255,1,252,233,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233, - 238,15,130,244,149,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255, - 129,121,253,12,239,15,133,244,61,129,121,253,20,239,15,133,244,61,139,41, - 131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,165,129,121, - 253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136,244,251,3,41, - 15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244, - 253,248,1,248,6,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252, - 254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,156,253,131,233,248, - 1,255,248,7,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,255,141,156,253, - 131,233,15,183,67,252,254,15,141,245,255,15,140,244,7,255,252,233,244,6,248, - 9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12,239,15,131,244,61, - 255,129,121,253,12,239,15,131,244,165,129,121,253,20,239,15,131,244,165,255, - 139,105,20,255,129,252,253,239,15,131,244,61,255,252,242,15,16,1,252,242, - 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244, - 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221, - 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255, - 221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,67,252,254,255,15,131, - 244,7,255,15,131,244,248,141,156,253,131,233,255,141,156,253,131,233,15,183, - 67,252,254,15,131,245,255,15,130,244,7,255,15,130,244,248,141,156,253,131, - 233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252, - 253,239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233, - 245,255,141,156,253,131,233,139,1,137,105,252,252,137,65,252,248,255,65,139, - 142,233,139,4,129,72,139,128,233,139,108,36,24,65,137,150,233,65,137,174, - 233,76,137,36,36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156, - 253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,238, - 15,130,244,151,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15, - 135,244,24,15,182,139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254, - 252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244, - 3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252, - 252,68,137,120,252,248,139,108,36,24,141,12,200,59,141,233,15,135,244,23, - 137,209,137,194,15,182,171,233,133,252,237,15,132,244,248,248,1,131,193,8, - 57,209,15,131,244,249,68,139,121,252,248,68,137,56,68,139,121,252,252,68, - 137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255, - 68,139,187,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255, - 36,252,238,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252, - 233,244,2,255,139,106,252,248,76,139,189,233,139,108,36,24,141,68,194,252, - 248,137,149,233,141,136,233,59,141,233,137,133,233,255,76,137,252,254,137, - 252,239,255,15,135,244,22,65,199,134,233,237,255,65,252,255,215,255,65,252, - 255,150,233,255,65,199,134,233,237,139,149,233,141,12,194,252,247,217,3,141, - 233,139,90,252,252,252,233,244,12,255,254,0 -}; - -enum { - GLOB_vm_returnp, - GLOB_cont_dispatch, - GLOB_vm_returnc, - GLOB_BC_RET_Z, - GLOB_vm_return, - GLOB_vm_leave_cp, - GLOB_vm_leave_unw, - GLOB_vm_unwind_c, - GLOB_vm_unwind_c_eh, - GLOB_vm_unwind_rethrow, - GLOB_vm_unwind_ff, - GLOB_vm_unwind_ff_eh, - GLOB_vm_growstack_c, - GLOB_vm_growstack_v, - GLOB_vm_growstack_f, - GLOB_vm_resume, - GLOB_vm_pcall, - GLOB_vm_call, - GLOB_vm_call_dispatch, - GLOB_vmeta_call, - GLOB_vm_call_dispatch_f, - GLOB_vm_cpcall, - GLOB_cont_ffi_callback, - GLOB_vm_call_tail, - GLOB_cont_cat, - GLOB_cont_ra, - GLOB_BC_CAT_Z, - GLOB_vmeta_tgets, - GLOB_vmeta_tgetb, - GLOB_vmeta_tgetv, - GLOB_vmeta_tsets, - GLOB_vmeta_tsetb, - GLOB_vmeta_tsetv, - GLOB_cont_nop, - GLOB_vmeta_comp, - GLOB_vmeta_binop, - GLOB_cont_condt, - GLOB_cont_condf, - GLOB_vmeta_equal, - GLOB_vmeta_equal_cd, - GLOB_vmeta_arith_vno, - GLOB_vmeta_arith_vn, - GLOB_vmeta_arith_nvo, - GLOB_vmeta_arith_nv, - GLOB_vmeta_unm, - GLOB_vmeta_arith_vvo, - GLOB_vmeta_arith_vv, - GLOB_vmeta_len, - GLOB_BC_LEN_Z, - GLOB_vmeta_call_ra, - GLOB_BC_CALLT_Z, - GLOB_vmeta_for, - GLOB_ff_assert, - GLOB_fff_fallback, - GLOB_fff_res_, - GLOB_ff_type, - GLOB_fff_res1, - GLOB_ff_getmetatable, - GLOB_ff_setmetatable, - GLOB_ff_rawget, - GLOB_ff_tonumber, - GLOB_fff_resi, - GLOB_fff_resxmm0, - GLOB_fff_resn, - GLOB_ff_tostring, - GLOB_fff_gcstep, - GLOB_ff_next, - GLOB_fff_res2, - GLOB_fff_res, - GLOB_ff_pairs, - GLOB_ff_ipairs_aux, - GLOB_fff_res0, - GLOB_ff_ipairs, - GLOB_ff_pcall, - GLOB_ff_xpcall, - GLOB_ff_coroutine_resume, - GLOB_ff_coroutine_wrap_aux, - GLOB_ff_coroutine_yield, - GLOB_ff_math_abs, - GLOB_fff_resbit, - GLOB_ff_math_floor, - GLOB_vm_floor, - GLOB_ff_math_ceil, - GLOB_vm_ceil, - GLOB_ff_math_sqrt, - GLOB_ff_math_log, - GLOB_ff_math_log10, - GLOB_ff_math_exp, - GLOB_vm_exp_x87, - GLOB_ff_math_sin, - GLOB_ff_math_cos, - GLOB_ff_math_tan, - GLOB_ff_math_asin, - GLOB_ff_math_acos, - GLOB_ff_math_atan, - GLOB_ff_math_sinh, - GLOB_ff_math_cosh, - GLOB_ff_math_tanh, - GLOB_ff_math_deg, - GLOB_ff_math_rad, - GLOB_ff_math_atan2, - GLOB_ff_math_ldexp, - GLOB_ff_math_frexp, - GLOB_ff_math_modf, - GLOB_vm_trunc, - GLOB_ff_math_fmod, - GLOB_ff_math_pow, - GLOB_vm_pow, - GLOB_ff_math_min, - GLOB_ff_math_max, - GLOB_ff_string_len, - GLOB_ff_string_byte, - GLOB_ff_string_char, - GLOB_fff_newstr, - GLOB_ff_string_sub, - GLOB_fff_emptystr, - GLOB_ff_string_rep, - GLOB_fff_fallback_2, - GLOB_ff_string_reverse, - GLOB_fff_fallback_1, - GLOB_ff_string_lower, - GLOB_ff_string_upper, - GLOB_ff_table_getn, - GLOB_ff_bit_tobit, - GLOB_ff_bit_band, - GLOB_fff_fallback_bit_op, - GLOB_ff_bit_bor, - GLOB_ff_bit_bxor, - GLOB_ff_bit_bswap, - GLOB_ff_bit_bnot, - GLOB_ff_bit_lshift, - GLOB_ff_bit_rshift, - GLOB_ff_bit_arshift, - GLOB_ff_bit_rol, - GLOB_ff_bit_ror, - GLOB_vm_record, - GLOB_vm_rethook, - GLOB_vm_inshook, - GLOB_cont_hook, - GLOB_vm_hotloop, - GLOB_vm_callhook, - GLOB_vm_hotcall, - GLOB_vm_exit_handler, - GLOB_vm_exit_interp, - GLOB_vm_floor_sse, - GLOB_vm_ceil_sse, - GLOB_vm_trunc_sse, - GLOB_vm_mod, - GLOB_vm_exp2_x87, - GLOB_vm_exp2raw, - GLOB_vm_pow_sse, - GLOB_vm_powi_sse, - GLOB_vm_foldfpm, - GLOB_vm_foldarith, - GLOB_vm_cpuid, - GLOB_assert_bad_for_arg_type, - GLOB_vm_ffi_callback, - GLOB_vm_ffi_call, - GLOB_BC_MODVN_Z, - GLOB_BC_TGETS_Z, - GLOB_BC_TSETS_Z, - GLOB__MAX -}; -static const char *const globnames[] = { - "vm_returnp", - "cont_dispatch", - "vm_returnc", - "BC_RET_Z", - "vm_return", - "vm_leave_cp", - "vm_leave_unw", - "vm_unwind_c@8", - "vm_unwind_c_eh", - "vm_unwind_rethrow", - "vm_unwind_ff@4", - "vm_unwind_ff_eh", - "vm_growstack_c", - "vm_growstack_v", - "vm_growstack_f", - "vm_resume", - "vm_pcall", - "vm_call", - "vm_call_dispatch", - "vmeta_call", - "vm_call_dispatch_f", - "vm_cpcall", - "cont_ffi_callback", - "vm_call_tail", - "cont_cat", - "cont_ra", - "BC_CAT_Z", - "vmeta_tgets", - "vmeta_tgetb", - "vmeta_tgetv", - "vmeta_tsets", - "vmeta_tsetb", - "vmeta_tsetv", - "cont_nop", - "vmeta_comp", - "vmeta_binop", - "cont_condt", - "cont_condf", - "vmeta_equal", - "vmeta_equal_cd", - "vmeta_arith_vno", - "vmeta_arith_vn", - "vmeta_arith_nvo", - "vmeta_arith_nv", - "vmeta_unm", - "vmeta_arith_vvo", - "vmeta_arith_vv", - "vmeta_len", - "BC_LEN_Z", - "vmeta_call_ra", - "BC_CALLT_Z", - "vmeta_for", - "ff_assert", - "fff_fallback", - "fff_res_", - "ff_type", - "fff_res1", - "ff_getmetatable", - "ff_setmetatable", - "ff_rawget", - "ff_tonumber", - "fff_resi", - "fff_resxmm0", - "fff_resn", - "ff_tostring", - "fff_gcstep", - "ff_next", - "fff_res2", - "fff_res", - "ff_pairs", - "ff_ipairs_aux", - "fff_res0", - "ff_ipairs", - "ff_pcall", - "ff_xpcall", - "ff_coroutine_resume", - "ff_coroutine_wrap_aux", - "ff_coroutine_yield", - "ff_math_abs", - "fff_resbit", - "ff_math_floor", - "vm_floor", - "ff_math_ceil", - "vm_ceil", - "ff_math_sqrt", - "ff_math_log", - "ff_math_log10", - "ff_math_exp", - "vm_exp_x87", - "ff_math_sin", - "ff_math_cos", - "ff_math_tan", - "ff_math_asin", - "ff_math_acos", - "ff_math_atan", - "ff_math_sinh", - "ff_math_cosh", - "ff_math_tanh", - "ff_math_deg", - "ff_math_rad", - "ff_math_atan2", - "ff_math_ldexp", - "ff_math_frexp", - "ff_math_modf", - "vm_trunc", - "ff_math_fmod", - "ff_math_pow", - "vm_pow", - "ff_math_min", - "ff_math_max", - "ff_string_len", - "ff_string_byte", - "ff_string_char", - "fff_newstr", - "ff_string_sub", - "fff_emptystr", - "ff_string_rep", - "fff_fallback_2", - "ff_string_reverse", - "fff_fallback_1", - "ff_string_lower", - "ff_string_upper", - "ff_table_getn", - "ff_bit_tobit", - "ff_bit_band", - "fff_fallback_bit_op", - "ff_bit_bor", - "ff_bit_bxor", - "ff_bit_bswap", - "ff_bit_bnot", - "ff_bit_lshift", - "ff_bit_rshift", - "ff_bit_arshift", - "ff_bit_rol", - "ff_bit_ror", - "vm_record", - "vm_rethook", - "vm_inshook", - "cont_hook", - "vm_hotloop", - "vm_callhook", - "vm_hotcall", - "vm_exit_handler", - "vm_exit_interp", - "vm_floor_sse", - "vm_ceil_sse", - "vm_trunc_sse", - "vm_mod", - "vm_exp2_x87", - "vm_exp2raw", - "vm_pow_sse", - "vm_powi_sse", - "vm_foldfpm", - "vm_foldarith", - "vm_cpuid", - "assert_bad_for_arg_type", - "vm_ffi_callback", - "vm_ffi_call@4", - "BC_MODVN_Z", - "BC_TGETS_Z", - "BC_TSETS_Z", - (const char *)0 -}; -static const char *const extnames[] = { - "lj_state_growstack@8", - "lj_err_throw@8", - "lj_meta_tget", - "lj_meta_tset", - "lj_meta_comp", - "lj_meta_equal", - "lj_meta_equal_cd@8", - "lj_meta_arith", - "lj_meta_len@8", - "lj_meta_call", - "lj_meta_for@8", - "lj_tab_get", - "lj_str_fromnumber@8", - "lj_str_fromnum@8", - "lj_tab_next", - "lj_tab_getinth@8", - "lj_ffh_coroutine_wrap_err@8", - "lj_vm_sinh", - "lj_vm_cosh", - "lj_vm_tanh", - "lj_str_new", - "lj_tab_len@4", - "lj_gc_step@4", - "lj_dispatch_ins@8", - "lj_trace_hot@8", - "lj_dispatch_call@8", - "lj_trace_exit@8", - "lj_ccallback_enter@8", - "lj_ccallback_leave@8", - "lj_meta_cat", - "lj_gc_barrieruv@8", - "lj_func_closeuv@8", - "lj_func_newL_gc", - "lj_tab_new", - "lj_gc_step_fixtop@4", - "lj_tab_dup@8", - "lj_tab_newkey", - "lj_tab_reasize", - (const char *)0 -}; -#define Dt1(_V) (int)(ptrdiff_t)&(((lua_State *)0)_V) -#define Dt2(_V) (int)(ptrdiff_t)&(((global_State *)0)_V) -#define Dt3(_V) (int)(ptrdiff_t)&(((TValue *)0)_V) -#define Dt4(_V) (int)(ptrdiff_t)&(((GCobj *)0)_V) -#define Dt5(_V) (int)(ptrdiff_t)&(((GCstr *)0)_V) -#define Dt6(_V) (int)(ptrdiff_t)&(((GCtab *)0)_V) -#define Dt7(_V) (int)(ptrdiff_t)&(((GCfuncL *)0)_V) -#define Dt8(_V) (int)(ptrdiff_t)&(((GCfuncC *)0)_V) -#define Dt9(_V) (int)(ptrdiff_t)&(((GCproto *)0)_V) -#define DtA(_V) (int)(ptrdiff_t)&(((GCupval *)0)_V) -#define DtB(_V) (int)(ptrdiff_t)&(((Node *)0)_V) -#define DtC(_V) (int)(ptrdiff_t)&(((int *)0)_V) -#define DtD(_V) (int)(ptrdiff_t)&(((GCtrace *)0)_V) -#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) -#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) -#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) - -/* Generate subroutines used by opcodes and other parts of the VM. */ -/* The .code_sub section should be last to help static branch prediction. */ -static void build_subroutines(BuildCtx *ctx, int cmov, int sse) -{ - dasm_put(Dst, 0); - dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, FRAME_TYPE, DISPATCH_GL(vmstate), ~LJ_VMST_C); - dasm_put(Dst, 109, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL); - dasm_put(Dst, 200, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK); - dasm_put(Dst, 302, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base)); - dasm_put(Dst, 385, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 548, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); - dasm_put(Dst, 648, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); -#if LJ_HASFFI - dasm_put(Dst, 813); -#endif - dasm_put(Dst, 822, 0); -#if LJ_HASFFI -#endif - dasm_put(Dst, 831, Dt7(->pc), PC2PROTO(k)); -#if LJ_HASFFI - dasm_put(Dst, 848); -#endif - dasm_put(Dst, 869, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 967, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 976); - } else { - } - dasm_put(Dst, 988, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); - dasm_put(Dst, 1134, DISPATCH_GL(tmptv), LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 967, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 976); - } else { - } - dasm_put(Dst, 1158, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 1330, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); - dasm_put(Dst, 1429); -#if LJ_HASFFI - dasm_put(Dst, 1449, Dt1(->base)); -#endif - dasm_put(Dst, 1480); -#if LJ_DUALNUM - dasm_put(Dst, 1483); -#endif - dasm_put(Dst, 1489); -#if LJ_DUALNUM - dasm_put(Dst, 961); -#endif - dasm_put(Dst, 1502); -#if LJ_DUALNUM - dasm_put(Dst, 1483); -#endif - dasm_put(Dst, 1531, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1633); -#else - dasm_put(Dst, 1652); -#endif - dasm_put(Dst, 1657, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); - dasm_put(Dst, 1843, 1+1, ~LJ_TNUMX); - if (cmov) { - dasm_put(Dst, 1912); - } else { - dasm_put(Dst, 1916); - } - dasm_put(Dst, 1925, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); - dasm_put(Dst, 2004, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next)); - dasm_put(Dst, 2062, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD); - dasm_put(Dst, 2128, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB); - dasm_put(Dst, 2199, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB); - dasm_put(Dst, 2289, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2303); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 2325); - } else { - dasm_put(Dst, 2335); - } - dasm_put(Dst, 2342, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2411, Dt1(->base)); - if (LJ_DUALNUM) { - dasm_put(Dst, 2437); - } else { - dasm_put(Dst, 2442); - } - dasm_put(Dst, 2447, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); - dasm_put(Dst, 2539, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 2586, Dt6(->metatable)); -#endif - dasm_put(Dst, 2595, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2581); - } else { - dasm_put(Dst, 2320); - } - dasm_put(Dst, 2650); - if (LJ_DUALNUM) { - dasm_put(Dst, 2655, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 2671, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - } else { - } - dasm_put(Dst, 2704, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); - dasm_put(Dst, 2566, 1+1, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 2586, Dt6(->metatable)); -#endif - dasm_put(Dst, 2781, Dt8(->upvalue[0]), LJ_TFUNC); - if (LJ_DUALNUM) { - dasm_put(Dst, 2802, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 2814); - } else { - dasm_put(Dst, 2824); - } - dasm_put(Dst, 2831, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); - dasm_put(Dst, 2896, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); - dasm_put(Dst, 2985, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); - dasm_put(Dst, 3072, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); - dasm_put(Dst, 3187, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); - dasm_put(Dst, 3282, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); - dasm_put(Dst, 3348, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); - dasm_put(Dst, 3437, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); - dasm_put(Dst, 3547, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 3574); - } - if (sse) { - dasm_put(Dst, 3577); - } - dasm_put(Dst, 3592, 1+1); - if (LJ_DUALNUM) { - dasm_put(Dst, 3603, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 3683, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3693, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); - } else { - dasm_put(Dst, 3724); - } - dasm_put(Dst, 3741, 1+1, FRAME_TYPE, LJ_TNIL); - if (LJ_DUALNUM) { - dasm_put(Dst, 3838, LJ_TISNUM); - } else { - dasm_put(Dst, 3683, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3860); - if (LJ_DUALNUM) { - dasm_put(Dst, 3869); - } - dasm_put(Dst, 2330); - } else { - dasm_put(Dst, 3903); - if (LJ_DUALNUM) { - } else { - dasm_put(Dst, 2337); - } - } - dasm_put(Dst, 3909); - if (LJ_DUALNUM) { - dasm_put(Dst, 3838, LJ_TISNUM); - } else { - dasm_put(Dst, 3683, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3912); - if (LJ_DUALNUM) { - dasm_put(Dst, 3869); - } - dasm_put(Dst, 2330); - } else { - dasm_put(Dst, 3921); - if (LJ_DUALNUM) { - } else { - dasm_put(Dst, 2337); - } - } - if (sse) { - dasm_put(Dst, 3927, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 3956, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 3985, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4054, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4111, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4174, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4264); - if (sse) { - dasm_put(Dst, 4276, 1+1, LJ_TISNUM); - } else { - } - dasm_put(Dst, 4301); - if (sse) { - dasm_put(Dst, 4315, 1+1, LJ_TISNUM); - } else { - } - dasm_put(Dst, 4340); - if (sse) { - dasm_put(Dst, 4354, 1+1, LJ_TISNUM); - } else { - } - dasm_put(Dst, 4379); - if (sse) { - dasm_put(Dst, 4395, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); - } else { - dasm_put(Dst, 4434, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); - } - dasm_put(Dst, 4467, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 4532, 1+1, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4631); - } else { - dasm_put(Dst, 4637); - } - dasm_put(Dst, 4644); - if (sse) { - dasm_put(Dst, 4669); - } else { - dasm_put(Dst, 4675); - } - dasm_put(Dst, 4678, 1+2); - if (sse) { - dasm_put(Dst, 4687); - } else { - dasm_put(Dst, 4695); - } - dasm_put(Dst, 4703); - if (sse) { - dasm_put(Dst, 4706, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); - } else { - dasm_put(Dst, 4733); - } - dasm_put(Dst, 4750); - if (sse) { - dasm_put(Dst, 4766, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 4791, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 4813); - if (sse) { - dasm_put(Dst, 4835); - } else { - dasm_put(Dst, 4861); - } - dasm_put(Dst, 4878, 1+2); - if (sse) { - dasm_put(Dst, 4918); - } else { - dasm_put(Dst, 4926); - } - dasm_put(Dst, 4936, 2+1, LJ_TISNUM, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4988, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 5035, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 5076, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5089, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4631); - } else { - } - dasm_put(Dst, 5139); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 5150, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5171); - } else { - dasm_put(Dst, 2320); - } - dasm_put(Dst, 5192); - } else { - } - dasm_put(Dst, 5217, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5230, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4631); - } else { - } - dasm_put(Dst, 5139); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 5150, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5171); - } else { - dasm_put(Dst, 2320); - } - dasm_put(Dst, 5280); - } else { - } - if (!sse) { - dasm_put(Dst, 5305); - } - dasm_put(Dst, 5314, 1+1, LJ_TSTR); - if (LJ_DUALNUM) { - dasm_put(Dst, 5336, Dt5(->len)); - } else if (sse) { - dasm_put(Dst, 5344, Dt5(->len)); - } else { - dasm_put(Dst, 5355, Dt5(->len)); - } - dasm_put(Dst, 5363, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); - if (LJ_DUALNUM) { - dasm_put(Dst, 5339); - } else if (sse) { - dasm_put(Dst, 5401); - } else { - dasm_put(Dst, 5411); - } - dasm_put(Dst, 5422, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5455); - } else if (sse) { - dasm_put(Dst, 5478); - } else { - dasm_put(Dst, 5504); - } - dasm_put(Dst, 5528, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5637); - } else if (sse) { - dasm_put(Dst, 5649); - } else { - dasm_put(Dst, 5664); - } - dasm_put(Dst, 5676, LJ_TSTR, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2581); - } else { - dasm_put(Dst, 2320); - } - dasm_put(Dst, 5693, Dt5(->len)); - if (LJ_DUALNUM) { - dasm_put(Dst, 5703); - } else if (sse) { - dasm_put(Dst, 5707); - } else { - } - dasm_put(Dst, 5714, sizeof(GCstr)-1); - dasm_put(Dst, 5789, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 5850, LJ_TSTR, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5867); - } else if (sse) { - dasm_put(Dst, 5875); - } else { - dasm_put(Dst, 5886); - } - dasm_put(Dst, 5902, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5970, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6037, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 6110, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6195, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6269, 1+1, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 6336); - } else if (sse) { - dasm_put(Dst, 6343); - } else { - } - dasm_put(Dst, 6353, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6369); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 106); - if (LJ_DUALNUM || sse) { - if (!sse) { - } - dasm_put(Dst, 6410); - } else { - } - dasm_put(Dst, 6415, 1+1); - if (sse) { - dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - dasm_put(Dst, 6436); - } - dasm_put(Dst, 2297, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6461); - } else { - } - dasm_put(Dst, 6476, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6501); - } else { - dasm_put(Dst, 6521); - } - if (sse) { - dasm_put(Dst, 6526); - } else { - } - dasm_put(Dst, 6543, 1+1); - if (sse) { - dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - dasm_put(Dst, 6436); - } - dasm_put(Dst, 2297, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6461); - } else { - } - dasm_put(Dst, 6476, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6561); - } else { - dasm_put(Dst, 6521); - } - if (sse) { - dasm_put(Dst, 6581); - } else { - } - dasm_put(Dst, 6598, 1+1); - if (sse) { - dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - dasm_put(Dst, 6436); - } - dasm_put(Dst, 2297, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6461); - } else { - } - dasm_put(Dst, 6476, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6616); - } else { - dasm_put(Dst, 6521); - } - if (sse) { - dasm_put(Dst, 6636); - } else { - } - dasm_put(Dst, 6653, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6676, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6700); - if (LJ_DUALNUM) { - dasm_put(Dst, 6410); - } else if (sse) { - dasm_put(Dst, 6706); - } else { - } - dasm_put(Dst, 6718); - if (LJ_DUALNUM) { - dasm_put(Dst, 6729, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6745, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 6760, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6827); - if (LJ_DUALNUM) { - dasm_put(Dst, 6834, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6745, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 6850, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6917); - if (LJ_DUALNUM) { - dasm_put(Dst, 6925, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6745, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 6941, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 7008); - if (LJ_DUALNUM) { - dasm_put(Dst, 7016, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6745, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7032, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 7099); - if (LJ_DUALNUM) { - dasm_put(Dst, 7106, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6444); - } else { - dasm_put(Dst, 2320); - } - if (sse) { - dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6745, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7122, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 7189, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 7265, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 7392, Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 7431, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); -#endif - dasm_put(Dst, 7464, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); - dasm_put(Dst, 7518, Dt1(->base), Dt1(->base), GG_DISP2STATIC); -#if LJ_HASJIT - dasm_put(Dst, 7585, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); -#endif - dasm_put(Dst, 7632); -#if LJ_HASJIT - dasm_put(Dst, 7459); -#endif - dasm_put(Dst, 7639); -#if LJ_HASJIT - dasm_put(Dst, 7642); -#endif - dasm_put(Dst, 7652, Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 7685); -#endif - dasm_put(Dst, 7690, Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 7721, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); -#endif - dasm_put(Dst, 7960); -#if LJ_HASJIT - dasm_put(Dst, 7963, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); -#endif - dasm_put(Dst, 8063); - if (!sse) { - dasm_put(Dst, 8066); - } - dasm_put(Dst, 8111, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - if (!sse) { - dasm_put(Dst, 8197); - } - dasm_put(Dst, 8242, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); - if (!sse) { - dasm_put(Dst, 8328); - } - dasm_put(Dst, 8367, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - if (sse) { - dasm_put(Dst, 8456, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - } else { - dasm_put(Dst, 8570); - } - dasm_put(Dst, 8617); - if (!sse) { - } else { - dasm_put(Dst, 8694); - } - dasm_put(Dst, 8697); - dasm_put(Dst, 8782, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - dasm_put(Dst, 8885, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); - dasm_put(Dst, 9047); -#if LJ_HASJIT - if (sse) { - dasm_put(Dst, 9088); - dasm_put(Dst, 9158); - dasm_put(Dst, 9230); - } else { - dasm_put(Dst, 9282); - dasm_put(Dst, 9374); - } - dasm_put(Dst, 9420); -#endif - dasm_put(Dst, 9424); - if (sse) { - dasm_put(Dst, 9427, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); - dasm_put(Dst, 9512, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); - } else { - dasm_put(Dst, 9640); - dasm_put(Dst, 9723); - if (cmov) { - dasm_put(Dst, 9778); - } else { - dasm_put(Dst, 9797); - } - dasm_put(Dst, 9420); - } - dasm_put(Dst, 9838); -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 9422); -#endif - dasm_put(Dst, 9862); -#if LJ_HASFFI -#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) - dasm_put(Dst, 9866, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE, DtE(->cb.gpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[4]), DtE(->cb.fpr[5]), DtE(->cb.fpr[6]), DtE(->cb.fpr[7]), DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); - dasm_put(Dst, 9990, Dt1(->base), Dt1(->top), Dt7(->pc)); -#endif - dasm_put(Dst, 10030); -#if LJ_HASFFI - dasm_put(Dst, 10033, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0])); -#endif - dasm_put(Dst, 10074); -#if LJ_HASFFI -#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 10077, DtF(->spadj)); -#if LJ_TARGET_WINDOWS -#endif - dasm_put(Dst, 10093, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->fpr[0]), DtF(->fpr[1])); - dasm_put(Dst, 10172, DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->fpr[1])); -#if LJ_TARGET_WINDOWS -#endif - dasm_put(Dst, 10227); -#endif -} - -/* Generate the code for a single instruction. */ -static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) -{ - int vk = 0; - dasm_put(Dst, 829, defop); - - switch (op) { - - /* -- Comparison ops ---------------------------------------------------- */ - - /* Remember: all ops branch for a true comparison, fall through otherwise. */ - - - case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - if (LJ_DUALNUM) { - dasm_put(Dst, 10235, LJ_TISNUM, LJ_TISNUM); - switch (op) { - case BC_ISLT: - dasm_put(Dst, 10265); - break; - case BC_ISGE: - dasm_put(Dst, 10270); - break; - case BC_ISLE: - dasm_put(Dst, 10275); - break; - case BC_ISGT: - dasm_put(Dst, 10280); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10285, -BCBIAS_J*4, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 10340); - } else { - dasm_put(Dst, 10351); - } - dasm_put(Dst, 10362); - if (sse) { - dasm_put(Dst, 10369); - switch (op) { - case BC_ISLT: - dasm_put(Dst, 10389); - break; - case BC_ISGE: - dasm_put(Dst, 10394); - break; - case BC_ISLE: - dasm_put(Dst, 10399); - break; - case BC_ISGT: - dasm_put(Dst, 10404); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10409); - } else { - dasm_put(Dst, 10414); - } - } else { - dasm_put(Dst, 10422, LJ_TISNUM, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 10443); - } else { - dasm_put(Dst, 10464); - if (cmov) { - dasm_put(Dst, 10480); - } else { - dasm_put(Dst, 10486); - } - } - if (LJ_DUALNUM) { - switch (op) { - case BC_ISLT: - dasm_put(Dst, 10389); - break; - case BC_ISGE: - dasm_put(Dst, 10394); - break; - case BC_ISLE: - dasm_put(Dst, 10399); - break; - case BC_ISGT: - dasm_put(Dst, 10404); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10409); - } else { - switch (op) { - case BC_ISLT: - dasm_put(Dst, 817); - break; - case BC_ISGE: - dasm_put(Dst, 10493); - break; - case BC_ISLE: - dasm_put(Dst, 10498); - break; - case BC_ISGT: - dasm_put(Dst, 10503); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10508, -BCBIAS_J*4); - } - break; - - case BC_ISEQV: case BC_ISNEV: - vk = op == BC_ISEQV; - dasm_put(Dst, 10541); - if (LJ_DUALNUM) { - dasm_put(Dst, 10549, LJ_TISNUM, LJ_TISNUM); - if (vk) { - dasm_put(Dst, 10574); - } else { - dasm_put(Dst, 10579); - } - dasm_put(Dst, 10584, -BCBIAS_J*4, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 10637); - } else { - dasm_put(Dst, 10644); - } - dasm_put(Dst, 10648); - if (sse) { - dasm_put(Dst, 10659); - } else { - dasm_put(Dst, 10671); - } - dasm_put(Dst, 10678); - } else { - dasm_put(Dst, 10683, LJ_TISNUM, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 10702); - } else { - dasm_put(Dst, 10720); - if (cmov) { - dasm_put(Dst, 10480); - } else { - dasm_put(Dst, 10486); - } - } - iseqne_fp: - if (vk) { - dasm_put(Dst, 10733); - } else { - dasm_put(Dst, 10742); - } - iseqne_end: - if (vk) { - dasm_put(Dst, 10751, -BCBIAS_J*4); - if (!LJ_HASFFI) { - dasm_put(Dst, 4684); - } - } else { - if (!LJ_HASFFI) { - dasm_put(Dst, 4684); - } - dasm_put(Dst, 10766, -BCBIAS_J*4); - } - if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || - op == BC_ISEQN || op == BC_ISNEN)) { - dasm_put(Dst, 10781); - } else { - dasm_put(Dst, 10520); - } - if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 10786); - if (LJ_HASFFI) { - dasm_put(Dst, 10789, LJ_TCDATA, LJ_TCDATA); - } - dasm_put(Dst, 10808, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<>32)); - } else { - dasm_put(Dst, 11412); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 10781); - } else { - dasm_put(Dst, 10520); - } - break; - case BC_LEN: - dasm_put(Dst, 11421, LJ_TSTR); - if (LJ_DUALNUM) { - dasm_put(Dst, 11435, Dt5(->len), LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 11449, Dt5(->len)); - } else { - dasm_put(Dst, 11467, Dt5(->len)); - } - dasm_put(Dst, 11476, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 11512, Dt6(->metatable)); -#endif - dasm_put(Dst, 11526); - if (LJ_DUALNUM) { - } else if (sse) { - dasm_put(Dst, 11535); - } else { - } - dasm_put(Dst, 11541); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 11554, Dt6(->nomm), 1<base), Dt1(->base)); - break; - - /* -- Constant ops ------------------------------------------------------ */ - - case BC_KSTR: - dasm_put(Dst, 12415, LJ_TSTR); - break; - case BC_KCDATA: -#if LJ_HASFFI - dasm_put(Dst, 12415, LJ_TCDATA); -#endif - break; - case BC_KSHORT: - if (LJ_DUALNUM) { - dasm_put(Dst, 12452, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 12464); - } else { - dasm_put(Dst, 12479); - } - dasm_put(Dst, 10520); - break; - case BC_KNUM: - if (sse) { - dasm_put(Dst, 12487); - } else { - dasm_put(Dst, 12501); - } - dasm_put(Dst, 10520); - break; - case BC_KPRI: - dasm_put(Dst, 12509); - break; - case BC_KNIL: - dasm_put(Dst, 12538, LJ_TNIL); - break; - - /* -- Upvalue and function ops ------------------------------------------ */ - - case BC_UGET: - dasm_put(Dst, 12586, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETV: -#define TV2MARKOFS \ - ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 12627, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - dasm_put(Dst, 12723); - break; -#undef TV2MARKOFS - case BC_USETS: - dasm_put(Dst, 12735, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); - break; - case BC_USETN: - dasm_put(Dst, 12831); - if (sse) { - dasm_put(Dst, 12836); - } else { - dasm_put(Dst, 11052); - } - dasm_put(Dst, 12844, offsetof(GCfuncL, uvptr), DtA(->v)); - if (sse) { - dasm_put(Dst, 12853); - } else { - dasm_put(Dst, 12859); - } - dasm_put(Dst, 10520); - break; - case BC_USETP: - dasm_put(Dst, 12862, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_UCLO: - dasm_put(Dst, 12902, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); - break; - - case BC_FNEW: - dasm_put(Dst, 12958, Dt1(->base), Dt1(->base), LJ_TFUNC); - break; - - /* -- Table ops --------------------------------------------------------- */ - - case BC_TNEW: - dasm_put(Dst, 13025, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); - break; - case BC_TDUP: - dasm_put(Dst, 13149, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); - break; - - case BC_GGET: - dasm_put(Dst, 13248, Dt7(->env)); - break; - case BC_GSET: - dasm_put(Dst, 13268, Dt7(->env)); - break; - - case BC_TGETV: - dasm_put(Dst, 13288, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 13311, LJ_TISNUM); - } else { - dasm_put(Dst, 13325, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 13336); - } else { - } - dasm_put(Dst, 13357); - } - dasm_put(Dst, 13362, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 13557, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - case BC_TSETS: - dasm_put(Dst, 13910, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 13987, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 14074, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - case BC_TSETB: - dasm_put(Dst, 14166, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 14261, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - - case BC_TSETM: - dasm_put(Dst, 14309, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 14459, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - - /* -- Calls and vararg handling ----------------------------------------- */ - - case BC_CALL: case BC_CALLM: - dasm_put(Dst, 11574); - if (op == BC_CALLM) { - dasm_put(Dst, 14479); - } - dasm_put(Dst, 14484, LJ_TFUNC, Dt7(->pc)); - break; - - case BC_CALLMT: - dasm_put(Dst, 14479); - break; - case BC_CALLT: - dasm_put(Dst, 14527, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 14645, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); - break; - - case BC_ITERC: - dasm_put(Dst, 14719, LJ_TFUNC, 2+1, Dt7(->pc)); - break; - - case BC_ITERN: -#if LJ_HASJIT -#endif - dasm_put(Dst, 14791, Dt6(->asize), Dt6(->array), LJ_TNIL); - if (LJ_DUALNUM) { - dasm_put(Dst, 11440, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 11535); - } else { - dasm_put(Dst, 14843); - } - dasm_put(Dst, 14849); - if (LJ_DUALNUM) { - } else if (sse) { - dasm_put(Dst, 11405); - } else { - dasm_put(Dst, 11417); - } - dasm_put(Dst, 14862, -BCBIAS_J*4); - if (!LJ_DUALNUM && !sse) { - dasm_put(Dst, 14916); - } - dasm_put(Dst, 14922, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); - break; - - case BC_ISNEXT: - dasm_put(Dst, 15001, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); - break; - - case BC_VARG: - dasm_put(Dst, 15102, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); - dasm_put(Dst, 15269, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); - break; - - /* -- Returns ----------------------------------------------------------- */ - - case BC_RETM: - dasm_put(Dst, 14479); - break; - - case BC_RET: case BC_RET0: case BC_RET1: - if (op != BC_RET0) { - dasm_put(Dst, 15339); - } - dasm_put(Dst, 15343, FRAME_TYPE); - switch (op) { - case BC_RET: - dasm_put(Dst, 15362); - break; - case BC_RET1: - dasm_put(Dst, 15416); - /* fallthrough */ - case BC_RET0: - dasm_put(Dst, 15426); - default: - break; - } - dasm_put(Dst, 15437, Dt7(->pc), PC2PROTO(k)); - if (op == BC_RET) { - dasm_put(Dst, 15485, LJ_TNIL); - } else { - dasm_put(Dst, 15496, LJ_TNIL); - } - dasm_put(Dst, 15503, -FRAME_VARG, FRAME_TYPEP); - if (op != BC_RET0) { - dasm_put(Dst, 15527); - } - dasm_put(Dst, 4761); - break; - - /* -- Loops and branches ------------------------------------------------ */ - - - case BC_FORL: -#if LJ_HASJIT - dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JFORI: - case BC_JFORL: -#if !LJ_HASJIT - break; -#endif - case BC_FORI: - case BC_IFORL: - vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 15552); - if (LJ_DUALNUM) { - dasm_put(Dst, 15556, LJ_TISNUM); - if (!vk) { - dasm_put(Dst, 15566, LJ_TISNUM, LJ_TISNUM); - } else { -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 15595, LJ_TISNUM, LJ_TISNUM); -#endif - dasm_put(Dst, 15614); - } - dasm_put(Dst, 15633, LJ_TISNUM); - if (op == BC_FORI) { - dasm_put(Dst, 15644, -BCBIAS_J*4); - } else if (op == BC_JFORI) { - dasm_put(Dst, 15658, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - dasm_put(Dst, 15676, -BCBIAS_J*4); - } else { - dasm_put(Dst, 15668, BC_JLOOP); - } - dasm_put(Dst, 15690); - if (vk) { - dasm_put(Dst, 15715); - } - dasm_put(Dst, 15633, LJ_TISNUM); - if (op == BC_FORI) { - dasm_put(Dst, 15724); - } else if (op == BC_JFORI) { - dasm_put(Dst, 15729, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - dasm_put(Dst, 15743); - } else { - dasm_put(Dst, 15739, BC_JLOOP); - } - dasm_put(Dst, 15748); - } else if (!vk) { - dasm_put(Dst, 15755, LJ_TISNUM); - } - if (!vk) { - dasm_put(Dst, 15761, LJ_TISNUM); - } else { -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 15775, LJ_TISNUM, LJ_TISNUM); -#endif - } - dasm_put(Dst, 15794); - if (!vk) { - dasm_put(Dst, 15798, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 15807); - if (vk) { - dasm_put(Dst, 15819); - } else { - dasm_put(Dst, 15838); - } - dasm_put(Dst, 15843); - } else { - dasm_put(Dst, 15856); - if (vk) { - dasm_put(Dst, 15862); - } else { - dasm_put(Dst, 15878); - } - dasm_put(Dst, 15886); - if (cmov) { - dasm_put(Dst, 10480); - } else { - dasm_put(Dst, 10486); - } - if (!cmov) { - dasm_put(Dst, 15891); - } - } - if (op == BC_FORI) { - if (LJ_DUALNUM) { - dasm_put(Dst, 15897); - } else { - dasm_put(Dst, 15902, -BCBIAS_J*4); - } - } else if (op == BC_JFORI) { - dasm_put(Dst, 15912, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - if (LJ_DUALNUM) { - dasm_put(Dst, 15926); - } else { - dasm_put(Dst, 15931, -BCBIAS_J*4); - } - } else { - dasm_put(Dst, 15922, BC_JLOOP); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 10409); - } else { - dasm_put(Dst, 11186); - } - if (sse) { - dasm_put(Dst, 15941); - } - break; - - case BC_ITERL: -#if LJ_HASJIT - dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JITERL: -#if !LJ_HASJIT - break; -#endif - case BC_IITERL: - dasm_put(Dst, 15952, LJ_TNIL); - if (op == BC_JITERL) { - dasm_put(Dst, 15967, BC_JLOOP); - } else { - dasm_put(Dst, 15981, -BCBIAS_J*4); - } - dasm_put(Dst, 10518); - break; - - case BC_LOOP: -#if LJ_HASJIT - dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_ILOOP: - dasm_put(Dst, 10520); - break; - - case BC_JLOOP: -#if LJ_HASJIT - dasm_put(Dst, 15997, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); -#endif - break; - - case BC_JMP: - dasm_put(Dst, 16038, -BCBIAS_J*4); - break; - - /* -- Function headers -------------------------------------------------- */ - - /* - ** Reminder: A function may be called with func/args above L->maxstack, - ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot, - ** too. This means all FUNC* ops (including fast functions) must check - ** for stack overflow _before_ adding more slots! - */ - - case BC_FUNCF: -#if LJ_HASJIT - dasm_put(Dst, 16064, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); -#endif - case BC_FUNCV: /* NYI: compiled vararg functions. */ - break; - - case BC_JFUNCF: -#if !LJ_HASJIT - break; -#endif - case BC_IFUNCF: - dasm_put(Dst, 16085, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); - if (op == BC_JFUNCF) { - dasm_put(Dst, 16116, BC_JLOOP); - } else { - dasm_put(Dst, 10520); - } - dasm_put(Dst, 16125, LJ_TNIL); - break; - - case BC_JFUNCV: -#if !LJ_HASJIT - break; -#endif - dasm_put(Dst, 9422); - break; /* NYI: compiled vararg functions. */ - - case BC_IFUNCV: - dasm_put(Dst, 16147, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); - if (op == BC_JFUNCV) { - dasm_put(Dst, 16116, BC_JLOOP); - } else { - dasm_put(Dst, 16244, -4+PC2PROTO(k)); - } - dasm_put(Dst, 16269, LJ_TNIL); - break; - - case BC_FUNCC: - case BC_FUNCCW: - dasm_put(Dst, 16291, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); - if (op == BC_FUNCC) { - dasm_put(Dst, 2433); - } else { - dasm_put(Dst, 16321); - } - dasm_put(Dst, 16329, DISPATCH_GL(vmstate), ~LJ_VMST_C); - if (op == BC_FUNCC) { - dasm_put(Dst, 16339); - } else { - dasm_put(Dst, 16344, DISPATCH_GL(wrapf)); - } - dasm_put(Dst, 16350, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); - break; - - /* ---------------------------------------------------------------------- */ - - default: - fprintf(stderr, "Error: undefined opcode BC_%s\n", bc_names[op]); - exit(2); - break; - } -} - -static int build_backend(BuildCtx *ctx) -{ - int op; - int cmov = 1; - int sse = 0; -#ifdef LUAJIT_CPU_NOCMOV - cmov = 0; -#endif -#if defined(LUAJIT_CPU_SSE2) || defined(LJ_TARGET_X64) - sse = 1; -#endif - - dasm_growpc(Dst, BC__MAX); - - build_subroutines(ctx, cmov, sse); - - dasm_put(Dst, 16376); - for (op = 0; op < BC__MAX; op++) - build_ins(ctx, (BCOp)op, op, cmov, sse); - - return BC__MAX; -} - -/* Emit pseudo frame-info for all assembler functions. */ -static void emit_asm_debug(BuildCtx *ctx) -{ - int fcofs = (int)((uint8_t *)ctx->glob[GLOB_vm_ffi_call] - ctx->code); -#if LJ_64 -#define SZPTR "8" -#define BSZPTR "3" -#define REG_SP "0x7" -#define REG_RA "0x10" -#else -#define SZPTR "4" -#define BSZPTR "2" -#define REG_SP "0x4" -#define REG_RA "0x8" -#endif - switch (ctx->mode) { - case BUILD_elfasm: - fprintf(ctx->fp, "\t.section .debug_frame,\"\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe0:\n" - "\t.long .LECIE0-.LSCIE0\n" - ".LSCIE0:\n" - "\t.long 0xffffffff\n" - "\t.byte 0x1\n" - "\t.string \"\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE0:\n\n"); - fprintf(ctx->fp, - ".LSFDE0:\n" - "\t.long .LEFDE0-.LASFDE0\n" - ".LASFDE0:\n" - "\t.long .Lframe0\n" -#if LJ_64 - "\t.quad .Lbegin\n" - "\t.quad %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.long .Lbegin\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE0:\n\n", fcofs, CFRAME_SIZE); -#if LJ_HASFFI - fprintf(ctx->fp, - ".LSFDE1:\n" - "\t.long .LEFDE1-.LASFDE1\n" - ".LASFDE1:\n" - "\t.long .Lframe0\n" -#if LJ_64 - "\t.quad lj_vm_ffi_call\n" - "\t.quad %d\n" - "\t.byte 0xe\n\t.uleb128 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ -#else - "\t.long lj_vm_ffi_call\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 8\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0xd\n\t.uleb128 0x5\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); -#endif -#if (defined(__sun__) && defined(__svr4__)) || defined(__solaris_) - fprintf(ctx->fp, "\t.section .eh_frame,\"aw\",@progbits\n"); -#else - fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@progbits\n"); -#endif - fprintf(ctx->fp, - ".Lframe1:\n" - "\t.long .LECIE1-.LSCIE1\n" - ".LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zPR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 6\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.long lj_err_unwind_dwarf-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE1:\n\n"); - fprintf(ctx->fp, - ".LSFDE2:\n" - "\t.long .LEFDE2-.LASFDE2\n" - ".LASFDE2:\n" - "\t.long .LASFDE2-.Lframe1\n" - "\t.long .Lbegin-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE2:\n\n", fcofs, CFRAME_SIZE); -#if LJ_HASFFI - fprintf(ctx->fp, - ".Lframe2:\n" - "\t.long .LECIE2-.LSCIE2\n" - ".LSCIE2:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 1\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE2:\n\n"); - fprintf(ctx->fp, - ".LSFDE3:\n" - "\t.long .LEFDE3-.LASFDE3\n" - ".LASFDE3:\n" - "\t.long .LASFDE3-.Lframe2\n" - "\t.long lj_vm_ffi_call-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0xe\n\t.uleb128 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ -#else - "\t.byte 0xe\n\t.uleb128 8\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0xd\n\t.uleb128 0x5\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE3:\n\n", (int)ctx->codesz - fcofs); -#endif - break; - case BUILD_coffasm: - fprintf(ctx->fp, "\t.section .eh_frame,\"dr\"\n"); - fprintf(ctx->fp, - "\t.def %slj_err_unwind_dwarf; .scl 2; .type 32; .endef\n", - LJ_32 ? "_" : ""); - fprintf(ctx->fp, - "Lframe1:\n" - "\t.long LECIE1-LSCIE1\n" - "LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zP\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 5\n" /* augmentation length */ - "\t.byte 0x00\n" /* absptr */ - "\t.long %slj_err_unwind_dwarf\n" - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - "LECIE1:\n\n", LJ_32 ? "_" : ""); - fprintf(ctx->fp, - "LSFDE1:\n" - "\t.long LEFDE1-LASFDE1\n" - "LASFDE1:\n" - "\t.long LASFDE1-Lframe1\n" - "\t.long %slj_vm_asm_begin\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - "LEFDE1:\n\n", LJ_32 ? "_" : "", (int)ctx->codesz, CFRAME_SIZE); - break; - /* Mental note: never let Apple design an assembler. - ** Or a linker. Or a plastic case. But I digress. - */ - case BUILD_machasm: { -#if LJ_HASFFI - int fcsize = 0; -#endif - int i; - fprintf(ctx->fp, "\t.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support\n"); - fprintf(ctx->fp, - "EH_frame1:\n" - "\t.set L$set$x,LECIEX-LSCIEX\n" - "\t.long L$set$x\n" - "LSCIEX:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.ascii \"zPR\\0\"\n" - "\t.byte 0x1\n" - "\t.byte 128-" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 6\n" /* augmentation length */ - "\t.byte 0x9b\n" /* indirect|pcrel|sdata4 */ -#if LJ_64 - "\t.long _lj_err_unwind_dwarf+4@GOTPCREL\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte " REG_SP "\n\t.byte " SZPTR "\n" -#else - "\t.long L_lj_err_unwind_dwarf$non_lazy_ptr-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte 0x5\n\t.byte 0x4\n" /* esp=5 on 32 bit MACH-O. */ -#endif - "\t.byte 0x80+" REG_RA "\n\t.byte 0x1\n" - "\t.align " BSZPTR "\n" - "LECIEX:\n\n"); - for (i = 0; i < ctx->nsym; i++) { - const char *name = ctx->sym[i].name; - int32_t size = ctx->sym[i+1].ofs - ctx->sym[i].ofs; - if (size == 0) continue; -#if LJ_HASFFI - if (!strcmp(name, "_lj_vm_ffi_call")) { fcsize = size; continue; } -#endif - fprintf(ctx->fp, - "%s.eh:\n" - "LSFDE%d:\n" - "\t.set L$set$%d,LEFDE%d-LASFDE%d\n" - "\t.long L$set$%d\n" - "LASFDE%d:\n" - "\t.long LASFDE%d-EH_frame1\n" - "\t.long %s-.\n" - "\t.long %d\n" - "\t.byte 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.byte %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.byte 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.byte 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.byte 0x5\n" /* offset r14 */ -#else - "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ - "\t.byte 0x87\n\t.byte 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.byte 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.byte 0x5\n" /* offset ebx */ -#endif - "\t.align " BSZPTR "\n" - "LEFDE%d:\n\n", - name, i, i, i, i, i, i, i, name, size, CFRAME_SIZE, i); - } -#if LJ_HASFFI - if (fcsize) { - fprintf(ctx->fp, - "EH_frame2:\n" - "\t.set L$set$y,LECIEY-LSCIEY\n" - "\t.long L$set$y\n" - "LSCIEY:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.ascii \"zR\\0\"\n" - "\t.byte 0x1\n" - "\t.byte 128-" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 1\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte " REG_SP "\n\t.byte " SZPTR "\n" -#else - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte 0x5\n\t.byte 0x4\n" /* esp=5 on 32 bit MACH. */ -#endif - "\t.byte 0x80+" REG_RA "\n\t.byte 0x1\n" - "\t.align " BSZPTR "\n" - "LECIEY:\n\n"); - fprintf(ctx->fp, - "_lj_vm_ffi_call.eh:\n" - "LSFDEY:\n" - "\t.set L$set$yy,LEFDEY-LASFDEY\n" - "\t.long L$set$yy\n" - "LASFDEY:\n" - "\t.long LASFDEY-EH_frame2\n" - "\t.long _lj_vm_ffi_call-.\n" - "\t.long %d\n" - "\t.byte 0\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0xe\n\t.byte 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.byte 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset rbx */ -#else - "\t.byte 0xe\n\t.byte 8\n" /* def_cfa_offset */ - "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ - "\t.byte 0xd\n\t.uleb128 0x4\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset ebx */ -#endif - "\t.align " BSZPTR "\n" - "LEFDEY:\n\n", fcsize); - } -#endif -#if LJ_64 - fprintf(ctx->fp, "\t.subsections_via_symbols\n"); -#else - fprintf(ctx->fp, - "\t.non_lazy_symbol_pointer\n" - "L_lj_err_unwind_dwarf$non_lazy_ptr:\n" - ".indirect_symbol _lj_err_unwind_dwarf\n" - ".long 0\n"); -#endif - } - break; - default: /* Difficult for other modes. */ - break; - } -} - diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h deleted file mode 100644 index 533d5b00..00000000 --- a/src/buildvm_x64win.h +++ /dev/null @@ -1,3401 +0,0 @@ -/* -** This file has been pre-processed with DynASM. -** http://luajit.org/dynasm.html -** DynASM version 1.3.0, DynASM x64 version 1.3.0 -** DO NOT EDIT! The original file is in "buildvm_x86.dasc". -*/ - -#if DASM_VERSION != 10300 -#error "Version mismatch between DynASM and included encoding engine" -#endif - -#define DASM_SECTION_CODE_OP 0 -#define DASM_SECTION_CODE_SUB 1 -#define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[16196] = { - 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72, - 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68, - 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237, - 15,133,244,10,199,131,233,237,131,230,252,248,41,214,252,247,222,131,232, - 1,15,132,244,248,248,1,72,139,44,10,72,137,106,252,248,131,194,8,131,232, - 1,15,133,244,1,248,2,255,139,108,36,96,137,181,233,248,3,139,68,36,84,139, - 76,36,88,248,4,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248, - 15,72,139,76,36,104,72,137,141,233,49,192,248,16,72,131,196,40,91,94,95,93, - 195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131, - 194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193,141,20, - 202,252,233,244,5,248,8,137,149,233,137,68,36,84,137,202,137,252,233,232, - 251,1,0,139,149,233,252,233,244,3,248,17,137,208,72,137,204,248,18,139,108, - 36,96,139,173,233,199,133,233,237,252,233,244,16,248,19,248,20,72,129,225, - 239,72,137,204,248,21,255,139,108,36,96,72,199,193,252,248,252,255,252,255, - 252,255,184,237,139,149,233,139,157,233,129,195,239,139,114,252,252,199,66, - 252,252,237,199,131,233,237,252,233,244,12,248,22,186,237,252,233,244,248, - 248,23,131,232,8,252,233,244,247,248,24,141,68,194,252,248,248,1,15,182,142, - 233,131,198,4,137,149,233,255,137,133,233,137,116,36,100,137,202,248,2,137, - 252,233,232,251,1,0,139,149,233,139,133,233,139,106,252,248,41,208,193,232, - 3,131,192,1,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255, - 36,252,235,248,25,85,87,86,83,72,131,252,236,40,137,205,137,76,36,96,137, - 209,190,237,49,192,72,141,188,253,36,233,139,157,233,129,195,239,72,137,189, - 233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68,36,92,56,133,233,15, - 132,244,249,199,131,233,237,136,133,233,139,149,233,139,133,233,41,200,193, - 232,3,131,192,1,41,209,139,114,252,252,137,68,36,84,252,247,198,237,255,15, - 132,244,13,252,233,244,14,248,26,85,87,86,83,72,131,252,236,40,190,237,68, - 137,76,36,92,252,233,244,247,248,27,85,87,86,83,72,131,252,236,40,190,237, - 248,1,68,137,68,36,88,137,205,137,76,36,96,137,209,72,139,189,233,72,137, - 124,36,104,137,108,36,100,72,137,165,233,248,2,139,157,233,129,195,239,248, - 3,199,131,233,237,139,149,233,255,1,206,41,214,139,133,233,41,200,193,232, - 3,131,192,1,248,28,139,105,252,248,129,121,253,252,252,239,15,133,244,29, - 248,30,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205, - 131,198,4,252,255,36,252,235,248,31,85,87,86,83,72,131,252,236,40,137,205, - 137,76,36,96,137,108,36,100,139,189,233,43,189,233,199,68,36,92,0,0,0,0,137, - 124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209, - 133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,209,131,230, - 252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244, - 72,99,77,252,240,255,131,252,249,1,15,134,244,247,255,72,141,61,245,72,1, - 252,249,255,139,122,252,248,139,191,233,139,191,233,252,255,225,255,248,1, - 15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248, - 34,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252, - 247,217,193,252,233,3,65,137,200,139,76,36,96,137,145,233,72,139,0,72,137, - 69,0,137,252,234,252,233,244,36,248,37,137,68,36,80,199,68,36,84,237,72,141, - 68,36,80,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237, - 137,205,252,233,244,248,248,38,15,182,70,252,254,255,199,68,36,84,237,137, - 68,36,80,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141,68,36,80, - 252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255, - 141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137, - 205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244,249,248,35, - 15,182,78,252,253,72,139,40,72,137,44,202,139,6,15,182,204,15,182,232,131, - 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,141, - 177,233,41,214,139,105,252,248,184,237,252,233,244,30,248,40,137,68,36,80, - 199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,244,247,255,141, - 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,41,15,182,70,252, - 254,255,72,141,68,36,80,252,233,244,247,248,42,15,182,70,252,254,141,4,194, - 248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137, - 252,234,73,137,192,137,205,137,116,36,100,232,251,1,2,139,149,233,133,192, - 15,132,244,249,15,182,78,252,253,72,139,44,202,72,137,40,248,43,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,139,141, - 233,137,113,252,244,15,182,70,252,253,72,139,44,194,72,137,105,16,141,177, - 233,41,214,139,105,252,248,184,237,252,233,244,30,248,44,139,108,36,96,137, - 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116, - 36,100,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248, - 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248, - 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, - 46,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120, - 253,4,239,252,233,244,4,248,48,131,252,238,4,65,137,192,65,137,252,233,139, - 108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4, - 252,233,244,3,248,49,255,131,252,238,4,139,108,36,96,137,149,233,137,252, - 233,139,86,252,252,137,116,36,100,232,251,1,5,252,233,244,3,255,248,50,255, - 15,182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53, - 141,4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252, - 233,244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12, - 202,65,137,232,65,137,193,15,182,70,252,252,137,68,36,32,139,108,36,96,137, - 149,233,137,202,137,252,233,137,116,36,100,232,251,1,6,139,149,233,133,192, - 15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237,252, - 233,244,28,248,57,139,108,36,96,137,149,233,141,20,194,137,252,233,137,116, - 36,100,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252,254, - 139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8,248, - 29,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,96,137,149,233,137, - 202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,8,139,149,233,139,76, - 36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,15,132,244,60,137,202, - 137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252, - 255,36,252,235,248,61,139,108,36,96,137,149,233,137,202,137,252,233,137,116, - 36,100,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232, - 16,252,255,164,253,252,235,233,248,62,129,252,248,239,15,130,244,63,139,106, - 4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,84,137,106,252, - 252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1,131, - 193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36, - 84,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139,106,4,137,252, - 233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237,252,247,213, - 57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252, - 248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248, - 252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248,239,15,130, - 244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139, - 42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,244,66,139, - 131,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,233,105,201, - 239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244, - 251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66,248,5,139,105, - 4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66,252,248,252, - 233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244, - 254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248,7,255,189, - 237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68,129,252,248, - 239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131,189,233,0,15, - 133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133,233,139,114, - 252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233,235,15,132, - 244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233, - 244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244, - 63,137,213,68,141,66,8,139,18,139,76,36,96,232,251,1,10,137,252,234,72,139, - 40,139,114,252,252,72,137,106,252,248,252,233,244,66,248,70,255,129,252,248, - 239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244, - 71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244, - 72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130,244,63,139, - 114,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237, - 137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187, - 233,0,15,133,244,63,139,171,233,59,171,233,255,15,130,244,247,232,244,75, - 248,1,139,108,36,96,137,149,233,137,116,36,100,137,252,233,255,232,251,1, - 11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,76,129,252,248,239, - 15,130,244,63,15,132,244,248,248,1,129,122,253,4,239,15,133,244,63,139,108, - 36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8,139,18,137,252, - 233,137,116,36,100,232,251,1,13,139,149,233,133,192,15,132,244,249,72,139, - 106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77,184,237,255,252,233, - 244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233, - 244,66,248,79,129,252,248,239,15,130,244,63,139,42,129,122,253,4,239,15,133, - 244,63,255,131,189,233,0,15,133,244,63,255,139,106,252,248,139,133,233,139, - 114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233, - 244,78,248,80,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244, - 63,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,192,1,199,66,252, - 252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110, - 205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139, - 42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239, - 15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131,189,233,0,15,132, - 244,81,137,252,233,137,213,137,194,232,251,1,14,137,252,234,133,192,15,133, - 244,1,248,81,184,237,252,233,244,78,248,82,255,139,106,252,248,139,133,233, - 139,114,252,252,199,66,252,252,237,137,66,252,248,255,199,66,12,237,199,66, - 8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184, - 237,252,233,244,78,248,83,129,252,248,239,15,130,244,63,141,74,8,131,232, - 1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,238,252,233, - 244,28,248,84,129,252,248,239,15,130,244,63,129,122,253,12,239,15,133,244, - 63,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50, - 141,74,16,131,232,2,190,237,252,233,244,1,248,85,129,252,248,239,15,130,244, - 63,139,42,139,114,252,252,137,116,36,100,137,108,36,80,129,122,253,4,239, - 15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235,15,135,244,63, - 139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248,1,141,116,193, - 252,240,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149,233,131, - 194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,15,132,244,249,248, - 2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137, - 202,139,76,36,80,232,244,25,199,131,233,237,255,139,108,36,96,139,116,36, - 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233, - 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133, - 233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8, - 57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36, - 100,137,68,36,84,72,199,193,252,248,252,255,252,255,252,255,252,247,198,237, - 255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131, - 252,233,8,137,142,233,72,139,1,72,137,2,184,237,252,233,244,7,248,9,139,76, - 36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149, - 233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,114,252,252,137, - 116,36,100,137,108,36,80,72,131,189,233,0,15,133,244,63,255,128,189,233,235, - 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141, - 116,193,252,248,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149, - 233,137,149,233,141,108,194,252,240,72,41,252,245,57,206,15,132,244,249,248, - 2,255,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248, - 3,137,202,139,76,36,80,232,244,25,199,131,233,237,139,108,36,96,139,116,36, - 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233, - 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133, - 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193, - 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,100,137,68,36,84, - 49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252,242,137, - 252,233,232,251,1,15,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233, - 232,251,1,0,139,116,36,80,139,149,233,252,233,244,4,248,87,139,108,36,96, - 72,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137, - 133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,244,16,255,248, - 71,255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129, - 252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131, - 252,253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114, - 252,252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252, - 252,199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2, - 15,135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,72, - 184,237,237,102,72,15,110,200,15,84,193,248,72,139,114,252,252,252,242,15, - 17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252,252,221,90,252, - 248,255,248,66,184,237,248,78,137,68,36,84,248,64,252,247,198,237,15,133, - 244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,72,252,247,209, - 141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, - 235,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193, - 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239, - 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16, - 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252, - 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244, - 91,255,248,92,255,252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248, - 94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242, - 15,81,2,252,233,244,72,255,248,94,129,252,248,239,15,130,244,63,129,122,253, - 4,239,15,131,244,63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248, - 239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252, - 241,252,233,244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252, - 248,239,255,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98, - 252,233,244,73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15, - 131,244,63,221,2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15, - 130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244, - 73,248,101,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63, - 221,2,217,252,242,221,216,252,233,244,73,248,102,129,252,248,239,15,130,244, - 63,255,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222, - 225,217,252,250,217,252,243,252,233,244,73,248,103,129,252,248,239,15,130, - 244,63,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222, - 225,217,252,250,217,201,217,252,243,252,233,244,73,248,104,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243, - 252,233,244,73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,252,242,15,16,2,255,137,213,232,251,1,16,137,252,234,252,233, - 244,72,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131, - 244,63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72, - 255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63, - 252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,248,108, - 255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63, - 252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255, - 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221, - 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130, - 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244, - 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248, - 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252, - 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255, - 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32, - 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137, - 108,36,80,219,68,36,80,255,139,106,252,252,129,229,252,255,252,255,15,128, - 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255, - 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238, - 252,233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110, - 205,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,80,0,0, - 128,90,216,76,36,80,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229, - 252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15,130,244,63,129, - 122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252,252,209,229,129, - 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,114,252,242, - 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232, - 244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106, - 4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248,3,129,252,245,0, - 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217, - 252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15,130,244,63,129, - 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,66,8,221, - 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,73,255,248, - 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122, - 253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252, - 233,244,72,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15, - 131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252, - 233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139, - 42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249, - 59,108,202,252,248,15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15, - 135,244,63,255,252,233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248, - 5,57,193,15,131,244,72,129,124,253,202,252,252,239,255,15,130,244,252,15, - 135,244,63,252,242,15,42,76,202,252,248,252,233,244,253,255,248,6,252,242, - 15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255, - 248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57, - 193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252, - 248,15,76,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255, - 248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,95,193,131,193,1,252, - 233,244,5,255,248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15, - 130,244,63,129,122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233, - 244,71,255,252,242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244, - 73,255,248,121,129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244, - 63,139,42,139,114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255, - 252,242,15,42,197,252,233,244,72,255,137,108,36,80,219,68,36,80,252,233,244, - 73,255,248,122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129, - 252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129, - 252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131,244,63,252,242, - 15,44,42,129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131, - 244,63,221,2,219,92,36,84,129,124,36,84,252,255,0,0,0,15,135,244,63,255,199, - 68,36,32,1,0,0,0,72,141,68,36,84,248,123,139,108,36,96,137,149,233,68,139, - 68,36,32,72,137,194,137,252,233,137,116,36,100,232,251,1,19,139,149,233,139, - 114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,66,248,124,139, - 171,233,59,171,233,15,130,244,247,232,244,75,248,1,199,68,36,84,252,255,252, - 255,252,255,252,255,129,252,248,239,15,130,244,63,15,134,244,247,129,122, - 253,20,239,255,15,133,244,63,139,106,16,137,108,36,84,255,15,131,244,63,252, - 242,15,44,106,16,137,108,36,84,255,15,131,244,63,221,66,16,219,92,36,84,255, - 248,1,129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,42,137,108, - 36,32,139,173,233,255,139,74,8,255,252,242,15,44,74,8,255,139,68,36,84,57, - 197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200, - 15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252, - 233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232, - 252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248, - 8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4,248,126,129,252, - 248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248, - 1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139,42,255,15,133, - 244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15,131,244,63,221, - 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,125,131,189,233,1,15, - 130,244,125,15,133,244,127,57,131,233,15,130,244,127,15,182,141,233,139,171, - 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131, - 233,252,233,244,123,248,128,129,252,248,239,255,15,130,244,63,139,171,233, - 59,171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63, - 139,42,139,133,233,133,192,15,132,244,125,57,131,233,15,130,244,129,129,197, - 239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,15,182,77,0,131,197, - 1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,84,252,233,244,123, - 248,130,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247, - 232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131, - 233,255,15,130,244,129,129,197,239,137,116,36,84,137,68,36,32,139,179,233, - 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252, - 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137, - 244,1,137,252,240,139,116,36,84,252,233,244,123,248,131,129,252,248,239,15, - 130,244,63,255,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129, - 122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233,15,130,244,129, - 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1, - 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244, - 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240, - 139,116,36,84,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122, - 253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252,234,255,137,197, - 252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248, - 239,15,130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244, - 89,248,1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205, - 252,242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248, - 239,15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,68,36,80,0, - 0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255, - 252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,84,141, - 68,194,252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244, - 248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135, - 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8, - 252,233,244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11, - 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242, - 15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252, - 248,239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248, - 2,15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49, - 205,255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129, - 122,253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15, - 130,244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15, - 42,197,252,233,244,72,255,248,135,139,68,36,84,252,233,244,63,255,248,140, - 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12, - 239,15,133,244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129, - 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16, - 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252, - 242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255, - 248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252, - 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239, - 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15, - 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201, - 255,211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63, - 129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4, - 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242, - 15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15, - 88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248, - 143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248, - 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131, - 244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213, - 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211, - 197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253, - 4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131, - 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74, - 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102, - 15,126,197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252, - 233,244,63,248,129,184,237,248,63,139,108,36,96,139,114,252,252,137,116,36, - 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248, - 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192, - 15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1, - 139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233,15,182,205, - 131,198,4,252,255,36,252,235,248,33,137,209,252,247,198,237,15,133,244,249, - 15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137, - 252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137,252,233, - 232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,32,139, - 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137, - 133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72, - 139,108,36,32,85,195,248,145,255,15,182,131,233,168,235,15,133,244,251,168, - 235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247, - 255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,147, - 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139, - 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149, - 233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,15,182,78, - 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235, - 233,248,148,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,149,255,139, - 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233, - 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251, - 1,23,252,233,244,3,255,248,150,137,116,36,100,255,248,151,255,137,116,36, - 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137, - 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,100,0,0,0,0,255,131, - 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182, - 78,252,253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83, - 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252, - 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139, - 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197, - 128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68, - 15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68, - 15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17, - 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160, - 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15, - 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137, - 149,233,72,141,148,253,36,233,141,139,233,232,251,1,25,72,139,141,233,72, - 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,153, - 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233, - 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68, - 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185, - 233,72,137,204,102,15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108, - 36,32,76,139,100,36,80,133,192,15,136,244,249,137,68,36,84,139,122,252,248, - 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139, - 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232, - 251,1,26,255,248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36, - 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, - 36,4,139,68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184, - 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244, - 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184, - 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92, - 200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102, - 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252, - 217,108,36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208, - 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, - 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, - 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242, - 15,92,200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184, - 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, - 139,68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237, - 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, - 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102, - 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, - 86,202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184, - 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102, - 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252, - 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194, - 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242, - 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255, - 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255, - 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222, - 252,233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,8,129,124,36, - 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248, - 248,159,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, - 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,117,255, - 248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254, - 15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15, - 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132, - 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244, - 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248, - 6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,184,237,237,102,72, - 15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15, - 110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254, - 15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,244,250,255,72, - 193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252, - 242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252, - 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92, - 36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102, - 15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72, - 15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15, - 132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1, - 248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192, - 15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87, - 192,195,248,162,255,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250, - 3,15,130,244,114,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17, - 68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244, - 98,80,252,233,244,253,248,1,232,244,158,255,80,252,233,244,253,248,2,131, - 252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252, - 233,244,253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252, - 250,9,15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233, - 244,253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132, - 244,247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221, - 216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36, - 4,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250,3,15,130,244,114, - 15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,98,15,132,244, - 158,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252, - 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132, - 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, - 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255, - 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,65,131,252, - 248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15, - 92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15, - 89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244, - 157,15,132,244,117,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184, - 237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15, - 110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17, - 68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217, - 252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252, - 253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244, - 255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68, - 36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248, - 222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135, - 244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244, - 157,15,132,244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216, - 217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247, - 15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248, - 2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221, - 217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246, - 196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252, - 246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,164,137,200,86, - 72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,165, - 255,204,248,166,255,87,86,83,72,131,252,236,40,141,157,233,139,181,233,15, - 183,192,137,134,233,72,137,142,233,72,137,150,233,76,137,134,233,76,137,142, - 233,252,242,15,17,134,233,252,242,15,17,142,233,252,242,15,17,150,233,252, - 242,15,17,158,233,72,141,132,253,36,233,72,137,134,233,72,137,226,137,116, - 36,100,137,252,241,232,251,1,27,199,131,233,237,139,144,233,139,128,233,41, - 208,139,106,252,248,193,232,3,131,192,1,139,181,233,139,14,15,182,252,233, - 15,182,205,131,198,4,252,255,36,252,235,255,248,32,255,139,76,36,96,139,179, - 233,72,137,142,233,137,145,233,137,169,233,137,252,241,137,194,232,251,1, - 28,72,139,134,233,252,242,15,16,134,233,252,233,244,16,255,248,167,255,85, - 72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233,131,252, - 233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233, - 131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72,139,147, - 233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,15, - 40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72,137,131, - 233,15,41,131,233,255,72,139,93,252,248,201,195,255,129,124,253,202,4,239, - 15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4, - 59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15, - 142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244, - 44,129,124,253,194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4, - 194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15, - 135,244,44,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,4,102,15, - 46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,131,244, - 9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,202,4,239, - 15,131,244,44,129,124,253,194,4,239,15,131,244,44,255,248,1,252,242,15,16, - 4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221, - 4,194,248,3,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158, - 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252, - 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,255,139,108,194,4,131,198,4,255,129,252,253,239,15, - 133,244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255, - 15,133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233, - 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 248,7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251, - 255,252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244, - 251,255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252, - 233,244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131, - 244,251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248, - 1,221,4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15, - 138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233, - 248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244, - 9,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255, - 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, - 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244, - 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255, - 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255, - 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,198, - 4,129,252,253,239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131, - 198,4,255,129,252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244, - 254,139,44,199,59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9, - 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7, - 15,135,244,249,129,124,253,199,4,239,15,130,244,247,255,252,242,15,42,4,199, - 255,219,4,199,255,252,233,244,248,248,8,255,252,242,15,42,4,202,102,15,46, - 4,199,255,219,4,202,221,4,199,255,129,252,253,239,15,131,244,249,255,248, - 1,252,242,15,16,4,199,248,2,102,15,46,4,202,248,4,255,248,1,221,4,199,248, - 2,221,4,202,248,4,255,72,252,247,208,139,108,202,4,131,198,4,57,197,255,15, - 133,244,249,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,129,252,253,239, - 15,133,244,2,252,233,244,49,255,15,132,244,248,129,252,253,239,15,132,244, - 49,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252, - 253,239,255,137,108,202,4,139,44,194,137,44,202,255,72,139,44,194,72,137, - 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194, - 4,239,15,133,244,251,139,44,194,252,247,221,15,128,244,250,199,68,202,4,237, - 137,44,202,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9, - 248,5,15,135,244,54,255,129,124,253,194,4,239,15,131,244,54,255,252,242,15, - 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255, - 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139, - 4,194,255,139,128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252, - 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28, - 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 248,2,129,124,253,194,4,239,15,133,244,57,139,12,194,255,139,169,233,131, - 252,253,0,15,133,244,255,248,3,255,248,58,137,213,232,251,1,20,255,252,242, - 15,42,192,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252,246, - 133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192,255, - 129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,244, - 51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15, - 133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15,128, - 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239, - 15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237, - 255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239,15, - 131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252, - 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253, - 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255, - 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124, - 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194, - 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129, - 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255, - 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244, - 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15, - 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15, - 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252, - 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4, - 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221, - 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124, - 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255, - 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244, - 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239, - 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44, - 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221, - 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255, - 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194, - 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4, - 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4, - 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242, - 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252, - 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252, - 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252, - 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244, - 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139, - 76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,36,137,205,137,116, - 36,100,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,110,252,255, - 15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199, - 68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,252,235,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252, - 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242, - 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208, - 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137, - 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193, - 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173, - 233,72,139,69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233, - 0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252, - 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198, - 4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134, - 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1, - 30,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253, - 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15, - 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244, - 1,137,213,137,194,141,139,233,232,251,1,30,137,252,234,252,233,244,1,255, - 139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233, - 255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172, - 253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193, - 232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233, - 0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,31,139,149, - 233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, - 235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20, - 135,137,252,233,137,116,36,100,232,251,1,32,139,149,233,15,182,78,252,253, - 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233, - 137,116,36,100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232, - 11,61,252,255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,33, - 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252, - 233,244,2,248,5,137,252,233,232,251,1,34,15,183,70,252,254,252,233,244,1, - 255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137, - 149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,35,139,149, - 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,34, - 15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106, - 252,248,139,173,233,139,4,135,252,233,244,169,255,72,252,247,208,139,106, - 252,248,139,173,233,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192, - 129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194, - 4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255, - 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, - 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253, - 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244, - 249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3, - 199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, - 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208, - 139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169, - 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, - 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, - 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194, - 4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141, - 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,37, - 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139, - 44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239, - 15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249, - 139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,78,252,253,248,3, - 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253, - 252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133,233, - 15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1, - 252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189, - 233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42,15,182, - 78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42,139,4, - 194,252,233,244,170,248,7,128,165,233,235,139,139,233,137,171,233,137,141, - 233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252, - 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139,44,252,234, - 248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1, - 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239, - 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182, - 70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,232,131,198,4, - 193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,2,137,76,36, - 80,139,141,233,252,246,129,233,235,15,132,244,40,139,76,36,80,252,233,244, - 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244, - 252,252,246,129,233,235,15,132,244,40,248,6,137,68,36,80,199,68,36,84,237, - 137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205, - 137,116,36,100,232,251,1,36,139,149,233,139,108,36,32,137,193,252,233,244, - 2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3, - 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139, - 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239, - 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202, - 72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, - 235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235, - 15,132,244,41,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139, - 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36, - 80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133, - 244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,233, - 15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,8,72, - 137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96, - 137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,37,139, - 149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131, - 233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,253, - 202,4,239,139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233, - 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,76, - 202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60, - 139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137, - 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131, - 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233, - 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198, - 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252, - 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252, - 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242, - 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255, - 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105, - 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15, - 133,244,29,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182, - 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202, - 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216, - 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248, - 255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2, - 15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,84,139,124,36,80,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131, - 192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,133, - 233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,253, - 141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,72,137,68,202,8,137, - 92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6,255,129,124,253, - 202,252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239, - 15,133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235, - 15,133,244,251,141,180,253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6, - 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,198,70, - 252,252,235,141,180,253,134,233,198,6,235,252,233,244,1,255,15,182,252,236, - 15,182,192,137,124,36,80,141,188,253,194,233,141,12,202,43,122,252,252,133, - 252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248, - 1,72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,252,233,15,131,244,249, - 57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2, - 248,3,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3, - 137,197,193,252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133, - 233,15,135,244,253,248,6,255,72,139,71,252,248,131,199,8,72,137,1,131,193, - 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116, - 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149, - 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252, - 137,68,36,84,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1, - 15,132,244,249,248,2,72,139,44,15,72,137,111,252,248,131,199,8,131,232,1, - 15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,244, - 252,255,72,139,44,10,72,137,106,252,248,255,248,5,56,70,252,255,15,135,244, - 252,255,15,182,78,252,253,72,252,247,209,141,20,202,139,122,252,248,139,191, - 233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244, - 237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,15,133, - 244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,239,102, - 129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121,253,4,239, - 15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253,20,239,15, - 133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133, - 244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136, - 244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24, - 255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,253,134,233, - 15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,180, - 253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7, - 255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,7,255, - 252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12, - 239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253,20,239, - 15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255,252,242, - 15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252, - 237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15, - 17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15, - 136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70, - 252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255,141,180, - 253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15,130,244, - 248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12, - 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137, - 105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,137, - 65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,147, - 233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,137,116,36,24,76,137, - 124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,102,15,127,185,233, - 102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,127,145,233,102,68, - 15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,233,102,68,15,127, - 177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,134,233,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,137,252,245, - 209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139, - 190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,24,15,182,142,233, - 57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199, - 68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44, - 197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108, - 36,96,141,12,200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233, - 133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121, - 252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131, - 252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8, - 131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,139,189,233, - 139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133, - 233,255,72,137,252,250,137,252,233,255,15,135,244,22,199,131,233,237,255, - 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194, - 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0 -}; - -enum { - GLOB_vm_returnp, - GLOB_cont_dispatch, - GLOB_vm_returnc, - GLOB_BC_RET_Z, - GLOB_vm_return, - GLOB_vm_leave_cp, - GLOB_vm_leave_unw, - GLOB_vm_unwind_c, - GLOB_vm_unwind_c_eh, - GLOB_vm_unwind_rethrow, - GLOB_vm_unwind_ff, - GLOB_vm_unwind_ff_eh, - GLOB_vm_growstack_c, - GLOB_vm_growstack_v, - GLOB_vm_growstack_f, - GLOB_vm_resume, - GLOB_vm_pcall, - GLOB_vm_call, - GLOB_vm_call_dispatch, - GLOB_vmeta_call, - GLOB_vm_call_dispatch_f, - GLOB_vm_cpcall, - GLOB_cont_ffi_callback, - GLOB_vm_call_tail, - GLOB_cont_cat, - GLOB_cont_ra, - GLOB_BC_CAT_Z, - GLOB_vmeta_tgets, - GLOB_vmeta_tgetb, - GLOB_vmeta_tgetv, - GLOB_vmeta_tsets, - GLOB_vmeta_tsetb, - GLOB_vmeta_tsetv, - GLOB_cont_nop, - GLOB_vmeta_comp, - GLOB_vmeta_binop, - GLOB_cont_condt, - GLOB_cont_condf, - GLOB_vmeta_equal, - GLOB_vmeta_equal_cd, - GLOB_vmeta_arith_vno, - GLOB_vmeta_arith_vn, - GLOB_vmeta_arith_nvo, - GLOB_vmeta_arith_nv, - GLOB_vmeta_unm, - GLOB_vmeta_arith_vvo, - GLOB_vmeta_arith_vv, - GLOB_vmeta_len, - GLOB_BC_LEN_Z, - GLOB_vmeta_call_ra, - GLOB_BC_CALLT_Z, - GLOB_vmeta_for, - GLOB_ff_assert, - GLOB_fff_fallback, - GLOB_fff_res_, - GLOB_ff_type, - GLOB_fff_res1, - GLOB_ff_getmetatable, - GLOB_ff_setmetatable, - GLOB_ff_rawget, - GLOB_ff_tonumber, - GLOB_fff_resi, - GLOB_fff_resxmm0, - GLOB_fff_resn, - GLOB_ff_tostring, - GLOB_fff_gcstep, - GLOB_ff_next, - GLOB_fff_res2, - GLOB_fff_res, - GLOB_ff_pairs, - GLOB_ff_ipairs_aux, - GLOB_fff_res0, - GLOB_ff_ipairs, - GLOB_ff_pcall, - GLOB_ff_xpcall, - GLOB_ff_coroutine_resume, - GLOB_ff_coroutine_wrap_aux, - GLOB_ff_coroutine_yield, - GLOB_ff_math_abs, - GLOB_fff_resbit, - GLOB_ff_math_floor, - GLOB_vm_floor, - GLOB_ff_math_ceil, - GLOB_vm_ceil, - GLOB_ff_math_sqrt, - GLOB_ff_math_log, - GLOB_ff_math_log10, - GLOB_ff_math_exp, - GLOB_vm_exp_x87, - GLOB_ff_math_sin, - GLOB_ff_math_cos, - GLOB_ff_math_tan, - GLOB_ff_math_asin, - GLOB_ff_math_acos, - GLOB_ff_math_atan, - GLOB_ff_math_sinh, - GLOB_ff_math_cosh, - GLOB_ff_math_tanh, - GLOB_ff_math_deg, - GLOB_ff_math_rad, - GLOB_ff_math_atan2, - GLOB_ff_math_ldexp, - GLOB_ff_math_frexp, - GLOB_ff_math_modf, - GLOB_vm_trunc, - GLOB_ff_math_fmod, - GLOB_ff_math_pow, - GLOB_vm_pow, - GLOB_ff_math_min, - GLOB_ff_math_max, - GLOB_ff_string_len, - GLOB_ff_string_byte, - GLOB_ff_string_char, - GLOB_fff_newstr, - GLOB_ff_string_sub, - GLOB_fff_emptystr, - GLOB_ff_string_rep, - GLOB_fff_fallback_2, - GLOB_ff_string_reverse, - GLOB_fff_fallback_1, - GLOB_ff_string_lower, - GLOB_ff_string_upper, - GLOB_ff_table_getn, - GLOB_ff_bit_tobit, - GLOB_ff_bit_band, - GLOB_fff_fallback_bit_op, - GLOB_ff_bit_bor, - GLOB_ff_bit_bxor, - GLOB_ff_bit_bswap, - GLOB_ff_bit_bnot, - GLOB_ff_bit_lshift, - GLOB_ff_bit_rshift, - GLOB_ff_bit_arshift, - GLOB_ff_bit_rol, - GLOB_ff_bit_ror, - GLOB_vm_record, - GLOB_vm_rethook, - GLOB_vm_inshook, - GLOB_cont_hook, - GLOB_vm_hotloop, - GLOB_vm_callhook, - GLOB_vm_hotcall, - GLOB_vm_exit_handler, - GLOB_vm_exit_interp, - GLOB_vm_floor_sse, - GLOB_vm_ceil_sse, - GLOB_vm_trunc_sse, - GLOB_vm_mod, - GLOB_vm_exp2_x87, - GLOB_vm_exp2raw, - GLOB_vm_pow_sse, - GLOB_vm_powi_sse, - GLOB_vm_foldfpm, - GLOB_vm_foldarith, - GLOB_vm_cpuid, - GLOB_assert_bad_for_arg_type, - GLOB_vm_ffi_callback, - GLOB_vm_ffi_call, - GLOB_BC_MODVN_Z, - GLOB_BC_TGETS_Z, - GLOB_BC_TSETS_Z, - GLOB__MAX -}; -static const char *const globnames[] = { - "vm_returnp", - "cont_dispatch", - "vm_returnc", - "BC_RET_Z", - "vm_return", - "vm_leave_cp", - "vm_leave_unw", - "vm_unwind_c@8", - "vm_unwind_c_eh", - "vm_unwind_rethrow", - "vm_unwind_ff@4", - "vm_unwind_ff_eh", - "vm_growstack_c", - "vm_growstack_v", - "vm_growstack_f", - "vm_resume", - "vm_pcall", - "vm_call", - "vm_call_dispatch", - "vmeta_call", - "vm_call_dispatch_f", - "vm_cpcall", - "cont_ffi_callback", - "vm_call_tail", - "cont_cat", - "cont_ra", - "BC_CAT_Z", - "vmeta_tgets", - "vmeta_tgetb", - "vmeta_tgetv", - "vmeta_tsets", - "vmeta_tsetb", - "vmeta_tsetv", - "cont_nop", - "vmeta_comp", - "vmeta_binop", - "cont_condt", - "cont_condf", - "vmeta_equal", - "vmeta_equal_cd", - "vmeta_arith_vno", - "vmeta_arith_vn", - "vmeta_arith_nvo", - "vmeta_arith_nv", - "vmeta_unm", - "vmeta_arith_vvo", - "vmeta_arith_vv", - "vmeta_len", - "BC_LEN_Z", - "vmeta_call_ra", - "BC_CALLT_Z", - "vmeta_for", - "ff_assert", - "fff_fallback", - "fff_res_", - "ff_type", - "fff_res1", - "ff_getmetatable", - "ff_setmetatable", - "ff_rawget", - "ff_tonumber", - "fff_resi", - "fff_resxmm0", - "fff_resn", - "ff_tostring", - "fff_gcstep", - "ff_next", - "fff_res2", - "fff_res", - "ff_pairs", - "ff_ipairs_aux", - "fff_res0", - "ff_ipairs", - "ff_pcall", - "ff_xpcall", - "ff_coroutine_resume", - "ff_coroutine_wrap_aux", - "ff_coroutine_yield", - "ff_math_abs", - "fff_resbit", - "ff_math_floor", - "vm_floor", - "ff_math_ceil", - "vm_ceil", - "ff_math_sqrt", - "ff_math_log", - "ff_math_log10", - "ff_math_exp", - "vm_exp_x87", - "ff_math_sin", - "ff_math_cos", - "ff_math_tan", - "ff_math_asin", - "ff_math_acos", - "ff_math_atan", - "ff_math_sinh", - "ff_math_cosh", - "ff_math_tanh", - "ff_math_deg", - "ff_math_rad", - "ff_math_atan2", - "ff_math_ldexp", - "ff_math_frexp", - "ff_math_modf", - "vm_trunc", - "ff_math_fmod", - "ff_math_pow", - "vm_pow", - "ff_math_min", - "ff_math_max", - "ff_string_len", - "ff_string_byte", - "ff_string_char", - "fff_newstr", - "ff_string_sub", - "fff_emptystr", - "ff_string_rep", - "fff_fallback_2", - "ff_string_reverse", - "fff_fallback_1", - "ff_string_lower", - "ff_string_upper", - "ff_table_getn", - "ff_bit_tobit", - "ff_bit_band", - "fff_fallback_bit_op", - "ff_bit_bor", - "ff_bit_bxor", - "ff_bit_bswap", - "ff_bit_bnot", - "ff_bit_lshift", - "ff_bit_rshift", - "ff_bit_arshift", - "ff_bit_rol", - "ff_bit_ror", - "vm_record", - "vm_rethook", - "vm_inshook", - "cont_hook", - "vm_hotloop", - "vm_callhook", - "vm_hotcall", - "vm_exit_handler", - "vm_exit_interp", - "vm_floor_sse", - "vm_ceil_sse", - "vm_trunc_sse", - "vm_mod", - "vm_exp2_x87", - "vm_exp2raw", - "vm_pow_sse", - "vm_powi_sse", - "vm_foldfpm", - "vm_foldarith", - "vm_cpuid", - "assert_bad_for_arg_type", - "vm_ffi_callback", - "vm_ffi_call@4", - "BC_MODVN_Z", - "BC_TGETS_Z", - "BC_TSETS_Z", - (const char *)0 -}; -static const char *const extnames[] = { - "lj_state_growstack@8", - "lj_meta_tget", - "lj_meta_tset", - "lj_meta_comp", - "lj_meta_equal", - "lj_meta_equal_cd@8", - "lj_meta_arith", - "lj_meta_len@8", - "lj_meta_call", - "lj_meta_for@8", - "lj_tab_get", - "lj_str_fromnumber@8", - "lj_str_fromnum@8", - "lj_tab_next", - "lj_tab_getinth@8", - "lj_ffh_coroutine_wrap_err@8", - "lj_vm_sinh", - "lj_vm_cosh", - "lj_vm_tanh", - "lj_str_new", - "lj_tab_len@4", - "lj_gc_step@4", - "lj_dispatch_ins@8", - "lj_trace_hot@8", - "lj_dispatch_call@8", - "lj_trace_exit@8", - "lj_err_throw@8", - "lj_ccallback_enter@8", - "lj_ccallback_leave@8", - "lj_meta_cat", - "lj_gc_barrieruv@8", - "lj_func_closeuv@8", - "lj_func_newL_gc", - "lj_tab_new", - "lj_gc_step_fixtop@4", - "lj_tab_dup@8", - "lj_tab_newkey", - "lj_tab_reasize", - (const char *)0 -}; -#define Dt1(_V) (int)(ptrdiff_t)&(((lua_State *)0)_V) -#define Dt2(_V) (int)(ptrdiff_t)&(((global_State *)0)_V) -#define Dt3(_V) (int)(ptrdiff_t)&(((TValue *)0)_V) -#define Dt4(_V) (int)(ptrdiff_t)&(((GCobj *)0)_V) -#define Dt5(_V) (int)(ptrdiff_t)&(((GCstr *)0)_V) -#define Dt6(_V) (int)(ptrdiff_t)&(((GCtab *)0)_V) -#define Dt7(_V) (int)(ptrdiff_t)&(((GCfuncL *)0)_V) -#define Dt8(_V) (int)(ptrdiff_t)&(((GCfuncC *)0)_V) -#define Dt9(_V) (int)(ptrdiff_t)&(((GCproto *)0)_V) -#define DtA(_V) (int)(ptrdiff_t)&(((GCupval *)0)_V) -#define DtB(_V) (int)(ptrdiff_t)&(((Node *)0)_V) -#define DtC(_V) (int)(ptrdiff_t)&(((int *)0)_V) -#define DtD(_V) (int)(ptrdiff_t)&(((GCtrace *)0)_V) -#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) -#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) -#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) - -/* Generate subroutines used by opcodes and other parts of the VM. */ -/* The .code_sub section should be last to help static branch prediction. */ -static void build_subroutines(BuildCtx *ctx, int cmov, int sse) -{ - dasm_put(Dst, 0); - dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, FRAME_TYPE, DISPATCH_GL(vmstate), ~LJ_VMST_C); - dasm_put(Dst, 109, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL); - dasm_put(Dst, 198, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK); - dasm_put(Dst, 276, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base)); - dasm_put(Dst, 356, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 511, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); - dasm_put(Dst, 604, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); -#if LJ_HASFFI - dasm_put(Dst, 764); -#endif - dasm_put(Dst, 773, 0); -#if LJ_HASFFI -#endif - dasm_put(Dst, 782, Dt7(->pc), PC2PROTO(k)); -#if LJ_HASFFI - dasm_put(Dst, 796); -#endif - dasm_put(Dst, 817, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 917, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 927); - } else { - } - dasm_put(Dst, 940, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); - dasm_put(Dst, 1087, DISPATCH_GL(tmptv), LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 917, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 927); - } else { - } - dasm_put(Dst, 1110, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 1283, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); - dasm_put(Dst, 1383); -#if LJ_HASFFI - dasm_put(Dst, 1403, Dt1(->base)); -#endif - dasm_put(Dst, 1434); -#if LJ_DUALNUM - dasm_put(Dst, 1437); -#endif - dasm_put(Dst, 1443); -#if LJ_DUALNUM - dasm_put(Dst, 911); -#endif - dasm_put(Dst, 1455); -#if LJ_DUALNUM - dasm_put(Dst, 1437); -#endif - dasm_put(Dst, 1483, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1589); -#else - dasm_put(Dst, 1608); -#endif - dasm_put(Dst, 1613, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); - dasm_put(Dst, 1799, 1+1, ~LJ_TNUMX); - if (cmov) { - dasm_put(Dst, 1868); - } else { - dasm_put(Dst, 1872); - } - dasm_put(Dst, 1881, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); - dasm_put(Dst, 1960, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next)); - dasm_put(Dst, 2017, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD); - dasm_put(Dst, 2083, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB); - dasm_put(Dst, 2153, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB); - dasm_put(Dst, 2242, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2256); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 2278); - } else { - dasm_put(Dst, 2288); - } - dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2361, Dt1(->base)); - if (LJ_DUALNUM) { - dasm_put(Dst, 2385); - } else { - dasm_put(Dst, 2390); - } - dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); - dasm_put(Dst, 2488, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 2535, Dt6(->metatable)); -#endif - dasm_put(Dst, 2544, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2530); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 2599); - if (LJ_DUALNUM) { - dasm_put(Dst, 2604, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 2620, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - } else { - } - dasm_put(Dst, 2653, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); - dasm_put(Dst, 2515, 1+1, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 2535, Dt6(->metatable)); -#endif - dasm_put(Dst, 2730, Dt8(->upvalue[0]), LJ_TFUNC); - if (LJ_DUALNUM) { - dasm_put(Dst, 2751, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 2763); - } else { - dasm_put(Dst, 2773); - } - dasm_put(Dst, 2780, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); - dasm_put(Dst, 2844, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); - dasm_put(Dst, 2934, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); - dasm_put(Dst, 3022, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); - dasm_put(Dst, 3135, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); - dasm_put(Dst, 3233, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); - dasm_put(Dst, 3300, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); - dasm_put(Dst, 3388, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); - dasm_put(Dst, 3500, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 3527); - } - if (sse) { - dasm_put(Dst, 3530); - } - dasm_put(Dst, 3545, 1+1); - if (LJ_DUALNUM) { - dasm_put(Dst, 3556, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 3636, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3646, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); - } else { - dasm_put(Dst, 3677); - } - dasm_put(Dst, 3694, 1+1, FRAME_TYPE, LJ_TNIL); - if (LJ_DUALNUM) { - dasm_put(Dst, 3790, LJ_TISNUM); - } else { - dasm_put(Dst, 3636, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3812); - if (LJ_DUALNUM) { - dasm_put(Dst, 3821); - } - dasm_put(Dst, 2283); - } else { - dasm_put(Dst, 3855); - if (LJ_DUALNUM) { - } else { - dasm_put(Dst, 2290); - } - } - dasm_put(Dst, 3861); - if (LJ_DUALNUM) { - dasm_put(Dst, 3790, LJ_TISNUM); - } else { - dasm_put(Dst, 3636, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3864); - if (LJ_DUALNUM) { - dasm_put(Dst, 3821); - } - dasm_put(Dst, 2283); - } else { - dasm_put(Dst, 3873); - if (LJ_DUALNUM) { - } else { - dasm_put(Dst, 2290); - } - } - if (sse) { - dasm_put(Dst, 3879, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 3908, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 3937, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4006, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4063, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4126, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4216); - if (sse) { - dasm_put(Dst, 4228, 1+1, LJ_TISNUM); - } else { - } - dasm_put(Dst, 4253); - if (sse) { - dasm_put(Dst, 4267, 1+1, LJ_TISNUM); - } else { - } - dasm_put(Dst, 4292); - if (sse) { - dasm_put(Dst, 4306, 1+1, LJ_TISNUM); - } else { - } - dasm_put(Dst, 4331); - if (sse) { - dasm_put(Dst, 4347, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); - } else { - dasm_put(Dst, 4386, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); - } - dasm_put(Dst, 4419, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 4484, 1+1, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4583); - } else { - dasm_put(Dst, 4589); - } - dasm_put(Dst, 4598); - if (sse) { - dasm_put(Dst, 4623); - } else { - dasm_put(Dst, 4629); - } - dasm_put(Dst, 4632, 1+2); - if (sse) { - dasm_put(Dst, 4641); - } else { - dasm_put(Dst, 4649); - } - dasm_put(Dst, 4657); - if (sse) { - dasm_put(Dst, 4660, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); - } else { - dasm_put(Dst, 4687); - } - dasm_put(Dst, 4706); - if (sse) { - dasm_put(Dst, 4722, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 4747, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 4769); - if (sse) { - dasm_put(Dst, 4791); - } else { - dasm_put(Dst, 4817); - } - dasm_put(Dst, 4834, 1+2); - if (sse) { - dasm_put(Dst, 4874); - } else { - dasm_put(Dst, 4882); - } - dasm_put(Dst, 4892, 2+1, LJ_TISNUM, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4944, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 4991, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 5032, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5045, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4583); - } else { - } - dasm_put(Dst, 5095); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 5106, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5127); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 5148); - } else { - } - dasm_put(Dst, 5173, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5186, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4583); - } else { - } - dasm_put(Dst, 5095); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 5106, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5127); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 5236); - } else { - } - if (!sse) { - dasm_put(Dst, 5261); - } - dasm_put(Dst, 5270, 1+1, LJ_TSTR); - if (LJ_DUALNUM) { - dasm_put(Dst, 5292, Dt5(->len)); - } else if (sse) { - dasm_put(Dst, 5300, Dt5(->len)); - } else { - dasm_put(Dst, 5311, Dt5(->len)); - } - dasm_put(Dst, 5319, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); - if (LJ_DUALNUM) { - dasm_put(Dst, 5295); - } else if (sse) { - dasm_put(Dst, 5357); - } else { - dasm_put(Dst, 5367); - } - dasm_put(Dst, 5380, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5411); - } else if (sse) { - dasm_put(Dst, 5434); - } else { - dasm_put(Dst, 5460); - } - dasm_put(Dst, 5484, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5592); - } else if (sse) { - dasm_put(Dst, 5604); - } else { - dasm_put(Dst, 5619); - } - dasm_put(Dst, 5631, LJ_TSTR, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2530); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 5648, Dt5(->len)); - if (LJ_DUALNUM) { - dasm_put(Dst, 5658); - } else if (sse) { - dasm_put(Dst, 5662); - } else { - } - dasm_put(Dst, 5669, sizeof(GCstr)-1); - dasm_put(Dst, 5744, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 5803, LJ_TSTR, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5820); - } else if (sse) { - dasm_put(Dst, 5828); - } else { - dasm_put(Dst, 5839); - } - dasm_put(Dst, 5855, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5920, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 5983, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 6054, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6139, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6209, 1+1, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 6277); - } else if (sse) { - dasm_put(Dst, 6284); - } else { - } - dasm_put(Dst, 6294, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6310); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 106); - if (LJ_DUALNUM || sse) { - if (!sse) { - } - dasm_put(Dst, 6351); - } else { - } - dasm_put(Dst, 6356, 1+1); - if (sse) { - dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - dasm_put(Dst, 6377); - } - dasm_put(Dst, 2250, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6403); - } else { - } - dasm_put(Dst, 6418, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6443); - } else { - dasm_put(Dst, 6463); - } - if (sse) { - dasm_put(Dst, 6468); - } else { - } - dasm_put(Dst, 6485, 1+1); - if (sse) { - dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - dasm_put(Dst, 6377); - } - dasm_put(Dst, 2250, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6403); - } else { - } - dasm_put(Dst, 6418, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6503); - } else { - dasm_put(Dst, 6463); - } - if (sse) { - dasm_put(Dst, 6523); - } else { - } - dasm_put(Dst, 6540, 1+1); - if (sse) { - dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - dasm_put(Dst, 6377); - } - dasm_put(Dst, 2250, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6403); - } else { - } - dasm_put(Dst, 6418, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6558); - } else { - dasm_put(Dst, 6463); - } - if (sse) { - dasm_put(Dst, 6578); - } else { - } - dasm_put(Dst, 6595, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6618, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6642); - if (LJ_DUALNUM) { - dasm_put(Dst, 6351); - } else if (sse) { - dasm_put(Dst, 6648); - } else { - } - dasm_put(Dst, 6660); - if (LJ_DUALNUM) { - dasm_put(Dst, 6671, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6687, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 6702, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6769); - if (LJ_DUALNUM) { - dasm_put(Dst, 6776, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6687, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 6792, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6859); - if (LJ_DUALNUM) { - dasm_put(Dst, 6867, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6687, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 6883, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6950); - if (LJ_DUALNUM) { - dasm_put(Dst, 6958, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6687, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 6974, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 7041); - if (LJ_DUALNUM) { - dasm_put(Dst, 7048, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6386); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 6687, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7064, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); - } else { - } - dasm_put(Dst, 7131, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 7207, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 7334, Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 7373, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); -#endif - dasm_put(Dst, 7404, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); - dasm_put(Dst, 7455, Dt1(->base), Dt1(->base), GG_DISP2STATIC); -#if LJ_HASJIT - dasm_put(Dst, 7522, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); -#endif - dasm_put(Dst, 7569); -#if LJ_HASJIT - dasm_put(Dst, 7399); -#endif - dasm_put(Dst, 7576); -#if LJ_HASJIT - dasm_put(Dst, 7579); -#endif - dasm_put(Dst, 7589, Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 7623); -#endif - dasm_put(Dst, 7628, Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 7659, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); -#endif - dasm_put(Dst, 7889); -#if LJ_HASJIT - dasm_put(Dst, 7892, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); - dasm_put(Dst, 8034); -#endif - dasm_put(Dst, 8060); - if (!sse) { - dasm_put(Dst, 8063); - } - dasm_put(Dst, 8108, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - if (!sse) { - dasm_put(Dst, 8194); - } - dasm_put(Dst, 8239, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); - if (!sse) { - dasm_put(Dst, 8325); - } - dasm_put(Dst, 8364, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - if (sse) { - dasm_put(Dst, 8453, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - } else { - dasm_put(Dst, 8567); - } - dasm_put(Dst, 8614); - if (!sse) { - } else { - dasm_put(Dst, 8688); - } - dasm_put(Dst, 8691); - dasm_put(Dst, 8776, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - dasm_put(Dst, 8879, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); - dasm_put(Dst, 9035); -#if LJ_HASJIT - if (sse) { - dasm_put(Dst, 9076); - dasm_put(Dst, 9146); - dasm_put(Dst, 9219); - } else { - dasm_put(Dst, 9269); - dasm_put(Dst, 9361); - } - dasm_put(Dst, 9407); -#endif - dasm_put(Dst, 9411); - if (sse) { - dasm_put(Dst, 9414, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); - dasm_put(Dst, 9503, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); - } else { - dasm_put(Dst, 9627); - dasm_put(Dst, 9710); - if (cmov) { - dasm_put(Dst, 9765); - } else { - dasm_put(Dst, 9784); - } - dasm_put(Dst, 9407); - } - dasm_put(Dst, 9825); -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 9409); -#endif - dasm_put(Dst, 9853); -#if LJ_HASFFI -#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) - dasm_put(Dst, 9857, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE+4*8, DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc)); -#endif - dasm_put(Dst, 9984); -#if LJ_HASFFI - dasm_put(Dst, 9987, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0])); -#endif - dasm_put(Dst, 10028); -#if LJ_HASFFI -#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 10031, DtF(->spadj)); -#if LJ_TARGET_WINDOWS -#endif - dasm_put(Dst, 10046, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3])); - dasm_put(Dst, 10127, DtF(->func), DtF(->gpr[0]), DtF(->fpr[0])); -#if LJ_TARGET_WINDOWS -#endif - dasm_put(Dst, 10140); -#endif -} - -/* Generate the code for a single instruction. */ -static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) -{ - int vk = 0; - dasm_put(Dst, 780, defop); - - switch (op) { - - /* -- Comparison ops ---------------------------------------------------- */ - - /* Remember: all ops branch for a true comparison, fall through otherwise. */ - - - case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - if (LJ_DUALNUM) { - dasm_put(Dst, 10148, LJ_TISNUM, LJ_TISNUM); - switch (op) { - case BC_ISLT: - dasm_put(Dst, 10178); - break; - case BC_ISGE: - dasm_put(Dst, 10183); - break; - case BC_ISLE: - dasm_put(Dst, 10188); - break; - case BC_ISGT: - dasm_put(Dst, 10193); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10198, -BCBIAS_J*4, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 10252); - } else { - dasm_put(Dst, 10263); - } - dasm_put(Dst, 10274); - if (sse) { - dasm_put(Dst, 10281); - switch (op) { - case BC_ISLT: - dasm_put(Dst, 10301); - break; - case BC_ISGE: - dasm_put(Dst, 10306); - break; - case BC_ISLE: - dasm_put(Dst, 10311); - break; - case BC_ISGT: - dasm_put(Dst, 10316); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10321); - } else { - dasm_put(Dst, 10326); - } - } else { - dasm_put(Dst, 10334, LJ_TISNUM, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 10355); - } else { - dasm_put(Dst, 10376); - if (cmov) { - dasm_put(Dst, 10392); - } else { - dasm_put(Dst, 10398); - } - } - if (LJ_DUALNUM) { - switch (op) { - case BC_ISLT: - dasm_put(Dst, 10301); - break; - case BC_ISGE: - dasm_put(Dst, 10306); - break; - case BC_ISLE: - dasm_put(Dst, 10311); - break; - case BC_ISGT: - dasm_put(Dst, 10316); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10321); - } else { - switch (op) { - case BC_ISLT: - dasm_put(Dst, 768); - break; - case BC_ISGE: - dasm_put(Dst, 10405); - break; - case BC_ISLE: - dasm_put(Dst, 10410); - break; - case BC_ISGT: - dasm_put(Dst, 10415); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 10420, -BCBIAS_J*4); - } - break; - - case BC_ISEQV: case BC_ISNEV: - vk = op == BC_ISEQV; - dasm_put(Dst, 10452); - if (LJ_DUALNUM) { - dasm_put(Dst, 10460, LJ_TISNUM, LJ_TISNUM); - if (vk) { - dasm_put(Dst, 10485); - } else { - dasm_put(Dst, 10490); - } - dasm_put(Dst, 10495, -BCBIAS_J*4, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 10547); - } else { - dasm_put(Dst, 10554); - } - dasm_put(Dst, 10558); - if (sse) { - dasm_put(Dst, 10569); - } else { - dasm_put(Dst, 10581); - } - dasm_put(Dst, 10588); - } else { - dasm_put(Dst, 10593, LJ_TISNUM, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 10612); - } else { - dasm_put(Dst, 10630); - if (cmov) { - dasm_put(Dst, 10392); - } else { - dasm_put(Dst, 10398); - } - } - iseqne_fp: - if (vk) { - dasm_put(Dst, 10643); - } else { - dasm_put(Dst, 10652); - } - iseqne_end: - if (vk) { - dasm_put(Dst, 10661, -BCBIAS_J*4); - if (!LJ_HASFFI) { - dasm_put(Dst, 4638); - } - } else { - if (!LJ_HASFFI) { - dasm_put(Dst, 4638); - } - dasm_put(Dst, 10676, -BCBIAS_J*4); - } - if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || - op == BC_ISEQN || op == BC_ISNEN)) { - dasm_put(Dst, 10691); - } else { - dasm_put(Dst, 10432); - } - if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 10124); - if (LJ_HASFFI) { - dasm_put(Dst, 10696, LJ_TCDATA, LJ_TCDATA); - } - dasm_put(Dst, 10715, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<>32)); - } else { - dasm_put(Dst, 11303); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 10691); - } else { - dasm_put(Dst, 10432); - } - break; - case BC_LEN: - dasm_put(Dst, 11312, LJ_TSTR); - if (LJ_DUALNUM) { - dasm_put(Dst, 11326, Dt5(->len), LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 11340, Dt5(->len)); - } else { - dasm_put(Dst, 11358, Dt5(->len)); - } - dasm_put(Dst, 11367, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 11402, Dt6(->metatable)); -#endif - dasm_put(Dst, 11416); - if (LJ_DUALNUM) { - } else if (sse) { - dasm_put(Dst, 11425); - } else { - } - dasm_put(Dst, 11431); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 11444, Dt6(->nomm), 1<base), Dt1(->base)); - break; - - /* -- Constant ops ------------------------------------------------------ */ - - case BC_KSTR: - dasm_put(Dst, 12270, LJ_TSTR); - break; - case BC_KCDATA: -#if LJ_HASFFI - dasm_put(Dst, 12270, LJ_TCDATA); -#endif - break; - case BC_KSHORT: - if (LJ_DUALNUM) { - dasm_put(Dst, 12305, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 12317); - } else { - dasm_put(Dst, 12332); - } - dasm_put(Dst, 10432); - break; - case BC_KNUM: - if (sse) { - dasm_put(Dst, 12340); - } else { - dasm_put(Dst, 12353); - } - dasm_put(Dst, 10432); - break; - case BC_KPRI: - dasm_put(Dst, 12360); - break; - case BC_KNIL: - dasm_put(Dst, 12388, LJ_TNIL); - break; - - /* -- Upvalue and function ops ------------------------------------------ */ - - case BC_UGET: - dasm_put(Dst, 12435, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETV: -#define TV2MARKOFS \ - ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 12475, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - dasm_put(Dst, 12566); - break; -#undef TV2MARKOFS - case BC_USETS: - dasm_put(Dst, 12578, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); - break; - case BC_USETN: - dasm_put(Dst, 12671); - if (sse) { - dasm_put(Dst, 12676); - } else { - dasm_put(Dst, 10951); - } - dasm_put(Dst, 12683, offsetof(GCfuncL, uvptr), DtA(->v)); - if (sse) { - dasm_put(Dst, 12692); - } else { - dasm_put(Dst, 12698); - } - dasm_put(Dst, 10432); - break; - case BC_USETP: - dasm_put(Dst, 12701, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_UCLO: - dasm_put(Dst, 12740, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); - break; - - case BC_FNEW: - dasm_put(Dst, 12795, Dt1(->base), Dt1(->base), LJ_TFUNC); - break; - - /* -- Table ops --------------------------------------------------------- */ - - case BC_TNEW: - dasm_put(Dst, 12861, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); - break; - case BC_TDUP: - dasm_put(Dst, 12983, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); - break; - - case BC_GGET: - dasm_put(Dst, 13078, Dt7(->env)); - break; - case BC_GSET: - dasm_put(Dst, 13097, Dt7(->env)); - break; - - case BC_TGETV: - dasm_put(Dst, 13116, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 13139, LJ_TISNUM); - } else { - dasm_put(Dst, 13153, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 13164); - } else { - } - dasm_put(Dst, 13185); - } - dasm_put(Dst, 13190, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 13383, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - case BC_TSETS: - dasm_put(Dst, 13731, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 13807, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 13895, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - case BC_TSETB: - dasm_put(Dst, 13986, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 14080, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - - case BC_TSETM: - dasm_put(Dst, 14126, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 14269, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - - /* -- Calls and vararg handling ----------------------------------------- */ - - case BC_CALL: case BC_CALLM: - dasm_put(Dst, 11464); - if (op == BC_CALLM) { - dasm_put(Dst, 14287); - } - dasm_put(Dst, 14292, LJ_TFUNC, Dt7(->pc)); - break; - - case BC_CALLMT: - dasm_put(Dst, 14287); - break; - case BC_CALLT: - dasm_put(Dst, 14334, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 14449, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); - break; - - case BC_ITERC: - dasm_put(Dst, 14520, LJ_TFUNC, 2+1, Dt7(->pc)); - break; - - case BC_ITERN: -#if LJ_HASJIT -#endif - dasm_put(Dst, 14591, Dt6(->asize), Dt6(->array), LJ_TNIL); - if (LJ_DUALNUM) { - dasm_put(Dst, 11331, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 11425); - } else { - dasm_put(Dst, 14637); - } - dasm_put(Dst, 14643); - if (LJ_DUALNUM) { - } else if (sse) { - dasm_put(Dst, 11296); - } else { - dasm_put(Dst, 11308); - } - dasm_put(Dst, 14656, -BCBIAS_J*4); - if (!LJ_DUALNUM && !sse) { - dasm_put(Dst, 14708); - } - dasm_put(Dst, 14714, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); - break; - - case BC_ISNEXT: - dasm_put(Dst, 14786, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); - break; - - case BC_VARG: - dasm_put(Dst, 14886, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); - dasm_put(Dst, 15046, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); - break; - - /* -- Returns ----------------------------------------------------------- */ - - case BC_RETM: - dasm_put(Dst, 14287); - break; - - case BC_RET: case BC_RET0: case BC_RET1: - if (op != BC_RET0) { - dasm_put(Dst, 15112); - } - dasm_put(Dst, 15116, FRAME_TYPE); - switch (op) { - case BC_RET: - dasm_put(Dst, 15135); - break; - case BC_RET1: - dasm_put(Dst, 15187); - /* fallthrough */ - case BC_RET0: - dasm_put(Dst, 15197); - default: - break; - } - dasm_put(Dst, 15208, Dt7(->pc), PC2PROTO(k)); - if (op == BC_RET) { - dasm_put(Dst, 15252, LJ_TNIL); - } else { - dasm_put(Dst, 15261, LJ_TNIL); - } - dasm_put(Dst, 15268, -FRAME_VARG, FRAME_TYPEP); - if (op != BC_RET0) { - dasm_put(Dst, 15292); - } - dasm_put(Dst, 4717); - break; - - /* -- Loops and branches ------------------------------------------------ */ - - - case BC_FORL: -#if LJ_HASJIT - dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JFORI: - case BC_JFORL: -#if !LJ_HASJIT - break; -#endif - case BC_FORI: - case BC_IFORL: - vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 15317); - if (LJ_DUALNUM) { - dasm_put(Dst, 15321, LJ_TISNUM); - if (!vk) { - dasm_put(Dst, 15331, LJ_TISNUM, LJ_TISNUM); - } else { -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 15360, LJ_TISNUM, LJ_TISNUM); -#endif - dasm_put(Dst, 15379); - } - dasm_put(Dst, 15398, LJ_TISNUM); - if (op == BC_FORI) { - dasm_put(Dst, 15409, -BCBIAS_J*4); - } else if (op == BC_JFORI) { - dasm_put(Dst, 15423, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - dasm_put(Dst, 15441, -BCBIAS_J*4); - } else { - dasm_put(Dst, 15433, BC_JLOOP); - } - dasm_put(Dst, 15455); - if (vk) { - dasm_put(Dst, 15479); - } - dasm_put(Dst, 15398, LJ_TISNUM); - if (op == BC_FORI) { - dasm_put(Dst, 15488); - } else if (op == BC_JFORI) { - dasm_put(Dst, 15493, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - dasm_put(Dst, 15507); - } else { - dasm_put(Dst, 15503, BC_JLOOP); - } - dasm_put(Dst, 15512); - } else if (!vk) { - dasm_put(Dst, 15519, LJ_TISNUM); - } - if (!vk) { - dasm_put(Dst, 15525, LJ_TISNUM); - } else { -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 15539, LJ_TISNUM, LJ_TISNUM); -#endif - } - dasm_put(Dst, 15558); - if (!vk) { - dasm_put(Dst, 15562, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 15571); - if (vk) { - dasm_put(Dst, 15583); - } else { - dasm_put(Dst, 15602); - } - dasm_put(Dst, 15607); - } else { - dasm_put(Dst, 15620); - if (vk) { - dasm_put(Dst, 15626); - } else { - dasm_put(Dst, 15642); - } - dasm_put(Dst, 15650); - if (cmov) { - dasm_put(Dst, 10392); - } else { - dasm_put(Dst, 10398); - } - if (!cmov) { - dasm_put(Dst, 15655); - } - } - if (op == BC_FORI) { - if (LJ_DUALNUM) { - dasm_put(Dst, 15661); - } else { - dasm_put(Dst, 15666, -BCBIAS_J*4); - } - } else if (op == BC_JFORI) { - dasm_put(Dst, 15676, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - if (LJ_DUALNUM) { - dasm_put(Dst, 15690); - } else { - dasm_put(Dst, 15695, -BCBIAS_J*4); - } - } else { - dasm_put(Dst, 15686, BC_JLOOP); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 10321); - } else { - dasm_put(Dst, 11081); - } - if (sse) { - dasm_put(Dst, 15705); - } - break; - - case BC_ITERL: -#if LJ_HASJIT - dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JITERL: -#if !LJ_HASJIT - break; -#endif - case BC_IITERL: - dasm_put(Dst, 15716, LJ_TNIL); - if (op == BC_JITERL) { - dasm_put(Dst, 15731, BC_JLOOP); - } else { - dasm_put(Dst, 15745, -BCBIAS_J*4); - } - dasm_put(Dst, 10430); - break; - - case BC_LOOP: -#if LJ_HASJIT - dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_ILOOP: - dasm_put(Dst, 10432); - break; - - case BC_JLOOP: -#if LJ_HASJIT - dasm_put(Dst, 15761, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16); -#endif - break; - - case BC_JMP: - dasm_put(Dst, 15870, -BCBIAS_J*4); - break; - - /* -- Function headers -------------------------------------------------- */ - - /* - ** Reminder: A function may be called with func/args above L->maxstack, - ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot, - ** too. This means all FUNC* ops (including fast functions) must check - ** for stack overflow _before_ adding more slots! - */ - - case BC_FUNCF: -#if LJ_HASJIT - dasm_put(Dst, 15895, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); -#endif - case BC_FUNCV: /* NYI: compiled vararg functions. */ - break; - - case BC_JFUNCF: -#if !LJ_HASJIT - break; -#endif - case BC_IFUNCF: - dasm_put(Dst, 15916, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); - if (op == BC_JFUNCF) { - dasm_put(Dst, 15946, BC_JLOOP); - } else { - dasm_put(Dst, 10432); - } - dasm_put(Dst, 15955, LJ_TNIL); - break; - - case BC_JFUNCV: -#if !LJ_HASJIT - break; -#endif - dasm_put(Dst, 9409); - break; /* NYI: compiled vararg functions. */ - - case BC_IFUNCV: - dasm_put(Dst, 15977, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); - if (op == BC_JFUNCV) { - dasm_put(Dst, 15946, BC_JLOOP); - } else { - dasm_put(Dst, 16068, -4+PC2PROTO(k)); - } - dasm_put(Dst, 16091, LJ_TNIL); - break; - - case BC_FUNCC: - case BC_FUNCCW: - dasm_put(Dst, 16113, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); - if (op == BC_FUNCC) { - dasm_put(Dst, 2381); - } else { - dasm_put(Dst, 16143); - } - dasm_put(Dst, 16151, DISPATCH_GL(vmstate), ~LJ_VMST_C); - if (op == BC_FUNCC) { - dasm_put(Dst, 16160); - } else { - dasm_put(Dst, 16164, DISPATCH_GL(wrapf)); - } - dasm_put(Dst, 16169, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); - break; - - /* ---------------------------------------------------------------------- */ - - default: - fprintf(stderr, "Error: undefined opcode BC_%s\n", bc_names[op]); - exit(2); - break; - } -} - -static int build_backend(BuildCtx *ctx) -{ - int op; - int cmov = 1; - int sse = 0; -#ifdef LUAJIT_CPU_NOCMOV - cmov = 0; -#endif -#if defined(LUAJIT_CPU_SSE2) || defined(LJ_TARGET_X64) - sse = 1; -#endif - - dasm_growpc(Dst, BC__MAX); - - build_subroutines(ctx, cmov, sse); - - dasm_put(Dst, 16194); - for (op = 0; op < BC__MAX; op++) - build_ins(ctx, (BCOp)op, op, cmov, sse); - - return BC__MAX; -} - -/* Emit pseudo frame-info for all assembler functions. */ -static void emit_asm_debug(BuildCtx *ctx) -{ - int fcofs = (int)((uint8_t *)ctx->glob[GLOB_vm_ffi_call] - ctx->code); -#if LJ_64 -#define SZPTR "8" -#define BSZPTR "3" -#define REG_SP "0x7" -#define REG_RA "0x10" -#else -#define SZPTR "4" -#define BSZPTR "2" -#define REG_SP "0x4" -#define REG_RA "0x8" -#endif - switch (ctx->mode) { - case BUILD_elfasm: - fprintf(ctx->fp, "\t.section .debug_frame,\"\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe0:\n" - "\t.long .LECIE0-.LSCIE0\n" - ".LSCIE0:\n" - "\t.long 0xffffffff\n" - "\t.byte 0x1\n" - "\t.string \"\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE0:\n\n"); - fprintf(ctx->fp, - ".LSFDE0:\n" - "\t.long .LEFDE0-.LASFDE0\n" - ".LASFDE0:\n" - "\t.long .Lframe0\n" -#if LJ_64 - "\t.quad .Lbegin\n" - "\t.quad %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.long .Lbegin\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE0:\n\n", fcofs, CFRAME_SIZE); -#if LJ_HASFFI - fprintf(ctx->fp, - ".LSFDE1:\n" - "\t.long .LEFDE1-.LASFDE1\n" - ".LASFDE1:\n" - "\t.long .Lframe0\n" -#if LJ_64 - "\t.quad lj_vm_ffi_call\n" - "\t.quad %d\n" - "\t.byte 0xe\n\t.uleb128 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ -#else - "\t.long lj_vm_ffi_call\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 8\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0xd\n\t.uleb128 0x5\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); -#endif -#if (defined(__sun__) && defined(__svr4__)) || defined(__solaris_) - fprintf(ctx->fp, "\t.section .eh_frame,\"aw\",@progbits\n"); -#else - fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@progbits\n"); -#endif - fprintf(ctx->fp, - ".Lframe1:\n" - "\t.long .LECIE1-.LSCIE1\n" - ".LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zPR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 6\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.long lj_err_unwind_dwarf-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE1:\n\n"); - fprintf(ctx->fp, - ".LSFDE2:\n" - "\t.long .LEFDE2-.LASFDE2\n" - ".LASFDE2:\n" - "\t.long .LASFDE2-.Lframe1\n" - "\t.long .Lbegin-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE2:\n\n", fcofs, CFRAME_SIZE); -#if LJ_HASFFI - fprintf(ctx->fp, - ".Lframe2:\n" - "\t.long .LECIE2-.LSCIE2\n" - ".LSCIE2:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 1\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE2:\n\n"); - fprintf(ctx->fp, - ".LSFDE3:\n" - "\t.long .LEFDE3-.LASFDE3\n" - ".LASFDE3:\n" - "\t.long .LASFDE3-.Lframe2\n" - "\t.long lj_vm_ffi_call-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0xe\n\t.uleb128 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ -#else - "\t.byte 0xe\n\t.uleb128 8\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0xd\n\t.uleb128 0x5\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE3:\n\n", (int)ctx->codesz - fcofs); -#endif - break; - case BUILD_coffasm: - fprintf(ctx->fp, "\t.section .eh_frame,\"dr\"\n"); - fprintf(ctx->fp, - "\t.def %slj_err_unwind_dwarf; .scl 2; .type 32; .endef\n", - LJ_32 ? "_" : ""); - fprintf(ctx->fp, - "Lframe1:\n" - "\t.long LECIE1-LSCIE1\n" - "LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zP\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 5\n" /* augmentation length */ - "\t.byte 0x00\n" /* absptr */ - "\t.long %slj_err_unwind_dwarf\n" - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - "LECIE1:\n\n", LJ_32 ? "_" : ""); - fprintf(ctx->fp, - "LSFDE1:\n" - "\t.long LEFDE1-LASFDE1\n" - "LASFDE1:\n" - "\t.long LASFDE1-Lframe1\n" - "\t.long %slj_vm_asm_begin\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - "LEFDE1:\n\n", LJ_32 ? "_" : "", (int)ctx->codesz, CFRAME_SIZE); - break; - /* Mental note: never let Apple design an assembler. - ** Or a linker. Or a plastic case. But I digress. - */ - case BUILD_machasm: { -#if LJ_HASFFI - int fcsize = 0; -#endif - int i; - fprintf(ctx->fp, "\t.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support\n"); - fprintf(ctx->fp, - "EH_frame1:\n" - "\t.set L$set$x,LECIEX-LSCIEX\n" - "\t.long L$set$x\n" - "LSCIEX:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.ascii \"zPR\\0\"\n" - "\t.byte 0x1\n" - "\t.byte 128-" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 6\n" /* augmentation length */ - "\t.byte 0x9b\n" /* indirect|pcrel|sdata4 */ -#if LJ_64 - "\t.long _lj_err_unwind_dwarf+4@GOTPCREL\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte " REG_SP "\n\t.byte " SZPTR "\n" -#else - "\t.long L_lj_err_unwind_dwarf$non_lazy_ptr-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte 0x5\n\t.byte 0x4\n" /* esp=5 on 32 bit MACH-O. */ -#endif - "\t.byte 0x80+" REG_RA "\n\t.byte 0x1\n" - "\t.align " BSZPTR "\n" - "LECIEX:\n\n"); - for (i = 0; i < ctx->nsym; i++) { - const char *name = ctx->sym[i].name; - int32_t size = ctx->sym[i+1].ofs - ctx->sym[i].ofs; - if (size == 0) continue; -#if LJ_HASFFI - if (!strcmp(name, "_lj_vm_ffi_call")) { fcsize = size; continue; } -#endif - fprintf(ctx->fp, - "%s.eh:\n" - "LSFDE%d:\n" - "\t.set L$set$%d,LEFDE%d-LASFDE%d\n" - "\t.long L$set$%d\n" - "LASFDE%d:\n" - "\t.long LASFDE%d-EH_frame1\n" - "\t.long %s-.\n" - "\t.long %d\n" - "\t.byte 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.byte %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.byte 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.byte 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.byte 0x5\n" /* offset r14 */ -#else - "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ - "\t.byte 0x87\n\t.byte 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.byte 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.byte 0x5\n" /* offset ebx */ -#endif - "\t.align " BSZPTR "\n" - "LEFDE%d:\n\n", - name, i, i, i, i, i, i, i, name, size, CFRAME_SIZE, i); - } -#if LJ_HASFFI - if (fcsize) { - fprintf(ctx->fp, - "EH_frame2:\n" - "\t.set L$set$y,LECIEY-LSCIEY\n" - "\t.long L$set$y\n" - "LSCIEY:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.ascii \"zR\\0\"\n" - "\t.byte 0x1\n" - "\t.byte 128-" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 1\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte " REG_SP "\n\t.byte " SZPTR "\n" -#else - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte 0x5\n\t.byte 0x4\n" /* esp=5 on 32 bit MACH. */ -#endif - "\t.byte 0x80+" REG_RA "\n\t.byte 0x1\n" - "\t.align " BSZPTR "\n" - "LECIEY:\n\n"); - fprintf(ctx->fp, - "_lj_vm_ffi_call.eh:\n" - "LSFDEY:\n" - "\t.set L$set$yy,LEFDEY-LASFDEY\n" - "\t.long L$set$yy\n" - "LASFDEY:\n" - "\t.long LASFDEY-EH_frame2\n" - "\t.long _lj_vm_ffi_call-.\n" - "\t.long %d\n" - "\t.byte 0\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0xe\n\t.byte 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.byte 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset rbx */ -#else - "\t.byte 0xe\n\t.byte 8\n" /* def_cfa_offset */ - "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ - "\t.byte 0xd\n\t.uleb128 0x4\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset ebx */ -#endif - "\t.align " BSZPTR "\n" - "LEFDEY:\n\n", fcsize); - } -#endif -#if LJ_64 - fprintf(ctx->fp, "\t.subsections_via_symbols\n"); -#else - fprintf(ctx->fp, - "\t.non_lazy_symbol_pointer\n" - "L_lj_err_unwind_dwarf$non_lazy_ptr:\n" - ".indirect_symbol _lj_err_unwind_dwarf\n" - ".long 0\n"); -#endif - } - break; - default: /* Difficult for other modes. */ - break; - } -} - diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h deleted file mode 100644 index cd33cf87..00000000 --- a/src/buildvm_x86.h +++ /dev/null @@ -1,3561 +0,0 @@ -/* -** This file has been pre-processed with DynASM. -** http://luajit.org/dynasm.html -** DynASM version 1.3.0, DynASM x86 version 1.3.0 -** DO NOT EDIT! The original file is in "buildvm_x86.dasc". -*/ - -#if DASM_VERSION != 10300 -#error "Version mismatch between DynASM and included encoding engine" -#endif - -#define DASM_SECTION_CODE_OP 0 -#define DASM_SECTION_CODE_SUB 1 -#define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[17321] = { - 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141, - 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36, - 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15, - 133,244,10,199,131,233,237,131,230,252,248,41,214,252,247,222,131,232,1,15, - 132,244,248,248,1,139,44,10,137,106,252,248,139,108,10,4,137,106,252,252, - 131,194,8,131,232,1,15,133,244,1,248,2,255,139,108,36,48,137,181,233,248, - 3,139,68,36,20,139,76,36,56,248,4,57,193,15,133,244,252,248,5,131,252,234, - 8,137,149,233,248,15,139,76,36,52,137,141,233,49,192,248,16,131,196,28,91, - 94,95,93,195,248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252, - 237,131,194,8,131,192,1,252,233,244,4,248,7,255,133,201,15,132,244,5,41,193, - 141,20,202,252,233,244,5,248,8,137,149,233,137,68,36,20,137,202,137,252,233, - 232,251,1,0,139,149,233,252,233,244,3,248,17,137,208,137,204,248,18,139,108, - 36,48,139,173,233,199,133,233,237,252,233,244,16,248,19,248,20,129,225,239, - 137,204,248,21,255,139,108,36,48,185,252,248,252,255,252,255,252,255,184, - 237,139,149,233,139,157,233,129,195,239,139,114,252,252,199,66,252,252,237, - 199,131,233,237,252,233,244,12,248,22,186,237,252,233,244,248,248,23,131, - 232,8,252,233,244,247,248,24,141,68,194,252,248,248,1,15,182,142,233,131, - 198,4,137,149,233,255,137,133,233,137,116,36,24,137,202,248,2,137,252,233, - 232,251,1,0,139,149,233,139,133,233,139,106,252,248,41,208,193,232,3,131, - 192,1,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171, - 248,25,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192, - 141,188,253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68, - 36,52,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139, - 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252, - 247,198,237,255,15,132,244,13,252,233,244,14,248,26,85,87,86,83,131,252,236, - 28,190,237,252,233,244,247,248,27,85,87,86,83,131,252,236,28,190,237,248, - 1,139,108,36,48,139,76,36,52,139,189,233,137,124,36,52,137,108,36,24,137, - 165,233,248,2,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,255, - 1,206,41,214,139,133,233,41,200,193,232,3,131,192,1,248,28,139,105,252,248, - 129,121,253,252,252,239,15,133,244,29,248,30,137,202,137,114,252,252,139, - 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,31, - 85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84, - 36,60,137,108,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36, - 56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233, - 252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1, - 209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139, - 117,252,244,255,139,77,252,240,255,131,252,249,1,15,134,244,247,255,139,122, - 252,248,139,191,233,139,191,233,252,255,225,255,248,1,15,132,244,32,41,213, - 193,252,237,3,141,69,252,255,252,233,244,33,255,248,34,15,182,78,252,255, - 131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,247,217,193,252,233, - 3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,233,244,36, - 248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15, - 133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,38, - 15,182,70,252,254,255,199,68,36,20,237,137,68,36,16,255,252,242,15,42,192, - 252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141, - 68,36,16,252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182, - 110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137, - 44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15,132,244, - 249,248,35,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141, - 233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252,233,244, - 30,248,40,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235, - 15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248, - 248,41,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,42,15,182,70, - 252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36, - 4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1, - 2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108,202,4,139, - 12,202,137,104,4,137,8,248,43,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,253,139, - 108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,252,248, - 184,237,252,233,244,30,248,44,15,182,110,252,252,141,4,194,141,12,202,137, - 108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137, - 116,36,24,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248, - 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248, - 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,46, - 131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120,253, - 4,239,252,233,244,4,248,48,131,252,238,4,137,108,36,12,139,108,36,48,137, - 68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,251,1,4,252, - 233,244,3,248,49,255,131,252,238,4,139,108,36,48,137,149,233,137,252,233, - 139,86,252,252,137,116,36,24,232,251,1,5,252,233,244,3,255,248,50,255,15, - 182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53,141, - 4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252,233, - 244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12,202, - 137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36,4,137, - 68,36,16,137,44,36,137,149,233,137,116,36,24,232,251,1,6,139,149,233,133, - 192,15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237, - 252,233,244,28,248,57,139,108,36,48,137,149,233,141,20,194,137,252,233,137, - 116,36,24,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252, - 254,139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8, - 248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137, - 76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,8,139,149, - 233,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244, - 60,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131, - 198,4,252,255,36,171,248,61,139,108,36,48,137,149,233,137,202,137,252,233, - 137,116,36,24,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232, - 193,232,16,252,255,164,253,171,233,248,62,129,252,248,239,15,130,244,63,139, - 106,4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,20,137,106, - 252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1, - 131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133, - 244,1,248,2,139,68,36,20,252,233,244,64,248,65,129,252,248,239,15,130,244, - 63,139,106,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247, - 137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252, - 199,66,252,252,237,137,66,252,248,252,233,244,66,248,67,129,252,248,239,15, - 130,244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1, - 139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,15,132,244,66,139, - 131,233,199,66,252,252,237,255,137,106,252,248,139,141,233,35,136,233,105, - 201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132, - 244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,66,248,5,139,105, - 4,129,252,253,239,255,15,132,244,66,139,1,137,106,252,252,137,66,252,248, - 252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135, - 244,254,189,237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68, - 129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,63,139,42, - 131,189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137, - 133,233,139,114,252,252,199,66,252,252,237,137,106,252,248,252,246,133,233, - 235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248, - 1,255,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,133,244,63,139,2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8, - 137,84,36,8,232,251,1,10,137,252,234,139,40,139,64,4,139,114,252,252,137, - 106,252,248,137,66,252,252,252,233,244,66,248,70,129,252,248,239,15,133,244, - 63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,71,248,1,15,135, - 244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244,72,255,221,2,252, - 233,244,73,255,248,74,129,252,248,239,15,130,244,63,139,114,252,252,129,122, - 253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252, - 233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187,233,0,15,133,244, - 63,139,171,233,59,171,233,255,15,130,244,247,232,244,75,248,1,139,108,36, - 48,137,149,233,137,116,36,24,137,252,233,255,232,251,1,11,255,232,251,1,12, - 255,139,149,233,252,233,244,2,248,76,129,252,248,239,15,130,244,63,15,132, - 244,248,248,1,129,122,253,4,239,15,133,244,63,139,108,36,48,137,149,233,137, - 149,233,139,114,252,252,139,2,137,68,36,4,137,44,36,131,194,8,137,84,36,8, - 137,116,36,24,232,251,1,13,139,149,233,133,192,15,132,244,249,139,106,8,139, - 66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,20,137,42,137,66,4, - 248,77,184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3, - 199,66,252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139, - 42,129,122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139, - 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248, - 199,66,12,237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63, - 129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,114,252,252,255, - 139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66, - 8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252, - 242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20, - 36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3, - 3,133,233,248,1,129,120,253,4,239,15,132,244,81,139,40,139,64,4,137,42,137, - 66,4,252,233,244,77,248,2,131,189,233,0,15,132,244,81,137,252,233,137,213, - 137,194,232,251,1,14,137,252,234,133,192,15,133,244,1,248,81,184,237,252, - 233,244,78,248,82,255,139,106,252,248,139,133,233,139,114,252,252,199,66, - 252,252,237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192, - 252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,78,248, - 83,129,252,248,239,15,130,244,63,141,74,8,131,232,1,190,237,248,1,15,182, - 171,233,193,252,237,235,131,229,1,1,252,238,252,233,244,28,248,84,129,252, - 248,239,15,130,244,63,129,122,253,12,239,15,133,244,63,255,139,106,4,137, - 106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,141,74,16,131,232,2, - 190,237,252,233,244,1,248,85,129,252,248,239,15,130,244,63,139,42,139,114, - 252,252,137,116,36,24,137,44,36,129,122,253,4,239,15,133,244,63,131,189,233, - 0,15,133,244,63,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247, - 255,59,141,233,15,132,244,63,248,1,141,116,193,252,240,59,181,233,15,135, - 244,63,137,181,233,139,108,36,48,137,149,233,131,194,8,137,149,233,141,108, - 194,232,41,252,245,57,206,15,132,244,249,248,2,139,68,46,4,137,70,252,252, - 139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36, - 4,49,201,137,76,36,12,137,76,36,8,232,244,25,199,131,233,237,255,139,108, - 36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142, - 233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193, - 252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,4,41,139, - 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66, - 252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,252,255, - 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252, - 252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,66, - 4,184,237,252,233,244,7,248,9,139,12,36,137,185,233,137,252,242,137,252,233, - 232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,86,139,106,252,248,139, - 173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244, - 63,255,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247,59,141,233, - 15,132,244,63,248,1,141,116,193,252,248,59,181,233,15,135,244,63,137,181, - 233,139,108,36,48,137,149,233,137,149,233,141,108,194,252,240,41,252,245, - 57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,252,139,4,46,137,70, - 252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76, - 36,12,137,76,36,8,232,244,25,199,131,233,237,139,108,36,48,139,52,36,139, - 149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137, - 142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233, - 15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41, - 4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137, - 68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252, - 242,137,252,233,232,251,1,15,248,9,139,12,36,137,185,233,137,252,242,137, - 252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,87,139,108,36, - 48,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137, - 133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71, - 255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252, - 248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252, - 253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114,252, - 252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252,252, - 199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15, - 135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,102,15, - 252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,72,139,114,252, - 252,252,242,15,17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252, - 252,221,90,252,248,255,248,66,184,237,248,78,137,68,36,20,248,64,252,247, - 198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253, - 252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185, - 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239, - 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16, - 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252, - 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244, - 91,255,219,20,36,139,44,36,129,252,253,0,0,0,128,15,133,244,248,217,192,219, - 4,36,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,138,244,73, - 15,133,244,73,248,2,221,216,252,233,244,71,255,248,92,255,252,242,15,16,2, - 232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239,15,130,244,63, - 129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244,72,255,248,94, - 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252, - 250,252,233,244,73,255,248,95,129,252,248,239,15,130,244,63,129,122,253,4, - 239,15,131,244,63,217,252,237,221,2,217,252,241,252,233,244,73,248,96,129, - 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,236,221, - 2,217,252,241,252,233,244,73,248,97,129,252,248,239,255,15,130,244,63,129, - 122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244,73,248,99,129,252, - 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,254,252, - 233,244,73,248,100,129,252,248,239,255,15,130,244,63,129,122,253,4,239,15, - 131,244,63,221,2,217,252,255,252,233,244,73,248,101,129,252,248,239,15,130, - 244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242,221,216,252,233, - 244,73,248,102,129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,131, - 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252, - 233,244,73,248,103,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131, - 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252, - 243,252,233,244,73,248,104,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,255,221,2,217,232,217,252,243,252,233,244,73,255,248,105,129, - 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2, - 252,242,15,17,4,36,255,248,105,129,252,248,239,15,130,244,63,129,122,253, - 4,239,15,131,244,63,221,2,221,28,36,255,137,213,232,251,1,16,137,252,234, - 252,233,244,73,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,252,242,15,16,2,252,242,15,17,4,36,255,248,106,129,252,248, - 239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,221,28,36,255,137, - 213,232,251,1,17,137,252,234,252,233,244,73,255,248,107,129,252,248,239,15, - 130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2,252,242,15,17, - 4,36,255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244, - 63,221,2,221,28,36,255,137,213,232,251,1,18,137,252,234,252,233,244,73,248, - 108,255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244, - 63,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255, - 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221, - 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130, - 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244, - 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248, - 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252, - 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255, - 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32, - 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137, - 108,36,16,219,68,36,16,255,139,106,252,252,129,229,252,255,252,255,15,128, - 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255, - 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238, - 252,233,244,2,255,248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205, - 102,15,112,201,81,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199, - 68,36,16,0,0,128,90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52, - 4,0,0,209,229,252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129, - 122,253,4,239,15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15, - 130,244,63,129,122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252, - 252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232, - 244,114,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34, - 255,217,192,232,244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66, - 252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248, - 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233, - 244,1,255,217,252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15, - 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252, - 233,244,73,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15, - 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16, - 74,8,232,244,117,252,233,244,72,255,248,116,129,252,248,239,15,130,244,63, - 129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221, - 66,8,232,244,117,252,233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239, - 255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252, - 252,239,15,133,244,249,59,108,202,252,248,15,79,108,202,252,248,131,193,1, - 252,233,244,1,248,3,15,135,244,63,255,252,233,244,252,248,4,15,135,244,63, - 255,252,242,15,16,2,248,5,57,193,15,131,244,72,129,124,253,202,252,252,239, - 255,15,130,244,252,15,135,244,63,252,242,15,42,76,202,252,248,252,233,244, - 253,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,93,193,131,193, - 1,252,233,244,5,255,221,2,248,5,57,193,15,131,244,73,129,124,253,202,252, - 252,239,255,15,130,244,252,15,135,244,255,219,68,202,252,248,252,233,244, - 253,255,15,131,244,255,255,248,6,221,68,202,252,248,248,7,255,219,252,233, - 219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201, - 248,2,221,216,88,255,248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244, - 250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133, - 244,249,59,108,202,252,248,15,76,108,202,252,248,131,193,1,252,233,244,1, - 248,3,15,135,244,63,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242, - 15,95,193,131,193,1,252,233,244,5,255,219,252,233,218,209,221,217,255,80, - 221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,255, - 248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129, - 122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252, - 242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121, - 129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139, - 114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42, - 197,252,233,244,72,255,137,108,36,16,219,68,36,16,252,233,244,73,255,248, - 122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,252,248,239, - 15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129,252,253,252, - 255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,252,242,15,44,42, - 129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,221, - 2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,63,255,199,68,36,8, - 1,0,0,0,141,68,36,20,248,123,139,108,36,48,137,149,233,137,68,36,4,137,44, - 36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252, - 237,137,66,252,248,252,233,244,66,248,124,139,171,233,59,171,233,15,130,244, - 247,232,244,75,248,1,199,68,36,20,252,255,252,255,252,255,252,255,129,252, - 248,239,15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63, - 139,106,16,137,108,36,20,255,15,131,244,63,252,242,15,44,106,16,137,108,36, - 20,255,15,131,244,63,221,66,16,219,92,36,20,255,248,1,129,122,253,4,239,15, - 133,244,63,129,122,253,12,239,255,139,42,137,108,36,12,139,173,233,255,139, - 74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,8,255,139, - 68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108, - 36,12,41,200,15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36, - 8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2, - 248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1, - 15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4, - 248,126,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247, - 232,244,75,248,1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139, - 42,255,15,133,244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15, - 131,244,63,221,66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,125, - 131,189,233,1,15,130,244,125,15,133,244,127,57,131,233,15,130,244,127,15, - 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15, - 133,244,1,139,131,233,252,233,244,123,248,128,129,252,248,239,255,15,130, - 244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,122,253, - 4,239,15,133,244,63,139,42,139,133,233,133,192,15,132,244,125,57,131,233, - 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,248,1,255, - 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116, - 36,20,252,233,244,123,248,130,129,252,248,239,15,130,244,63,139,171,233,59, - 171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139, - 42,139,133,233,57,131,233,255,15,130,244,129,129,197,239,137,116,36,20,137, - 68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15, - 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248, - 3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,123,248,131, - 129,252,248,239,15,130,244,63,255,139,171,233,59,171,233,15,130,244,247,232, - 244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233, - 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233, - 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249, - 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244, - 1,137,252,240,139,116,36,20,252,233,244,123,248,132,129,252,248,239,15,130, - 244,63,129,122,253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252, - 234,255,137,197,252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,137, - 4,36,219,4,36,252,233,244,73,255,248,133,129,252,248,239,15,130,244,63,129, - 122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248,1,15,135,244,63, - 255,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242, - 15,88,193,102,15,126,197,255,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221, - 28,36,255,139,44,36,255,252,233,244,89,255,248,134,129,252,248,239,15,130, - 244,63,255,189,0,0,56,67,102,15,110,205,102,15,112,201,81,255,199,68,36,16, - 0,0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63, - 255,252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,221,2,216,68,36, - 16,221,28,36,139,44,36,255,248,2,137,68,36,20,141,68,194,252,240,248,1,57, - 208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8,252, - 233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252,242,15,16,0,252, - 242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,221,28,36,35,44, - 36,255,131,232,8,252,233,244,1,248,136,129,252,248,239,15,130,244,63,255, - 15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252, - 242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16, - 221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,137,129,252,248,239,15, - 130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135, - 244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,221, - 0,216,68,36,16,221,28,36,51,44,36,255,131,232,8,252,233,244,1,248,138,129, - 252,248,239,15,130,244,63,129,122,253,4,239,255,221,2,199,68,36,16,0,0,192, - 89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233,244,89,248,139, - 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,252,247,213,255, - 248,89,252,242,15,42,197,252,233,244,72,255,248,89,137,44,36,219,4,36,252, - 233,244,73,255,248,135,139,68,36,20,252,233,244,63,255,248,140,129,252,248, - 239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,244, - 63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239,15, - 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16, - 74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252, - 242,15,88,202,102,15,126,197,102,15,126,201,255,248,140,129,252,248,239,15, - 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68, - 36,16,221,28,36,139,76,36,8,139,44,36,255,211,229,252,233,244,89,255,248, - 141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248, - 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131, - 244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102, - 15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126, - 201,255,248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244, - 63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16,0,0,192,89, - 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255, - 211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129, - 122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15, - 16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194, - 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68, - 36,16,221,28,36,139,76,36,8,139,44,36,255,211,252,253,252,233,244,89,255, - 248,143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252, - 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239, - 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110, - 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197, - 102,15,126,201,255,248,143,129,252,248,239,15,130,244,63,129,122,253,4,239, - 15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16, - 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139, - 44,36,255,211,197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63, - 129,122,253,4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4, - 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242, - 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194, - 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,144,129,252,248,239, - 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244, - 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68, - 36,16,221,28,36,139,76,36,8,139,44,36,255,211,205,252,233,244,89,248,127, - 184,237,252,233,244,63,248,129,184,237,248,63,139,108,36,48,139,114,252,252, - 137,116,36,24,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139, - 66,252,248,59,141,233,15,135,244,251,137,44,36,252,255,144,233,139,149,233, - 133,192,15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192, - 141,65,1,139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233, - 15,182,205,131,198,4,252,255,36,171,248,33,137,209,252,247,198,237,15,133, - 244,249,15,182,110,252,253,252,247,213,141,20,252,234,252,233,244,28,248, - 3,137,252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137, - 252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,137,108,36, - 16,139,108,36,48,137,116,36,24,137,149,233,255,141,68,194,252,248,137,252, - 233,137,133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131, - 192,1,139,108,36,16,85,195,248,145,255,15,182,131,233,168,235,15,133,244, - 251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233, - 244,247,255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247, - 248,147,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252, - 255,139,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,48, - 137,149,233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4, - 15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164, - 253,171,233,248,148,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,149, - 255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,48,137, - 149,233,137,133,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232, - 251,1,23,252,233,244,3,255,248,150,137,116,36,24,255,248,151,255,137,116, - 36,24,131,206,1,248,1,255,141,68,194,252,248,139,108,36,48,137,149,233,137, - 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,24,0,0,0,0,255,131, - 230,252,254,255,139,149,233,137,193,139,133,233,41,208,137,205,15,182,78, - 252,253,193,232,3,131,192,1,252,255,229,248,152,255,85,141,108,36,12,85,83, - 82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,252,248, - 139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,252,236, - 239,252,242,15,17,125,216,252,242,15,17,117,208,252,242,15,17,109,200,252, - 242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17, - 77,168,252,242,15,17,69,160,139,171,233,139,147,233,137,171,233,199,131,233, - 0,0,0,0,137,149,233,141,84,36,16,141,139,233,232,251,1,25,139,141,233,129, - 225,239,137,204,137,169,233,139,149,233,139,177,233,255,248,153,255,133,192, - 15,136,244,249,137,68,36,20,139,122,252,248,139,191,233,139,191,233,199,131, - 233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,129,252,253,239,15,130,244,248,139,68,36,20,248,2,252,255,36,171,248,3, - 252,247,216,137,252,233,137,194,232,251,1,26,255,248,91,255,217,124,36,4, - 137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68, - 36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,154,102, - 15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216, - 102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, - 15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240, - 63,102,15,110,208,102,15,112,210,81,252,242,15,194,193,1,102,15,84,194,252, - 242,15,92,200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102, - 184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36, - 6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,155,102,15,252,239,210, - 102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219, - 81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252, - 242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,191,102,15, - 110,208,102,15,112,210,81,252,242,15,194,193,6,102,15,84,194,252,242,15,92, - 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12, - 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, - 68,36,8,195,255,248,156,102,15,252,239,210,102,15,118,210,102,15,115,210, - 1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202, - 102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252, - 242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,15,112,219,81,252,242, - 15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193,248, - 1,195,248,157,255,15,40,232,252,242,15,94,193,102,15,252,239,210,102,15,118, - 210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40, - 224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88, - 227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,63,102,15,110,208,102, - 15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40, - 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40, - 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0, - 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217, - 252,252,217,108,36,4,222,201,222,252,233,195,255,248,98,217,252,234,222,201, - 248,158,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4, - 0,0,128,252,255,15,132,244,248,248,159,217,192,217,252,252,220,252,233,217, - 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216, - 217,252,238,195,255,248,117,219,84,36,4,219,68,36,4,255,223,252,233,255,221, - 252,233,223,224,158,255,15,133,244,254,15,138,244,255,221,216,139,68,36,4, - 131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209, - 232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209, - 232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,4,255,222,201,248, - 5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,241,252,247,216,131, - 252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,232,195,248,8,217, - 84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0,0,252,255,15,132,244, - 248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252,255,15,132,244,250,217, - 252,241,252,233,244,159,248,9,255,217,232,255,223,252,234,255,221,252,234, - 223,224,158,255,15,132,244,247,217,201,248,1,221,216,195,248,2,217,225,217, - 232,255,15,132,244,249,221,216,217,225,217,252,238,184,0,0,0,0,15,146,208, - 209,200,51,68,36,4,15,137,244,249,217,201,248,3,221,217,217,225,195,248,4, - 131,124,36,4,0,15,141,244,3,221,216,221,216,133,192,15,132,244,251,217,252, - 238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,4,195,255,248,117,255,248, - 160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138, - 244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244, - 248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251, - 15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255, - 252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15, - 132,244,5,15,130,244,253,252,247,216,232,244,1,184,0,0,252,240,63,102,15, - 110,200,102,15,112,201,81,252,242,15,94,200,15,40,193,195,248,7,184,0,0,252, - 240,63,102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12, - 252,242,15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224, - 61,0,0,224,252,255,15,132,244,248,248,1,131,124,36,4,0,15,133,244,247,255, - 139,68,36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248, - 1,221,68,36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217, - 201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15, - 16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81, - 102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210, - 102,15,118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110, - 208,102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192, - 136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110, - 192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87, - 192,195,248,5,102,15,80,193,133,192,15,132,244,3,255,15,87,192,195,248,162, - 255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135, - 244,248,232,244,91,252,233,244,253,248,1,232,244,93,252,233,244,253,248,2, - 131,252,248,3,15,132,244,247,15,135,244,248,232,244,114,255,252,233,244,253, - 248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2, - 221,68,36,4,131,252,248,5,15,130,244,98,15,132,244,158,248,2,131,252,248, - 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1, - 217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135, - 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248, - 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217, - 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244, - 91,15,132,244,93,131,252,248,3,15,130,244,114,15,135,244,248,217,252,250, - 195,248,2,131,252,248,5,15,130,244,98,15,132,244,158,131,252,248,7,15,132, - 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232, - 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244, - 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252, - 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221, - 216,195,255,248,9,204,255,248,163,255,139,68,36,20,252,242,15,16,68,36,4, - 252,242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242, - 15,88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92, - 193,252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242, - 15,89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252, - 248,5,15,132,244,247,255,15,135,244,248,232,244,157,252,233,244,7,248,1,90, - 232,244,117,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244, - 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244, - 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252, - 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12, - 15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248, - 2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,252,233, - 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221, - 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, - 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, - 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,157,15,132, - 244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195, - 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, - 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, - 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, - 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, - 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, - 244,248,217,201,248,2,221,216,195,255,248,164,156,90,137,209,129,252,242, - 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15, - 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,165, - 255,204,248,166,255,131,252,236,16,87,86,83,131,252,236,28,141,157,233,139, - 181,233,15,183,192,137,134,233,141,132,253,36,233,137,142,233,137,150,233, - 137,134,233,139,140,253,36,233,139,148,253,36,233,137,76,36,44,137,84,36, - 40,137,226,137,116,36,24,137,252,241,232,251,1,27,199,131,233,237,139,144, - 233,139,128,233,41,208,139,106,252,248,193,232,3,131,192,1,139,181,233,139, - 14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,248,32,255,139, - 76,36,48,139,179,233,137,142,233,137,145,233,137,169,233,137,252,241,137, - 194,232,251,1,28,139,108,36,48,139,134,233,139,150,233,131,190,233,1,15,130, - 244,253,15,132,244,252,221,134,233,252,233,244,253,248,6,217,134,233,248, - 7,139,141,233,15,183,73,6,137,76,36,48,131,196,28,91,94,95,93,89,3,36,36, - 131,196,16,81,195,255,248,167,255,85,137,229,83,137,203,43,163,233,255,137, - 163,233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,139,132,253, - 139,233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233,139,147,233, - 252,255,147,233,137,131,233,137,147,233,128,187,233,1,15,130,244,253,15,132, - 244,252,221,155,233,252,233,244,253,248,6,255,217,155,233,248,7,255,41,163, - 233,255,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239,15,133,244, - 253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4,59,44,194,255, - 15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255, - 248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,44,129,124,253,194, - 4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244,248, - 255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252,242, - 15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,46,193,255,15,134,244,9, - 255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255, - 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124, - 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,198,4, - 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,198,4, - 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252, - 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,171,255,139,108,194,4,131,198,4,255,129,252,253,239,15,133, - 244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15, - 133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233, - 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, - 7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255, - 252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251, - 255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233, - 244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244, - 251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221, - 4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138, - 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248, - 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,9, - 255,248,5,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132, - 244,49,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12, - 202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233, - 133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237, - 255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,15,133,244, - 9,255,252,233,244,49,255,252,247,208,139,108,202,4,131,198,4,129,252,253, - 239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129, - 252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199, - 59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,249,129,124, - 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252, - 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221, - 4,199,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248, - 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,248,4,255,252, - 247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254, - 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16, - 252,255,36,171,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132, - 244,248,129,252,253,239,15,132,244,49,15,183,70,252,254,141,180,253,134,233, - 248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, - 139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139,44,194,137, - 44,202,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253, - 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4, - 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,133,244,251,139,44, - 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,199,68,202,4, - 0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255,129,124, - 253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,184,0,0,0,128,102,15, - 110,200,102,15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217, - 224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139, - 128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128, - 233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6, - 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253, - 194,4,239,15,133,244,57,139,12,194,255,139,169,233,131,252,253,0,15,133,244, - 255,248,3,255,248,58,137,213,232,251,1,20,255,252,242,15,42,192,255,137,4, - 36,219,4,36,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252, - 246,133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192, - 255,129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133, - 244,51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239, - 15,133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15, - 128,244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4, - 239,15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4, - 237,255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239, - 15,131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252, - 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253, - 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255, - 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124, - 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194, - 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129, - 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255, - 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244, - 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15, - 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15, - 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252, - 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4, - 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221, - 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124, - 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255, - 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244, - 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239, - 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44, - 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221, - 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255, - 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194, - 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4, - 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4, - 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242, - 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252, - 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252, - 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252, - 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244, - 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,141, - 12,194,41,232,137,76,36,4,137,68,36,8,248,36,139,108,36,48,137,44,36,137, - 149,233,137,116,36,24,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182, - 110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202, - 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,199,68,202, - 4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255, - 223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255, - 221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189, - 237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139, - 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252, - 248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4, - 137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1, - 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129, - 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135, - 213,141,139,233,255,232,251,1,30,137,252,234,252,233,244,1,255,252,247,208, - 139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4, - 237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244, - 1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,30,137, - 252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139, - 172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208, - 139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139, - 108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233, - 232,251,1,31,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193, - 232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36, - 48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1, - 32,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,36,48,137, - 149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248,1,137,193, - 37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,132,244,249, - 248,2,137,44,36,137,68,36,4,232,251,1,33,139,149,233,15,182,78,252,253,137, - 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,34, - 15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,139,139,233, - 137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,137, - 252,233,232,251,1,35,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4, - 237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3, - 137,252,233,232,251,1,34,15,183,70,252,254,252,247,208,252,233,244,2,255, - 252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,169,255,252, - 247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,170,255,15,182, - 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234, - 255,129,124,253,194,4,239,15,133,244,251,139,4,194,255,129,124,253,194,4, - 239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42, - 200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,39,255, - 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244, - 248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249, - 139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3,199, - 68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,39, - 139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,252,247,208,139,4, - 135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,139,141, - 233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250, - 57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252, - 253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204,15, - 182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,199,68, - 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139, - 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244, - 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38, - 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4, - 239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233, - 0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182, - 78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182, - 192,129,124,253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244, - 42,255,59,133,233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15, - 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4, - 139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129, - 233,235,255,15,132,244,42,15,182,78,252,253,252,233,244,1,248,5,129,124,253, - 194,4,239,15,133,244,42,139,4,194,252,233,244,170,248,7,128,165,233,235,139, - 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182, - 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, - 244,40,139,44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133, - 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244, - 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133, - 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189, - 233,0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244, - 40,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255, - 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,40,248, - 6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139, - 108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,36,139, - 149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131, - 233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129, - 124,253,252,234,4,239,15,133,244,41,139,44,252,234,59,133,233,15,131,244, - 41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133, - 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189, - 233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,41,15,182, - 78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137, - 141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,139,60,199,248, - 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139, - 68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,233,15,135,244,251,41, - 252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,111, - 4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15, - 182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,36, - 48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,1,37,139,149,233, - 15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,137, - 171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,4,239, - 139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233,139,14, - 15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,215, - 139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60,139,114,252, - 252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131, - 232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,131,193,8,137,111,4,131, - 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233, - 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198, - 4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253, - 252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,233,244, - 4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,137,215, - 139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,141,76, - 202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252, - 244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252, - 252,129,252,248,239,184,237,15,133,244,29,137,202,137,114,252,252,139,181, - 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,137,124, - 36,16,137,92,36,20,139,108,202,252,240,139,68,202,252,248,139,157,233,131, - 198,4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132, - 244,250,255,219,68,202,252,248,255,139,108,199,4,137,108,202,12,139,44,199, - 137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141, - 180,253,134,233,248,3,139,92,36,20,139,124,36,16,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,171,248,4,131,192,1,255,137,68,202,252, - 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252, - 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,139,175,233, - 139,135,233,137,44,202,137,68,202,4,139,175,233,139,135,233,137,108,202,8, - 137,68,202,12,137,92,202,252,248,252,233,244,2,248,7,255,131,192,1,252,233, - 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129, - 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133, - 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252, - 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,171,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,244, - 1,255,15,182,252,236,15,182,192,137,124,36,16,141,188,253,194,233,141,12, - 202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57, - 215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137, - 65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65, - 4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0, - 0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108, - 36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,255,139,71,252, - 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6, - 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,139,84,36, - 20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252, - 233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198, - 237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,139, - 44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15, - 133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252, - 255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,70, - 252,255,15,135,244,252,255,15,182,78,252,253,252,247,209,141,20,202,139,122, - 252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193, - 232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194, - 252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237, - 15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229, - 239,102,129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121, - 253,4,239,15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253, - 20,239,15,133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12, - 239,15,133,244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252, - 237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237, - 137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180, - 253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248, - 6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198, - 4,193,232,16,252,255,36,171,248,5,255,3,41,15,128,244,1,137,41,255,15,141, - 244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244, - 7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121, - 253,12,239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253, - 20,239,15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255, - 252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17, - 1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252, - 242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252, - 237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15, - 183,70,252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255, - 141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15, - 130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255, - 141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139, - 41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252, - 252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,137, - 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,252,245,209,252,237, - 129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139,190,233,139, - 108,36,48,141,12,202,59,141,233,15,135,244,24,15,182,142,233,57,200,15,134, - 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252, - 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141, - 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12, - 200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233,133,252,237,15, - 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56, - 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133, - 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244, - 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194, - 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255, - 137,124,36,4,137,44,36,255,15,135,244,22,199,131,233,237,255,252,255,215, - 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217, - 3,141,233,139,114,252,252,252,233,244,12,255,254,0 -}; - -enum { - GLOB_vm_returnp, - GLOB_cont_dispatch, - GLOB_vm_returnc, - GLOB_BC_RET_Z, - GLOB_vm_return, - GLOB_vm_leave_cp, - GLOB_vm_leave_unw, - GLOB_vm_unwind_c, - GLOB_vm_unwind_c_eh, - GLOB_vm_unwind_rethrow, - GLOB_vm_unwind_ff, - GLOB_vm_unwind_ff_eh, - GLOB_vm_growstack_c, - GLOB_vm_growstack_v, - GLOB_vm_growstack_f, - GLOB_vm_resume, - GLOB_vm_pcall, - GLOB_vm_call, - GLOB_vm_call_dispatch, - GLOB_vmeta_call, - GLOB_vm_call_dispatch_f, - GLOB_vm_cpcall, - GLOB_cont_ffi_callback, - GLOB_vm_call_tail, - GLOB_cont_cat, - GLOB_cont_ra, - GLOB_BC_CAT_Z, - GLOB_vmeta_tgets, - GLOB_vmeta_tgetb, - GLOB_vmeta_tgetv, - GLOB_vmeta_tsets, - GLOB_vmeta_tsetb, - GLOB_vmeta_tsetv, - GLOB_cont_nop, - GLOB_vmeta_comp, - GLOB_vmeta_binop, - GLOB_cont_condt, - GLOB_cont_condf, - GLOB_vmeta_equal, - GLOB_vmeta_equal_cd, - GLOB_vmeta_arith_vno, - GLOB_vmeta_arith_vn, - GLOB_vmeta_arith_nvo, - GLOB_vmeta_arith_nv, - GLOB_vmeta_unm, - GLOB_vmeta_arith_vvo, - GLOB_vmeta_arith_vv, - GLOB_vmeta_len, - GLOB_BC_LEN_Z, - GLOB_vmeta_call_ra, - GLOB_BC_CALLT_Z, - GLOB_vmeta_for, - GLOB_ff_assert, - GLOB_fff_fallback, - GLOB_fff_res_, - GLOB_ff_type, - GLOB_fff_res1, - GLOB_ff_getmetatable, - GLOB_ff_setmetatable, - GLOB_ff_rawget, - GLOB_ff_tonumber, - GLOB_fff_resi, - GLOB_fff_resxmm0, - GLOB_fff_resn, - GLOB_ff_tostring, - GLOB_fff_gcstep, - GLOB_ff_next, - GLOB_fff_res2, - GLOB_fff_res, - GLOB_ff_pairs, - GLOB_ff_ipairs_aux, - GLOB_fff_res0, - GLOB_ff_ipairs, - GLOB_ff_pcall, - GLOB_ff_xpcall, - GLOB_ff_coroutine_resume, - GLOB_ff_coroutine_wrap_aux, - GLOB_ff_coroutine_yield, - GLOB_ff_math_abs, - GLOB_fff_resbit, - GLOB_ff_math_floor, - GLOB_vm_floor, - GLOB_ff_math_ceil, - GLOB_vm_ceil, - GLOB_ff_math_sqrt, - GLOB_ff_math_log, - GLOB_ff_math_log10, - GLOB_ff_math_exp, - GLOB_vm_exp_x87, - GLOB_ff_math_sin, - GLOB_ff_math_cos, - GLOB_ff_math_tan, - GLOB_ff_math_asin, - GLOB_ff_math_acos, - GLOB_ff_math_atan, - GLOB_ff_math_sinh, - GLOB_ff_math_cosh, - GLOB_ff_math_tanh, - GLOB_ff_math_deg, - GLOB_ff_math_rad, - GLOB_ff_math_atan2, - GLOB_ff_math_ldexp, - GLOB_ff_math_frexp, - GLOB_ff_math_modf, - GLOB_vm_trunc, - GLOB_ff_math_fmod, - GLOB_ff_math_pow, - GLOB_vm_pow, - GLOB_ff_math_min, - GLOB_ff_math_max, - GLOB_ff_string_len, - GLOB_ff_string_byte, - GLOB_ff_string_char, - GLOB_fff_newstr, - GLOB_ff_string_sub, - GLOB_fff_emptystr, - GLOB_ff_string_rep, - GLOB_fff_fallback_2, - GLOB_ff_string_reverse, - GLOB_fff_fallback_1, - GLOB_ff_string_lower, - GLOB_ff_string_upper, - GLOB_ff_table_getn, - GLOB_ff_bit_tobit, - GLOB_ff_bit_band, - GLOB_fff_fallback_bit_op, - GLOB_ff_bit_bor, - GLOB_ff_bit_bxor, - GLOB_ff_bit_bswap, - GLOB_ff_bit_bnot, - GLOB_ff_bit_lshift, - GLOB_ff_bit_rshift, - GLOB_ff_bit_arshift, - GLOB_ff_bit_rol, - GLOB_ff_bit_ror, - GLOB_vm_record, - GLOB_vm_rethook, - GLOB_vm_inshook, - GLOB_cont_hook, - GLOB_vm_hotloop, - GLOB_vm_callhook, - GLOB_vm_hotcall, - GLOB_vm_exit_handler, - GLOB_vm_exit_interp, - GLOB_vm_floor_sse, - GLOB_vm_ceil_sse, - GLOB_vm_trunc_sse, - GLOB_vm_mod, - GLOB_vm_exp2_x87, - GLOB_vm_exp2raw, - GLOB_vm_pow_sse, - GLOB_vm_powi_sse, - GLOB_vm_foldfpm, - GLOB_vm_foldarith, - GLOB_vm_cpuid, - GLOB_assert_bad_for_arg_type, - GLOB_vm_ffi_callback, - GLOB_vm_ffi_call, - GLOB_BC_MODVN_Z, - GLOB_BC_TGETS_Z, - GLOB_BC_TSETS_Z, - GLOB__MAX -}; -static const char *const globnames[] = { - "vm_returnp", - "cont_dispatch", - "vm_returnc", - "BC_RET_Z", - "vm_return", - "vm_leave_cp", - "vm_leave_unw", - "vm_unwind_c@8", - "vm_unwind_c_eh", - "vm_unwind_rethrow", - "vm_unwind_ff@4", - "vm_unwind_ff_eh", - "vm_growstack_c", - "vm_growstack_v", - "vm_growstack_f", - "vm_resume", - "vm_pcall", - "vm_call", - "vm_call_dispatch", - "vmeta_call", - "vm_call_dispatch_f", - "vm_cpcall", - "cont_ffi_callback", - "vm_call_tail", - "cont_cat", - "cont_ra", - "BC_CAT_Z", - "vmeta_tgets", - "vmeta_tgetb", - "vmeta_tgetv", - "vmeta_tsets", - "vmeta_tsetb", - "vmeta_tsetv", - "cont_nop", - "vmeta_comp", - "vmeta_binop", - "cont_condt", - "cont_condf", - "vmeta_equal", - "vmeta_equal_cd", - "vmeta_arith_vno", - "vmeta_arith_vn", - "vmeta_arith_nvo", - "vmeta_arith_nv", - "vmeta_unm", - "vmeta_arith_vvo", - "vmeta_arith_vv", - "vmeta_len", - "BC_LEN_Z", - "vmeta_call_ra", - "BC_CALLT_Z", - "vmeta_for", - "ff_assert", - "fff_fallback", - "fff_res_", - "ff_type", - "fff_res1", - "ff_getmetatable", - "ff_setmetatable", - "ff_rawget", - "ff_tonumber", - "fff_resi", - "fff_resxmm0", - "fff_resn", - "ff_tostring", - "fff_gcstep", - "ff_next", - "fff_res2", - "fff_res", - "ff_pairs", - "ff_ipairs_aux", - "fff_res0", - "ff_ipairs", - "ff_pcall", - "ff_xpcall", - "ff_coroutine_resume", - "ff_coroutine_wrap_aux", - "ff_coroutine_yield", - "ff_math_abs", - "fff_resbit", - "ff_math_floor", - "vm_floor", - "ff_math_ceil", - "vm_ceil", - "ff_math_sqrt", - "ff_math_log", - "ff_math_log10", - "ff_math_exp", - "vm_exp_x87", - "ff_math_sin", - "ff_math_cos", - "ff_math_tan", - "ff_math_asin", - "ff_math_acos", - "ff_math_atan", - "ff_math_sinh", - "ff_math_cosh", - "ff_math_tanh", - "ff_math_deg", - "ff_math_rad", - "ff_math_atan2", - "ff_math_ldexp", - "ff_math_frexp", - "ff_math_modf", - "vm_trunc", - "ff_math_fmod", - "ff_math_pow", - "vm_pow", - "ff_math_min", - "ff_math_max", - "ff_string_len", - "ff_string_byte", - "ff_string_char", - "fff_newstr", - "ff_string_sub", - "fff_emptystr", - "ff_string_rep", - "fff_fallback_2", - "ff_string_reverse", - "fff_fallback_1", - "ff_string_lower", - "ff_string_upper", - "ff_table_getn", - "ff_bit_tobit", - "ff_bit_band", - "fff_fallback_bit_op", - "ff_bit_bor", - "ff_bit_bxor", - "ff_bit_bswap", - "ff_bit_bnot", - "ff_bit_lshift", - "ff_bit_rshift", - "ff_bit_arshift", - "ff_bit_rol", - "ff_bit_ror", - "vm_record", - "vm_rethook", - "vm_inshook", - "cont_hook", - "vm_hotloop", - "vm_callhook", - "vm_hotcall", - "vm_exit_handler", - "vm_exit_interp", - "vm_floor_sse", - "vm_ceil_sse", - "vm_trunc_sse", - "vm_mod", - "vm_exp2_x87", - "vm_exp2raw", - "vm_pow_sse", - "vm_powi_sse", - "vm_foldfpm", - "vm_foldarith", - "vm_cpuid", - "assert_bad_for_arg_type", - "vm_ffi_callback", - "vm_ffi_call@4", - "BC_MODVN_Z", - "BC_TGETS_Z", - "BC_TSETS_Z", - (const char *)0 -}; -static const char *const extnames[] = { - "lj_state_growstack@8", - "lj_meta_tget", - "lj_meta_tset", - "lj_meta_comp", - "lj_meta_equal", - "lj_meta_equal_cd@8", - "lj_meta_arith", - "lj_meta_len@8", - "lj_meta_call", - "lj_meta_for@8", - "lj_tab_get", - "lj_str_fromnumber@8", - "lj_str_fromnum@8", - "lj_tab_next", - "lj_tab_getinth@8", - "lj_ffh_coroutine_wrap_err@8", - "lj_vm_sinh", - "lj_vm_cosh", - "lj_vm_tanh", - "lj_str_new", - "lj_tab_len@4", - "lj_gc_step@4", - "lj_dispatch_ins@8", - "lj_trace_hot@8", - "lj_dispatch_call@8", - "lj_trace_exit@8", - "lj_err_throw@8", - "lj_ccallback_enter@8", - "lj_ccallback_leave@8", - "lj_meta_cat", - "lj_gc_barrieruv@8", - "lj_func_closeuv@8", - "lj_func_newL_gc", - "lj_tab_new", - "lj_gc_step_fixtop@4", - "lj_tab_dup@8", - "lj_tab_newkey", - "lj_tab_reasize", - (const char *)0 -}; -#define Dt1(_V) (int)(ptrdiff_t)&(((lua_State *)0)_V) -#define Dt2(_V) (int)(ptrdiff_t)&(((global_State *)0)_V) -#define Dt3(_V) (int)(ptrdiff_t)&(((TValue *)0)_V) -#define Dt4(_V) (int)(ptrdiff_t)&(((GCobj *)0)_V) -#define Dt5(_V) (int)(ptrdiff_t)&(((GCstr *)0)_V) -#define Dt6(_V) (int)(ptrdiff_t)&(((GCtab *)0)_V) -#define Dt7(_V) (int)(ptrdiff_t)&(((GCfuncL *)0)_V) -#define Dt8(_V) (int)(ptrdiff_t)&(((GCfuncC *)0)_V) -#define Dt9(_V) (int)(ptrdiff_t)&(((GCproto *)0)_V) -#define DtA(_V) (int)(ptrdiff_t)&(((GCupval *)0)_V) -#define DtB(_V) (int)(ptrdiff_t)&(((Node *)0)_V) -#define DtC(_V) (int)(ptrdiff_t)&(((int *)0)_V) -#define DtD(_V) (int)(ptrdiff_t)&(((GCtrace *)0)_V) -#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) -#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) -#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) - -/* Generate subroutines used by opcodes and other parts of the VM. */ -/* The .code_sub section should be last to help static branch prediction. */ -static void build_subroutines(BuildCtx *ctx, int cmov, int sse) -{ - dasm_put(Dst, 0); - dasm_put(Dst, 2, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, FRAME_TYPE, DISPATCH_GL(vmstate), ~LJ_VMST_C); - dasm_put(Dst, 114, Dt1(->base), Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL); - dasm_put(Dst, 200, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK); - dasm_put(Dst, 275, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, LUA_MINSTACK, -4+PC2PROTO(framesize), Dt1(->base)); - dasm_put(Dst, 353, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 495, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); - dasm_put(Dst, 573, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL); -#if LJ_HASFFI -#endif - dasm_put(Dst, 743); -#if LJ_HASFFI - dasm_put(Dst, 748); -#endif - dasm_put(Dst, 757, Dt7(->pc), PC2PROTO(k)); -#if LJ_HASFFI - dasm_put(Dst, 771); -#endif - dasm_put(Dst, 792, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 890, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 900); - } else { - dasm_put(Dst, 913); - } - dasm_put(Dst, 926, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); - dasm_put(Dst, 1078, DISPATCH_GL(tmptv), LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 890, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 900); - } else { - dasm_put(Dst, 913); - } - dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 1295, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); - dasm_put(Dst, 1402); -#if LJ_HASFFI - dasm_put(Dst, 1417, Dt1(->base)); -#endif - dasm_put(Dst, 1448); -#if LJ_DUALNUM - dasm_put(Dst, 1451); -#endif - dasm_put(Dst, 1457); -#if LJ_DUALNUM - dasm_put(Dst, 884); -#endif - dasm_put(Dst, 1469); -#if LJ_DUALNUM - dasm_put(Dst, 1451); -#endif - dasm_put(Dst, 1497, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base)); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1607); -#else - dasm_put(Dst, 1626); -#endif - dasm_put(Dst, 1631, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); - dasm_put(Dst, 1820, 1+1, ~LJ_TNUMX); - if (cmov) { - dasm_put(Dst, 1878); - } else { - dasm_put(Dst, 1882); - } - dasm_put(Dst, 1891, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB); - dasm_put(Dst, 1974, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); - dasm_put(Dst, 2032, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1); - dasm_put(Dst, 2095, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - dasm_put(Dst, 2167, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2256); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 2278); - } else { - dasm_put(Dst, 2288); - } - dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2361, Dt1(->base)); - if (LJ_DUALNUM) { - dasm_put(Dst, 2385); - } else { - dasm_put(Dst, 2390); - } - dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2); - dasm_put(Dst, 2504, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 2551, Dt6(->metatable)); -#endif - dasm_put(Dst, 2560, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2546); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 2615); - if (LJ_DUALNUM) { - dasm_put(Dst, 2620, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 2636); - } else { - dasm_put(Dst, 2675); - } - dasm_put(Dst, 2693, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); - dasm_put(Dst, 2531, 1+1, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 2551, Dt6(->metatable)); -#endif - dasm_put(Dst, 2774, Dt8(->upvalue[0]), LJ_TFUNC); - if (LJ_DUALNUM) { - dasm_put(Dst, 2795, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 2807); - } else { - dasm_put(Dst, 2817); - } - dasm_put(Dst, 2824, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); - dasm_put(Dst, 2888, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); - dasm_put(Dst, 2976, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); - dasm_put(Dst, 3077, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); - dasm_put(Dst, 3191, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); - dasm_put(Dst, 3289, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); - dasm_put(Dst, 3355, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); - dasm_put(Dst, 3456, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); - dasm_put(Dst, 3569, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 3595); - } - if (sse) { - dasm_put(Dst, 3598); - } - dasm_put(Dst, 3613, 1+1); - if (LJ_DUALNUM) { - dasm_put(Dst, 3624, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 3704, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3714); - } else { - dasm_put(Dst, 3750); - } - dasm_put(Dst, 3767, 1+1, FRAME_TYPE, LJ_TNIL); - if (LJ_DUALNUM) { - dasm_put(Dst, 3859, LJ_TISNUM); - } else { - dasm_put(Dst, 3704, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3881); - if (LJ_DUALNUM) { - dasm_put(Dst, 3890); - } - dasm_put(Dst, 2283); - } else { - dasm_put(Dst, 3924); - if (LJ_DUALNUM) { - dasm_put(Dst, 3930); - if (cmov) { - dasm_put(Dst, 3953); - } else { - dasm_put(Dst, 3959); - } - dasm_put(Dst, 3966); - } else { - dasm_put(Dst, 2290); - } - } - dasm_put(Dst, 3983); - if (LJ_DUALNUM) { - dasm_put(Dst, 3859, LJ_TISNUM); - } else { - dasm_put(Dst, 3704, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 3986); - if (LJ_DUALNUM) { - dasm_put(Dst, 3890); - } - dasm_put(Dst, 2283); - } else { - dasm_put(Dst, 3995); - if (LJ_DUALNUM) { - dasm_put(Dst, 3930); - if (cmov) { - dasm_put(Dst, 3953); - } else { - dasm_put(Dst, 3959); - } - dasm_put(Dst, 3966); - } else { - dasm_put(Dst, 2290); - } - } - if (sse) { - dasm_put(Dst, 4001, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 4030, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 4059, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4128, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4185, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4248, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4338); - if (sse) { - dasm_put(Dst, 4350, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 4381, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 4406); - if (sse) { - dasm_put(Dst, 4420, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 4451, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 4476); - if (sse) { - dasm_put(Dst, 4490, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 4521, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 4546); - if (sse) { - dasm_put(Dst, 4562, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); - } else { - dasm_put(Dst, 4601, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); - } - dasm_put(Dst, 4634, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 4699, 1+1, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4798); - } else { - dasm_put(Dst, 4804); - } - dasm_put(Dst, 4813); - if (sse) { - dasm_put(Dst, 4838); - } else { - dasm_put(Dst, 4844); - } - dasm_put(Dst, 4847, 1+2); - if (sse) { - dasm_put(Dst, 4856); - } else { - dasm_put(Dst, 4864); - } - dasm_put(Dst, 4872); - if (sse) { - dasm_put(Dst, 4875); - } else { - dasm_put(Dst, 4907); - } - dasm_put(Dst, 4926); - if (sse) { - dasm_put(Dst, 4942, 1+1, LJ_TISNUM); - } else { - dasm_put(Dst, 4967, 1+1, LJ_TISNUM); - } - dasm_put(Dst, 4989); - if (sse) { - dasm_put(Dst, 5011); - } else { - dasm_put(Dst, 5037); - } - dasm_put(Dst, 5054, 1+2); - if (sse) { - dasm_put(Dst, 5094); - } else { - dasm_put(Dst, 5102); - } - dasm_put(Dst, 5112, 2+1, LJ_TISNUM, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 5164, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 5211, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 5252, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5265, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4798); - } else { - dasm_put(Dst, 4804); - } - dasm_put(Dst, 5315); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 5326, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5347); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 5368); - } else { - dasm_put(Dst, 5393, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5411); - } else { - dasm_put(Dst, 5429); - } - dasm_put(Dst, 5434); - if (cmov) { - dasm_put(Dst, 5444); - } else { - dasm_put(Dst, 5452); - } - dasm_put(Dst, 5385); - } - dasm_put(Dst, 5473, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5486, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 4798); - } else { - dasm_put(Dst, 4804); - } - dasm_put(Dst, 5315); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 5326, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5347); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 5536); - } else { - dasm_put(Dst, 5393, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5411); - } else { - dasm_put(Dst, 5429); - } - dasm_put(Dst, 5434); - if (cmov) { - dasm_put(Dst, 5561); - } else { - dasm_put(Dst, 5569); - } - dasm_put(Dst, 5385); - } - if (!sse) { - dasm_put(Dst, 5590); - } - dasm_put(Dst, 5599, 1+1, LJ_TSTR); - if (LJ_DUALNUM) { - dasm_put(Dst, 5621, Dt5(->len)); - } else if (sse) { - dasm_put(Dst, 5629, Dt5(->len)); - } else { - dasm_put(Dst, 5640, Dt5(->len)); - } - dasm_put(Dst, 5648, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); - if (LJ_DUALNUM) { - dasm_put(Dst, 3978); - } else if (sse) { - dasm_put(Dst, 5686); - } else { - dasm_put(Dst, 5696); - } - dasm_put(Dst, 5709, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5740); - } else if (sse) { - dasm_put(Dst, 5763); - } else { - dasm_put(Dst, 5789); - } - dasm_put(Dst, 5813, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 5916); - } else if (sse) { - dasm_put(Dst, 5928); - } else { - dasm_put(Dst, 5943); - } - dasm_put(Dst, 5955, LJ_TSTR, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 2546); - } else { - dasm_put(Dst, 2273); - } - dasm_put(Dst, 5972, Dt5(->len)); - if (LJ_DUALNUM) { - dasm_put(Dst, 5982); - } else if (sse) { - dasm_put(Dst, 5986); - } else { - dasm_put(Dst, 5993); - } - dasm_put(Dst, 6005, sizeof(GCstr)-1); - dasm_put(Dst, 6080, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 6139, LJ_TSTR, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6156); - } else if (sse) { - dasm_put(Dst, 6164); - } else { - dasm_put(Dst, 6175); - } - dasm_put(Dst, 6191, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6256, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6319, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 6390, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6475, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6545, 1+1, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 6613); - } else if (sse) { - dasm_put(Dst, 6620); - } else { - dasm_put(Dst, 6630); - } - dasm_put(Dst, 6641, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6657); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 6703); - } - dasm_put(Dst, 111); - if (LJ_DUALNUM || sse) { - if (!sse) { - dasm_put(Dst, 6721); - } - dasm_put(Dst, 6725); - } else { - dasm_put(Dst, 6633); - } - dasm_put(Dst, 6730, 1+1); - if (sse) { - dasm_put(Dst, 6741); - } else { - dasm_put(Dst, 6756); - } - dasm_put(Dst, 2250, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6782); - } else { - dasm_put(Dst, 6797); - } - dasm_put(Dst, 6810, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6835); - } else { - dasm_put(Dst, 6855); - } - if (sse) { - dasm_put(Dst, 6860); - } else { - dasm_put(Dst, 6877); - } - dasm_put(Dst, 6890, 1+1); - if (sse) { - dasm_put(Dst, 6741); - } else { - dasm_put(Dst, 6756); - } - dasm_put(Dst, 2250, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6782); - } else { - dasm_put(Dst, 6797); - } - dasm_put(Dst, 6810, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6908); - } else { - dasm_put(Dst, 6855); - } - if (sse) { - dasm_put(Dst, 6928); - } else { - dasm_put(Dst, 6945); - } - dasm_put(Dst, 6958, 1+1); - if (sse) { - dasm_put(Dst, 6741); - } else { - dasm_put(Dst, 6756); - } - dasm_put(Dst, 2250, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6782); - } else { - dasm_put(Dst, 6797); - } - dasm_put(Dst, 6810, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6976); - } else { - dasm_put(Dst, 6855); - } - if (sse) { - dasm_put(Dst, 6996); - } else { - dasm_put(Dst, 7013); - } - dasm_put(Dst, 7026, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 7049); - } - dasm_put(Dst, 7070, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 7049); - } - dasm_put(Dst, 7094); - if (LJ_DUALNUM) { - dasm_put(Dst, 6725); - } else if (sse) { - dasm_put(Dst, 7100); - } else { - dasm_put(Dst, 7112); - } - dasm_put(Dst, 7125); - if (LJ_DUALNUM) { - dasm_put(Dst, 7136, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 7049); - } - dasm_put(Dst, 7152, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7167, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 7239, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 7303); - if (LJ_DUALNUM) { - dasm_put(Dst, 7310, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 7049); - } - dasm_put(Dst, 7152, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7326, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 7398, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 7462); - if (LJ_DUALNUM) { - dasm_put(Dst, 7470, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 7049); - } - dasm_put(Dst, 7152, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7486, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 7558, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 7622); - if (LJ_DUALNUM) { - dasm_put(Dst, 7630, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 7049); - } - dasm_put(Dst, 7152, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7646, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 7718, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 7782); - if (LJ_DUALNUM) { - dasm_put(Dst, 7789, 1+1, LJ_TISNUM); - if (LJ_DUALNUM) { - dasm_put(Dst, 6765); - } else { - dasm_put(Dst, 2273); - } - if (sse) { - dasm_put(Dst, 6674); - } else { - dasm_put(Dst, 7049); - } - dasm_put(Dst, 7152, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 7805, 2+1, LJ_TISNUM, LJ_TISNUM); - } else { - dasm_put(Dst, 7877, 2+1, LJ_TISNUM, LJ_TISNUM); - } - dasm_put(Dst, 7941, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 8017, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 8141, Dt1(->top), Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 8179, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); -#endif - dasm_put(Dst, 8210, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); - dasm_put(Dst, 8261, Dt1(->base), Dt1(->base), GG_DISP2STATIC); -#if LJ_HASJIT - dasm_put(Dst, 8327, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); -#endif - dasm_put(Dst, 8373); -#if LJ_HASJIT - dasm_put(Dst, 8205); -#endif - dasm_put(Dst, 8380); -#if LJ_HASJIT - dasm_put(Dst, 8383); -#endif - dasm_put(Dst, 8393, Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 8427); -#endif - dasm_put(Dst, 8432, Dt1(->base), Dt1(->top)); -#if LJ_HASJIT - dasm_put(Dst, 8461, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); -#endif - dasm_put(Dst, 8604); -#if LJ_HASJIT - dasm_put(Dst, 8607, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); -#endif - dasm_put(Dst, 8685); - if (!sse) { - dasm_put(Dst, 8688); - } - dasm_put(Dst, 8733); - if (!sse) { - dasm_put(Dst, 8835); - } - dasm_put(Dst, 8880); - if (!sse) { - dasm_put(Dst, 8982); - } - dasm_put(Dst, 9021); - if (sse) { - dasm_put(Dst, 9126); - } else { - dasm_put(Dst, 9256); - } - dasm_put(Dst, 9303); - if (!sse) { - dasm_put(Dst, 9377); - if (cmov) { - dasm_put(Dst, 9388); - } else { - dasm_put(Dst, 9392); - } - dasm_put(Dst, 9399); - dasm_put(Dst, 9473); - dasm_put(Dst, 9573); - if (cmov) { - dasm_put(Dst, 9576); - } else { - dasm_put(Dst, 9580); - } - dasm_put(Dst, 9587); - if (cmov) { - dasm_put(Dst, 9388); - } else { - dasm_put(Dst, 9392); - } - dasm_put(Dst, 9605); - } else { - dasm_put(Dst, 9684); - } - dasm_put(Dst, 9687); - dasm_put(Dst, 9772); - dasm_put(Dst, 9902); - dasm_put(Dst, 10108); -#if LJ_HASJIT - if (sse) { - dasm_put(Dst, 10115); - dasm_put(Dst, 10172); - dasm_put(Dst, 10263); - } else { - dasm_put(Dst, 10305); - dasm_put(Dst, 10397); - } - dasm_put(Dst, 10443); -#endif - dasm_put(Dst, 10447); - if (sse) { - dasm_put(Dst, 10450); - dasm_put(Dst, 10555); - dasm_put(Dst, 10638); - } else { - dasm_put(Dst, 10710); - dasm_put(Dst, 10793); - if (cmov) { - dasm_put(Dst, 10848); - } else { - dasm_put(Dst, 10867); - } - dasm_put(Dst, 10443); - } - dasm_put(Dst, 10908); -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 10445); -#endif - dasm_put(Dst, 10964); -#if LJ_HASFFI -#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) - dasm_put(Dst, 10968, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), CFRAME_SIZE+16, DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.stack), CFRAME_SIZE+12, CFRAME_SIZE+8, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc)); -#endif - dasm_put(Dst, 11078); -#if LJ_HASFFI - dasm_put(Dst, 11081, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.fpr[0].d), DtE(->cb.fpr[0].f), Dt1(->top)); -#endif - dasm_put(Dst, 11170); -#if LJ_HASFFI -#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 11173, DtF(->spadj)); -#if LJ_TARGET_WINDOWS - dasm_put(Dst, 11183, DtF(->spadj)); -#endif - dasm_put(Dst, 11187, DtF(->nsp), offsetof(CCallState, stack), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->func), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->resx87), DtF(->fpr[0].d[0])); - dasm_put(Dst, 11257, DtF(->fpr[0].f[0])); -#if LJ_TARGET_WINDOWS - dasm_put(Dst, 11263, DtF(->spadj)); -#endif - dasm_put(Dst, 11267); -#endif -} - -/* Generate the code for a single instruction. */ -static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) -{ - int vk = 0; - dasm_put(Dst, 11274, defop); - - switch (op) { - - /* -- Comparison ops ---------------------------------------------------- */ - - /* Remember: all ops branch for a true comparison, fall through otherwise. */ - - - case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - if (LJ_DUALNUM) { - dasm_put(Dst, 11276, LJ_TISNUM, LJ_TISNUM); - switch (op) { - case BC_ISLT: - dasm_put(Dst, 11306); - break; - case BC_ISGE: - dasm_put(Dst, 11311); - break; - case BC_ISLE: - dasm_put(Dst, 11316); - break; - case BC_ISGT: - dasm_put(Dst, 11321); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 11326, -BCBIAS_J*4, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 11379); - } else { - dasm_put(Dst, 11390); - } - dasm_put(Dst, 11401); - if (sse) { - dasm_put(Dst, 11408); - switch (op) { - case BC_ISLT: - dasm_put(Dst, 11428); - break; - case BC_ISGE: - dasm_put(Dst, 11433); - break; - case BC_ISLE: - dasm_put(Dst, 11438); - break; - case BC_ISGT: - dasm_put(Dst, 11443); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 11448); - } else { - dasm_put(Dst, 11453); - } - } else { - dasm_put(Dst, 11461, LJ_TISNUM, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 11482); - } else { - dasm_put(Dst, 11503); - if (cmov) { - dasm_put(Dst, 3953); - } else { - dasm_put(Dst, 3959); - } - } - if (LJ_DUALNUM) { - switch (op) { - case BC_ISLT: - dasm_put(Dst, 11428); - break; - case BC_ISGE: - dasm_put(Dst, 11433); - break; - case BC_ISLE: - dasm_put(Dst, 11438); - break; - case BC_ISGT: - dasm_put(Dst, 11443); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 11448); - } else { - switch (op) { - case BC_ISLT: - dasm_put(Dst, 752); - break; - case BC_ISGE: - dasm_put(Dst, 11519); - break; - case BC_ISLE: - dasm_put(Dst, 11524); - break; - case BC_ISGT: - dasm_put(Dst, 11529); - break; - default: break; /* Shut up GCC. */ - } - dasm_put(Dst, 11534, -BCBIAS_J*4); - } - break; - - case BC_ISEQV: case BC_ISNEV: - vk = op == BC_ISEQV; - dasm_put(Dst, 11565); - if (LJ_DUALNUM) { - dasm_put(Dst, 11573, LJ_TISNUM, LJ_TISNUM); - if (vk) { - dasm_put(Dst, 11598); - } else { - dasm_put(Dst, 11603); - } - dasm_put(Dst, 11608, -BCBIAS_J*4, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 11659); - } else { - dasm_put(Dst, 11666); - } - dasm_put(Dst, 11670); - if (sse) { - dasm_put(Dst, 11681); - } else { - dasm_put(Dst, 11693); - } - dasm_put(Dst, 11700); - } else { - dasm_put(Dst, 11705, LJ_TISNUM, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 11724); - } else { - dasm_put(Dst, 11742); - if (cmov) { - dasm_put(Dst, 3953); - } else { - dasm_put(Dst, 3959); - } - } - iseqne_fp: - if (vk) { - dasm_put(Dst, 11755); - } else { - dasm_put(Dst, 11764); - } - iseqne_end: - if (vk) { - dasm_put(Dst, 11773, -BCBIAS_J*4); - if (!LJ_HASFFI) { - dasm_put(Dst, 4853); - } - } else { - if (!LJ_HASFFI) { - dasm_put(Dst, 4853); - } - dasm_put(Dst, 11788, -BCBIAS_J*4); - } - if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV || - op == BC_ISEQN || op == BC_ISNEN)) { - dasm_put(Dst, 11803); - } else { - dasm_put(Dst, 11546); - } - if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 11808); - if (LJ_HASFFI) { - dasm_put(Dst, 11811, LJ_TCDATA, LJ_TCDATA); - } - dasm_put(Dst, 11830, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<len), LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 12450, Dt5(->len)); - } else { - dasm_put(Dst, 12468, Dt5(->len)); - } - dasm_put(Dst, 12477, LJ_TTAB); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 12511, Dt6(->metatable)); -#endif - dasm_put(Dst, 12525); - if (LJ_DUALNUM) { - } else if (sse) { - dasm_put(Dst, 12534); - } else { - dasm_put(Dst, 12540); - } - dasm_put(Dst, 12547); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 12560, Dt6(->nomm), 1<base), Dt1(->base)); - break; - - /* -- Constant ops ------------------------------------------------------ */ - - case BC_KSTR: - dasm_put(Dst, 13397, LJ_TSTR); - break; - case BC_KCDATA: -#if LJ_HASFFI - dasm_put(Dst, 13397, LJ_TCDATA); -#endif - break; - case BC_KSHORT: - if (LJ_DUALNUM) { - dasm_put(Dst, 13430, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 13442); - } else { - dasm_put(Dst, 13457); - } - dasm_put(Dst, 11546); - break; - case BC_KNUM: - if (sse) { - dasm_put(Dst, 13465); - } else { - dasm_put(Dst, 13478); - } - dasm_put(Dst, 11546); - break; - case BC_KPRI: - dasm_put(Dst, 13485); - break; - case BC_KNIL: - dasm_put(Dst, 13511, LJ_TNIL); - break; - - /* -- Upvalue and function ops ------------------------------------------ */ - - case BC_UGET: - dasm_put(Dst, 13557, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_USETV: -#define TV2MARKOFS \ - ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 13601, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - dasm_put(Dst, 13691); - break; -#undef TV2MARKOFS - case BC_USETS: - dasm_put(Dst, 13703, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); - break; - case BC_USETN: - dasm_put(Dst, 13794); - if (sse) { - dasm_put(Dst, 13799); - } else { - dasm_put(Dst, 12056); - } - dasm_put(Dst, 13806, offsetof(GCfuncL, uvptr), DtA(->v)); - if (sse) { - dasm_put(Dst, 13815); - } else { - dasm_put(Dst, 13821); - } - dasm_put(Dst, 11546); - break; - case BC_USETP: - dasm_put(Dst, 13824, offsetof(GCfuncL, uvptr), DtA(->v)); - break; - case BC_UCLO: - dasm_put(Dst, 13861, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); - break; - - case BC_FNEW: - dasm_put(Dst, 13915, Dt1(->base), Dt1(->base), LJ_TFUNC); - break; - - /* -- Table ops --------------------------------------------------------- */ - - case BC_TNEW: - dasm_put(Dst, 13986, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); - break; - case BC_TDUP: - dasm_put(Dst, 14112, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); - break; - - case BC_GGET: - dasm_put(Dst, 14204, Dt7(->env)); - break; - case BC_GSET: - dasm_put(Dst, 14222, Dt7(->env)); - break; - - case BC_TGETV: - dasm_put(Dst, 14240, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 14263, LJ_TISNUM); - } else { - dasm_put(Dst, 14277, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 14288); - } else { - dasm_put(Dst, 14309); - if (cmov) { - dasm_put(Dst, 3953); - } else { - dasm_put(Dst, 3959); - } - dasm_put(Dst, 2689); - } - dasm_put(Dst, 14319); - } - dasm_put(Dst, 14324, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 14525, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - case BC_TSETS: - dasm_put(Dst, 14880, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 14955, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 15047, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - case BC_TSETB: - dasm_put(Dst, 15143, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 15241, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - - case BC_TSETM: - dasm_put(Dst, 15287, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 15436, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); - break; - - /* -- Calls and vararg handling ----------------------------------------- */ - - case BC_CALL: case BC_CALLM: - dasm_put(Dst, 12580); - if (op == BC_CALLM) { - dasm_put(Dst, 15454); - } - dasm_put(Dst, 15459, LJ_TFUNC, Dt7(->pc)); - break; - - case BC_CALLMT: - dasm_put(Dst, 15454); - break; - case BC_CALLT: - dasm_put(Dst, 15500, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 15618, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); - break; - - case BC_ITERC: - dasm_put(Dst, 15688, LJ_TFUNC, 2+1, Dt7(->pc)); - break; - - case BC_ITERN: -#if LJ_HASJIT -#endif - dasm_put(Dst, 15768, Dt6(->asize), Dt6(->array), LJ_TNIL); - if (LJ_DUALNUM) { - dasm_put(Dst, 12441, LJ_TISNUM); - } else if (sse) { - dasm_put(Dst, 12534); - } else { - dasm_put(Dst, 15814); - } - dasm_put(Dst, 15820); - if (LJ_DUALNUM) { - } else if (sse) { - dasm_put(Dst, 12406); - } else { - dasm_put(Dst, 12418); - } - dasm_put(Dst, 15839, -BCBIAS_J*4); - if (!LJ_DUALNUM && !sse) { - dasm_put(Dst, 15890); - } - dasm_put(Dst, 15896, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); - dasm_put(Dst, 15971); - break; - - case BC_ISNEXT: - dasm_put(Dst, 15979, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); - break; - - case BC_VARG: - dasm_put(Dst, 16078, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); - dasm_put(Dst, 16242, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); - break; - - /* -- Returns ----------------------------------------------------------- */ - - case BC_RETM: - dasm_put(Dst, 15454); - break; - - case BC_RET: case BC_RET0: case BC_RET1: - if (op != BC_RET0) { - dasm_put(Dst, 16313); - } - dasm_put(Dst, 16317, FRAME_TYPE); - switch (op) { - case BC_RET: - dasm_put(Dst, 16336); - break; - case BC_RET1: - dasm_put(Dst, 16394); - /* fallthrough */ - case BC_RET0: - dasm_put(Dst, 16410); - default: - break; - } - dasm_put(Dst, 16421, Dt7(->pc), PC2PROTO(k)); - if (op == BC_RET) { - dasm_put(Dst, 16463, LJ_TNIL); - } else { - dasm_put(Dst, 16472, LJ_TNIL); - } - dasm_put(Dst, 16479, -FRAME_VARG, FRAME_TYPEP); - if (op != BC_RET0) { - dasm_put(Dst, 16503); - } - dasm_put(Dst, 4937); - break; - - /* -- Loops and branches ------------------------------------------------ */ - - - case BC_FORL: -#if LJ_HASJIT - dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JFORI: - case BC_JFORL: -#if !LJ_HASJIT - break; -#endif - case BC_FORI: - case BC_IFORL: - vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 16528); - if (LJ_DUALNUM) { - dasm_put(Dst, 16532, LJ_TISNUM); - if (!vk) { - dasm_put(Dst, 16542, LJ_TISNUM, LJ_TISNUM); - } else { -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 16571, LJ_TISNUM, LJ_TISNUM); -#endif - dasm_put(Dst, 16590); - } - dasm_put(Dst, 16609, LJ_TISNUM); - if (op == BC_FORI) { - dasm_put(Dst, 16620, -BCBIAS_J*4); - } else if (op == BC_JFORI) { - dasm_put(Dst, 16634, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - dasm_put(Dst, 16652, -BCBIAS_J*4); - } else { - dasm_put(Dst, 16644, BC_JLOOP); - } - dasm_put(Dst, 16666); - if (vk) { - dasm_put(Dst, 16689); - } - dasm_put(Dst, 16609, LJ_TISNUM); - if (op == BC_FORI) { - dasm_put(Dst, 16698); - } else if (op == BC_JFORI) { - dasm_put(Dst, 16703, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - dasm_put(Dst, 16717); - } else { - dasm_put(Dst, 16713, BC_JLOOP); - } - dasm_put(Dst, 16722); - } else if (!vk) { - dasm_put(Dst, 16729, LJ_TISNUM); - } - if (!vk) { - dasm_put(Dst, 16735, LJ_TISNUM); - } else { -#ifdef LUA_USE_ASSERT - dasm_put(Dst, 16749, LJ_TISNUM, LJ_TISNUM); -#endif - } - dasm_put(Dst, 16768); - if (!vk) { - dasm_put(Dst, 16772, LJ_TISNUM); - } - if (sse) { - dasm_put(Dst, 16781); - if (vk) { - dasm_put(Dst, 16793); - } else { - dasm_put(Dst, 16812); - } - dasm_put(Dst, 16817); - } else { - dasm_put(Dst, 16830); - if (vk) { - dasm_put(Dst, 16836); - } else { - dasm_put(Dst, 16852); - } - dasm_put(Dst, 16860); - if (cmov) { - dasm_put(Dst, 3953); - } else { - dasm_put(Dst, 3959); - } - if (!cmov) { - dasm_put(Dst, 16865); - } - } - if (op == BC_FORI) { - if (LJ_DUALNUM) { - dasm_put(Dst, 16871); - } else { - dasm_put(Dst, 16876, -BCBIAS_J*4); - } - } else if (op == BC_JFORI) { - dasm_put(Dst, 16886, -BCBIAS_J*4, BC_JLOOP); - } else if (op == BC_IFORL) { - if (LJ_DUALNUM) { - dasm_put(Dst, 16900); - } else { - dasm_put(Dst, 16905, -BCBIAS_J*4); - } - } else { - dasm_put(Dst, 16896, BC_JLOOP); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 11448); - } else { - dasm_put(Dst, 12184); - } - if (sse) { - dasm_put(Dst, 16915); - } - break; - - case BC_ITERL: -#if LJ_HASJIT - dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_JITERL: -#if !LJ_HASJIT - break; -#endif - case BC_IITERL: - dasm_put(Dst, 16926, LJ_TNIL); - if (op == BC_JITERL) { - dasm_put(Dst, 16941, BC_JLOOP); - } else { - dasm_put(Dst, 16955, -BCBIAS_J*4); - } - dasm_put(Dst, 11544); - break; - - case BC_LOOP: -#if LJ_HASJIT - dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#endif - break; - - case BC_ILOOP: - dasm_put(Dst, 11546); - break; - - case BC_JLOOP: -#if LJ_HASJIT - dasm_put(Dst, 16971, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); -#endif - break; - - case BC_JMP: - dasm_put(Dst, 16994, -BCBIAS_J*4); - break; - - /* -- Function headers -------------------------------------------------- */ - - /* - ** Reminder: A function may be called with func/args above L->maxstack, - ** i.e. occupying EXTRA_STACK slots. And vmeta_call may add one extra slot, - ** too. This means all FUNC* ops (including fast functions) must check - ** for stack overflow _before_ adding more slots! - */ - - case BC_FUNCF: -#if LJ_HASJIT - dasm_put(Dst, 17018, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); -#endif - case BC_FUNCV: /* NYI: compiled vararg functions. */ - break; - - case BC_JFUNCF: -#if !LJ_HASJIT - break; -#endif - case BC_IFUNCF: - dasm_put(Dst, 17039, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); - if (op == BC_JFUNCF) { - dasm_put(Dst, 17069, BC_JLOOP); - } else { - dasm_put(Dst, 11546); - } - dasm_put(Dst, 17078, LJ_TNIL); - break; - - case BC_JFUNCV: -#if !LJ_HASJIT - break; -#endif - dasm_put(Dst, 10445); - break; /* NYI: compiled vararg functions. */ - - case BC_IFUNCV: - dasm_put(Dst, 17100, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); - if (op == BC_JFUNCV) { - dasm_put(Dst, 17069, BC_JLOOP); - } else { - dasm_put(Dst, 17191, -4+PC2PROTO(k)); - } - dasm_put(Dst, 17213, LJ_TNIL); - break; - - case BC_FUNCC: - case BC_FUNCCW: - dasm_put(Dst, 17235, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); - if (op == BC_FUNCC) { - dasm_put(Dst, 17264); - } else { - dasm_put(Dst, 17268); - } - dasm_put(Dst, 17276, DISPATCH_GL(vmstate), ~LJ_VMST_C); - if (op == BC_FUNCC) { - dasm_put(Dst, 17285); - } else { - dasm_put(Dst, 17289, DISPATCH_GL(wrapf)); - } - dasm_put(Dst, 17294, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); - break; - - /* ---------------------------------------------------------------------- */ - - default: - fprintf(stderr, "Error: undefined opcode BC_%s\n", bc_names[op]); - exit(2); - break; - } -} - -static int build_backend(BuildCtx *ctx) -{ - int op; - int cmov = 1; - int sse = 0; -#ifdef LUAJIT_CPU_NOCMOV - cmov = 0; -#endif -#if defined(LUAJIT_CPU_SSE2) || defined(LJ_TARGET_X64) - sse = 1; -#endif - - dasm_growpc(Dst, BC__MAX); - - build_subroutines(ctx, cmov, sse); - - dasm_put(Dst, 17319); - for (op = 0; op < BC__MAX; op++) - build_ins(ctx, (BCOp)op, op, cmov, sse); - - return BC__MAX; -} - -/* Emit pseudo frame-info for all assembler functions. */ -static void emit_asm_debug(BuildCtx *ctx) -{ - int fcofs = (int)((uint8_t *)ctx->glob[GLOB_vm_ffi_call] - ctx->code); -#if LJ_64 -#define SZPTR "8" -#define BSZPTR "3" -#define REG_SP "0x7" -#define REG_RA "0x10" -#else -#define SZPTR "4" -#define BSZPTR "2" -#define REG_SP "0x4" -#define REG_RA "0x8" -#endif - switch (ctx->mode) { - case BUILD_elfasm: - fprintf(ctx->fp, "\t.section .debug_frame,\"\",@progbits\n"); - fprintf(ctx->fp, - ".Lframe0:\n" - "\t.long .LECIE0-.LSCIE0\n" - ".LSCIE0:\n" - "\t.long 0xffffffff\n" - "\t.byte 0x1\n" - "\t.string \"\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE0:\n\n"); - fprintf(ctx->fp, - ".LSFDE0:\n" - "\t.long .LEFDE0-.LASFDE0\n" - ".LASFDE0:\n" - "\t.long .Lframe0\n" -#if LJ_64 - "\t.quad .Lbegin\n" - "\t.quad %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.long .Lbegin\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE0:\n\n", fcofs, CFRAME_SIZE); -#if LJ_HASFFI - fprintf(ctx->fp, - ".LSFDE1:\n" - "\t.long .LEFDE1-.LASFDE1\n" - ".LASFDE1:\n" - "\t.long .Lframe0\n" -#if LJ_64 - "\t.quad lj_vm_ffi_call\n" - "\t.quad %d\n" - "\t.byte 0xe\n\t.uleb128 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ -#else - "\t.long lj_vm_ffi_call\n" - "\t.long %d\n" - "\t.byte 0xe\n\t.uleb128 8\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0xd\n\t.uleb128 0x5\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); -#endif -#if (defined(__sun__) && defined(__svr4__)) || defined(__solaris_) - fprintf(ctx->fp, "\t.section .eh_frame,\"aw\",@progbits\n"); -#else - fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@progbits\n"); -#endif - fprintf(ctx->fp, - ".Lframe1:\n" - "\t.long .LECIE1-.LSCIE1\n" - ".LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zPR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 6\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.long lj_err_unwind_dwarf-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE1:\n\n"); - fprintf(ctx->fp, - ".LSFDE2:\n" - "\t.long .LEFDE2-.LASFDE2\n" - ".LASFDE2:\n" - "\t.long .LASFDE2-.Lframe1\n" - "\t.long .Lbegin-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE2:\n\n", fcofs, CFRAME_SIZE); -#if LJ_HASFFI - fprintf(ctx->fp, - ".Lframe2:\n" - "\t.long .LECIE2-.LSCIE2\n" - ".LSCIE2:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zR\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 1\n" /* augmentation length */ - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - ".LECIE2:\n\n"); - fprintf(ctx->fp, - ".LSFDE3:\n" - "\t.long .LEFDE3-.LASFDE3\n" - ".LASFDE3:\n" - "\t.long .LASFDE3-.Lframe2\n" - "\t.long lj_vm_ffi_call-.\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0xe\n\t.uleb128 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ -#else - "\t.byte 0xe\n\t.uleb128 8\n" /* def_cfa_offset */ - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0xd\n\t.uleb128 0x5\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - ".LEFDE3:\n\n", (int)ctx->codesz - fcofs); -#endif - break; - case BUILD_coffasm: - fprintf(ctx->fp, "\t.section .eh_frame,\"dr\"\n"); - fprintf(ctx->fp, - "\t.def %slj_err_unwind_dwarf; .scl 2; .type 32; .endef\n", - LJ_32 ? "_" : ""); - fprintf(ctx->fp, - "Lframe1:\n" - "\t.long LECIE1-LSCIE1\n" - "LSCIE1:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.string \"zP\"\n" - "\t.uleb128 0x1\n" - "\t.sleb128 -" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.uleb128 5\n" /* augmentation length */ - "\t.byte 0x00\n" /* absptr */ - "\t.long %slj_err_unwind_dwarf\n" - "\t.byte 0xc\n\t.uleb128 " REG_SP "\n\t.uleb128 " SZPTR "\n" - "\t.byte 0x80+" REG_RA "\n\t.uleb128 0x1\n" - "\t.align " SZPTR "\n" - "LECIE1:\n\n", LJ_32 ? "_" : ""); - fprintf(ctx->fp, - "LSFDE1:\n" - "\t.long LEFDE1-LASFDE1\n" - "LASFDE1:\n" - "\t.long LASFDE1-Lframe1\n" - "\t.long %slj_vm_asm_begin\n" - "\t.long %d\n" - "\t.uleb128 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.uleb128 %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.uleb128 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ -#else - "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ - "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.uleb128 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.uleb128 0x5\n" /* offset ebx */ -#endif - "\t.align " SZPTR "\n" - "LEFDE1:\n\n", LJ_32 ? "_" : "", (int)ctx->codesz, CFRAME_SIZE); - break; - /* Mental note: never let Apple design an assembler. - ** Or a linker. Or a plastic case. But I digress. - */ - case BUILD_machasm: { -#if LJ_HASFFI - int fcsize = 0; -#endif - int i; - fprintf(ctx->fp, "\t.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support\n"); - fprintf(ctx->fp, - "EH_frame1:\n" - "\t.set L$set$x,LECIEX-LSCIEX\n" - "\t.long L$set$x\n" - "LSCIEX:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.ascii \"zPR\\0\"\n" - "\t.byte 0x1\n" - "\t.byte 128-" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 6\n" /* augmentation length */ - "\t.byte 0x9b\n" /* indirect|pcrel|sdata4 */ -#if LJ_64 - "\t.long _lj_err_unwind_dwarf+4@GOTPCREL\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte " REG_SP "\n\t.byte " SZPTR "\n" -#else - "\t.long L_lj_err_unwind_dwarf$non_lazy_ptr-.\n" - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte 0x5\n\t.byte 0x4\n" /* esp=5 on 32 bit MACH-O. */ -#endif - "\t.byte 0x80+" REG_RA "\n\t.byte 0x1\n" - "\t.align " BSZPTR "\n" - "LECIEX:\n\n"); - for (i = 0; i < ctx->nsym; i++) { - const char *name = ctx->sym[i].name; - int32_t size = ctx->sym[i+1].ofs - ctx->sym[i].ofs; - if (size == 0) continue; -#if LJ_HASFFI - if (!strcmp(name, "_lj_vm_ffi_call")) { fcsize = size; continue; } -#endif - fprintf(ctx->fp, - "%s.eh:\n" - "LSFDE%d:\n" - "\t.set L$set$%d,LEFDE%d-LASFDE%d\n" - "\t.long L$set$%d\n" - "LASFDE%d:\n" - "\t.long LASFDE%d-EH_frame1\n" - "\t.long %s-.\n" - "\t.long %d\n" - "\t.byte 0\n" /* augmentation length */ - "\t.byte 0xe\n\t.byte %d\n" /* def_cfa_offset */ -#if LJ_64 - "\t.byte 0x86\n\t.byte 0x2\n" /* offset rbp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset rbx */ - "\t.byte 0x8f\n\t.byte 0x4\n" /* offset r15 */ - "\t.byte 0x8e\n\t.byte 0x5\n" /* offset r14 */ -#else - "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ - "\t.byte 0x87\n\t.byte 0x3\n" /* offset edi */ - "\t.byte 0x86\n\t.byte 0x4\n" /* offset esi */ - "\t.byte 0x83\n\t.byte 0x5\n" /* offset ebx */ -#endif - "\t.align " BSZPTR "\n" - "LEFDE%d:\n\n", - name, i, i, i, i, i, i, i, name, size, CFRAME_SIZE, i); - } -#if LJ_HASFFI - if (fcsize) { - fprintf(ctx->fp, - "EH_frame2:\n" - "\t.set L$set$y,LECIEY-LSCIEY\n" - "\t.long L$set$y\n" - "LSCIEY:\n" - "\t.long 0\n" - "\t.byte 0x1\n" - "\t.ascii \"zR\\0\"\n" - "\t.byte 0x1\n" - "\t.byte 128-" SZPTR "\n" - "\t.byte " REG_RA "\n" - "\t.byte 1\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte " REG_SP "\n\t.byte " SZPTR "\n" -#else - "\t.byte 0x1b\n" /* pcrel|sdata4 */ - "\t.byte 0xc\n\t.byte 0x5\n\t.byte 0x4\n" /* esp=5 on 32 bit MACH. */ -#endif - "\t.byte 0x80+" REG_RA "\n\t.byte 0x1\n" - "\t.align " BSZPTR "\n" - "LECIEY:\n\n"); - fprintf(ctx->fp, - "_lj_vm_ffi_call.eh:\n" - "LSFDEY:\n" - "\t.set L$set$yy,LEFDEY-LASFDEY\n" - "\t.long L$set$yy\n" - "LASFDEY:\n" - "\t.long LASFDEY-EH_frame2\n" - "\t.long _lj_vm_ffi_call-.\n" - "\t.long %d\n" - "\t.byte 0\n" /* augmentation length */ -#if LJ_64 - "\t.byte 0xe\n\t.byte 16\n" /* def_cfa_offset */ - "\t.byte 0x86\n\t.byte 0x2\n" /* offset rbp */ - "\t.byte 0xd\n\t.uleb128 0x6\n" /* def_cfa_register rbp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset rbx */ -#else - "\t.byte 0xe\n\t.byte 8\n" /* def_cfa_offset */ - "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ - "\t.byte 0xd\n\t.uleb128 0x4\n" /* def_cfa_register ebp */ - "\t.byte 0x83\n\t.byte 0x3\n" /* offset ebx */ -#endif - "\t.align " BSZPTR "\n" - "LEFDEY:\n\n", fcsize); - } -#endif -#if LJ_64 - fprintf(ctx->fp, "\t.subsections_via_symbols\n"); -#else - fprintf(ctx->fp, - "\t.non_lazy_symbol_pointer\n" - "L_lj_err_unwind_dwarf$non_lazy_ptr:\n" - ".indirect_symbol _lj_err_unwind_dwarf\n" - ".long 0\n"); -#endif - } - break; - default: /* Difficult for other modes. */ - break; - } -} - diff --git a/src/host/.gitignore b/src/host/.gitignore new file mode 100644 index 00000000..762ac2a0 --- /dev/null +++ b/src/host/.gitignore @@ -0,0 +1,3 @@ +minilua +buildvm +buildvm_arch.h diff --git a/src/buildvm.c b/src/host/buildvm.c similarity index 97% rename from src/buildvm.c rename to src/host/buildvm.c index 29cf7378..7dbf2cae 100644 --- a/src/buildvm.c +++ b/src/host/buildvm.c @@ -54,33 +54,24 @@ static int collect_reloc(BuildCtx *ctx, uint8_t *addr, int idx, int type); /* Avoid trouble if cross-compiling for an x86 target. Speed doesn't matter. */ #define DASM_ALIGNED_WRITES 1 -/* Embed architecture-specific DynASM encoder and backend. */ -#if LJ_TARGET_X86 +/* Embed architecture-specific DynASM encoder. */ +#if LJ_TARGET_X86ORX64 #include "../dynasm/dasm_x86.h" -#include "buildvm_x86.h" -#elif LJ_TARGET_X64 -#include "../dynasm/dasm_x86.h" -#if LJ_ABI_WIN -#include "buildvm_x64win.h" -#else -#include "buildvm_x64.h" -#endif #elif LJ_TARGET_ARM #include "../dynasm/dasm_arm.h" -#include "buildvm_arm.h" #elif LJ_TARGET_PPC #include "../dynasm/dasm_ppc.h" -#include "buildvm_ppc.h" #elif LJ_TARGET_PPCSPE #include "../dynasm/dasm_ppc.h" -#include "buildvm_ppcspe.h" #elif LJ_TARGET_MIPS #include "../dynasm/dasm_mips.h" -#include "buildvm_mips.h" #else #error "No support for this architecture (yet)" #endif +/* Embed generated architecture-specific backend. */ +#include "buildvm_arch.h" + /* ------------------------------------------------------------------------ */ void owrite(BuildCtx *ctx, const void *ptr, size_t sz) diff --git a/src/buildvm.h b/src/host/buildvm.h similarity index 100% rename from src/buildvm.h rename to src/host/buildvm.h diff --git a/src/buildvm_asm.c b/src/host/buildvm_asm.c similarity index 100% rename from src/buildvm_asm.c rename to src/host/buildvm_asm.c diff --git a/src/buildvm_fold.c b/src/host/buildvm_fold.c similarity index 100% rename from src/buildvm_fold.c rename to src/host/buildvm_fold.c diff --git a/src/buildvm_lib.c b/src/host/buildvm_lib.c similarity index 100% rename from src/buildvm_lib.c rename to src/host/buildvm_lib.c diff --git a/src/buildvm_peobj.c b/src/host/buildvm_peobj.c similarity index 100% rename from src/buildvm_peobj.c rename to src/host/buildvm_peobj.c diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat index 63467308..cb973fe4 100644 --- a/src/msvcbuild.bat +++ b/src/msvcbuild.bat @@ -19,17 +19,28 @@ @set LJMT=mt /nologo @set LJLIB=lib /nologo @set DASMDIR=..\dynasm -@set DASM=lua %DASMDIR%\dynasm.lua +@set DASM=%DASMDIR%\dynasm.lua @set ALL_LIB=lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c -if not exist buildvm_x86.h^ - %DASM% -LN -o buildvm_x86.h buildvm_x86.dasc +%LJCOMPILE% host\minilua.c @if errorlevel 1 goto :BAD -if not exist buildvm_x64win.h^ - %DASM% -LN -D X64 -D X64WIN -o buildvm_x64win.h buildvm_x86.dasc +%LJLINK% /out:minilua.exe minilua.obj +@if errorlevel 1 goto :BAD +if exist minilua.exe.manifest^ + %LJMT% -manifest minilua.exe.manifest -outputresource:minilua.exe + +@set DASMFLAGS=-D X64 -D X64WIN +@if defined CPU goto :XCPU +@set CPU=%PROCESSOR_ARCHITECTURE% +:XCPU +@if "%CPU%"=="AMD64" goto :X64 +@if "%CPU%"=="X64" goto :X64 +@set DASMFLAGS= +:X64 +minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h vm_x86.dasc @if errorlevel 1 goto :BAD -%LJCOMPILE% /I "." /I %DASMDIR% buildvm*.c +%LJCOMPILE% /I "." /I %DASMDIR% host\buildvm*.c @if errorlevel 1 goto :BAD %LJLINK% /out:buildvm.exe buildvm*.obj @if errorlevel 1 goto :BAD @@ -85,7 +96,7 @@ if exist lua51.dll.manifest^ if exist luajit.exe.manifest^ %LJMT% -manifest luajit.exe.manifest -outputresource:luajit.exe -@del *.obj *.manifest buildvm.exe +@del *.obj *.manifest minilua.exe buildvm.exe @echo. @echo === Successfully built LuaJIT === diff --git a/src/buildvm_arm.dasc b/src/vm_arm.dasc similarity index 100% rename from src/buildvm_arm.dasc rename to src/vm_arm.dasc diff --git a/src/buildvm_mips.dasc b/src/vm_mips.dasc similarity index 100% rename from src/buildvm_mips.dasc rename to src/vm_mips.dasc diff --git a/src/buildvm_ppc.dasc b/src/vm_ppc.dasc similarity index 100% rename from src/buildvm_ppc.dasc rename to src/vm_ppc.dasc diff --git a/src/buildvm_ppcspe.dasc b/src/vm_ppcspe.dasc similarity index 100% rename from src/buildvm_ppcspe.dasc rename to src/vm_ppcspe.dasc diff --git a/src/buildvm_x86.dasc b/src/vm_x86.dasc similarity index 100% rename from src/buildvm_x86.dasc rename to src/vm_x86.dasc