]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Add support for tailcalls from internal C functions.
authorMike Pall <mike>
Tue, 12 Apr 2011 17:12:29 +0000 (19:12 +0200)
committerMike Pall <mike>
Tue, 12 Apr 2011 17:13:11 +0000 (19:13 +0200)
PPC: Fix __call metamethod for tailcalls.

12 files changed:
src/Makefile.dep
src/buildvm_arm.dasc
src/buildvm_ppc.dasc
src/buildvm_ppcspe.h
src/buildvm_x64.h
src/buildvm_x64win.h
src/buildvm_x86.dasc
src/buildvm_x86.h
src/lj_api.c
src/lj_frame.h
src/lj_meta.c
src/lj_meta.h

index 8458ec7846d70b4738c0a53b5b179cd76b3abbdd..57904877b74896b00eba2756f2ec8ea22b356412 100644 (file)
@@ -114,7 +114,8 @@ lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
  lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h lj_bc.h \
  lj_traceerr.h lj_vm.h
 lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
- lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_bc.h lj_vm.h
+ lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_frame.h lj_bc.h \
+ lj_vm.h
 lj_obj.o: lj_obj.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h
 lj_opt_dce.o: lj_opt_dce.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
  lj_ir.h lj_jit.h lj_iropt.h
index 2ad02b74afcad1caba81101be2b1569e9d57b75a..e977f844f1b6a09c6213ff143aaa971694e7d711 100644 (file)
@@ -411,7 +411,7 @@ static void build_subroutines(BuildCtx *ctx)
   |
   |->vm_call_dispatch_f:
   |  ins_call
-  |  // BASE = new base, RC = nargs*8
+  |  // BASE = new base, CARG3 = func, RC = nargs*8, PC = caller PC
   |
   |->vm_cpcall:                                // Setup protected C frame, call C.
   |  // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp)
@@ -445,18 +445,26 @@ static void build_subroutines(BuildCtx *ctx)
   |->cont_dispatch:
   |  // BASE = meta base, RA = resultptr, RC = (nresults+1)*8
   |  ldr LFUNC:CARG3, [RB, FRAME_FUNC]
+  |    ldr CARG1, [BASE, #-16]         // Get continuation.
   |   mov CARG4, BASE
   |   mov BASE, RB                     // Restore caller BASE.
+  |    cmp CARG1, #0
   |   ldr PC, [CARG4, #-12]            // Restore PC from [cont|PC].
+  |    beq >1
   |  ldr CARG3, LFUNC:CARG3->field_pc
   |    mvn INS, #~LJ_TNIL
   |    add CARG2, RA, RC
-  |   ldr CARG1, [CARG4, #-16]         // Get continuation.
   |    str INS, [CARG2, #-4]           // Ensure one valid arg.
   |  ldr KBASE, [CARG3, #PC2PROTO(k)]
   |  // BASE = base, RA = resultptr, CARG4 = meta base
   |   bx CARG1
   |
+  |1:  // Tail call from C function.
+  |  ldr CARG3, [BASE, FRAME_FUNC]
+  |   sub CARG4, CARG4, #16
+  |   sub RC, CARG4, BASE
+  |  b ->vm_call_tail
+  |
   |->cont_cat:                         // RA = resultptr, CARG4 = meta base
   |  ldr INS, [PC, #-4]
   |   sub CARG2, CARG4, #16
@@ -714,7 +722,7 @@ static void build_subroutines(BuildCtx *ctx)
   |   str PC, SAVE_PC
   |  add CARG3, RA, NARGS8:RC
   |  bl extern lj_meta_call    // (lua_State *L, TValue *func, TValue *top)
-  |  ldr LFUNC:CARG3, [BASE, FRAME_FUNC]  // Guaranteed to be a function here.
+  |  ldr LFUNC:CARG3, [RA, FRAME_FUNC]  // Guaranteed to be a function here.
   |   ldr PC, [BASE, FRAME_PC]
   |    add NARGS8:RC, NARGS8:RC, #8    // Got one more argument now.
   |  b ->BC_CALLT2_Z
@@ -1514,10 +1522,11 @@ static void build_subroutines(BuildCtx *ctx)
   |   ldr CARG1, L->top
   |    ldr LFUNC:CARG3, [BASE, FRAME_FUNC]
   |   sub NARGS8:RC, CARG1, BASE
-  |  bne >2                            // Returned -1?
+  |  bne ->vm_call_tail                        // Returned -1?
   |  ins_callt                         // Returned 0: retry fast path.
   |
-  |2:  // Reconstruct previous base for vmeta_call during tailcall.
+  |// Reconstruct previous base for vmeta_call during tailcall.
+  |->vm_call_tail:
   |  ands CARG1, PC, #FRAME_TYPE
   |   bic CARG2, PC, #FRAME_TYPEP
   |  ldreq INS, [PC, #-4]
index 552702803aa0276d0ad50f65db50d441abbd1f89..f96168dfe8cbb9e5d9d4d5f0842235b3fd5a75cf 100644 (file)
@@ -540,7 +540,7 @@ static void build_subroutines(BuildCtx *ctx)
   |
   |->vm_call_dispatch_f:
   |  ins_call
-  |  // BASE = new base, RC = nargs*8
+  |  // BASE = new base, RB = func, RC = nargs*8, PC = caller PC
   |
   |->vm_cpcall:                                // Setup protected C frame, call C.
   |  // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp)
@@ -581,8 +581,10 @@ static void build_subroutines(BuildCtx *ctx)
   |   mr RB, BASE
   |   mr BASE, TMP2                    // Restore caller BASE.
   |    lwz LFUNC:TMP1, FRAME_FUNC(TMP2)
+  |  cmplwi TMP0, 0
+  |     lwz PC, -16(RB)                        // Restore PC from [cont|PC].
+  |  beq >1
   |   subi TMP2, RD, 8
-  |    lwz PC, -16(RB)                 // Restore PC from [cont|PC].
   |    lwz TMP1, LFUNC:TMP1->pc
   |   evstddx TISNIL, RA, TMP2         // Ensure one valid arg.
   |    lwz KBASE, PC2PROTO(k)(TMP1)
@@ -590,6 +592,11 @@ static void build_subroutines(BuildCtx *ctx)
   |  mtctr TMP0
   |  bctr                              // Jump to continuation.
   |
+  |1:  // Tail call from C function.
+  |  subi TMP1, RB, 16
+  |  sub RC, TMP1, BASE
+  |  b ->vm_call_tail
+  |
   |->cont_cat:                         // RA = resultptr, RB = meta base
   |  lwz INS, -4(PC)
   |   subi CARG2, RB, 16
@@ -845,7 +852,7 @@ static void build_subroutines(BuildCtx *ctx)
   |  bl extern lj_meta_call    // (lua_State *L, TValue *func, TValue *top)
   |  lwz TMP1, FRAME_PC(BASE)
   |   addi NARGS8:RC, SAVE0, 8         // Got one more argument now.
-  |   lwz LFUNC:RB, FRAME_FUNC(BASE)   // Guaranteed to be a function here.
+  |   lwz LFUNC:RB, FRAME_FUNC(RA)     // Guaranteed to be a function here.
   |  b ->BC_CALLT_Z
   |
   |//-- Argument coercion for 'for' statement ------------------------------
@@ -1797,10 +1804,11 @@ static void build_subroutines(BuildCtx *ctx)
   |  lwz TMP0, L->top
   |   lwz LFUNC:RB, FRAME_FUNC(BASE)
   |  sub NARGS8:RC, TMP0, BASE
-  |  bne >2                            // Returned -1?
+  |  bne ->vm_call_tail                        // Returned -1?
   |  ins_callt                         // Returned 0: retry fast path.
   |
-  |2:  // Reconstruct previous base for vmeta_call during tailcall.
+  |// Reconstruct previous base for vmeta_call during tailcall.
+  |->vm_call_tail:
   |  andi. TMP0, PC, FRAME_TYPE
   |   rlwinm TMP1, PC, 0, 0, 28
   |  bne >3
index 8d972c12131f108647debfc0bf7f46e1c97bb168..e2d2343b64e540912a1136460fdf32ae1ebddd8a 100644 (file)
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP   0
 #define DASM_SECTION_CODE_SUB  1
 #define DASM_MAXSECTION                2
-static const unsigned int build_actionlist[4946] = {
+static const unsigned int build_actionlist[4954] = {
 0x00010001,
 0x00060014,
 0x72000000,
@@ -462,8 +462,11 @@ static const unsigned int build_actionlist[4946] = {
 0x7dca7378,
 0x7d2e4b78,
 0x8109fffc,
-0x392cfff8,
+0x28000000,
 0x820afff0,
+0x41820000,
+0x00050801,
+0x392cfff8,
 0x81080000,
 0x00098200,
 0x13544b20,
@@ -471,7 +474,12 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x7c0903a6,
 0x4e800420,
-0x00060028,
+0x0006000b,
+0x390afff0,
+0x7d6e4050,
+0x48000000,
+0x00050028,
+0x00060029,
 0x80f0fffc,
 0x388afff0,
 0x54f55d78,
@@ -484,21 +492,21 @@ static const unsigned int build_actionlist[4946] = {
 0x54f4dd78,
 0x10040321,
 0x40820000,
-0x00050829,
+0x0005082a,
+0x00000000,
 0x100ea320,
 0x48000000,
-0x0005002a,
-0x0006002b,
+0x0005002b,
+0x0006002c,
 0x11775a2d,
 0x38b10000,
 0x00098200,
-0x00000000,
 0x54ea5d78,
 0x11650321,
 0x7c8e5214,
 0x48000000,
 0x00050001,
-0x0006002c,
+0x0006002d,
 0x1158522d,
 0x38910000,
 0x00098200,
@@ -509,7 +517,7 @@ static const unsigned int build_actionlist[4946] = {
 0x11650321,
 0x48000000,
 0x00050001,
-0x0006002d,
+0x0006002e,
 0x100002f1,
 0x54ea5d78,
 0x38b10000,
@@ -518,7 +526,7 @@ static const unsigned int build_actionlist[4946] = {
 0x10050321,
 0x48000000,
 0x00050001,
-0x0006002e,
+0x0006002f,
 0x54ea5d78,
 0x54eb9d78,
 0x7c8e5214,
@@ -556,20 +564,20 @@ static const unsigned int build_actionlist[4946] = {
 0x39600010,
 0x48000000,
 0x00050026,
-0x0006002f,
+0x00060030,
 0x11775a2d,
 0x38b10000,
 0x00098200,
+0x00000000,
 0x54ea5d78,
 0x11650321,
 0x7c8e5214,
 0x48000000,
 0x00050001,
-0x00060030,
+0x00060031,
 0x1158522d,
 0x38910000,
 0x00098200,
-0x00000000,
 0x11775a2d,
 0x11440321,
 0x38b10000,
@@ -577,7 +585,7 @@ static const unsigned int build_actionlist[4946] = {
 0x11650321,
 0x48000000,
 0x00050001,
-0x00060031,
+0x00060032,
 0x100002f1,
 0x54ea5d78,
 0x38b10000,
@@ -586,7 +594,7 @@ static const unsigned int build_actionlist[4946] = {
 0x10050321,
 0x48000000,
 0x00050001,
-0x00060032,
+0x00060033,
 0x54ea5d78,
 0x54eb9d78,
 0x7c8e5214,
@@ -625,7 +633,7 @@ static const unsigned int build_actionlist[4946] = {
 0x100e1321,
 0x48000000,
 0x00050026,
-0x00060033,
+0x00060034,
 0x7e439378,
 0x3a10fffc,
 0x7c8ea214,
@@ -639,8 +647,9 @@ static const unsigned int build_actionlist[4946] = {
 0x0006000d,
 0x28030001,
 0x41810000,
-0x00050834,
+0x00050835,
 0x0006000e,
+0x00000000,
 0x80f00000,
 0x3a100004,
 0x54e993ba,
@@ -648,8 +657,7 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x7d293214,
 0x7e10481e,
-0x0006002a,
-0x00000000,
+0x0006002b,
 0x80f00000,
 0x3a100004,
 0x54e815ba,
@@ -660,28 +668,28 @@ static const unsigned int build_actionlist[4946] = {
 0x54eb9d78,
 0x7c0903a6,
 0x4e800420,
-0x00060035,
+0x00060036,
 0x80f0fffc,
 0x10140301,
 0x54e8dd78,
 0x100e4320,
 0x48000000,
-0x0005002a,
-0x00060036,
+0x0005002b,
+0x00060037,
 0x80140000,
 0x39000000,
 0x00098200,
 0x7c080040,
 0x48000000,
 0x0005000e,
-0x00060037,
+0x00060038,
 0x80140000,
 0x39000000,
 0x00098200,
 0x7c004040,
 0x48000000,
 0x0005000e,
-0x00060038,
+0x00060039,
 0x3a10fffc,
 0x91d20000,
 0x00098200,
@@ -691,25 +699,26 @@ static const unsigned int build_actionlist[4946] = {
 0x00030004,
 0x48000000,
 0x0005000d,
-0x00060039,
+0x0006003a,
 0x7cae5214,
 0x7ccf5a14,
 0x48000000,
 0x00050001,
-0x0006003a,
+0x0006003b,
 0x7caf5a14,
 0x7cce5214,
 0x48000000,
 0x00050001,
-0x0006003b,
+0x0006003c,
 0x7cae6214,
 0x7ca62b78,
 0x48000000,
 0x00050001,
-0x0006003c,
+0x0006003d,
 0x7cae5214,
 0x7cce5a14,
 0x0006000b,
+0x00000000,
 0x7c8ea214,
 0x91d20000,
 0x00098200,
@@ -718,11 +727,10 @@ static const unsigned int build_actionlist[4946] = {
 0x54e7063e,
 0x48000001,
 0x00030005,
-0x00000000,
 0x28030000,
 0x41820000,
-0x0005082a,
-0x00060034,
+0x0005082b,
+0x00060035,
 0x7d0e1850,
 0x9203fff0,
 0x3a080000,
@@ -731,7 +739,7 @@ static const unsigned int build_actionlist[4946] = {
 0x39600010,
 0x48000000,
 0x00050024,
-0x0006003d,
+0x0006003e,
 0x7c8e6214,
 0x91d20000,
 0x00098200,
@@ -740,7 +748,7 @@ static const unsigned int build_actionlist[4946] = {
 0x48000001,
 0x00030006,
 0x48000000,
-0x00050034,
+0x00050035,
 0x00060025,
 0x7e439378,
 0x91320000,
@@ -764,7 +772,7 @@ static const unsigned int build_actionlist[4946] = {
 0x7e947214,
 0x7c0903a6,
 0x4e800420,
-0x0006003e,
+0x0006003f,
 0x7e439378,
 0x91d20000,
 0x00098200,
@@ -776,10 +784,10 @@ static const unsigned int build_actionlist[4946] = {
 0x00030007,
 0x810efff8,
 0x39750008,
-0x814efffc,
+0x8154fffc,
 0x48000000,
-0x0005003f,
-0x00060040,
+0x00050040,
+0x00060041,
 0x7e439378,
 0x91d20000,
 0x00098200,
@@ -803,21 +811,21 @@ static const unsigned int build_actionlist[4946] = {
 0x00000000,
 0x48000000,
 0x00070000,
-0x00060041,
+0x00060042,
 0x280b0008,
 0x100e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x111ad200,
 0x3a8efff8,
 0x10804232,
 0x820efff8,
 0x40840000,
-0x00050842,
+0x00050843,
 0x10140321,
 0x398b0008,
 0x41820000,
-0x00050843,
+0x00050844,
 0x39000008,
 0x396bfff8,
 0x0006000b,
@@ -828,12 +836,12 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080b,
 0x48000000,
-0x00050043,
-0x00060044,
+0x00050044,
+0x00060045,
 0x280b0008,
 0x806e0000,
 0x41800000,
-0x00050842,
+0x00050843,
 0x39200000,
 0x00098200,
 0x7c03b040,
@@ -845,12 +853,12 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x10694300,
 0x48000000,
-0x00050045,
-0x00060046,
+0x00050046,
+0x00060047,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003c234,
 0x11031a2c,
 0x40800000,
@@ -864,7 +872,7 @@ static const unsigned int build_actionlist[4946] = {
 0x81710000,
 0x00098200,
 0x41820000,
-0x00050845,
+0x00050846,
 0x00000000,
 0x800a0000,
 0x00098200,
@@ -893,16 +901,16 @@ static const unsigned int build_actionlist[4946] = {
 0x00050805,
 0x28090000,
 0x41820000,
-0x00050845,
+0x00050846,
 0x48000000,
 0x0005000d,
 0x0006000f,
 0x1008d234,
 0x41800000,
-0x00050845,
+0x00050846,
 0x10684217,
 0x48000000,
-0x00050045,
+0x00050046,
 0x00060010,
 0x2c080000,
 0x00098200,
@@ -920,30 +928,30 @@ static const unsigned int build_actionlist[4946] = {
 0x7d49402e,
 0x48000000,
 0x0005000c,
-0x00060047,
+0x00060048,
 0x00000000,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003222c,
 0x1000c234,
 0x40830000,
-0x00050842,
+0x00050843,
 0x81030000,
 0x00098200,
 0x28080000,
 0x88c30000,
 0x00098200,
 0x40820000,
-0x00050842,
+0x00050843,
 0x70c00000,
 0x00090200,
 0x90830000,
 0x00098200,
 0x41820000,
-0x00050845,
+0x00050846,
 0x80110000,
 0x00098200,
 0x54c607b8,
@@ -954,41 +962,41 @@ static const unsigned int build_actionlist[4946] = {
 0x90030000,
 0x00098200,
 0x48000000,
-0x00050045,
-0x00060048,
+0x00050046,
+0x00060049,
 0x280b0010,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004c234,
 0x38ae0008,
 0x40800000,
-0x00050842,
+0x00050843,
 0x7e439378,
 0x48000001,
 0x00030009,
 0x10630301,
 0x48000000,
-0x00050045,
-0x00060049,
+0x00050046,
+0x0006004a,
 0x280b0008,
 0x106e0301,
 0x40820000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x41800000,
-0x00050845,
+0x00050846,
 0x48000000,
-0x00050042,
-0x0006004a,
+0x00050043,
+0x0006004b,
 0x00000000,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003ba34,
 0x41800000,
-0x00050845,
+0x00050846,
 0x80110000,
 0x00098200,
 0x1003b232,
@@ -998,31 +1006,31 @@ static const unsigned int build_actionlist[4946] = {
 0x4c403202,
 0x9201000c,
 0x40820000,
-0x00050842,
+0x00050843,
 0x80110000,
 0x00098200,
 0x81110000,
 0x00098200,
 0x7c004040,
 0x40800001,
-0x0005084b,
+0x0005084c,
 0x7e439378,
 0x7dc47378,
 0x48000001,
 0x0003000a,
 0x10771a2d,
 0x48000000,
-0x00050045,
-0x0006004c,
+0x00050046,
+0x0006004d,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x134e5b20,
 0x1004c234,
 0x820efff8,
 0x40800000,
-0x00050842,
+0x00050843,
 0x91d20000,
 0x00098200,
 0x7e439378,
@@ -1035,7 +1043,7 @@ static const unsigned int build_actionlist[4946] = {
 0x28030000,
 0x107ad217,
 0x41820000,
-0x00050845,
+0x00050846,
 0x100e0b01,
 0x3a8efff8,
 0x110e1301,
@@ -1044,16 +1052,16 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x11140b21,
 0x48000000,
-0x00050043,
-0x0006004d,
+0x00050044,
+0x0006004e,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003c234,
 0x820efff8,
 0x40800000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x81230000,
 0x00098200,
@@ -1062,7 +1070,7 @@ static const unsigned int build_actionlist[4946] = {
 0x28090000,
 0x3a8efff8,
 0x40820000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x100a0301,
 0x00090cab,
@@ -1073,21 +1081,21 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x10140321,
 0x48000000,
-0x00050043,
-0x0006004e,
+0x00050044,
+0x0006004f,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003c234,
 0x820efff8,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x3cc03ff0,
 0x40800000,
-0x00050842,
+0x00050843,
 0x112022f5,
 0x80030000,
 0x00098200,
@@ -1109,12 +1117,12 @@ static const unsigned int build_actionlist[4946] = {
 0x39800000,
 0x00098200,
 0x41800000,
-0x00050843,
+0x00050844,
 0x39800000,
 0x00098200,
 0x11140b21,
 0x48000000,
-0x00050043,
+0x00050044,
 0x0006000c,
 0x80030000,
 0x00098200,
@@ -1122,7 +1130,7 @@ static const unsigned int build_actionlist[4946] = {
 0x39800000,
 0x00098200,
 0x41820000,
-0x00050843,
+0x00050844,
 0x7d244b78,
 0x48000001,
 0x0003000c,
@@ -1130,20 +1138,20 @@ static const unsigned int build_actionlist[4946] = {
 0x39800000,
 0x00098200,
 0x41820000,
-0x00050843,
+0x00050844,
 0x00000000,
 0x11030301,
 0x48000000,
 0x0005000b,
-0x0006004f,
+0x00060050,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003c234,
 0x820efff8,
 0x40800000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x81230000,
 0x00098200,
@@ -1152,7 +1160,7 @@ static const unsigned int build_actionlist[4946] = {
 0x28090000,
 0x3a8efff8,
 0x40820000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x100a0301,
 0x00090cab,
@@ -1164,13 +1172,13 @@ static const unsigned int build_actionlist[4946] = {
 0x110e0b21,
 0x10140321,
 0x48000000,
-0x00050043,
-0x00060050,
+0x00050044,
+0x00060051,
 0x280b0008,
 0x88d10000,
 0x00098200,
 0x41800000,
-0x00050842,
+0x00050843,
 0x7dc97378,
 0x39ce0008,
 0x54c607fe,
@@ -1180,18 +1188,18 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x48000000,
 0x00050024,
-0x00060051,
+0x00060052,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x88d10000,
 0x00098200,
 0x7dc97378,
 0x1004ca34,
 0x40800000,
-0x00050842,
+0x00050843,
 0x39ce0010,
 0x54c607fe,
 0x000900ab,
@@ -1202,16 +1210,16 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x48000000,
 0x00050024,
-0x00060052,
+0x00060053,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x10031a2c,
 0x2c000000,
 0x00098200,
 0x40820000,
-0x00050842,
+0x00050843,
 0x88030000,
 0x00098200,
 0x81030000,
@@ -1238,7 +1246,7 @@ static const unsigned int build_actionlist[4946] = {
 0x91d20000,
 0x00098200,
 0x41980000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x39ce0008,
 0x396bfff8,
@@ -1340,7 +1348,7 @@ static const unsigned int build_actionlist[4946] = {
 0x38600000,
 0x48000000,
 0x0005000e,
-0x00060053,
+0x00060054,
 0x00000000,
 0x806a0000,
 0x00098200,
@@ -1369,7 +1377,7 @@ static const unsigned int build_actionlist[4946] = {
 0x91d20000,
 0x00098200,
 0x41980000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x91230000,
 0x00098200,
@@ -1454,7 +1462,7 @@ static const unsigned int build_actionlist[4946] = {
 0x38600000,
 0x48000000,
 0x0005000e,
-0x00060054,
+0x00060055,
 0x80120000,
 0x00098200,
 0x00000000,
@@ -1468,30 +1476,30 @@ static const unsigned int build_actionlist[4946] = {
 0x38600000,
 0x00098200,
 0x41820000,
-0x00050842,
+0x00050843,
 0x93720000,
 0x00098200,
 0x98720000,
 0x00098200,
 0x48000000,
 0x0005001a,
-0x00060055,
+0x00060056,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x106302e4,
-0x00060045,
+0x00060046,
 0x820efff8,
 0x3a8efff8,
 0x10740321,
-0x00060056,
+0x00060057,
 0x39800000,
 0x00098200,
-0x00060043,
+0x00060044,
 0x72000000,
 0x00090200,
 0x7d936378,
@@ -1521,312 +1529,312 @@ static const unsigned int build_actionlist[4946] = {
 0x13544320,
 0x48000000,
 0x0005000f,
-0x00060057,
+0x00060058,
 0x00000000,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x820efff8,
 0x48000001,
-0x00050058,
+0x00050059,
 0x3a8efff8,
 0x10940321,
 0x48000000,
-0x00050056,
-0x00060059,
+0x00050057,
+0x0006005a,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x820efff8,
 0x48000001,
-0x0005005a,
+0x0005005b,
 0x3a8efff8,
 0x10940321,
 0x48000000,
-0x00050056,
-0x0006005b,
+0x00050057,
+0x0006005c,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x0003000e,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x0006005c,
+0x00050046,
+0x0006005d,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x0003000f,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x0006005d,
+0x00050046,
+0x0006005e,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x48000001,
 0x00030010,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x0006005e,
+0x00050046,
+0x0006005f,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030011,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x0006005f,
+0x00050046,
+0x00060060,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030012,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060060,
+0x00050046,
+0x00060061,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030013,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060061,
+0x00050046,
+0x00060062,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030014,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060062,
+0x00050046,
+0x00060063,
 0x00000000,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030015,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060063,
+0x00050046,
+0x00060064,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030016,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060064,
+0x00050046,
+0x00060065,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030017,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060065,
+0x00050046,
+0x00060066,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030018,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060066,
+0x00050046,
+0x00060067,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x48000001,
 0x00030019,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060067,
+0x00050046,
+0x00060068,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x0003001a,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060068,
+0x00050046,
+0x00060069,
 0x280b0010,
 0x108e0301,
 0x10ce0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1066222c,
 0x1003b232,
 0x10a6322c,
 0x40830000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x0003001b,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x00060069,
+0x00050046,
+0x0006006a,
 0x280b0010,
 0x108e0301,
 0x10ce0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1066222c,
 0x1003b232,
 0x10a6322c,
 0x40830000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x0003001c,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x0006006a,
+0x00050046,
+0x0006006b,
 0x280b0010,
 0x108e0301,
 0x10ce0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1066222c,
 0x1003b232,
 0x10a6322c,
 0x40830000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x0003001d,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x0006006b,
+0x00050046,
 0x0006006c,
+0x0006006d,
 0x00000000,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x108a0301,
 0x00090cab,
 0x106322e8,
 0x48000000,
-0x00050045,
-0x0006006d,
+0x00050046,
+0x0006006e,
 0x280b0010,
 0x108e0301,
 0x10ce0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1066222c,
 0x1003b232,
 0x40830000,
-0x00050842,
+0x00050843,
 0x10a032f5,
 0x48000001,
 0x0003001e,
 0x1063222d,
 0x48000000,
-0x00050045,
-0x0006006e,
+0x00050046,
+0x0006006f,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x38b10000,
 0x00098200,
 0x820efff8,
@@ -1842,16 +1850,16 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x10940b21,
 0x48000000,
-0x00050043,
-0x0006006f,
+0x00050044,
+0x00060070,
 0x280b0008,
 0x108e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x1064222c,
 0x40800000,
-0x00050842,
+0x00050843,
 0x38aefff8,
 0x820efff8,
 0x48000001,
@@ -1863,76 +1871,76 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x00000000,
 0x48000000,
-0x00050043,
-0x00060070,
+0x00050044,
+0x00060071,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x39000008,
 0x40800000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x108e4300,
 0x7c885840,
 0x1004b232,
 0x40840000,
-0x00050845,
+0x00050846,
 0x40800000,
-0x00050842,
+0x00050843,
 0x10041afd,
 0x39080008,
 0x4c010b82,
 0x10641a78,
 0x48000000,
 0x0005000b,
-0x00060071,
+0x00060072,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x39000008,
 0x40800000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x108e4300,
 0x7c885840,
 0x1004b232,
 0x40840000,
-0x00050845,
+0x00050846,
 0x40800000,
-0x00050842,
+0x00050843,
 0x10041afc,
 0x39080008,
 0x4c010b82,
 0x10641a78,
 0x48000000,
 0x0005000b,
-0x00060072,
+0x00060073,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003ba34,
 0x40800000,
-0x00050842,
+0x00050843,
 0x80030000,
 0x00098200,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060073,
+0x00050046,
+0x00060074,
 0x280b0008,
 0x106e0301,
 0x40820000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x1003ba34,
 0x3a8efff8,
 0x40800000,
-0x00050842,
+0x00050843,
 0x80030000,
 0x00098200,
 0x39800000,
@@ -1947,31 +1955,31 @@ static const unsigned int build_actionlist[4946] = {
 0x7d8c489e,
 0x10740321,
 0x48000000,
-0x00050043,
-0x00060074,
+0x00050044,
+0x00060075,
 0x80110000,
 0x00098200,
 0x81110000,
 0x00098200,
 0x7c004040,
 0x40800001,
-0x0005084b,
+0x0005084c,
 0x280b0008,
 0x106e0301,
 0x40820000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x38910000,
 0x00098200,
 0x40800000,
-0x00050842,
+0x00050843,
 0x10001afa,
 0x38a00001,
 0x280000ff,
 0x98040000,
 0x41810000,
-0x00050842,
-0x00060075,
+0x00050843,
+0x00060076,
 0x7e439378,
 0x91d20000,
 0x00098200,
@@ -1982,8 +1990,8 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x10771a2d,
 0x48000000,
-0x00050045,
-0x00060076,
+0x00050046,
+0x00060077,
 0x80110000,
 0x00098200,
 0x81110000,
@@ -1991,28 +1999,28 @@ static const unsigned int build_actionlist[4946] = {
 0x00000000,
 0x7c004040,
 0x40800001,
-0x0005084b,
+0x0005084c,
 0x280b0010,
 0x10ae1301,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x108e0b01,
 0x3920ffff,
 0x41820000,
 0x00050801,
 0x1005b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x11202afa,
 0x0006000b,
 0x1004b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1003ba34,
 0x110022fa,
 0x40800000,
-0x00050842,
+0x00050843,
 0x80030000,
 0x00098200,
 0x7c004840,
@@ -2032,7 +2040,7 @@ static const unsigned int build_actionlist[4946] = {
 0x7c844214,
 0x7ca0281e,
 0x48000000,
-0x00050075,
+0x00050076,
 0x0006000f,
 0x7c004800,
 0x38c60001,
@@ -2046,27 +2054,27 @@ static const unsigned int build_actionlist[4946] = {
 0x39080001,
 0x48000000,
 0x0005000d,
-0x00060077,
+0x00060078,
 0x80110000,
 0x00098200,
 0x81110000,
 0x00098200,
 0x7c004040,
 0x40800001,
-0x0005084b,
+0x0005084c,
 0x00000000,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1004b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1003ba34,
 0x10a022fa,
 0x40800000,
-0x00050842,
+0x00050843,
 0x80030000,
 0x00098200,
 0x2c050000,
@@ -2080,13 +2088,13 @@ static const unsigned int build_actionlist[4946] = {
 0x00050802,
 0x7c882840,
 0x40820000,
-0x00050842,
+0x00050843,
 0x88030000,
 0x00098200,
 0x80910000,
 0x00098200,
 0x41840000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x28090000,
 0x7c0449ae,
@@ -2094,31 +2102,31 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080b,
 0x48000000,
-0x00050075,
+0x00050076,
 0x0006000c,
 0x38710000,
 0x00098200,
 0x10771a2d,
 0x48000000,
-0x00050045,
-0x00060078,
+0x00050046,
+0x00060079,
 0x80110000,
 0x00098200,
 0x81110000,
 0x00098200,
 0x7c004040,
 0x40800001,
-0x0005084b,
+0x0005084c,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x1003ba34,
 0x81110000,
 0x00098200,
 0x40800000,
-0x00050842,
+0x00050843,
 0x80a30000,
 0x00098200,
 0x38630000,
@@ -2129,34 +2137,34 @@ static const unsigned int build_actionlist[4946] = {
 0x7c082840,
 0x38c5ffff,
 0x41800000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x2c060000,
 0x7d0348ae,
 0x41800000,
-0x00050875,
+0x00050876,
 0x7d0431ae,
 0x38c6ffff,
 0x39290001,
 0x48000000,
 0x0005000b,
-0x00060079,
+0x0006007a,
 0x80110000,
 0x00098200,
 0x81110000,
 0x00098200,
 0x7c004040,
 0x40800001,
-0x0005084b,
+0x0005084c,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003ba34,
 0x81110000,
 0x00098200,
 0x40800000,
-0x00050842,
+0x00050843,
 0x80a30000,
 0x00098200,
 0x38630000,
@@ -2166,12 +2174,12 @@ static const unsigned int build_actionlist[4946] = {
 0x7c082840,
 0x39200000,
 0x41800000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x7c092840,
 0x7d0348ae,
 0x40800000,
-0x00050875,
+0x00050876,
 0x00000000,
 0x3808ffbf,
 0x69060020,
@@ -2181,23 +2189,23 @@ static const unsigned int build_actionlist[4946] = {
 0x39290001,
 0x48000000,
 0x0005000b,
-0x0006007a,
+0x0006007b,
 0x80110000,
 0x00098200,
 0x81110000,
 0x00098200,
 0x7c004040,
 0x40800001,
-0x0005084b,
+0x0005084c,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003ba34,
 0x81110000,
 0x00098200,
 0x40800000,
-0x00050842,
+0x00050843,
 0x80a30000,
 0x00098200,
 0x38630000,
@@ -2207,12 +2215,12 @@ static const unsigned int build_actionlist[4946] = {
 0x7c082840,
 0x39200000,
 0x41800000,
-0x00050842,
+0x00050843,
 0x0006000b,
 0x7c092840,
 0x7d0348ae,
 0x40800000,
-0x00050875,
+0x00050876,
 0x3808ff9f,
 0x69060020,
 0x2800001a,
@@ -2221,41 +2229,41 @@ static const unsigned int build_actionlist[4946] = {
 0x39290001,
 0x48000000,
 0x0005000b,
-0x0006007b,
+0x0006007c,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003c234,
 0x40800000,
-0x00050842,
+0x00050843,
 0x48000001,
 0x00030022,
 0x10601af1,
 0x48000000,
-0x00050045,
-0x0006007c,
+0x00050046,
+0x0006007d,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x00000000,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1063dae0,
-0x0006007d,
+0x0006007e,
 0x10601af1,
 0x48000000,
-0x00050045,
-0x0006007e,
+0x00050046,
+0x0006007f,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1063dae0,
 0x39000008,
 0x0006000b,
@@ -2263,22 +2271,22 @@ static const unsigned int build_actionlist[4946] = {
 0x7c885840,
 0x1004b232,
 0x40840000,
-0x0005087d,
+0x0005087e,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x7c632038,
 0x39080008,
 0x48000000,
 0x0005000b,
-0x0006007f,
+0x00060080,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1063dae0,
 0x39000008,
 0x0006000b,
@@ -2286,22 +2294,22 @@ static const unsigned int build_actionlist[4946] = {
 0x7c885840,
 0x1004b232,
 0x40840000,
-0x0005087d,
+0x0005087e,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x7c632378,
 0x39080008,
 0x48000000,
 0x0005000b,
-0x00060080,
+0x00060081,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1063dae0,
 0x39000008,
 0x0006000b,
@@ -2309,129 +2317,129 @@ static const unsigned int build_actionlist[4946] = {
 0x7c885840,
 0x1004b232,
 0x40840000,
-0x0005087d,
+0x0005087e,
 0x00000000,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x7c632278,
 0x39080008,
 0x48000000,
 0x0005000b,
-0x00060081,
+0x00060082,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1063dae0,
 0x5460403e,
 0x5060c00e,
 0x5060c42e,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060082,
+0x00050046,
+0x00060083,
 0x280b0008,
 0x106e0301,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003b232,
 0x40800000,
-0x00050842,
+0x00050843,
 0x1063dae0,
 0x7c6018f8,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060083,
+0x00050046,
+0x00060084,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003222c,
 0x1000b232,
 0x40830000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x1063dae0,
 0x548406fe,
 0x7c602030,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060084,
+0x00050046,
+0x00060085,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003222c,
 0x1000b232,
 0x40830000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x1063dae0,
 0x548406fe,
 0x7c602430,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060085,
+0x00050046,
+0x00060086,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003222c,
 0x1000b232,
 0x40830000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x1063dae0,
 0x548406fe,
 0x7c602630,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060086,
+0x00050046,
+0x00060087,
 0x00000000,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003222c,
 0x1000b232,
 0x40830000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x1063dae0,
 0x5c60203e,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060087,
+0x00050046,
+0x00060088,
 0x280b0010,
 0x106e0301,
 0x108e0b01,
 0x41800000,
-0x00050842,
+0x00050843,
 0x1003222c,
 0x1000b232,
 0x40830000,
-0x00050842,
+0x00050843,
 0x1084dae0,
 0x1063dae0,
 0x7c8400d0,
 0x5c60203e,
 0x106002f1,
 0x48000000,
-0x00050045,
-0x00060042,
+0x00050046,
+0x00060043,
 0x80ca0000,
 0x00098200,
 0x7d0e5a14,
@@ -2458,14 +2466,14 @@ static const unsigned int build_actionlist[4946] = {
 0x000900a1,
 0x3a8efff8,
 0x41810000,
-0x00050843,
+0x00050844,
 0x0006000b,
 0x80120000,
 0x00098200,
 0x814efffc,
 0x7d6e0050,
 0x40820000,
-0x00050802,
+0x00050828,
 0x820a0000,
 0x00098200,
 0x80f00000,
@@ -2476,7 +2484,7 @@ static const unsigned int build_actionlist[4946] = {
 0x7e947214,
 0x7c0903a6,
 0x4e800420,
-0x0006000c,
+0x00060028,
 0x00000000,
 0x72000000,
 0x00090200,
@@ -2499,7 +2507,7 @@ static const unsigned int build_actionlist[4946] = {
 0x7c000000,
 0x48000000,
 0x0005000b,
-0x0006004b,
+0x0006004c,
 0x7ea802a6,
 0x91d20000,
 0x00098200,
@@ -2518,11 +2526,11 @@ static const unsigned int build_actionlist[4946] = {
 0x7d6e0050,
 0x814efffc,
 0x4e800020,
-0x00060088,
+0x00060089,
 0x00000000,
 0x7c810808,
 0x00000000,
-0x00060089,
+0x0006008a,
 0x88d10000,
 0x00098200,
 0x70c00000,
@@ -2535,7 +2543,7 @@ static const unsigned int build_actionlist[4946] = {
 0x7c11402e,
 0x7c0903a6,
 0x4e800420,
-0x0006008a,
+0x0006008b,
 0x88d10000,
 0x00098200,
 0x81310000,
@@ -2580,22 +2588,22 @@ static const unsigned int build_actionlist[4946] = {
 0x54eb9d78,
 0x7c0903a6,
 0x4e800420,
-0x0006008b,
+0x0006008c,
 0x3a100004,
 0x826affec,
 0x48000000,
 0x0005000e,
-0x0006008c,
+0x0006008d,
 0x00000000,
 0x7c810808,
 0x00000000,
-0x0006008d,
+0x0006008e,
 0x7e048378,
 0x00000000,
 0x48000000,
 0x00050001,
 0x00000000,
-0x0006008e,
+0x0006008f,
 0x00000000,
 0x62040001,
 0x0006000b,
@@ -2620,17 +2628,17 @@ static const unsigned int build_actionlist[4946] = {
 0x814efffc,
 0x7c6903a6,
 0x4e800420,
-0x0006008f,
+0x00060090,
 0x00000000,
 0x7c810808,
 0x00000000,
-0x00060090,
+0x00060091,
 0x00000000,
 0x7c810808,
 0x00000000,
-0x00060091,
+0x00060092,
 0x1064222c,
-0x00060058,
+0x00060059,
 0x5469657e,
 0x3529fc01,
 0x3900ffff,
@@ -2666,9 +2674,9 @@ static const unsigned int build_actionlist[4946] = {
 0x5103007e,
 0x1083022d,
 0x4e800020,
-0x00060092,
+0x00060093,
 0x1064222c,
-0x0006005a,
+0x0006005b,
 0x5469657e,
 0x3529fc01,
 0x3900ffff,
@@ -2705,9 +2713,9 @@ static const unsigned int build_actionlist[4946] = {
 0x1083022d,
 0x4e800020,
 0x00000000,
-0x00060093,
-0x1064222c,
 0x00060094,
+0x1064222c,
+0x00060095,
 0x5469657e,
 0x3529fc01,
 0x3900ffff,
@@ -2728,18 +2736,18 @@ static const unsigned int build_actionlist[4946] = {
 0x1088022d,
 0x4e800020,
 0x00000000,
-0x00060093,
 0x00060094,
-0x00000000,
 0x00060095,
 0x00000000,
-0x7c810808,
-0x00000000,
 0x00060096,
 0x00000000,
 0x7c810808,
 0x00000000,
 0x00060097,
+0x00000000,
+0x7c810808,
+0x00000000,
+0x00060098,
 0x1083222d,
 0x28070001,
 0x10c5322d,
@@ -2778,7 +2786,7 @@ static const unsigned int build_actionlist[4946] = {
 0x11463217,
 0x7d6802a6,
 0x48000001,
-0x00050091,
+0x00050092,
 0x7d6803a6,
 0x108452e8,
 0x108522e1,
@@ -2800,7 +2808,7 @@ static const unsigned int build_actionlist[4946] = {
 0x4e800020,
 0x0006000c,
 0x7c810808,
-0x00060098,
+0x00060099,
 0x00000000,
 0x7c810808,
 0x00000000,
@@ -2817,7 +2825,7 @@ static const unsigned int build_actionlist[4946] = {
 0x100ab232,
 0x7d293214,
 0x40830000,
-0x00050833,
+0x00050834,
 0x100042ed,
 0x00000000,
 0x108042ee,
@@ -2907,7 +2915,7 @@ static const unsigned int build_actionlist[4946] = {
 0x0005080b,
 0x7eb0ab78,
 0x48000000,
-0x00050038,
+0x00050039,
 0x00000000,
 0x100ea300,
 0x558c007e,
@@ -3073,7 +3081,7 @@ static const unsigned int build_actionlist[4946] = {
 0x100e6300,
 0x1000b232,
 0x40800000,
-0x0005083b,
+0x0005083c,
 0x100002e6,
 0x80f00000,
 0x3a100004,
@@ -3109,7 +3117,7 @@ static const unsigned int build_actionlist[4946] = {
 0x0006000c,
 0x1003c234,
 0x40800000,
-0x0005083d,
+0x0005083e,
 0x48000001,
 0x00030022,
 0x48000000,
@@ -3119,20 +3127,20 @@ static const unsigned int build_actionlist[4946] = {
 0x1000b232,
 0x110f5b00,
 0x40800000,
-0x00050839,
+0x0005083a,
 0x00000000,
 0x110e5300,
 0x1008b232,
 0x100f5b00,
 0x40800000,
-0x0005083a,
+0x0005083b,
 0x00000000,
 0x100e5300,
 0x110e5b00,
 0x1120422c,
 0x1009b232,
 0x40830000,
-0x0005083c,
+0x0005083d,
 0x00000000,
 0x80f00000,
 0x3a100004,
@@ -3151,20 +3159,20 @@ static const unsigned int build_actionlist[4946] = {
 0x1000b232,
 0x110f5b00,
 0x40800000,
-0x00050839,
+0x0005083a,
 0x00000000,
 0x110e5300,
 0x1008b232,
 0x100f5b00,
 0x40800000,
-0x0005083a,
+0x0005083b,
 0x00000000,
 0x100e5300,
 0x110e5b00,
 0x1120422c,
 0x1009b232,
 0x40830000,
-0x0005083c,
+0x0005083d,
 0x00000000,
 0x80f00000,
 0x3a100004,
@@ -3183,20 +3191,20 @@ static const unsigned int build_actionlist[4946] = {
 0x1000b232,
 0x110f5b00,
 0x40800000,
-0x00050839,
+0x0005083a,
 0x00000000,
 0x110e5300,
 0x1008b232,
 0x100f5b00,
 0x40800000,
-0x0005083a,
+0x0005083b,
 0x00000000,
 0x100e5300,
 0x110e5b00,
 0x1120422c,
 0x1009b232,
 0x40830000,
-0x0005083c,
+0x0005083d,
 0x00000000,
 0x80f00000,
 0x3a100004,
@@ -3215,20 +3223,20 @@ static const unsigned int build_actionlist[4946] = {
 0x1000b232,
 0x110f5b00,
 0x40800000,
-0x00050839,
+0x0005083a,
 0x00000000,
 0x110e5300,
 0x1008b232,
 0x100f5b00,
 0x40800000,
-0x0005083a,
+0x0005083b,
 0x00000000,
 0x100e5300,
 0x110e5b00,
 0x1120422c,
 0x1009b232,
 0x40830000,
-0x0005083c,
+0x0005083d,
 0x00000000,
 0x80f00000,
 0x3a100004,
@@ -3247,25 +3255,25 @@ static const unsigned int build_actionlist[4946] = {
 0x100cb232,
 0x12af5b00,
 0x40800000,
-0x00050839,
+0x0005083a,
 0x00000000,
 0x12ae5300,
 0x1015b232,
 0x118f5b00,
 0x40800000,
-0x0005083a,
+0x0005083b,
 0x00000000,
 0x118e5300,
 0x12ae5b00,
 0x112caa2c,
 0x1009b232,
 0x40830000,
-0x0005083c,
+0x0005083d,
 0x00000000,
-0x00060099,
+0x0006009a,
 0x108caae9,
 0x48000001,
-0x00050091,
+0x00050092,
 0x1004aae8,
 0x80f00000,
 0x3a100004,
@@ -3284,23 +3292,23 @@ static const unsigned int build_actionlist[4946] = {
 0x100cb232,
 0x12af5b00,
 0x40800000,
-0x00050839,
+0x0005083a,
 0x00000000,
 0x12ae5300,
 0x1015b232,
 0x118f5b00,
 0x40800000,
-0x0005083a,
+0x0005083b,
 0x00000000,
 0x118e5300,
 0x12ae5b00,
 0x112caa2c,
 0x1009b232,
 0x40830000,
-0x0005083c,
+0x0005083d,
 0x00000000,
 0x48000000,
-0x00050099,
+0x0005009a,
 0x00000000,
 0x108e5300,
 0x10ce5b00,
@@ -3308,7 +3316,7 @@ static const unsigned int build_actionlist[4946] = {
 0x1003b232,
 0x10a6322c,
 0x40830000,
-0x0005083c,
+0x0005083d,
 0x48000001,
 0x0003001b,
 0x1083222d,
@@ -3329,7 +3337,7 @@ static const unsigned int build_actionlist[4946] = {
 0x00098200,
 0x7c8e5a14,
 0x7d555378,
-0x00060029,
+0x0006002a,
 0x9201000c,
 0x7e439378,
 0x54a500fe,
@@ -3340,7 +3348,7 @@ static const unsigned int build_actionlist[4946] = {
 0x81d20000,
 0x00098200,
 0x40820000,
-0x00050834,
+0x00050835,
 0x100eab00,
 0x100ea320,
 0x80f00000,
@@ -3735,16 +3743,16 @@ static const unsigned int build_actionlist[4946] = {
 0x7d6f402e,
 0x00000000,
 0x48000000,
-0x0005009a,
+0x0005009b,
 0x00000000,
 0x48000000,
-0x0005009b,
+0x0005009c,
 0x00000000,
 0x114e5300,
 0x116e5b00,
 0x100ac234,
 0x40800000,
-0x0005082e,
+0x0005082f,
 0x100bb232,
 0x40800000,
 0x00050805,
@@ -3760,7 +3768,7 @@ static const unsigned int build_actionlist[4946] = {
 0x55291800,
 0x000900a1,
 0x40810000,
-0x0005082e,
+0x0005082f,
 0x11084b00,
 0x1008d234,
 0x41800000,
@@ -3790,13 +3798,13 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080b,
 0x48000000,
-0x0005002e,
+0x0005002f,
 0x0006000f,
 0x100bba34,
 0x41800000,
-0x0005089a,
+0x0005089b,
 0x48000000,
-0x0005002e,
+0x0005002f,
 0x00000000,
 0x114e5300,
 0x5568007e,
@@ -3805,8 +3813,8 @@ static const unsigned int build_actionlist[4946] = {
 0x2108fffc,
 0x7d6f402e,
 0x40800000,
-0x0005082b,
-0x0006009a,
+0x0005082c,
+0x0006009b,
 0x800a0000,
 0x00098200,
 0x810b0000,
@@ -3865,21 +3873,21 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080d,
 0x48000000,
-0x0005002c,
+0x0005002d,
 0x00000000,
 0x114e5300,
 0x556000fe,
 0x000900ab,
 0x100ac234,
 0x40800000,
-0x0005082d,
+0x0005082e,
 0x810a0000,
 0x00098200,
 0x812a0000,
 0x00098200,
 0x7c004040,
 0x40800000,
-0x0005082d,
+0x0005082e,
 0x11095b00,
 0x1008d234,
 0x41800000,
@@ -3909,13 +3917,13 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080b,
 0x48000000,
-0x0005002d,
+0x0005002e,
 0x00000000,
 0x114e5300,
 0x116e5b00,
 0x100ac234,
 0x40800000,
-0x00050832,
+0x00050833,
 0x100bb232,
 0x40800000,
 0x00050805,
@@ -3932,7 +3940,7 @@ static const unsigned int build_actionlist[4946] = {
 0x55201800,
 0x000900a1,
 0x40810000,
-0x00050832,
+0x00050833,
 0x88ca0000,
 0x00098200,
 0x11280300,
@@ -3969,13 +3977,13 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080b,
 0x48000000,
-0x00050032,
+0x00050033,
 0x0006000f,
 0x100bba34,
 0x41800000,
-0x0005089b,
+0x0005089c,
 0x48000000,
-0x00050032,
+0x00050033,
 0x00060011,
 0x00000000,
 0x80110000,
@@ -3997,8 +4005,8 @@ static const unsigned int build_actionlist[4946] = {
 0x2108fffc,
 0x7d6f402e,
 0x40800000,
-0x0005082f,
-0x0006009b,
+0x00050830,
+0x0006009c,
 0x800a0000,
 0x00098200,
 0x810b0000,
@@ -4061,7 +4069,7 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080c,
 0x48000000,
-0x00050030,
+0x00050031,
 0x0006000f,
 0x81290000,
 0x00098200,
@@ -4084,7 +4092,7 @@ static const unsigned int build_actionlist[4946] = {
 0x70000000,
 0x00090200,
 0x41820000,
-0x00050830,
+0x00050831,
 0x00060010,
 0x7d445378,
 0x11650321,
@@ -4114,7 +4122,7 @@ static const unsigned int build_actionlist[4946] = {
 0x000900ab,
 0x100ac234,
 0x40800000,
-0x00050831,
+0x00050832,
 0x810a0000,
 0x00098200,
 0x812a0000,
@@ -4124,7 +4132,7 @@ static const unsigned int build_actionlist[4946] = {
 0x7c004040,
 0x12aea300,
 0x40800000,
-0x00050831,
+0x00050832,
 0x11095b00,
 0x1008d234,
 0x41800000,
@@ -4159,7 +4167,7 @@ static const unsigned int build_actionlist[4946] = {
 0x40820000,
 0x0005080b,
 0x48000000,
-0x00050031,
+0x00050032,
 0x00060011,
 0x80110000,
 0x00098200,
@@ -4277,8 +4285,8 @@ static const unsigned int build_actionlist[4946] = {
 0x100aca34,
 0x3a940008,
 0x40800000,
-0x0005083e,
-0x0006003f,
+0x0005083f,
+0x00060040,
 0x71000000,
 0x00090200,
 0x88ca0000,
@@ -4599,7 +4607,7 @@ static const unsigned int build_actionlist[4946] = {
 0x6a080000,
 0x00090200,
 0x40820000,
-0x0005089c,
+0x0005089d,
 0x00060017,
 0x80f0fffc,
 0x2c0c0008,
@@ -4650,7 +4658,7 @@ static const unsigned int build_actionlist[4946] = {
 0x13494320,
 0x48000000,
 0x0005000f,
-0x0006009c,
+0x0006009d,
 0x71090000,
 0x00090200,
 0x40820000,
@@ -4668,7 +4676,7 @@ static const unsigned int build_actionlist[4946] = {
 0x6a080000,
 0x00090200,
 0x40820000,
-0x0005089c,
+0x0005089d,
 0x80f0fffc,
 0x392efff8,
 0x54ea5d78,
@@ -4720,7 +4728,7 @@ static const unsigned int build_actionlist[4946] = {
 0x4c00e382,
 0x4c002382,
 0x41800000,
-0x00050840,
+0x00050841,
 0x00000000,
 0x110832e0,
 0x11140321,
@@ -4982,6 +4990,7 @@ enum {
   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,
@@ -5122,6 +5131,7 @@ static const char *const globnames[] = {
   "vmeta_call",
   "vm_call_dispatch_f",
   "vm_cpcall",
+  "vm_call_tail",
   "cont_cat",
   "BC_CAT_Z",
   "cont_nop",
@@ -5318,100 +5328,100 @@ static void build_subroutines(BuildCtx *ctx)
   dasm_put(Dst, 133, 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, 188, 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, 279, 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, 376, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP, Dt7(->pc), PC2PROTO(k), Dt1(->base), DISPATCH_GL(tmptv));
-  dasm_put(Dst, 480, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv2), DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv));
-  dasm_put(Dst, 557, DISPATCH_GL(tmptv2), DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), Dt1(->base), -(BCBIAS_J*4 >> 16));
-  dasm_put(Dst, 637, LJ_TTRUE, LJ_TFALSE, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 706, FRAME_CONT, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 376, 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, 481, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv2), DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv));
+  dasm_put(Dst, 556, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv2), DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), Dt1(->base));
+  dasm_put(Dst, 637, -(BCBIAS_J*4 >> 16), LJ_TTRUE, LJ_TFALSE, Dt1(->base));
+  dasm_put(Dst, 706, Dt1(->base), FRAME_CONT, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base));
 #if LJ_HASJIT
-  dasm_put(Dst, 776);
+  dasm_put(Dst, 784);
 #endif
-  dasm_put(Dst, 778);
+  dasm_put(Dst, 786);
 #if LJ_HASJIT
-  dasm_put(Dst, 780, BC_JFORI);
+  dasm_put(Dst, 788, BC_JFORI);
 #endif
-  dasm_put(Dst, 783);
+  dasm_put(Dst, 791);
 #if LJ_HASJIT
-  dasm_put(Dst, 785, BC_JFORI);
+  dasm_put(Dst, 793, BC_JFORI);
 #endif
-  dasm_put(Dst, 788, BC_FORI, ~LJ_TNUMX, 31-3, Dt8(->upvalue), Dt6(->metatable), DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]));
-  dasm_put(Dst, 853, 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, 909, Dt6(->metatable), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
-  dasm_put(Dst, 969, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->top), (2+1)*8);
+  dasm_put(Dst, 796, BC_FORI, ~LJ_TNUMX, 31-3, Dt8(->upvalue), Dt6(->metatable), DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]));
+  dasm_put(Dst, 861, 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, 917, Dt6(->metatable), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
+  dasm_put(Dst, 977, 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, 1042, Dt6(->metatable), Dt8(->upvalue[0]));
+  dasm_put(Dst, 1050, Dt6(->metatable), Dt8(->upvalue[0]));
 #else
-  dasm_put(Dst, 1051, Dt8(->upvalue[0]));
+  dasm_put(Dst, 1059, Dt8(->upvalue[0]));
 #endif
-  dasm_put(Dst, 1055, (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, 1119);
+  dasm_put(Dst, 1063, (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, 1127);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 1132, Dt6(->metatable), Dt8(->upvalue[0]));
+  dasm_put(Dst, 1140, Dt6(->metatable), Dt8(->upvalue[0]));
 #else
-  dasm_put(Dst, 1141, Dt8(->upvalue[0]));
+  dasm_put(Dst, 1149, Dt8(->upvalue[0]));
 #endif
-  dasm_put(Dst, 1145, (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, 1206, 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, 1269, Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3);
-  dasm_put(Dst, 1329, 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, 1388, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe));
-  dasm_put(Dst, 1445, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status), (1+1)*8, FRAME_TYPE);
-  dasm_put(Dst, 1510);
-  dasm_put(Dst, 1579);
-  dasm_put(Dst, 1642);
-  dasm_put(Dst, 1707);
-  dasm_put(Dst, 1777, Dt8(->upvalue[0]), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv), (2+1)*8, (2+1)*8);
-  dasm_put(Dst, 1849, Dt5(->len));
-  dasm_put(Dst, 1916, 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, 1976, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 2042, 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, 2101, 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, 2160, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
-  dasm_put(Dst, 2227);
-  dasm_put(Dst, 2298);
-  dasm_put(Dst, 2386, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc));
-  dasm_put(Dst, 2465, FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 1153, (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, 1214, 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, 1277, Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3);
+  dasm_put(Dst, 1337, 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, 1396, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe));
+  dasm_put(Dst, 1453, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status), (1+1)*8, FRAME_TYPE);
+  dasm_put(Dst, 1518);
+  dasm_put(Dst, 1587);
+  dasm_put(Dst, 1650);
+  dasm_put(Dst, 1715);
+  dasm_put(Dst, 1785, Dt8(->upvalue[0]), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv), (2+1)*8, (2+1)*8);
+  dasm_put(Dst, 1857, Dt5(->len));
+  dasm_put(Dst, 1924, 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, 1984, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 2050, 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, 2109, 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, 2168, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+  dasm_put(Dst, 2235);
+  dasm_put(Dst, 2306);
+  dasm_put(Dst, 2394, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc));
+  dasm_put(Dst, 2473, FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 2507);
+  dasm_put(Dst, 2515);
 #endif
-  dasm_put(Dst, 2509, 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, 2556, GG_DISP2STATIC);
+  dasm_put(Dst, 2517, 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, 2564, GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 2574);
+  dasm_put(Dst, 2582);
 #endif
-  dasm_put(Dst, 2576);
+  dasm_put(Dst, 2584);
 #if LJ_HASJIT
-  dasm_put(Dst, 2579);
+  dasm_put(Dst, 2587);
 #endif
-  dasm_put(Dst, 2582);
+  dasm_put(Dst, 2590);
 #if LJ_HASJIT
-  dasm_put(Dst, 2584);
+  dasm_put(Dst, 2592);
 #endif
-  dasm_put(Dst, 2587, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 2595, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 2609);
+  dasm_put(Dst, 2617);
 #endif
-  dasm_put(Dst, 2611);
+  dasm_put(Dst, 2619);
 #if LJ_HASJIT
-  dasm_put(Dst, 2613);
+  dasm_put(Dst, 2621);
 #endif
-  dasm_put(Dst, 2615);
+  dasm_put(Dst, 2623);
 #if LJ_HASJIT
-  dasm_put(Dst, 2692);
+  dasm_put(Dst, 2700);
 #else
-  dasm_put(Dst, 2715);
+  dasm_put(Dst, 2723);
 #endif
-  dasm_put(Dst, 2718);
+  dasm_put(Dst, 2726);
 #if LJ_HASJIT
-  dasm_put(Dst, 2720);
+  dasm_put(Dst, 2728);
 #endif
-  dasm_put(Dst, 2722);
+  dasm_put(Dst, 2730);
 #if LJ_HASJIT
-  dasm_put(Dst, 2724);
+  dasm_put(Dst, 2732);
 #endif
-  dasm_put(Dst, 2726);
+  dasm_put(Dst, 2734);
 #if LJ_HASFFI
-  dasm_put(Dst, 2789);
+  dasm_put(Dst, 2797);
 #endif
 }
 
@@ -5419,7 +5429,7 @@ static void build_subroutines(BuildCtx *ctx)
 static void build_ins(BuildCtx *ctx, BCOp op, int defop)
 {
   int vk = 0;
-  dasm_put(Dst, 2791, defop);
+  dasm_put(Dst, 2799, defop);
 
   switch (op) {
 
@@ -5428,112 +5438,112 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
   /* 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, 2793, -(BCBIAS_J*4 >> 16));
+    dasm_put(Dst, 2801, -(BCBIAS_J*4 >> 16));
     if (op == BC_ISLE || op == BC_ISGT) {
-      dasm_put(Dst, 2807);
+      dasm_put(Dst, 2815);
     }
     if (op == BC_ISLT || op == BC_ISLE) {
-      dasm_put(Dst, 2810);
+      dasm_put(Dst, 2818);
     } else {
-      dasm_put(Dst, 2812);
+      dasm_put(Dst, 2820);
     }
-    dasm_put(Dst, 2814);
+    dasm_put(Dst, 2822);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 2825, -(BCBIAS_J*4 >> 16));
+    dasm_put(Dst, 2833, -(BCBIAS_J*4 >> 16));
     if (vk) {
-      dasm_put(Dst, 2839);
+      dasm_put(Dst, 2847);
     } else {
-      dasm_put(Dst, 2841);
+      dasm_put(Dst, 2849);
     }
-    dasm_put(Dst, 2843, ~LJ_TISPRI, ~LJ_TISTABUD);
+    dasm_put(Dst, 2851, ~LJ_TISPRI, ~LJ_TISTABUD);
     if (vk) {
-      dasm_put(Dst, 2865);
+      dasm_put(Dst, 2873);
     } else {
-      dasm_put(Dst, 2867);
+      dasm_put(Dst, 2875);
     }
-    dasm_put(Dst, 2869);
+    dasm_put(Dst, 2877);
     if (vk) {
-      dasm_put(Dst, 2871);
+      dasm_put(Dst, 2879);
     } else {
-      dasm_put(Dst, 2873);
+      dasm_put(Dst, 2881);
     }
-    dasm_put(Dst, 2875, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq);
+    dasm_put(Dst, 2883, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq);
     break;
 
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 2896, 32-1, -(BCBIAS_J*4 >> 16));
+    dasm_put(Dst, 2904, 32-1, -(BCBIAS_J*4 >> 16));
     if (vk) {
-      dasm_put(Dst, 2910);
+      dasm_put(Dst, 2918);
     } else {
-      dasm_put(Dst, 2912);
+      dasm_put(Dst, 2920);
     }
-    dasm_put(Dst, 2914);
+    dasm_put(Dst, 2922);
     break;
 
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 2925, -(BCBIAS_J*4 >> 16));
+    dasm_put(Dst, 2933, -(BCBIAS_J*4 >> 16));
     if (vk) {
-      dasm_put(Dst, 2939);
+      dasm_put(Dst, 2947);
     } else {
-      dasm_put(Dst, 2942);
+      dasm_put(Dst, 2950);
     }
-    dasm_put(Dst, 2944);
+    dasm_put(Dst, 2952);
     if (!vk) {
-      dasm_put(Dst, 2956);
+      dasm_put(Dst, 2964);
     }
     break;
 
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 2962, 32-3, -(BCBIAS_J*4 >> 16));
+    dasm_put(Dst, 2970, 32-3, -(BCBIAS_J*4 >> 16));
     if (vk) {
-      dasm_put(Dst, 2974);
+      dasm_put(Dst, 2982);
     } else {
-      dasm_put(Dst, 2976);
+      dasm_put(Dst, 2984);
     }
-    dasm_put(Dst, 2978);
+    dasm_put(Dst, 2986);
     break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 2989);
+    dasm_put(Dst, 2997);
     if (op == BC_IST || op == BC_ISF) {
-      dasm_put(Dst, 2995, -(BCBIAS_J*4 >> 16));
+      dasm_put(Dst, 3003, -(BCBIAS_J*4 >> 16));
       if (op == BC_IST) {
-       dasm_put(Dst, 3000);
+       dasm_put(Dst, 3008);
       } else {
-       dasm_put(Dst, 3002);
+       dasm_put(Dst, 3010);
       }
     } else {
       if (op == BC_ISTC) {
-       dasm_put(Dst, 3004);
+       dasm_put(Dst, 3012);
       } else {
-       dasm_put(Dst, 3007);
+       dasm_put(Dst, 3015);
       }
-      dasm_put(Dst, 3010, -(BCBIAS_J*4 >> 16));
+      dasm_put(Dst, 3018, -(BCBIAS_J*4 >> 16));
     }
-    dasm_put(Dst, 3017);
+    dasm_put(Dst, 3025);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 3028);
+    dasm_put(Dst, 3036);
     break;
   case BC_NOT:
-    dasm_put(Dst, 3041, LJ_TTRUE);
+    dasm_put(Dst, 3049, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 3057);
+    dasm_put(Dst, 3065);
     break;
   case BC_LEN:
-    dasm_put(Dst, 3074, Dt5(->len));
+    dasm_put(Dst, 3082, Dt5(->len));
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
@@ -5543,262 +5553,262 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 3102);
+    dasm_put(Dst, 3110);
       break;
     case 1:
-    dasm_put(Dst, 3108);
+    dasm_put(Dst, 3116);
       break;
     default:
-    dasm_put(Dst, 3114);
+    dasm_put(Dst, 3122);
       break;
     }
-    dasm_put(Dst, 3121);
+    dasm_put(Dst, 3129);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 3134);
+    dasm_put(Dst, 3142);
       break;
     case 1:
-    dasm_put(Dst, 3140);
+    dasm_put(Dst, 3148);
       break;
     default:
-    dasm_put(Dst, 3146);
+    dasm_put(Dst, 3154);
       break;
     }
-    dasm_put(Dst, 3153);
+    dasm_put(Dst, 3161);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 3166);
+    dasm_put(Dst, 3174);
       break;
     case 1:
-    dasm_put(Dst, 3172);
+    dasm_put(Dst, 3180);
       break;
     default:
-    dasm_put(Dst, 3178);
+    dasm_put(Dst, 3186);
       break;
     }
-    dasm_put(Dst, 3185);
+    dasm_put(Dst, 3193);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 3198);
+    dasm_put(Dst, 3206);
       break;
     case 1:
-    dasm_put(Dst, 3204);
+    dasm_put(Dst, 3212);
       break;
     default:
-    dasm_put(Dst, 3210);
+    dasm_put(Dst, 3218);
       break;
     }
-    dasm_put(Dst, 3217);
+    dasm_put(Dst, 3225);
     break;
   case BC_MODVN:
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 3230);
+    dasm_put(Dst, 3238);
       break;
     case 1:
-    dasm_put(Dst, 3236);
+    dasm_put(Dst, 3244);
       break;
     default:
-    dasm_put(Dst, 3242);
+    dasm_put(Dst, 3250);
       break;
     }
-    dasm_put(Dst, 3249);
+    dasm_put(Dst, 3257);
     break;
   case BC_MODNV: case BC_MODVV:
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 3267);
+    dasm_put(Dst, 3275);
       break;
     case 1:
-    dasm_put(Dst, 3273);
+    dasm_put(Dst, 3281);
       break;
     default:
-    dasm_put(Dst, 3279);
+    dasm_put(Dst, 3287);
       break;
     }
-    dasm_put(Dst, 3286);
+    dasm_put(Dst, 3294);
     break;
   case BC_POW:
-    dasm_put(Dst, 3289);
+    dasm_put(Dst, 3297);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 3311, Dt1(->base), 32-3, Dt1(->base));
+    dasm_put(Dst, 3319, Dt1(->base), 32-3, Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 3341, 32-1);
+    dasm_put(Dst, 3349, 32-1);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 3358, 32-1, LJ_TCDATA);
+    dasm_put(Dst, 3366, 32-1, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
-    dasm_put(Dst, 3377, 32-3);
+    dasm_put(Dst, 3385, 32-3);
     break;
   case BC_KNUM:
-    dasm_put(Dst, 3393);
+    dasm_put(Dst, 3401);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 3406, 32-3);
+    dasm_put(Dst, 3414, 32-3);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 3421);
+    dasm_put(Dst, 3429);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 3440, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 3448, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
-    dasm_put(Dst, 3461, 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);
+    dasm_put(Dst, 3469, 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, 3513, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_GC_WHITES, GG_DISP2G);
+    dasm_put(Dst, 3521, 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, 3562, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 3570, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETP:
-    dasm_put(Dst, 3583, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v));
+    dasm_put(Dst, 3591, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v));
     break;
 
   case BC_UCLO:
-    dasm_put(Dst, 3606, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 3614, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 3636, 32-1, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 3644, 32-1, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
   case BC_TDUP:
-    dasm_put(Dst, 3662, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
+    dasm_put(Dst, 3670, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
     if (op == BC_TNEW) {
-      dasm_put(Dst, 3675);
+      dasm_put(Dst, 3683);
     } else {
-      dasm_put(Dst, 3683, 32-1);
+      dasm_put(Dst, 3691, 32-1);
     }
-    dasm_put(Dst, 3690, Dt1(->base));
+    dasm_put(Dst, 3698, Dt1(->base));
     break;
 
   case BC_GGET:
   case BC_GSET:
-    dasm_put(Dst, 3713, 32-1, Dt7(->env));
+    dasm_put(Dst, 3721, 32-1, Dt7(->env));
     if (op == BC_GGET) {
-      dasm_put(Dst, 3721);
+      dasm_put(Dst, 3729);
     } else {
-      dasm_put(Dst, 3724);
+      dasm_put(Dst, 3732);
     }
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 3727, Dt6(->asize), Dt6(->array), 31-3, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 3735, Dt6(->asize), Dt6(->array), 31-3, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 3785, 32-1, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), DtB(->val), DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 3849);
+    dasm_put(Dst, 3793, 32-1, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), DtB(->val), DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 3857);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 3854, 32-3, Dt6(->asize), Dt6(->array), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 3862, 32-3, Dt6(->asize), Dt6(->array), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 3898, Dt6(->asize), Dt6(->array), 31-3, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
-    dasm_put(Dst, 3965, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
+    dasm_put(Dst, 3906, Dt6(->asize), Dt6(->array), 31-3, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
+    dasm_put(Dst, 3973, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 3977, 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, 4038, Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
-    dasm_put(Dst, 4089, Dt6(->marked), Dt6(->gclist));
+    dasm_put(Dst, 3985, 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, 4046, Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
+    dasm_put(Dst, 4097, Dt6(->marked), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 4096, 32-3, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked));
-    dasm_put(Dst, 4156, Dt6(->gclist));
+    dasm_put(Dst, 4104, 32-3, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked));
+    dasm_put(Dst, 4164, Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 4161, 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, 4230);
+    dasm_put(Dst, 4169, 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, 4238);
     break;
 
   /* -- Calls and vararg handling ----------------------------------------- */
 
   case BC_CALLM:
-    dasm_put(Dst, 4233);
+    dasm_put(Dst, 4241);
     break;
   case BC_CALL:
-    dasm_put(Dst, 4235, Dt7(->pc));
+    dasm_put(Dst, 4243, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 4255);
+    dasm_put(Dst, 4263);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 4257, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
-    dasm_put(Dst, 4322, FRAME_TYPE);
+    dasm_put(Dst, 4265, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
+    dasm_put(Dst, 4330, FRAME_TYPE);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 4329, Dt7(->pc));
+    dasm_put(Dst, 4337, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 4355, 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, 4434);
+    dasm_put(Dst, 4363, 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, 4442);
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 4438, 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));
+    dasm_put(Dst, 4446, 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, 4489, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base));
-    dasm_put(Dst, 4569);
+    dasm_put(Dst, 4497, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base));
+    dasm_put(Dst, 4577);
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 4575);
+    dasm_put(Dst, 4583);
     break;
 
   case BC_RET:
-    dasm_put(Dst, 4577, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
+    dasm_put(Dst, 4585, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
     break;
 
   case BC_RET0: case BC_RET1:
-    dasm_put(Dst, 4647, FRAME_TYPE, FRAME_VARG);
+    dasm_put(Dst, 4655, FRAME_TYPE, FRAME_VARG);
     if (op == BC_RET1) {
-      dasm_put(Dst, 4660);
+      dasm_put(Dst, 4668);
     }
-    dasm_put(Dst, 4663, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 4671, Dt7(->pc), PC2PROTO(k));
     break;
 
   /* -- Loops and branches ------------------------------------------------ */
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 4691);
+    dasm_put(Dst, 4699);
 #endif
     break;
 
@@ -5810,35 +5820,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 4693, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8);
+    dasm_put(Dst, 4701, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8);
     if (!vk) {
-      dasm_put(Dst, 4701);
+      dasm_put(Dst, 4709);
     }
     if (vk) {
-      dasm_put(Dst, 4709, FORL_IDX*8);
+      dasm_put(Dst, 4717, FORL_IDX*8);
     }
-    dasm_put(Dst, 4713, FORL_EXT*8);
+    dasm_put(Dst, 4721, FORL_EXT*8);
     if (op != BC_JFORL) {
-      dasm_put(Dst, 4721, 32-1);
+      dasm_put(Dst, 4729, 32-1);
       if (op == BC_JFORI) {
-       dasm_put(Dst, 4725, -(BCBIAS_J*4 >> 16));
+       dasm_put(Dst, 4733, -(BCBIAS_J*4 >> 16));
       } else {
-       dasm_put(Dst, 4728, -(BCBIAS_J*4 >> 16));
+       dasm_put(Dst, 4736, -(BCBIAS_J*4 >> 16));
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 4731);
+      dasm_put(Dst, 4739);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 4733);
+      dasm_put(Dst, 4741);
     } else {
-      dasm_put(Dst, 4735, BC_JLOOP);
+      dasm_put(Dst, 4743, BC_JLOOP);
     }
-    dasm_put(Dst, 4738);
+    dasm_put(Dst, 4746);
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 4753);
+    dasm_put(Dst, 4761);
 #endif
     break;
 
@@ -5847,40 +5857,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 4755);
+    dasm_put(Dst, 4763);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 4761);
+      dasm_put(Dst, 4769);
     } else {
-      dasm_put(Dst, 4763, 32-1, -(BCBIAS_J*4 >> 16));
+      dasm_put(Dst, 4771, 32-1, -(BCBIAS_J*4 >> 16));
     }
-    dasm_put(Dst, 4770);
+    dasm_put(Dst, 4778);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 4782);
+    dasm_put(Dst, 4790);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 4784);
+    dasm_put(Dst, 4792);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 4795);
+    dasm_put(Dst, 4803);
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 4797, 32-1, -(BCBIAS_J*4 >> 16));
+    dasm_put(Dst, 4805, 32-1, -(BCBIAS_J*4 >> 16));
     break;
 
   /* -- Function headers -------------------------------------------------- */
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 4813);
+    dasm_put(Dst, 4821);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -5890,38 +5900,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 4815, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3);
+    dasm_put(Dst, 4823, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3);
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 4833);
+      dasm_put(Dst, 4841);
     } else {
-      dasm_put(Dst, 4835);
+      dasm_put(Dst, 4843);
     }
-    dasm_put(Dst, 4844);
+    dasm_put(Dst, 4852);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 4850);
+    dasm_put(Dst, 4858);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 4852, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 4860, 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, 4902, Dt8(->f));
+      dasm_put(Dst, 4910, Dt8(->f));
     } else {
-      dasm_put(Dst, 4905, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 4913, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 4908, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
+    dasm_put(Dst, 4916, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
     if (op == BC_FUNCCW) {
-      dasm_put(Dst, 4921, Dt8(->f));
+      dasm_put(Dst, 4929, Dt8(->f));
     }
-    dasm_put(Dst, 4924, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate));
+    dasm_put(Dst, 4932, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -5941,7 +5951,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx);
 
-  dasm_put(Dst, 4945);
+  dasm_put(Dst, 4953);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op);
 
index 927ecc6b0a41b3c5ed4b6402036f1e1a5dea728a..fb6f57f98bcacc3df92c3cc796a6756297c1d947 100644 (file)
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP   0
 #define DASM_SECTION_CODE_SUB  1
 #define DASM_MAXSECTION                2
-static const unsigned char build_actionlist[15992] = {
+static const unsigned char build_actionlist[16015] = {
   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,
@@ -52,111 +52,112 @@ static const unsigned char build_actionlist[15992] = {
   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,76,141,61,245,255,76,1,252,249,68,139,122,252,248,69,139,191,233,
-  69,139,191,233,252,255,225,248,32,15,182,75,252,255,131,252,237,16,141,12,
-  202,41,252,233,15,132,244,33,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,34,248,35,137,
+  77,252,240,133,201,15,132,244,247,255,76,141,61,245,76,1,252,249,68,139,122,
+  252,248,69,139,191,233,69,139,191,233,252,255,225,248,1,41,213,193,252,237,
+  3,141,69,252,255,252,233,244,32,248,33,15,182,75,252,255,131,252,237,16,141,
+  12,202,41,252,233,15,132,244,34,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,35,248,36,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,36,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,37,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,
+  142,233,137,41,199,65,4,237,255,137,205,252,233,244,248,248,37,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,38,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,33,15,182,75,252,253,72,139,40,72,137,44,202,139,3,15,182,
+  132,244,249,248,34,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,38,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,39,
-  15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,40,15,182,67,252,254,
+  248,39,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,40,
+  15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,41,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,
-  41,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
+  42,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,42,139,108,
+  16,141,153,233,41,211,139,105,252,248,184,237,252,233,244,30,248,43,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,43,248,
+  92,36,28,232,251,1,4,248,3,139,149,233,255,131,252,248,1,15,135,244,44,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,44,131,195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,45,129,
-  120,253,4,239,252,233,244,4,248,46,131,252,235,4,137,206,137,252,233,139,
+  248,45,131,195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,
+  120,253,4,239,252,233,244,4,248,47,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,47,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,48,255,15,
-  182,107,252,255,255,248,49,65,141,4,199,252,233,244,247,248,50,255,248,51,
-  65,141,4,199,141,44,252,234,149,252,233,244,248,248,52,141,4,194,137,197,
-  252,233,244,248,248,53,255,248,54,141,4,194,248,1,141,44,252,234,248,2,141,
+  233,244,3,248,48,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,49,255,15,
+  182,107,252,255,255,248,50,65,141,4,199,252,233,244,247,248,51,255,248,52,
+  65,141,4,199,141,44,252,234,149,252,233,244,248,248,53,141,4,194,137,197,
+  252,233,244,248,248,54,255,248,55,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,
-  41,248,43,137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,28,
-  248,55,139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232,
-  251,1,8,139,149,233,252,233,244,43,248,56,141,76,202,8,248,29,137,76,36,4,
+  42,248,44,137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,28,
+  248,56,139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232,
+  251,1,8,139,149,233,252,233,244,44,248,57,141,76,202,8,248,29,137,76,36,4,
   137,4,36,131,252,233,8,139,108,36,24,137,149,233,255,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,57,137,202,137,90,252,252,139,157,
+  252,248,131,192,1,65,57,215,15,132,244,58,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,
-  58,139,108,36,24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,10,
+  59,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,59,129,252,248,239,15,130,244,60,139,106,4,129,252,253,
-  239,15,131,244,60,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106,
+  253,252,238,233,248,60,129,252,248,239,15,130,244,61,139,106,4,129,252,253,
+  239,15,131,244,61,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,137,209,248,1,131,193,8,72,139,41,72,137,
-  105,252,248,131,232,1,15,133,244,1,248,2,255,139,68,36,4,252,233,244,61,248,
-  62,129,252,248,239,15,130,244,60,139,106,4,137,252,233,193,252,249,15,131,
+  105,252,248,131,232,1,15,133,244,1,248,2,255,139,68,36,4,252,233,244,62,248,
+  63,129,252,248,239,15,130,244,61,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,63,248,3,184,
-  237,252,233,244,2,248,64,129,252,248,239,15,130,244,60,139,106,4,139,90,252,
+  139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,64,248,3,184,
+  237,252,233,244,2,248,65,129,252,248,239,15,130,244,61,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,63,65,139,134,233,199,66,252,252,237,
+  237,199,66,252,252,237,255,15,132,244,64,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,63,248,5,139,105,4,129,252,253,239,15,132,244,
-  63,139,1,137,106,252,252,137,66,252,248,252,233,244,63,248,6,129,252,253,
+  15,133,244,3,255,252,233,244,64,248,5,139,105,4,129,252,253,239,15,132,244,
+  64,139,1,137,106,252,252,137,66,252,248,252,233,244,64,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,65,129,252,248,239,15,130,244,60,129,122,253,
-  4,239,15,133,244,60,139,42,131,189,233,0,15,133,244,60,129,122,253,12,239,
-  15,133,244,60,139,66,8,137,133,233,139,90,252,252,199,66,252,252,237,255,
+  253,174,233,252,233,244,2,248,66,129,252,248,239,15,130,244,61,129,122,253,
+  4,239,15,133,244,61,139,42,131,189,233,0,15,133,244,61,129,122,253,12,239,
+  15,133,244,61,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,63,248,66,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,133,244,60,137,213,139,50,141,82,8,
+  134,233,65,137,174,233,137,133,233,248,1,252,233,244,64,248,67,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,133,244,61,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,63,248,67,255,129,252,248,239,15,133,244,60,129,122,253,
-  4,239,255,15,133,244,247,139,42,252,233,244,68,248,1,15,135,244,60,255,15,
-  131,244,60,255,252,242,15,16,2,252,233,244,69,255,221,2,252,233,244,70,255,
-  248,71,129,252,248,239,15,130,244,60,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,63,
-  248,3,129,122,253,4,239,15,135,244,60,65,131,190,233,0,15,133,244,60,65,139,
-  174,233,65,59,174,233,255,15,130,244,247,232,244,72,248,1,139,108,36,24,137,
+  252,248,252,233,244,64,248,68,255,129,252,248,239,15,133,244,61,129,122,253,
+  4,239,255,15,133,244,247,139,42,252,233,244,69,248,1,15,135,244,61,255,15,
+  131,244,61,255,252,242,15,16,2,252,233,244,70,255,221,2,252,233,244,71,255,
+  248,72,129,252,248,239,15,130,244,61,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,64,
+  248,3,129,122,253,4,239,15,135,244,61,65,131,190,233,0,15,133,244,61,65,139,
+  174,233,65,59,174,233,255,15,130,244,247,232,244,73,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,73,129,252,248,239,15,130,244,60,15,132,
-  244,248,248,1,129,122,253,4,239,15,133,244,60,139,108,36,24,137,149,233,137,
+  255,139,149,233,252,233,244,2,248,74,129,252,248,239,15,130,244,61,15,132,
+  244,248,248,1,129,122,253,4,239,15,133,244,61,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,74,184,237,255,252,233,244,75,248,2,199,66,12,237,252,
-  233,244,1,248,3,199,66,252,252,237,252,233,244,63,248,76,129,252,248,239,
-  15,130,244,60,139,42,129,122,253,4,239,15,133,244,60,255,131,189,233,0,15,
-  133,244,60,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,75,248,77,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,133,244,60,129,122,253,12,239,255,
+  252,248,72,137,2,248,75,184,237,255,252,233,244,76,248,2,199,66,12,237,252,
+  233,244,1,248,3,199,66,252,252,237,252,233,244,64,248,77,129,252,248,239,
+  15,130,244,61,139,42,129,122,253,4,239,15,133,244,61,255,131,189,233,0,15,
+  133,244,61,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,76,248,78,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,133,244,61,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,78,72,139,40,72,137,
-  42,252,233,244,74,248,2,131,189,233,0,15,132,244,78,137,252,239,137,213,137,
-  198,232,251,1,15,137,252,234,133,192,15,133,244,1,248,78,184,237,252,233,
-  244,75,248,79,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252,
+  193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,79,72,139,40,72,137,
+  42,252,233,244,75,248,2,131,189,233,0,15,132,244,79,137,252,239,137,213,137,
+  198,232,251,1,15,137,252,234,133,192,15,133,244,1,248,79,184,237,252,233,
+  244,76,248,80,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,75,248,80,129,
-  252,248,239,15,130,244,60,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,81,129,252,248,
-  239,15,130,244,60,129,122,253,12,239,15,133,244,60,255,139,106,4,137,106,
+  15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,76,248,81,129,
+  252,248,239,15,130,244,61,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,82,129,252,248,
+  239,15,130,244,61,129,122,253,12,239,15,133,244,61,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,82,129,252,248,239,15,130,244,60,139,42,139,90,252,
-  252,137,92,36,28,137,44,36,129,122,253,4,239,15,133,244,60,72,131,189,233,
-  0,15,133,244,60,128,189,233,235,15,135,244,60,139,141,233,15,132,244,247,
-  255,59,141,233,15,132,244,60,248,1,141,92,193,252,240,59,157,233,15,135,244,
-  60,137,157,233,139,108,36,24,137,149,233,131,194,8,137,149,233,141,108,194,
+  237,252,233,244,1,248,83,129,252,248,239,15,130,244,61,139,42,139,90,252,
+  252,137,92,36,28,137,44,36,129,122,253,4,239,15,133,244,61,72,131,189,233,
+  0,15,133,244,61,128,189,233,235,15,135,244,61,139,141,233,15,132,244,247,
+  255,59,141,233,15,132,244,61,248,1,141,92,193,252,240,59,157,233,15,135,244,
+  61,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,
@@ -167,10 +168,10 @@ static const unsigned char build_actionlist[15992] = {
   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,83,139,106,252,
+  252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,84,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,60,255,128,189,233,235,15,135,244,60,139,141,233,15,132,244,247,59,
-  141,233,15,132,244,60,248,1,141,92,193,252,248,59,157,233,15,135,244,60,137,
+  133,244,61,255,128,189,233,235,15,135,244,61,139,141,233,15,132,244,247,59,
+  141,233,15,132,244,61,248,1,141,92,193,252,248,59,157,233,15,135,244,61,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,
@@ -181,204 +182,204 @@ static const unsigned char build_actionlist[15992] = {
   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,84,139,108,36,24,72,252,247,133,233,237,15,132,244,60,255,137,149,233,
+  4,248,85,139,108,36,24,72,252,247,133,233,237,15,132,244,61,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,68,255,248,70,139,90,252,252,221,90,252,248,252,233,
-  244,63,255,248,85,129,252,248,239,15,130,244,60,255,129,122,253,4,239,15,
-  133,244,248,139,42,131,252,253,0,15,137,244,68,252,247,221,15,136,244,247,
-  248,86,248,68,139,90,252,252,199,66,252,252,237,137,106,252,248,252,233,244,
-  63,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,63,248,2,15,135,244,60,255,129,122,253,4,239,15,131,244,60,255,
-  252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,69,139,90,
-  252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,69,248,70,139,90,252,
-  252,221,90,252,248,255,248,63,184,237,248,75,137,68,36,4,248,61,252,247,195,
+  252,233,244,16,255,248,69,255,248,71,139,90,252,252,221,90,252,248,252,233,
+  244,64,255,248,86,129,252,248,239,15,130,244,61,255,129,122,253,4,239,15,
+  133,244,248,139,42,131,252,253,0,15,137,244,69,252,247,221,15,136,244,247,
+  248,87,248,69,139,90,252,252,199,66,252,252,237,137,106,252,248,252,233,244,
+  64,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,64,248,2,15,135,244,61,255,129,122,253,4,239,15,131,244,61,255,
+  252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,70,139,90,
+  252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,70,248,71,139,90,252,
+  252,221,90,252,248,255,248,64,184,237,248,76,137,68,36,4,248,62,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,87,255,129,
-  122,253,4,239,15,133,244,247,139,42,252,233,244,68,248,1,15,135,244,60,255,
-  252,242,15,16,2,232,244,88,255,252,242,15,45,232,129,252,253,0,0,0,128,15,
-  133,244,68,252,242,15,42,205,102,15,46,193,15,138,244,69,15,132,244,68,255,
-  221,2,232,244,88,255,248,89,255,252,242,15,16,2,232,244,90,255,221,2,232,
-  244,90,255,248,91,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,252,242,15,81,2,252,233,244,69,255,248,91,129,252,248,239,15,130,244,
-  60,129,122,253,4,239,15,131,244,60,221,2,217,252,250,252,233,244,70,255,248,
-  92,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,217,252,
-  237,221,2,217,252,241,252,233,244,70,248,93,129,252,248,239,15,130,244,60,
-  129,122,253,4,239,15,131,244,60,217,252,236,221,2,217,252,241,252,233,244,
-  70,248,94,129,252,248,239,255,15,130,244,60,129,122,253,4,239,15,131,244,
-  60,221,2,232,244,95,252,233,244,70,248,96,129,252,248,239,15,130,244,60,129,
-  122,253,4,239,15,131,244,60,221,2,217,252,254,252,233,244,70,248,97,129,252,
-  248,239,255,15,130,244,60,129,122,253,4,239,15,131,244,60,221,2,217,252,255,
-  252,233,244,70,248,98,129,252,248,239,15,130,244,60,129,122,253,4,239,15,
-  131,244,60,221,2,217,252,242,221,216,252,233,244,70,248,99,129,252,248,239,
-  15,130,244,60,255,129,122,253,4,239,15,131,244,60,221,2,217,192,216,200,217,
-  232,222,225,217,252,250,217,252,243,252,233,244,70,248,100,129,252,248,239,
-  15,130,244,60,129,122,253,4,239,15,131,244,60,221,2,217,192,216,200,217,232,
-  222,225,217,252,250,217,201,217,252,243,252,233,244,70,248,101,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,131,244,60,255,221,2,217,232,217,252,
-  243,252,233,244,70,255,248,102,129,252,248,239,15,130,244,60,129,122,253,
-  4,239,15,131,244,60,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,
-  252,233,244,69,255,248,103,129,252,248,239,15,130,244,60,129,122,253,4,239,
-  15,131,244,60,252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,
-  244,69,255,248,104,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,252,242,15,16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,69,
-  248,105,255,248,106,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,
-  69,255,248,106,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,
-  60,221,2,139,106,252,248,220,141,233,252,233,244,70,255,248,107,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,
-  244,60,221,2,221,66,8,217,252,243,252,233,244,70,248,108,129,252,248,239,
-  15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,255,15,131,
-  244,60,221,66,8,221,2,217,252,253,221,217,252,233,244,70,248,109,129,252,
-  248,239,15,130,244,60,139,106,4,129,252,253,239,15,131,244,60,139,90,252,
+  7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,248,88,255,129,
+  122,253,4,239,15,133,244,247,139,42,252,233,244,69,248,1,15,135,244,61,255,
+  252,242,15,16,2,232,244,89,255,252,242,15,45,232,129,252,253,0,0,0,128,15,
+  133,244,69,252,242,15,42,205,102,15,46,193,15,138,244,70,15,132,244,69,255,
+  221,2,232,244,89,255,248,90,255,252,242,15,16,2,232,244,91,255,221,2,232,
+  244,91,255,248,92,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,252,242,15,81,2,252,233,244,70,255,248,92,129,252,248,239,15,130,244,
+  61,129,122,253,4,239,15,131,244,61,221,2,217,252,250,252,233,244,71,255,248,
+  93,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,217,252,
+  237,221,2,217,252,241,252,233,244,71,248,94,129,252,248,239,15,130,244,61,
+  129,122,253,4,239,15,131,244,61,217,252,236,221,2,217,252,241,252,233,244,
+  71,248,95,129,252,248,239,255,15,130,244,61,129,122,253,4,239,15,131,244,
+  61,221,2,232,244,96,252,233,244,71,248,97,129,252,248,239,15,130,244,61,129,
+  122,253,4,239,15,131,244,61,221,2,217,252,254,252,233,244,71,248,98,129,252,
+  248,239,255,15,130,244,61,129,122,253,4,239,15,131,244,61,221,2,217,252,255,
+  252,233,244,71,248,99,129,252,248,239,15,130,244,61,129,122,253,4,239,15,
+  131,244,61,221,2,217,252,242,221,216,252,233,244,71,248,100,129,252,248,239,
+  15,130,244,61,255,129,122,253,4,239,15,131,244,61,221,2,217,192,216,200,217,
+  232,222,225,217,252,250,217,252,243,252,233,244,71,248,101,129,252,248,239,
+  15,130,244,61,129,122,253,4,239,15,131,244,61,221,2,217,192,216,200,217,232,
+  222,225,217,252,250,217,201,217,252,243,252,233,244,71,248,102,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,131,244,61,255,221,2,217,232,217,252,
+  243,252,233,244,71,255,248,103,129,252,248,239,15,130,244,61,129,122,253,
+  4,239,15,131,244,61,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,
+  252,233,244,70,255,248,104,129,252,248,239,15,130,244,61,129,122,253,4,239,
+  15,131,244,61,252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,
+  244,70,255,248,105,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,252,242,15,16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,70,
+  248,106,255,248,107,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,
+  70,255,248,107,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,
+  61,221,2,139,106,252,248,220,141,233,252,233,244,71,255,248,108,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,
+  244,61,221,2,221,66,8,217,252,243,252,233,244,71,248,109,129,252,248,239,
+  15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,255,15,131,
+  244,61,221,66,8,221,2,217,252,253,221,217,252,233,244,71,248,110,129,252,
+  248,239,15,130,244,61,139,106,4,129,252,253,239,15,131,244,61,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,75,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,
+  237,252,233,244,76,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,110,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,252,242,15,16,2,255,248,110,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,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,111,252,242,15,92,
-  224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,111,
+  244,1,255,248,111,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,252,242,15,16,2,255,248,111,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,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,112,252,242,15,92,
+  224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,112,
   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,75,248,3,129,252,245,0,0,0,128,137,
+  15,136,244,249,248,2,184,237,252,233,244,76,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,112,129,252,248,239,15,130,244,60,129,122,253,4,
-  239,15,131,244,60,129,122,253,12,239,15,131,244,60,221,66,8,221,2,248,1,217,
-  252,248,223,224,158,15,138,244,1,221,217,252,233,244,70,255,248,113,129,252,
-  248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,
-  15,131,244,60,252,242,15,16,2,252,242,15,16,74,8,232,244,114,252,233,244,
-  69,255,248,113,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,
-  60,129,122,253,12,239,15,131,244,60,221,2,221,66,8,232,244,114,252,233,244,
-  70,255,248,115,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,
-  1,57,193,15,131,244,68,129,124,253,202,252,252,239,15,133,244,249,59,108,
+  201,252,233,244,1,255,248,113,129,252,248,239,15,130,244,61,129,122,253,4,
+  239,15,131,244,61,129,122,253,12,239,15,131,244,61,221,66,8,221,2,248,1,217,
+  252,248,223,224,158,15,138,244,1,221,217,252,233,244,71,255,248,114,129,252,
+  248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,
+  15,131,244,61,252,242,15,16,2,252,242,15,16,74,8,232,244,115,252,233,244,
+  70,255,248,114,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,
+  61,129,122,253,12,239,15,131,244,61,221,2,221,66,8,232,244,115,252,233,244,
+  71,255,248,116,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,
+  1,57,193,15,131,244,69,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,
-  60,255,252,233,244,252,248,4,15,135,244,60,255,252,242,15,16,2,248,5,57,193,
-  15,131,244,69,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,60,
+  61,255,252,233,244,252,248,4,15,135,244,61,255,252,242,15,16,2,248,5,57,193,
+  15,131,244,70,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,61,
   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,116,185,2,
+  252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,117,185,2,
   0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,
-  68,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,60,255,248,6,252,242,
+  69,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,61,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,60,255,248,117,129,252,248,239,15,130,244,60,129,
-  122,253,4,239,15,133,244,60,139,42,255,139,173,233,252,233,244,68,255,252,
-  242,15,42,133,233,252,233,244,69,255,219,133,233,252,233,244,70,255,248,118,
-  129,252,248,239,15,133,244,60,129,122,253,4,239,15,133,244,60,139,42,139,
-  90,252,252,131,189,233,1,15,130,244,78,15,182,173,233,255,252,242,15,42,197,
-  252,233,244,69,255,137,44,36,219,4,36,252,233,244,70,255,248,119,65,139,174,
-  233,65,59,174,233,15,130,244,247,232,244,72,248,1,129,252,248,239,15,133,
-  244,60,129,122,253,4,239,255,15,133,244,60,139,42,129,252,253,252,255,0,0,
-  0,15,135,244,60,137,108,36,4,255,15,131,244,60,252,242,15,44,42,129,252,253,
-  252,255,0,0,0,15,135,244,60,137,108,36,4,255,15,131,244,60,221,2,219,92,36,
-  4,129,124,36,4,252,255,0,0,0,15,135,244,60,255,199,68,36,8,1,0,0,0,72,141,
-  68,36,4,248,120,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252,
+  248,9,221,216,252,233,244,61,255,248,118,129,252,248,239,15,130,244,61,129,
+  122,253,4,239,15,133,244,61,139,42,255,139,173,233,252,233,244,69,255,252,
+  242,15,42,133,233,252,233,244,70,255,219,133,233,252,233,244,71,255,248,119,
+  129,252,248,239,15,133,244,61,129,122,253,4,239,15,133,244,61,139,42,139,
+  90,252,252,131,189,233,1,15,130,244,79,15,182,173,233,255,252,242,15,42,197,
+  252,233,244,70,255,137,44,36,219,4,36,252,233,244,71,255,248,120,65,139,174,
+  233,65,59,174,233,15,130,244,247,232,244,73,248,1,129,252,248,239,15,133,
+  244,61,129,122,253,4,239,255,15,133,244,61,139,42,129,252,253,252,255,0,0,
+  0,15,135,244,61,137,108,36,4,255,15,131,244,61,252,242,15,44,42,129,252,253,
+  252,255,0,0,0,15,135,244,61,137,108,36,4,255,15,131,244,61,221,2,219,92,36,
+  4,129,124,36,4,252,255,0,0,0,15,135,244,61,255,199,68,36,8,1,0,0,0,72,141,
+  68,36,4,248,121,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,63,248,121,65,139,174,233,65,59,174,233,15,130,
-  244,247,232,244,72,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129,
-  252,248,239,15,130,244,60,15,134,244,247,129,122,253,20,239,255,15,133,244,
-  60,139,106,16,137,108,36,4,255,15,131,244,60,252,242,15,44,106,16,137,108,
-  36,4,255,15,131,244,60,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,
-  15,133,244,60,129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255,
+  137,66,252,248,252,233,244,64,248,122,65,139,174,233,65,59,174,233,15,130,
+  244,247,232,244,73,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129,
+  252,248,239,15,130,244,61,15,134,244,247,129,122,253,20,239,255,15,133,244,
+  61,139,106,16,137,108,36,4,255,15,131,244,61,252,242,15,44,106,16,137,108,
+  36,4,255,15,131,244,61,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,
+  15,133,244,61,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,122,141,172,
-  253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,120,248,5,15,140,
+  2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244,123,141,172,
+  253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,121,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,122,49,192,252,233,244,4,248,123,129,252,248,239,15,130,244,60,65,139,
-  174,233,65,59,174,233,15,130,244,247,232,244,72,248,1,255,129,122,253,4,239,
-  15,133,244,60,129,122,253,12,239,139,42,255,15,133,244,60,139,66,8,255,15,
-  131,244,60,252,242,15,44,66,8,255,15,131,244,60,221,66,8,219,92,36,4,139,
-  68,36,4,255,133,192,15,142,244,122,131,189,233,1,15,130,244,122,15,133,244,
-  124,65,57,134,233,15,130,244,124,15,182,141,233,65,139,174,233,137,68,36,
+  3,248,123,49,192,252,233,244,4,248,124,129,252,248,239,15,130,244,61,65,139,
+  174,233,65,59,174,233,15,130,244,247,232,244,73,248,1,255,129,122,253,4,239,
+  15,133,244,61,129,122,253,12,239,139,42,255,15,133,244,61,139,66,8,255,15,
+  131,244,61,252,242,15,44,66,8,255,15,131,244,61,221,66,8,219,92,36,4,139,
+  68,36,4,255,133,192,15,142,244,123,131,189,233,1,15,130,244,123,15,133,244,
+  125,65,57,134,233,15,130,244,125,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,120,248,125,129,252,248,239,255,15,130,244,60,65,139,174,233,65,59,174,
-  233,15,130,244,247,232,244,72,248,1,129,122,253,4,239,15,133,244,60,139,42,
-  139,133,233,133,192,15,132,244,122,65,57,134,233,15,130,244,126,129,197,239,
+  244,121,248,126,129,252,248,239,255,15,130,244,61,65,139,174,233,65,59,174,
+  233,15,130,244,247,232,244,73,248,1,129,122,253,4,239,15,133,244,61,139,42,
+  139,133,233,133,192,15,132,244,123,65,57,134,233,15,130,244,127,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,120,248,127,129,
-  252,248,239,15,130,244,60,65,139,174,233,65,59,174,233,15,130,244,247,232,
-  244,72,248,1,129,122,253,4,239,15,133,244,60,139,42,139,133,233,65,57,134,
-  233,255,15,130,244,126,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,
+  232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,121,248,128,129,
+  252,248,239,15,130,244,61,65,139,174,233,65,59,174,233,15,130,244,247,232,
+  244,73,248,1,129,122,253,4,239,15,133,244,61,139,42,139,133,233,65,57,134,
+  233,255,15,130,244,127,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,120,248,128,129,252,248,239,15,130,
-  244,60,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,72,248,1,129,
-  122,253,4,239,15,133,244,60,139,42,139,133,233,65,57,134,233,15,130,244,126,
+  244,1,137,216,139,92,36,4,252,233,244,121,248,129,129,252,248,239,15,130,
+  244,61,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,73,248,1,129,
+  122,253,4,239,15,133,244,61,139,42,139,133,233,65,57,134,233,15,130,244,127,
   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,120,248,129,129,252,248,239,15,130,244,60,129,122,253,
-  4,239,15,133,244,60,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252,
-  233,244,68,255,252,242,15,42,192,252,233,244,69,255,248,130,129,122,253,4,
-  239,255,15,133,244,247,139,42,252,233,244,86,248,1,15,135,244,60,255,252,
+  92,36,4,252,233,244,121,248,130,129,252,248,239,15,130,244,61,129,122,253,
+  4,239,15,133,244,61,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252,
+  233,244,69,255,252,242,15,42,192,252,233,244,70,255,248,131,129,122,253,4,
+  239,255,15,133,244,247,139,42,252,233,244,87,248,1,15,135,244,61,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,86,255,248,131,255,72,189,237,237,102,72,15,110,205,255,
+  197,255,252,233,244,87,255,248,132,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,60,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,86,129,120,253,4,239,255,
-  15,133,244,248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,132,255,15,
-  131,244,132,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,133,255,15,133,244,248,11,40,131,232,8,252,233,
-  244,1,248,2,15,135,244,132,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,134,255,15,133,244,248,51,40,131,
-  232,8,252,233,244,1,248,2,15,135,244,132,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,135,129,122,253,
-  4,239,255,248,2,15,205,252,233,244,86,248,136,129,122,253,4,239,255,248,2,
-  252,247,213,255,248,86,252,242,15,42,197,252,233,244,69,255,248,132,139,68,
-  36,4,252,233,244,60,255,248,137,129,122,253,4,239,255,248,2,129,122,253,12,
-  239,15,133,244,60,139,74,8,255,248,137,129,252,248,239,15,130,244,60,129,
-  122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,
+  244,61,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,87,129,120,253,4,239,255,
+  15,133,244,248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,133,255,15,
+  131,244,133,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,134,255,15,133,244,248,11,40,131,232,8,252,233,
+  244,1,248,2,15,135,244,133,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,135,255,15,133,244,248,51,40,131,
+  232,8,252,233,244,1,248,2,15,135,244,133,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,136,129,122,253,
+  4,239,255,248,2,15,205,252,233,244,87,248,137,129,122,253,4,239,255,248,2,
+  252,247,213,255,248,87,252,242,15,42,197,252,233,244,70,255,248,133,139,68,
+  36,4,252,233,244,61,255,248,138,129,122,253,4,239,255,248,2,129,122,253,12,
+  239,15,133,244,61,139,74,8,255,248,138,129,252,248,239,15,130,244,61,129,
+  122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,
-  248,138,129,122,253,4,239,255,248,138,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,2,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,87,255,
+  248,139,129,122,253,4,239,255,248,139,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,
-  255,248,139,129,122,253,4,239,255,248,139,129,252,248,239,15,130,244,60,129,
-  122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,237,252,233,244,87,
+  255,248,140,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,61,129,
+  122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,
-  255,248,140,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,60,129,
-  122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,87,
+  255,248,141,129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,61,129,
+  122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,
-  248,141,129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,2,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,252,233,244,87,255,
+  248,142,129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,248,
-  124,184,237,252,233,244,60,248,126,184,237,248,60,139,108,36,24,139,90,252,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,205,252,233,244,87,248,
+  125,184,237,252,233,244,61,248,127,184,237,248,61,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,75,248,1,255,139,141,233,41,209,193,252,233,3,133,
-  192,141,65,1,139,106,252,248,15,133,244,248,139,157,233,139,11,15,182,252,
-  233,15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209,252,247,195,
+  233,133,192,15,143,244,76,248,1,255,139,141,233,41,209,193,252,233,3,133,
+  192,141,65,1,139,106,252,248,15,133,244,32,139,157,233,139,11,15,182,252,
+  233,15,182,205,131,195,4,65,252,255,36,252,238,248,32,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,72,93,72,
+  237,137,252,239,232,251,1,0,139,149,233,49,192,252,233,244,1,248,73,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,142,255,65,15,182,134,233,168,235,
+  3,131,192,1,72,139,108,36,8,85,195,248,143,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,143,65,15,182,134,233,168,235,15,133,244,251,
-  252,233,244,247,248,144,65,15,182,134,233,168,235,15,133,244,251,168,235,
+  233,252,233,244,247,255,248,144,65,15,182,134,233,168,235,15,133,244,251,
+  252,233,244,247,248,145,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,145,131,195,4,139,77,232,137,76,36,4,252,
-  233,244,4,248,146,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,
+  65,252,255,164,253,252,238,233,248,146,131,195,4,139,77,232,137,76,36,4,252,
+  233,244,4,248,147,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,147,137,92,36,28,255,248,
-  148,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,
+  137,92,36,28,232,251,1,24,252,233,244,3,255,248,148,137,92,36,28,255,248,
+  149,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,149,255,65,
+  137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,150,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,
@@ -390,30 +391,30 @@ static const unsigned char build_actionlist[15992] = {
   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,150,255,72,131,196,16,248,1,76,139,108,36,
+  153,233,252,233,244,247,255,248,151,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,88,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,
+  232,251,1,1,255,248,89,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,151,72,184,237,237,102,72,15,110,208,72,
+  108,36,4,139,68,36,8,195,255,248,152,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,90,255,217,124,36,4,137,68,36,8,102,184,
+  15,92,200,15,40,193,248,1,195,248,91,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,152,72,184,237,237,102,72,15,
+  252,252,217,108,36,4,139,68,36,8,195,255,248,153,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,111,255,217,124,36,4,137,68,
+  194,252,242,15,92,200,15,40,193,248,1,195,248,112,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,153,72,184,237,237,102,72,15,110,208,
+  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,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,154,255,15,40,232,252,242,
+  15,92,200,102,15,86,202,15,40,193,248,1,195,248,155,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,
@@ -421,12 +422,12 @@ static const unsigned char build_actionlist[15992] = {
   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,95,217,252,234,222,201,248,155,217,84,
+  36,4,222,201,222,252,233,195,255,248,96,217,252,234,222,201,248,156,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,156,217,192,217,252,252,220,252,233,217,
+  0,0,128,252,255,15,132,244,248,248,157,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,114,255,248,157,252,242,15,45,193,252,242,15,42,208,
-  102,15,46,202,15,133,244,254,15,138,244,255,248,158,131,252,248,1,15,142,
+  217,252,238,195,255,248,115,255,248,158,252,242,15,45,193,252,242,15,42,208,
+  102,15,46,202,15,133,244,254,15,138,244,255,248,159,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,
@@ -444,27 +445,27 @@ static const unsigned char build_actionlist[15992] = {
   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,159,255,131,252,255,1,15,130,244,88,15,132,244,90,131,252,255,3,15,130,
-  244,111,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,
+  248,160,255,131,252,255,1,15,130,244,89,15,132,244,91,131,252,255,3,15,130,
+  244,112,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,
-  95,252,233,244,253,248,1,232,244,155,255,252,233,244,253,248,2,131,252,255,
+  96,252,233,244,253,248,1,232,244,156,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,88,15,132,244,90,131,252,255,3,15,130,
-  244,111,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,95,
-  15,132,244,155,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,
+  221,68,36,4,131,252,255,1,15,130,244,89,15,132,244,91,131,252,255,3,15,130,
+  244,112,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,96,
+  15,132,244,156,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,160,255,131,
+  252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,161,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,154,
-  15,132,244,114,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,
+  89,193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,155,
+  15,132,244,115,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,
@@ -474,14 +475,14 @@ static const unsigned char build_actionlist[15992] = {
   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,154,15,132,244,114,131,252,248,7,15,132,244,247,15,135,
+  252,248,5,15,130,244,155,15,132,244,115,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,
-  161,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,162,
+  162,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,163,
   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,
@@ -489,17 +490,17 @@ static const unsigned char build_actionlist[15992] = {
   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,248,163,255,249,255,
+  147,233,15,41,139,233,255,72,139,93,252,248,201,195,255,248,164,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,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,42,129,124,253,194,4,239,15,130,244,247,15,133,
-  244,42,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,42,255,252,242,15,42,12,202,252,242,15,16,
+  36,252,238,248,7,15,135,244,43,129,124,253,194,4,239,15,130,244,247,15,133,
+  244,43,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,43,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,42,129,124,253,194,4,239,15,131,244,42,255,
+  129,124,253,202,4,239,15,131,244,43,129,124,253,194,4,239,15,131,244,43,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,134,244,247,255,15,135,244,247,255,15,130,244,
@@ -517,11 +518,11 @@ static const unsigned char build_actionlist[15992] = {
   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,47,129,124,253,202,4,239,15,132,244,47,255,57,108,202,
+  253,239,15,132,244,48,129,124,253,202,4,239,15,132,244,48,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,46,255,248,3,129,252,253,239,255,15,133,244,9,255,252,233,244,47,
+  233,244,47,255,248,3,129,252,253,239,255,15,133,244,9,255,252,233,244,48,
   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,
@@ -534,7 +535,7 @@ static const unsigned char build_actionlist[15992] = {
   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,47,255,15,132,244,248,129,252,253,239,15,132,244,47,15,
+  244,2,252,233,244,48,255,15,132,244,248,129,252,253,239,15,132,244,48,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,
@@ -544,40 +545,40 @@ static const unsigned char build_actionlist[15992] = {
   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,52,255,129,124,253,194,4,239,15,131,244,52,
+  252,233,244,9,248,5,15,135,244,53,255,129,124,253,194,4,239,15,131,244,53,
   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,55,139,60,194,137,
+  252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,56,139,60,194,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,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,
-  15,133,244,49,65,129,124,253,199,4,239,15,133,244,49,139,44,252,234,65,3,
-  44,199,15,128,244,48,255,129,124,253,252,234,4,239,15,133,244,51,65,129,124,
-  253,199,4,239,15,133,244,51,65,139,4,199,3,4,252,234,15,128,244,50,255,129,
-  124,253,252,234,4,239,15,133,244,54,129,124,253,194,4,239,15,133,244,54,139,
-  44,252,234,3,44,194,15,128,244,53,255,199,68,202,4,237,255,129,124,253,252,
-  234,4,239,15,131,244,49,255,65,129,124,253,199,4,239,15,131,244,49,255,252,
+  15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65,3,
+  44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129,124,
+  253,199,4,239,15,133,244,52,65,139,4,199,3,4,252,234,15,128,244,51,255,129,
+  124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,
+  44,252,234,3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,
+  234,4,239,15,131,244,50,255,65,129,124,253,199,4,239,15,131,244,50,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,51,255,65,129,124,253,199,4,239,
-  15,131,244,51,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,54,129,124,253,
-  194,4,239,15,131,244,54,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,49,65,129,
-  124,253,199,4,239,15,133,244,49,139,44,252,234,65,43,44,199,15,128,244,48,
-  255,129,124,253,252,234,4,239,15,133,244,51,65,129,124,253,199,4,239,15,133,
-  244,51,65,139,4,199,43,4,252,234,15,128,244,50,255,129,124,253,252,234,4,
-  239,15,133,244,54,129,124,253,194,4,239,15,133,244,54,139,44,252,234,43,44,
-  194,15,128,244,53,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,
+  255,129,124,253,252,234,4,239,15,131,244,52,255,65,129,124,253,199,4,239,
+  15,131,244,52,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,55,129,124,253,
+  194,4,239,15,131,244,55,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,50,65,129,
+  124,253,199,4,239,15,133,244,50,139,44,252,234,65,43,44,199,15,128,244,49,
+  255,129,124,253,252,234,4,239,15,133,244,52,65,129,124,253,199,4,239,15,133,
+  244,52,65,139,4,199,43,4,252,234,15,128,244,51,255,129,124,253,252,234,4,
+  239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234,43,44,
+  194,15,128,244,54,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,49,65,129,124,253,199,4,239,15,133,244,49,139,44,252,234,65,15,175,44,
-  199,15,128,244,48,255,129,124,253,252,234,4,239,15,133,244,51,65,129,124,
-  253,199,4,239,15,133,244,51,65,139,4,199,15,175,4,252,234,15,128,244,50,255,
-  129,124,253,252,234,4,239,15,133,244,54,129,124,253,194,4,239,15,133,244,
-  54,139,44,252,234,15,175,44,194,15,128,244,53,255,252,242,15,16,4,252,234,
+  244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65,15,175,44,
+  199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129,124,
+  253,199,4,239,15,133,244,52,65,139,4,199,15,175,4,252,234,15,128,244,51,255,
+  129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,
+  55,139,44,252,234,15,175,44,194,15,128,244,54,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,
@@ -587,10 +588,10 @@ static const unsigned char build_actionlist[15992] = {
   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,164,232,244,154,255,252,233,244,
-  164,255,232,244,114,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233,
-  141,52,194,137,194,41,252,234,248,34,137,252,253,137,92,36,28,232,251,1,27,
-  139,149,233,133,192,15,133,244,43,15,182,107,252,255,15,182,75,252,253,72,
+  12,194,255,221,4,252,234,221,4,194,255,248,165,232,244,155,255,252,233,244,
+  165,255,232,244,115,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233,
+  141,52,194,137,194,41,252,234,248,35,137,252,253,137,92,36,28,232,251,1,27,
+  139,149,233,133,192,15,133,244,44,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,
@@ -633,56 +634,56 @@ static const unsigned char build_actionlist[15992] = {
   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,32,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,165,255,72,252,247,208,139,106,252,248,139,173,
-  233,65,139,4,135,252,233,244,166,255,15,182,252,236,15,182,192,129,124,253,
-  252,234,4,239,15,133,244,37,139,44,252,234,255,129,124,253,194,4,239,15,133,
+  233,65,139,4,135,252,233,244,166,255,72,252,247,208,139,106,252,248,139,173,
+  233,65,139,4,135,252,233,244,167,255,15,182,252,236,15,182,192,129,124,253,
+  252,234,4,239,15,133,244,38,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,
-  37,255,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4,239,15,
+  38,255,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,37,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,37,
-  139,4,194,252,233,244,165,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,35,139,44,252,234,248,165,
+  139,141,233,252,246,129,233,235,15,132,244,38,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,38,
+  139,4,194,252,233,244,166,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,36,139,44,252,234,248,166,
   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,
-  35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,
-  139,44,252,234,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
+  36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,37,
+  139,44,252,234,59,133,233,15,131,244,37,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,36,255,15,182,75,252,253,
+  244,249,139,141,233,252,246,129,233,235,15,132,244,37,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,40,139,44,252,234,255,15,133,244,40,255,59,133,
-  233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
+  253,252,234,4,239,15,133,244,41,139,44,252,234,255,15,133,244,41,255,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,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,40,
-  15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,40,
-  139,4,194,252,233,244,166,248,7,128,165,233,235,65,139,142,233,65,137,174,
+  189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,41,
+  15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,41,
+  139,4,194,252,233,244,167,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,38,139,
-  44,252,234,248,166,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,
+  192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139,
+  44,252,234,248,167,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,38,139,12,36,252,233,244,
+  12,36,139,141,233,252,246,129,233,235,15,132,244,39,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,38,248,6,137,4,36,199,68,36,4,237,137,
+  252,252,246,129,233,235,15,132,244,39,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,34,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,39,139,
-  44,252,234,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,
+  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,
+  44,252,234,59,133,233,15,131,244,40,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,39,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139,
+  15,132,244,40,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,
@@ -692,10 +693,10 @@ static const unsigned char build_actionlist[15992] = {
   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,35,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,56,141,84,202,8,
+  3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,57,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,57,139,90,252,252,252,247,195,237,15,133,244,
+  252,252,239,15,133,244,29,248,58,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,
@@ -743,19 +744,19 @@ static const unsigned char build_actionlist[15992] = {
   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,131,172,253,46,233,
-  1,15,132,244,146,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,
-  129,121,253,12,239,15,133,244,58,129,121,253,20,239,15,133,244,58,139,41,
-  131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,163,129,121,
-  253,20,239,15,133,244,163,255,139,105,16,133,252,237,15,136,244,251,3,41,
+  1,15,132,244,147,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,
+  129,121,253,12,239,15,133,244,59,129,121,253,20,239,15,133,244,59,139,41,
+  131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,164,129,121,
+  253,20,239,15,133,244,164,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,58,129,121,253,12,239,15,131,244,58,
-  255,129,121,253,12,239,15,131,244,163,129,121,253,20,239,15,131,244,163,255,
-  139,105,20,255,129,252,253,239,15,131,244,58,255,252,242,15,16,1,252,242,
+  9,255,129,121,253,4,239,255,15,131,244,59,129,121,253,12,239,15,131,244,59,
+  255,129,121,253,12,239,15,131,244,164,129,121,253,20,239,15,131,244,164,255,
+  139,105,20,255,129,252,253,239,15,131,244,59,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,
@@ -769,7 +770,7 @@ static const unsigned char build_actionlist[15992] = {
   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,131,172,253,46,233,1,15,
-  132,244,148,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,135,
+  132,244,149,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,
@@ -809,6 +810,7 @@ enum {
   GLOB_vmeta_call,
   GLOB_vm_call_dispatch_f,
   GLOB_vm_cpcall,
+  GLOB_vm_call_tail,
   GLOB_cont_cat,
   GLOB_cont_ra,
   GLOB_BC_CAT_Z,
@@ -969,6 +971,7 @@ static const char *const globnames[] = {
   "vmeta_call",
   "vm_call_dispatch_f",
   "vm_cpcall",
+  "vm_call_tail",
   "cont_cat",
   "cont_ra",
   "BC_CAT_Z",
@@ -1173,671 +1176,672 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   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, 0);
-  dasm_put(Dst, 817, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 648, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
+  dasm_put(Dst, 819, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 944);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 935, LJ_TISNUM);
+    dasm_put(Dst, 958, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 944);
+    dasm_put(Dst, 967);
   } else {
   }
-  dasm_put(Dst, 956, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
-  dasm_put(Dst, 1102, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 979, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+  dasm_put(Dst, 1125, DISPATCH_GL(tmptv), LJ_TTAB);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 935, LJ_TISNUM);
+    dasm_put(Dst, 958, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 944);
+    dasm_put(Dst, 967);
   } else {
   }
-  dasm_put(Dst, 1126, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 1298, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
-  dasm_put(Dst, 1397);
+  dasm_put(Dst, 1149, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 1321, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+  dasm_put(Dst, 1420);
 #if LJ_HASFFI
-  dasm_put(Dst, 1417, Dt1(->base));
+  dasm_put(Dst, 1440, Dt1(->base));
 #endif
-  dasm_put(Dst, 1448);
+  dasm_put(Dst, 1471);
 #if LJ_DUALNUM
-  dasm_put(Dst, 1451);
+  dasm_put(Dst, 1474);
 #endif
-  dasm_put(Dst, 1457);
+  dasm_put(Dst, 1480);
 #if LJ_DUALNUM
-  dasm_put(Dst, 929);
+  dasm_put(Dst, 952);
 #endif
-  dasm_put(Dst, 1470);
+  dasm_put(Dst, 1493);
 #if LJ_DUALNUM
-  dasm_put(Dst, 1451);
+  dasm_put(Dst, 1474);
 #endif
-  dasm_put(Dst, 1499, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 1631, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
-  dasm_put(Dst, 1815, 1+1, ~LJ_TNUMX);
+  dasm_put(Dst, 1522, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 1654, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+  dasm_put(Dst, 1838, 1+1, ~LJ_TNUMX);
   if (cmov) {
-  dasm_put(Dst, 1860);
+  dasm_put(Dst, 1883);
   } else {
-  dasm_put(Dst, 1864);
+  dasm_put(Dst, 1887);
   }
-  dasm_put(Dst, 1873, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
-  dasm_put(Dst, 1952, 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, 2010, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
-  dasm_put(Dst, 2076, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
-  dasm_put(Dst, 2147, 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, 2237, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 1896, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
+  dasm_put(Dst, 1975, 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, 2033, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
+  dasm_put(Dst, 2099, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
+  dasm_put(Dst, 2170, 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, 2260, 1+1, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2251);
+    dasm_put(Dst, 2274);
   } else {
-    dasm_put(Dst, 2268);
+    dasm_put(Dst, 2291);
   }
   if (sse) {
-    dasm_put(Dst, 2273);
+    dasm_put(Dst, 2296);
   } else {
-    dasm_put(Dst, 2283);
+    dasm_put(Dst, 2306);
   }
-  dasm_put(Dst, 2290, 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, 2359, Dt1(->base));
+  dasm_put(Dst, 2313, 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, 2382, Dt1(->base));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2385);
+    dasm_put(Dst, 2408);
   } else {
-    dasm_put(Dst, 2390);
+    dasm_put(Dst, 2413);
   }
-  dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
-  dasm_put(Dst, 2487, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2418, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
+  dasm_put(Dst, 2510, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2534, Dt6(->metatable));
+  dasm_put(Dst, 2557, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2543, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+  dasm_put(Dst, 2566, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2529);
+    dasm_put(Dst, 2552);
   } else {
-    dasm_put(Dst, 2268);
+    dasm_put(Dst, 2291);
   }
-  dasm_put(Dst, 2598);
+  dasm_put(Dst, 2621);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2603, LJ_TISNUM);
+    dasm_put(Dst, 2626, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 2619, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 2642, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 2652, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
-  dasm_put(Dst, 2514, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2675, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+  dasm_put(Dst, 2537, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2534, Dt6(->metatable));
+  dasm_put(Dst, 2557, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2729, Dt8(->upvalue[0]), LJ_TFUNC);
+  dasm_put(Dst, 2752, Dt8(->upvalue[0]), LJ_TFUNC);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2750, LJ_TISNUM);
+    dasm_put(Dst, 2773, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 2762);
-  } else {
-    dasm_put(Dst, 2772);
-  }
-  dasm_put(Dst, 2779, 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, 2933, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
-  dasm_put(Dst, 3020, 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, 3230, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
-  dasm_put(Dst, 3296, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
-  dasm_put(Dst, 3385, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
-  dasm_put(Dst, 3495, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+    dasm_put(Dst, 2785);
+  } else {
+    dasm_put(Dst, 2795);
+  }
+  dasm_put(Dst, 2802, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+  dasm_put(Dst, 2867, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+  dasm_put(Dst, 2956, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+  dasm_put(Dst, 3043, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+  dasm_put(Dst, 3158, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+  dasm_put(Dst, 3253, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 3319, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+  dasm_put(Dst, 3408, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+  dasm_put(Dst, 3518, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
   if (!LJ_DUALNUM) {
-    dasm_put(Dst, 3522);
+    dasm_put(Dst, 3545);
   }
   if (sse) {
-    dasm_put(Dst, 3525);
+    dasm_put(Dst, 3548);
   }
-  dasm_put(Dst, 3540, 1+1);
+  dasm_put(Dst, 3563, 1+1);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 3551, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 3574, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3631, LJ_TISNUM);
+    dasm_put(Dst, 3654, LJ_TISNUM);
   }
   if (sse) {
-    dasm_put(Dst, 3641, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 3664, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 3672);
+    dasm_put(Dst, 3695);
   }
-  dasm_put(Dst, 3689, 1+1, FRAME_TYPE, LJ_TNIL);
+  dasm_put(Dst, 3712, 1+1, FRAME_TYPE, LJ_TNIL);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 3786, LJ_TISNUM);
+  dasm_put(Dst, 3809, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 3631, LJ_TISNUM);
+  dasm_put(Dst, 3654, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 3808);
+  dasm_put(Dst, 3831);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3817);
+  dasm_put(Dst, 3840);
     }
-  dasm_put(Dst, 2278);
+  dasm_put(Dst, 2301);
   } else {
-  dasm_put(Dst, 3851);
+  dasm_put(Dst, 3874);
     if (LJ_DUALNUM) {
     } else {
-  dasm_put(Dst, 2285);
+  dasm_put(Dst, 2308);
     }
   }
-  dasm_put(Dst, 3857);
+  dasm_put(Dst, 3880);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 3786, LJ_TISNUM);
+  dasm_put(Dst, 3809, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 3631, LJ_TISNUM);
+  dasm_put(Dst, 3654, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 3860);
+  dasm_put(Dst, 3883);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3817);
+  dasm_put(Dst, 3840);
     }
-  dasm_put(Dst, 2278);
+  dasm_put(Dst, 2301);
   } else {
-  dasm_put(Dst, 3869);
+  dasm_put(Dst, 3892);
     if (LJ_DUALNUM) {
     } else {
-  dasm_put(Dst, 2285);
+  dasm_put(Dst, 2308);
     }
   }
   if (sse) {
-    dasm_put(Dst, 3875, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3898, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3904, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3927, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3933, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4002, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4059, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4122, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 4212);
+  dasm_put(Dst, 3956, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4025, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4082, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4145, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4235);
   if (sse) {
-  dasm_put(Dst, 4224, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4247, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4249);
+  dasm_put(Dst, 4272);
   if (sse) {
-  dasm_put(Dst, 4263, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4286, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4288);
+  dasm_put(Dst, 4311);
   if (sse) {
-  dasm_put(Dst, 4302, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4325, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4327);
+  dasm_put(Dst, 4350);
   if (sse) {
-    dasm_put(Dst, 4343, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4366, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   } else {
-    dasm_put(Dst, 4382, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4405, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   }
-  dasm_put(Dst, 4415, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
-  dasm_put(Dst, 4480, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4438, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4503, 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4579);
+    dasm_put(Dst, 4602);
   } else {
-    dasm_put(Dst, 4585);
+    dasm_put(Dst, 4608);
   }
-  dasm_put(Dst, 4592);
+  dasm_put(Dst, 4615);
   if (sse) {
-    dasm_put(Dst, 4617);
+    dasm_put(Dst, 4640);
   } else {
-    dasm_put(Dst, 4623);
+    dasm_put(Dst, 4646);
   }
-  dasm_put(Dst, 4626, 1+2);
+  dasm_put(Dst, 4649, 1+2);
   if (sse) {
-    dasm_put(Dst, 4635);
+    dasm_put(Dst, 4658);
   } else {
-    dasm_put(Dst, 4643);
+    dasm_put(Dst, 4666);
   }
-  dasm_put(Dst, 4651);
+  dasm_put(Dst, 4674);
   if (sse) {
-    dasm_put(Dst, 4654, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+    dasm_put(Dst, 4677, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
   } else {
-    dasm_put(Dst, 4681);
+    dasm_put(Dst, 4704);
   }
-  dasm_put(Dst, 4698);
+  dasm_put(Dst, 4721);
   if (sse) {
-    dasm_put(Dst, 4714, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4737, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4739, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4762, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4761);
+  dasm_put(Dst, 4784);
   if (sse) {
-    dasm_put(Dst, 4783);
+    dasm_put(Dst, 4806);
   } else {
-    dasm_put(Dst, 4809);
+    dasm_put(Dst, 4832);
   }
-  dasm_put(Dst, 4826, 1+2);
+  dasm_put(Dst, 4849, 1+2);
   if (sse) {
-    dasm_put(Dst, 4866);
+    dasm_put(Dst, 4889);
   } else {
-    dasm_put(Dst, 4874);
+    dasm_put(Dst, 4897);
   }
-  dasm_put(Dst, 4884, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4907, 2+1, LJ_TISNUM, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4936, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4959, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4983, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 5006, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 5024, LJ_TISNUM);
+  dasm_put(Dst, 5047, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5037, LJ_TISNUM);
+  dasm_put(Dst, 5060, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 4579);
+  dasm_put(Dst, 4602);
   } else {
   }
-  dasm_put(Dst, 5087);
+  dasm_put(Dst, 5110);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 5098, LJ_TISNUM);
+  dasm_put(Dst, 5121, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5119);
+  dasm_put(Dst, 5142);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
-  dasm_put(Dst, 5140);
+  dasm_put(Dst, 5163);
   } else {
   }
-  dasm_put(Dst, 5165, LJ_TISNUM);
+  dasm_put(Dst, 5188, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5178, LJ_TISNUM);
+  dasm_put(Dst, 5201, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 4579);
+  dasm_put(Dst, 4602);
   } else {
   }
-  dasm_put(Dst, 5087);
+  dasm_put(Dst, 5110);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 5098, LJ_TISNUM);
+  dasm_put(Dst, 5121, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5119);
+  dasm_put(Dst, 5142);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
-  dasm_put(Dst, 5228);
+  dasm_put(Dst, 5251);
   } else {
   }
   if (!sse) {
-    dasm_put(Dst, 5253);
+    dasm_put(Dst, 5276);
   }
-  dasm_put(Dst, 5262, 1+1, LJ_TSTR);
+  dasm_put(Dst, 5285, 1+1, LJ_TSTR);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5284, Dt5(->len));
+    dasm_put(Dst, 5307, Dt5(->len));
   } else if (sse) {
-    dasm_put(Dst, 5292, Dt5(->len));
+    dasm_put(Dst, 5315, Dt5(->len));
   } else {
-    dasm_put(Dst, 5303, Dt5(->len));
+    dasm_put(Dst, 5326, Dt5(->len));
   }
-  dasm_put(Dst, 5311, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+  dasm_put(Dst, 5334, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5287);
+    dasm_put(Dst, 5310);
   } else if (sse) {
-    dasm_put(Dst, 5349);
+    dasm_put(Dst, 5372);
   } else {
-    dasm_put(Dst, 5359);
+    dasm_put(Dst, 5382);
   }
-  dasm_put(Dst, 5370, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+  dasm_put(Dst, 5393, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5403);
-  } else if (sse) {
     dasm_put(Dst, 5426);
+  } else if (sse) {
+    dasm_put(Dst, 5449);
   } else {
-    dasm_put(Dst, 5452);
+    dasm_put(Dst, 5475);
   }
-  dasm_put(Dst, 5476, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+  dasm_put(Dst, 5499, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5585);
+    dasm_put(Dst, 5608);
   } else if (sse) {
-    dasm_put(Dst, 5597);
+    dasm_put(Dst, 5620);
   } else {
-    dasm_put(Dst, 5612);
+    dasm_put(Dst, 5635);
   }
-  dasm_put(Dst, 5624, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5647, LJ_TSTR, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2529);
+    dasm_put(Dst, 2552);
   } else {
-    dasm_put(Dst, 2268);
+    dasm_put(Dst, 2291);
   }
-  dasm_put(Dst, 5641, Dt5(->len));
+  dasm_put(Dst, 5664, Dt5(->len));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5651);
+    dasm_put(Dst, 5674);
   } else if (sse) {
-    dasm_put(Dst, 5655);
+    dasm_put(Dst, 5678);
   } else {
   }
-  dasm_put(Dst, 5662, sizeof(GCstr)-1);
-  dasm_put(Dst, 5737, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 5798, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5685, sizeof(GCstr)-1);
+  dasm_put(Dst, 5760, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 5821, LJ_TSTR, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5815);
+    dasm_put(Dst, 5838);
   } else if (sse) {
-    dasm_put(Dst, 5823);
+    dasm_put(Dst, 5846);
   } else {
-    dasm_put(Dst, 5834);
+    dasm_put(Dst, 5857);
   }
-  dasm_put(Dst, 5850, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 5918, 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, 5985, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
-  dasm_put(Dst, 6058, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 6143, 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, 6217, 1+1, LJ_TTAB);
+  dasm_put(Dst, 5873, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 5941, 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, 6008, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+  dasm_put(Dst, 6081, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 6166, 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, 6240, 1+1, LJ_TTAB);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 6284);
+    dasm_put(Dst, 6307);
   } else if (sse) {
-    dasm_put(Dst, 6291);
+    dasm_put(Dst, 6314);
   } else {
   }
-  dasm_put(Dst, 6301, LJ_TISNUM);
+  dasm_put(Dst, 6324, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6309);
+  dasm_put(Dst, 6332);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (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, 6350);
+    dasm_put(Dst, 6373);
   } else {
   }
-  dasm_put(Dst, 6355);
+  dasm_put(Dst, 6378);
   if (sse) {
-  dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6381, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
-  dasm_put(Dst, 6368);
+  dasm_put(Dst, 6391);
   }
-  dasm_put(Dst, 2245, LJ_TISNUM);
+  dasm_put(Dst, 2268, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6393);
+  dasm_put(Dst, 6416);
   } else {
   }
-  dasm_put(Dst, 6408, LJ_TISNUM);
+  dasm_put(Dst, 6431, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6433);
+  dasm_put(Dst, 6456);
   } else {
-  dasm_put(Dst, 6453);
+  dasm_put(Dst, 6476);
   }
   if (sse) {
-  dasm_put(Dst, 6458);
+  dasm_put(Dst, 6481);
   } else {
   }
-  dasm_put(Dst, 6475);
+  dasm_put(Dst, 6498);
   if (sse) {
-  dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6381, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
-  dasm_put(Dst, 6368);
+  dasm_put(Dst, 6391);
   }
-  dasm_put(Dst, 2245, LJ_TISNUM);
+  dasm_put(Dst, 2268, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6393);
+  dasm_put(Dst, 6416);
   } else {
   }
-  dasm_put(Dst, 6408, LJ_TISNUM);
+  dasm_put(Dst, 6431, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6485);
+  dasm_put(Dst, 6508);
   } else {
-  dasm_put(Dst, 6453);
+  dasm_put(Dst, 6476);
   }
   if (sse) {
-  dasm_put(Dst, 6505);
+  dasm_put(Dst, 6528);
   } else {
   }
-  dasm_put(Dst, 6522);
+  dasm_put(Dst, 6545);
   if (sse) {
-  dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6381, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
-  dasm_put(Dst, 6368);
+  dasm_put(Dst, 6391);
   }
-  dasm_put(Dst, 2245, LJ_TISNUM);
+  dasm_put(Dst, 2268, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6393);
+  dasm_put(Dst, 6416);
   } else {
   }
-  dasm_put(Dst, 6408, LJ_TISNUM);
+  dasm_put(Dst, 6431, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6532);
+  dasm_put(Dst, 6555);
   } else {
-  dasm_put(Dst, 6453);
+  dasm_put(Dst, 6476);
   }
   if (sse) {
-  dasm_put(Dst, 6552);
+  dasm_put(Dst, 6575);
   } else {
   }
-  dasm_put(Dst, 6569, LJ_TISNUM);
+  dasm_put(Dst, 6592, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6584, LJ_TISNUM);
+  dasm_put(Dst, 6607, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6600);
+  dasm_put(Dst, 6623);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 6350);
+    dasm_put(Dst, 6373);
   } else if (sse) {
-    dasm_put(Dst, 6606);
+    dasm_put(Dst, 6629);
   } else {
   }
-  dasm_put(Dst, 6618);
+  dasm_put(Dst, 6641);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6629, LJ_TISNUM);
+  dasm_put(Dst, 6652, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6637, LJ_TISNUM);
+  dasm_put(Dst, 6660, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6652, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6675, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6719);
+  dasm_put(Dst, 6742);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6726, LJ_TISNUM);
+  dasm_put(Dst, 6749, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6637, LJ_TISNUM);
+  dasm_put(Dst, 6660, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6734, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6757, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6801);
+  dasm_put(Dst, 6824);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6809, LJ_TISNUM);
+  dasm_put(Dst, 6832, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6637, LJ_TISNUM);
+  dasm_put(Dst, 6660, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6817, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6840, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6884);
+  dasm_put(Dst, 6907);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6892, LJ_TISNUM);
+  dasm_put(Dst, 6915, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6637, LJ_TISNUM);
+  dasm_put(Dst, 6660, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6900, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6923, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6967);
+  dasm_put(Dst, 6990);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6974, LJ_TISNUM);
+  dasm_put(Dst, 6997, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6376);
+  dasm_put(Dst, 6399);
   } else {
-  dasm_put(Dst, 2268);
+  dasm_put(Dst, 2291);
   }
   if (sse) {
-  dasm_put(Dst, 6326, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6349, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6637, LJ_TISNUM);
+  dasm_put(Dst, 6660, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6982, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 7005, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 7049, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
-  dasm_put(Dst, 7125, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 7252, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7072, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+  dasm_put(Dst, 7148, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 7275, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7291, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 7314, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 7324, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 7378, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 7347, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 7401, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 7445, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 7468, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 7492);
+  dasm_put(Dst, 7515);
 #if LJ_HASJIT
-  dasm_put(Dst, 7319);
+  dasm_put(Dst, 7342);
 #endif
-  dasm_put(Dst, 7499);
+  dasm_put(Dst, 7522);
 #if LJ_HASJIT
-  dasm_put(Dst, 7502);
+  dasm_put(Dst, 7525);
 #endif
-  dasm_put(Dst, 7512, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7535, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7545);
+  dasm_put(Dst, 7568);
 #endif
-  dasm_put(Dst, 7550, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7573, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7581, 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);
+  dasm_put(Dst, 7604, 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, 7820);
+  dasm_put(Dst, 7843);
 #if LJ_HASJIT
-  dasm_put(Dst, 7823, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 7846, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
 #endif
-  dasm_put(Dst, 7923);
+  dasm_put(Dst, 7946);
   if (!sse) {
-  dasm_put(Dst, 7926);
+  dasm_put(Dst, 7949);
   }
-  dasm_put(Dst, 7971, (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));
+  dasm_put(Dst, 7994, (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, 8057);
+  dasm_put(Dst, 8080);
   }
-  dasm_put(Dst, 8102, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+  dasm_put(Dst, 8125, (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, 8188);
+  dasm_put(Dst, 8211);
   }
-  dasm_put(Dst, 8227, (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));
+  dasm_put(Dst, 8250, (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, 8316, (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));
+    dasm_put(Dst, 8339, (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, 8430);
+    dasm_put(Dst, 8453);
   }
-  dasm_put(Dst, 8477);
+  dasm_put(Dst, 8500);
   if (!sse) {
   } else {
-    dasm_put(Dst, 8554);
+    dasm_put(Dst, 8577);
   }
-  dasm_put(Dst, 8557);
-  dasm_put(Dst, 8642, (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, 8745, (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, 8907);
+  dasm_put(Dst, 8580);
+  dasm_put(Dst, 8665, (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, 8768, (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, 8930);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 8948);
-    dasm_put(Dst, 9018);
-    dasm_put(Dst, 9090);
+    dasm_put(Dst, 8971);
+    dasm_put(Dst, 9041);
+    dasm_put(Dst, 9113);
   } else {
-    dasm_put(Dst, 9142);
-    dasm_put(Dst, 9234);
+    dasm_put(Dst, 9165);
+    dasm_put(Dst, 9257);
   }
-  dasm_put(Dst, 9280);
+  dasm_put(Dst, 9303);
 #endif
-  dasm_put(Dst, 9284);
+  dasm_put(Dst, 9307);
   if (sse) {
-    dasm_put(Dst, 9287, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
-    dasm_put(Dst, 9372, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 9310, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+    dasm_put(Dst, 9395, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 9500);
-    dasm_put(Dst, 9583);
+    dasm_put(Dst, 9523);
+    dasm_put(Dst, 9606);
     if (cmov) {
-    dasm_put(Dst, 9638);
+    dasm_put(Dst, 9661);
     } else {
-    dasm_put(Dst, 9657);
+    dasm_put(Dst, 9680);
     }
-    dasm_put(Dst, 9280);
+    dasm_put(Dst, 9303);
   }
-  dasm_put(Dst, 9698);
+  dasm_put(Dst, 9721);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 9722, DtE(->spadj));
+  dasm_put(Dst, 9745, DtE(->spadj));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9738, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1]));
-  dasm_put(Dst, 9817, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1]));
+  dasm_put(Dst, 9761, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1]));
+  dasm_put(Dst, 9840, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1]));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9872);
+  dasm_put(Dst, 9895);
 #endif
-  dasm_put(Dst, 9880);
+  dasm_put(Dst, 9903);
 #ifdef LUA_USE_ASSERT
-  dasm_put(Dst, 9282);
+  dasm_put(Dst, 9305);
 #endif
-  dasm_put(Dst, 9282);
+  dasm_put(Dst, 9305);
 }
 
 /* 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, 9883, defop);
+  dasm_put(Dst, 9906, defop);
 
   switch (op) {
 
@@ -1848,296 +1852,296 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 9885, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 9908, LJ_TISNUM, LJ_TISNUM);
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 9915);
+      dasm_put(Dst, 9938);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 9920);
+      dasm_put(Dst, 9943);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 9925);
+      dasm_put(Dst, 9948);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 9930);
+      dasm_put(Dst, 9953);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 9935, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 9958, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 9990);
+       dasm_put(Dst, 10013);
       } else {
-       dasm_put(Dst, 10001);
+       dasm_put(Dst, 10024);
       }
-      dasm_put(Dst, 10012);
+      dasm_put(Dst, 10035);
       if (sse) {
-       dasm_put(Dst, 10019);
+       dasm_put(Dst, 10042);
        switch (op) {
        case BC_ISLT:
-       dasm_put(Dst, 10039);
+       dasm_put(Dst, 10062);
        break;
        case BC_ISGE:
-       dasm_put(Dst, 10044);
+       dasm_put(Dst, 10067);
        break;
        case BC_ISLE:
-       dasm_put(Dst, 10049);
+       dasm_put(Dst, 10072);
        break;
        case BC_ISGT:
-       dasm_put(Dst, 10054);
+       dasm_put(Dst, 10077);
        break;
        default: break;  /* Shut up GCC. */
        }
-       dasm_put(Dst, 10059);
+       dasm_put(Dst, 10082);
       } else {
-       dasm_put(Dst, 10064);
+       dasm_put(Dst, 10087);
       }
     } else {
-      dasm_put(Dst, 10072, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10095, LJ_TISNUM, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 10093);
+      dasm_put(Dst, 10116);
     } else {
-      dasm_put(Dst, 10114);
+      dasm_put(Dst, 10137);
       if (cmov) {
-      dasm_put(Dst, 10130);
+      dasm_put(Dst, 10153);
       } else {
-      dasm_put(Dst, 10136);
+      dasm_put(Dst, 10159);
       }
     }
     if (LJ_DUALNUM) {
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 10039);
+      dasm_put(Dst, 10062);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 10044);
+      dasm_put(Dst, 10067);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 10049);
+      dasm_put(Dst, 10072);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 10054);
+      dasm_put(Dst, 10077);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 10059);
+      dasm_put(Dst, 10082);
     } else {
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 10143);
+      dasm_put(Dst, 10166);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 10148);
+      dasm_put(Dst, 10171);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 10153);
+      dasm_put(Dst, 10176);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 10158);
+      dasm_put(Dst, 10181);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 10163, -BCBIAS_J*4);
+      dasm_put(Dst, 10186, -BCBIAS_J*4);
     }
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 10196);
+    dasm_put(Dst, 10219);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10204, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10227, LJ_TISNUM, LJ_TISNUM);
       if (vk) {
-       dasm_put(Dst, 10229);
+       dasm_put(Dst, 10252);
       } else {
-       dasm_put(Dst, 10234);
+       dasm_put(Dst, 10257);
       }
-      dasm_put(Dst, 10239, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 10262, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 10292);
+       dasm_put(Dst, 10315);
       } else {
-       dasm_put(Dst, 10299);
+       dasm_put(Dst, 10322);
       }
-      dasm_put(Dst, 10303);
+      dasm_put(Dst, 10326);
       if (sse) {
-       dasm_put(Dst, 10314);
+       dasm_put(Dst, 10337);
       } else {
-       dasm_put(Dst, 10326);
+       dasm_put(Dst, 10349);
       }
-      dasm_put(Dst, 10333);
+      dasm_put(Dst, 10356);
     } else {
-      dasm_put(Dst, 10338, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10361, LJ_TISNUM, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 10357);
+      dasm_put(Dst, 10380);
     } else {
-      dasm_put(Dst, 10375);
+      dasm_put(Dst, 10398);
       if (cmov) {
-      dasm_put(Dst, 10130);
+      dasm_put(Dst, 10153);
       } else {
-      dasm_put(Dst, 10136);
+      dasm_put(Dst, 10159);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 10388);
+      dasm_put(Dst, 10411);
     } else {
-      dasm_put(Dst, 10397);
+      dasm_put(Dst, 10420);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 10406, -BCBIAS_J*4);
+      dasm_put(Dst, 10429, -BCBIAS_J*4);
       if (!LJ_HASFFI) {
-       dasm_put(Dst, 4632);
+       dasm_put(Dst, 4655);
       }
     } else {
       if (!LJ_HASFFI) {
-       dasm_put(Dst, 4632);
+       dasm_put(Dst, 4655);
       }
-      dasm_put(Dst, 10421, -BCBIAS_J*4);
+      dasm_put(Dst, 10444, -BCBIAS_J*4);
     }
     if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
                       op == BC_ISEQN || op == BC_ISNEN)) {
-      dasm_put(Dst, 10436);
+      dasm_put(Dst, 10459);
     } else {
-      dasm_put(Dst, 10175);
+      dasm_put(Dst, 10198);
     }
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 10441);
+      dasm_put(Dst, 10464);
       if (LJ_HASFFI) {
-       dasm_put(Dst, 10444, LJ_TCDATA, LJ_TCDATA);
+       dasm_put(Dst, 10467, LJ_TCDATA, LJ_TCDATA);
       }
-      dasm_put(Dst, 10463, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 10486, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-       dasm_put(Dst, 10519);
+       dasm_put(Dst, 10542);
       } else {
-       dasm_put(Dst, 10523);
+       dasm_put(Dst, 10546);
       }
-      dasm_put(Dst, 10529);
+      dasm_put(Dst, 10552);
     } else if (LJ_HASFFI) {
-      dasm_put(Dst, 10534, LJ_TCDATA);
+      dasm_put(Dst, 10557, LJ_TCDATA);
       if (LJ_DUALNUM && vk) {
-       dasm_put(Dst, 10541);
+       dasm_put(Dst, 10564);
       } else {
-       dasm_put(Dst, 10514);
+       dasm_put(Dst, 10537);
       }
-      dasm_put(Dst, 10546);
+      dasm_put(Dst, 10569);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 10551, LJ_TSTR);
+    dasm_put(Dst, 10574, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 10392);
+      dasm_put(Dst, 10415);
     } else {
-      dasm_put(Dst, 2928);
+      dasm_put(Dst, 814);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 10578);
+    dasm_put(Dst, 10601);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10586, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10609, LJ_TISNUM, LJ_TISNUM);
       if (vk) {
-       dasm_put(Dst, 10229);
+       dasm_put(Dst, 10252);
       } else {
-       dasm_put(Dst, 10234);
+       dasm_put(Dst, 10257);
       }
-      dasm_put(Dst, 10613, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 10636, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 10663);
+       dasm_put(Dst, 10686);
       } else {
-       dasm_put(Dst, 10671);
+       dasm_put(Dst, 10694);
       }
-      dasm_put(Dst, 10676);
+      dasm_put(Dst, 10699);
       if (sse) {
-       dasm_put(Dst, 10683);
+       dasm_put(Dst, 10706);
       } else {
-       dasm_put(Dst, 10696);
+       dasm_put(Dst, 10719);
       }
-      dasm_put(Dst, 10333);
+      dasm_put(Dst, 10356);
     } else {
-      dasm_put(Dst, 10704, LJ_TISNUM);
+      dasm_put(Dst, 10727, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 10713);
+      dasm_put(Dst, 10736);
     } else {
-      dasm_put(Dst, 10732);
+      dasm_put(Dst, 10755);
       if (cmov) {
-      dasm_put(Dst, 10130);
+      dasm_put(Dst, 10153);
       } else {
-      dasm_put(Dst, 10136);
+      dasm_put(Dst, 10159);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 10746);
+    dasm_put(Dst, 10769);
     if (!LJ_HASFFI) goto iseqne_test;
     if (vk) {
-      dasm_put(Dst, 10760, -BCBIAS_J*4, LJ_TCDATA);
+      dasm_put(Dst, 10783, -BCBIAS_J*4, LJ_TCDATA);
     } else {
-      dasm_put(Dst, 10811, LJ_TCDATA, -BCBIAS_J*4);
+      dasm_put(Dst, 10834, LJ_TCDATA, -BCBIAS_J*4);
     }
     break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 10856, LJ_TISTRUECOND);
+    dasm_put(Dst, 10879, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 10158);
+      dasm_put(Dst, 10181);
     } else {
-      dasm_put(Dst, 10153);
+      dasm_put(Dst, 10176);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 10868);
+      dasm_put(Dst, 10891);
     }
-    dasm_put(Dst, 10163, -BCBIAS_J*4);
+    dasm_put(Dst, 10186, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 10879);
+    dasm_put(Dst, 10902);
     break;
   case BC_NOT:
-    dasm_put(Dst, 10908, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 10931, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10945, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10968, LJ_TISNUM, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 11023, LJ_TISNUM);
+      dasm_put(Dst, 11046, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 11034, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 11057, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 11059);
+      dasm_put(Dst, 11082);
     }
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10436);
+      dasm_put(Dst, 10459);
     } else {
-      dasm_put(Dst, 10175);
+      dasm_put(Dst, 10198);
     }
     break;
   case BC_LEN:
-    dasm_put(Dst, 11068, LJ_TSTR);
+    dasm_put(Dst, 11091, LJ_TSTR);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11082, Dt5(->len), LJ_TISNUM);
+      dasm_put(Dst, 11105, Dt5(->len), LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 11096, Dt5(->len));
+      dasm_put(Dst, 11119, Dt5(->len));
     } else {
-      dasm_put(Dst, 11114, Dt5(->len));
+      dasm_put(Dst, 11137, Dt5(->len));
     }
-    dasm_put(Dst, 11123, LJ_TTAB);
+    dasm_put(Dst, 11146, LJ_TTAB);
     if (LJ_DUALNUM) {
     } else if (sse) {
-      dasm_put(Dst, 11165);
+      dasm_put(Dst, 11188);
     } else {
     }
-    dasm_put(Dst, 11171);
+    dasm_put(Dst, 11194);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
@@ -2145,605 +2149,605 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11192, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11215, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 11227, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11250, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 11262, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11285, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 11295, LJ_TISNUM);
+    dasm_put(Dst, 11318, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 11092);
+    dasm_put(Dst, 11115);
     } else {
-    dasm_put(Dst, 10875);
+    dasm_put(Dst, 10898);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     } else {
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11301, LJ_TISNUM);
+    dasm_put(Dst, 11324, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11313, LJ_TISNUM);
+    dasm_put(Dst, 11336, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11325);
+    dasm_put(Dst, 11348);
     } else {
-    dasm_put(Dst, 11340);
+    dasm_put(Dst, 11363);
     }
       break;
     case 1:
-    dasm_put(Dst, 11349, LJ_TISNUM);
+    dasm_put(Dst, 11372, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11361, LJ_TISNUM);
+    dasm_put(Dst, 11384, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11373);
+    dasm_put(Dst, 11396);
     } else {
-    dasm_put(Dst, 11388);
+    dasm_put(Dst, 11411);
     }
       break;
     default:
-    dasm_put(Dst, 11397, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11420, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11419);
+    dasm_put(Dst, 11442);
     } else {
-    dasm_put(Dst, 11433);
+    dasm_put(Dst, 11456);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11052);
+    dasm_put(Dst, 11075);
     } else {
-    dasm_put(Dst, 11064);
+    dasm_put(Dst, 11087);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     }
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11441, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 11476, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11499, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 11511, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11534, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 11295, LJ_TISNUM);
+    dasm_put(Dst, 11318, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 11092);
+    dasm_put(Dst, 11115);
     } else {
-    dasm_put(Dst, 10875);
+    dasm_put(Dst, 10898);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     } else {
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11301, LJ_TISNUM);
+    dasm_put(Dst, 11324, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11313, LJ_TISNUM);
+    dasm_put(Dst, 11336, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11544);
+    dasm_put(Dst, 11567);
     } else {
-    dasm_put(Dst, 11559);
+    dasm_put(Dst, 11582);
     }
       break;
     case 1:
-    dasm_put(Dst, 11349, LJ_TISNUM);
+    dasm_put(Dst, 11372, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11361, LJ_TISNUM);
+    dasm_put(Dst, 11384, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11568);
+    dasm_put(Dst, 11591);
     } else {
-    dasm_put(Dst, 11583);
+    dasm_put(Dst, 11606);
     }
       break;
     default:
-    dasm_put(Dst, 11397, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11420, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11592);
+    dasm_put(Dst, 11615);
     } else {
-    dasm_put(Dst, 11606);
+    dasm_put(Dst, 11629);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11052);
+    dasm_put(Dst, 11075);
     } else {
-    dasm_put(Dst, 11064);
+    dasm_put(Dst, 11087);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     }
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11614, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11637, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 11650, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11673, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 11686, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11709, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 11295, LJ_TISNUM);
+    dasm_put(Dst, 11318, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 11092);
+    dasm_put(Dst, 11115);
     } else {
-    dasm_put(Dst, 10875);
+    dasm_put(Dst, 10898);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     } else {
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11301, LJ_TISNUM);
+    dasm_put(Dst, 11324, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11313, LJ_TISNUM);
+    dasm_put(Dst, 11336, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11720);
+    dasm_put(Dst, 11743);
     } else {
-    dasm_put(Dst, 11735);
+    dasm_put(Dst, 11758);
     }
       break;
     case 1:
-    dasm_put(Dst, 11349, LJ_TISNUM);
+    dasm_put(Dst, 11372, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11361, LJ_TISNUM);
+    dasm_put(Dst, 11384, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11744);
+    dasm_put(Dst, 11767);
     } else {
-    dasm_put(Dst, 11759);
+    dasm_put(Dst, 11782);
     }
       break;
     default:
-    dasm_put(Dst, 11397, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11420, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11768);
+    dasm_put(Dst, 11791);
     } else {
-    dasm_put(Dst, 11782);
+    dasm_put(Dst, 11805);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11052);
+    dasm_put(Dst, 11075);
     } else {
-    dasm_put(Dst, 11064);
+    dasm_put(Dst, 11087);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     }
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11301, LJ_TISNUM);
+    dasm_put(Dst, 11324, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11313, LJ_TISNUM);
+    dasm_put(Dst, 11336, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11790);
+    dasm_put(Dst, 11813);
     } else {
-    dasm_put(Dst, 11805);
+    dasm_put(Dst, 11828);
     }
       break;
     case 1:
-    dasm_put(Dst, 11349, LJ_TISNUM);
+    dasm_put(Dst, 11372, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11361, LJ_TISNUM);
+    dasm_put(Dst, 11384, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11814);
+    dasm_put(Dst, 11837);
     } else {
-    dasm_put(Dst, 11829);
+    dasm_put(Dst, 11852);
     }
       break;
     default:
-    dasm_put(Dst, 11397, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11420, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11838);
+    dasm_put(Dst, 11861);
     } else {
-    dasm_put(Dst, 11852);
+    dasm_put(Dst, 11875);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11052);
+    dasm_put(Dst, 11075);
     } else {
-    dasm_put(Dst, 11064);
+    dasm_put(Dst, 11087);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11301, LJ_TISNUM);
+    dasm_put(Dst, 11324, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11313, LJ_TISNUM);
+    dasm_put(Dst, 11336, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11860);
+    dasm_put(Dst, 11883);
     } else {
-    dasm_put(Dst, 11875);
+    dasm_put(Dst, 11898);
     }
       break;
     case 1:
-    dasm_put(Dst, 11349, LJ_TISNUM);
+    dasm_put(Dst, 11372, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11361, LJ_TISNUM);
+    dasm_put(Dst, 11384, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11884);
+    dasm_put(Dst, 11907);
     } else {
-    dasm_put(Dst, 11899);
+    dasm_put(Dst, 11922);
     }
       break;
     default:
-    dasm_put(Dst, 11397, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11420, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11908);
+    dasm_put(Dst, 11931);
     } else {
-    dasm_put(Dst, 11922);
+    dasm_put(Dst, 11945);
     }
       break;
     }
-    dasm_put(Dst, 11930);
+    dasm_put(Dst, 11953);
     if (sse) {
-    dasm_put(Dst, 11052);
+    dasm_put(Dst, 11075);
     } else {
-    dasm_put(Dst, 11064);
+    dasm_put(Dst, 11087);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11301, LJ_TISNUM);
+    dasm_put(Dst, 11324, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11313, LJ_TISNUM);
+    dasm_put(Dst, 11336, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11860);
+    dasm_put(Dst, 11883);
     } else {
-    dasm_put(Dst, 11875);
+    dasm_put(Dst, 11898);
     }
       break;
     case 1:
-    dasm_put(Dst, 11349, LJ_TISNUM);
+    dasm_put(Dst, 11372, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11361, LJ_TISNUM);
+    dasm_put(Dst, 11384, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11884);
+    dasm_put(Dst, 11907);
     } else {
-    dasm_put(Dst, 11899);
+    dasm_put(Dst, 11922);
     }
       break;
     default:
-    dasm_put(Dst, 11397, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11420, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11908);
+    dasm_put(Dst, 11931);
     } else {
-    dasm_put(Dst, 11922);
+    dasm_put(Dst, 11945);
     }
       break;
     }
-    dasm_put(Dst, 11936);
+    dasm_put(Dst, 11959);
     break;
   case BC_POW:
-    dasm_put(Dst, 11184);
+    dasm_put(Dst, 11207);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11301, LJ_TISNUM);
+    dasm_put(Dst, 11324, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11313, LJ_TISNUM);
+    dasm_put(Dst, 11336, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11860);
+    dasm_put(Dst, 11883);
     } else {
-    dasm_put(Dst, 11875);
+    dasm_put(Dst, 11898);
     }
       break;
     case 1:
-    dasm_put(Dst, 11349, LJ_TISNUM);
+    dasm_put(Dst, 11372, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11361, LJ_TISNUM);
+    dasm_put(Dst, 11384, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11884);
+    dasm_put(Dst, 11907);
     } else {
-    dasm_put(Dst, 11899);
+    dasm_put(Dst, 11922);
     }
       break;
     default:
-    dasm_put(Dst, 11397, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11420, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11908);
+    dasm_put(Dst, 11931);
     } else {
-    dasm_put(Dst, 11922);
+    dasm_put(Dst, 11945);
     }
       break;
     }
-    dasm_put(Dst, 11941);
+    dasm_put(Dst, 11964);
     if (sse) {
-    dasm_put(Dst, 11052);
+    dasm_put(Dst, 11075);
     } else {
-    dasm_put(Dst, 11064);
+    dasm_put(Dst, 11087);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 11945, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11968, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 12029, LJ_TSTR);
+    dasm_put(Dst, 12052, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 12029, LJ_TCDATA);
+    dasm_put(Dst, 12052, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 12066, LJ_TISNUM);
+      dasm_put(Dst, 12089, LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 12078);
+      dasm_put(Dst, 12101);
     } else {
-      dasm_put(Dst, 12093);
+      dasm_put(Dst, 12116);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 12101);
+      dasm_put(Dst, 12124);
     } else {
-      dasm_put(Dst, 12115);
+      dasm_put(Dst, 12138);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 12123);
+    dasm_put(Dst, 12146);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 12152, LJ_TNIL);
+    dasm_put(Dst, 12175, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 12200, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12223, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 12241, 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, 12337);
+    dasm_put(Dst, 12264, 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, 12360);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 12349, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 12372, 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, 12445);
+    dasm_put(Dst, 12468);
     if (sse) {
-      dasm_put(Dst, 12450);
+      dasm_put(Dst, 12473);
     } else {
-      dasm_put(Dst, 10699);
+      dasm_put(Dst, 10722);
     }
-    dasm_put(Dst, 12458, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12481, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 12467);
+      dasm_put(Dst, 12490);
     } else {
-      dasm_put(Dst, 12473);
+      dasm_put(Dst, 12496);
     }
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     break;
   case BC_USETP:
-    dasm_put(Dst, 12476, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12499, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 12516, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12539, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 12572, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 12595, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 12639, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12662, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 12763, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12786, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 12862, Dt7(->env));
+    dasm_put(Dst, 12885, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 12882, Dt7(->env));
+    dasm_put(Dst, 12905, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 12902, LJ_TTAB);
+    dasm_put(Dst, 12925, LJ_TTAB);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 12925, LJ_TISNUM);
+      dasm_put(Dst, 12948, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 12939, LJ_TISNUM);
+      dasm_put(Dst, 12962, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 12950);
+       dasm_put(Dst, 12973);
       } else {
       }
-      dasm_put(Dst, 12971);
+      dasm_put(Dst, 12994);
     }
-    dasm_put(Dst, 12976, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
-    dasm_put(Dst, 13068, LJ_TSTR);
+    dasm_put(Dst, 12999, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
+    dasm_put(Dst, 13091, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 13086, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 13171, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13109, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 13194, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 13243, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 13339, LJ_TNIL);
+    dasm_put(Dst, 13266, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13362, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 13356, LJ_TTAB);
+    dasm_put(Dst, 13379, LJ_TTAB);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 12925, LJ_TISNUM);
+      dasm_put(Dst, 12948, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 12939, LJ_TISNUM);
+      dasm_put(Dst, 12962, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 12950);
+       dasm_put(Dst, 12973);
       } else {
       }
-      dasm_put(Dst, 13379);
+      dasm_put(Dst, 13402);
     }
-    dasm_put(Dst, 13384, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
-    dasm_put(Dst, 13465, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13407, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
+    dasm_put(Dst, 13488, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 13524, 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, 13601, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 13688, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13547, 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, 13624, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 13711, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 13780, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 13875, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13803, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 13898, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 13923, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 14073, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13946, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 14096, 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, 11188);
+    dasm_put(Dst, 11211);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 14093);
+      dasm_put(Dst, 14116);
     }
-    dasm_put(Dst, 14098, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 14121, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 14093);
+    dasm_put(Dst, 14116);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 14141, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 14259, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 14164, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 14282, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 14333, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 14356, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 14405, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 14428, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11087, LJ_TISNUM);
+      dasm_put(Dst, 11110, LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 11165);
+      dasm_put(Dst, 11188);
     } else {
-      dasm_put(Dst, 14457);
+      dasm_put(Dst, 14480);
     }
-    dasm_put(Dst, 14463);
+    dasm_put(Dst, 14486);
     if (LJ_DUALNUM) {
     } else if (sse) {
-      dasm_put(Dst, 11052);
+      dasm_put(Dst, 11075);
     } else {
-      dasm_put(Dst, 11064);
+      dasm_put(Dst, 11087);
     }
-    dasm_put(Dst, 14476, -BCBIAS_J*4);
+    dasm_put(Dst, 14499, -BCBIAS_J*4);
     if (!LJ_DUALNUM && !sse) {
-      dasm_put(Dst, 14530);
+      dasm_put(Dst, 14553);
     }
-    dasm_put(Dst, 14536, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+    dasm_put(Dst, 14559, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 14615, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 14638, 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, 14716, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 14883, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14739, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 14906, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 14093);
+    dasm_put(Dst, 14116);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 14953);
+      dasm_put(Dst, 14976);
     }
-    dasm_put(Dst, 14957, FRAME_TYPE);
+    dasm_put(Dst, 14980, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 14976);
+      dasm_put(Dst, 14999);
       break;
     case BC_RET1:
-      dasm_put(Dst, 15030);
+      dasm_put(Dst, 15053);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 15040);
+      dasm_put(Dst, 15063);
     default:
       break;
     }
-    dasm_put(Dst, 15051, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 15074, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 15099, LJ_TNIL);
+      dasm_put(Dst, 15122, LJ_TNIL);
     } else {
-      dasm_put(Dst, 15110, LJ_TNIL);
+      dasm_put(Dst, 15133, LJ_TNIL);
     }
-    dasm_put(Dst, 15117, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 15140, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 15141);
+      dasm_put(Dst, 15164);
     }
-    dasm_put(Dst, 4709);
+    dasm_put(Dst, 4732);
     break;
 
   /* -- Loops and branches ------------------------------------------------ */
@@ -2751,7 +2755,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 15145, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15168, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2763,111 +2767,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 15166);
+    dasm_put(Dst, 15189);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 15170, LJ_TISNUM);
+      dasm_put(Dst, 15193, LJ_TISNUM);
       if (!vk) {
-       dasm_put(Dst, 15180, LJ_TISNUM, LJ_TISNUM);
+       dasm_put(Dst, 15203, LJ_TISNUM, LJ_TISNUM);
       } else {
 #ifdef LUA_USE_ASSERT
-       dasm_put(Dst, 15209, LJ_TISNUM, LJ_TISNUM);
+       dasm_put(Dst, 15232, LJ_TISNUM, LJ_TISNUM);
 #endif
-       dasm_put(Dst, 15228);
+       dasm_put(Dst, 15251);
       }
-      dasm_put(Dst, 15247, LJ_TISNUM);
+      dasm_put(Dst, 15270, LJ_TISNUM);
       if (op == BC_FORI) {
-       dasm_put(Dst, 15258, -BCBIAS_J*4);
+       dasm_put(Dst, 15281, -BCBIAS_J*4);
       } else if (op == BC_JFORI) {
-       dasm_put(Dst, 15272, -BCBIAS_J*4, BC_JLOOP);
+       dasm_put(Dst, 15295, -BCBIAS_J*4, BC_JLOOP);
       } else if (op == BC_IFORL) {
-       dasm_put(Dst, 15290, -BCBIAS_J*4);
+       dasm_put(Dst, 15313, -BCBIAS_J*4);
       } else {
-       dasm_put(Dst, 15282, BC_JLOOP);
+       dasm_put(Dst, 15305, BC_JLOOP);
       }
-      dasm_put(Dst, 15304);
+      dasm_put(Dst, 15327);
       if (vk) {
-       dasm_put(Dst, 15329);
+       dasm_put(Dst, 15352);
       }
-      dasm_put(Dst, 15247, LJ_TISNUM);
+      dasm_put(Dst, 15270, LJ_TISNUM);
       if (op == BC_FORI) {
-       dasm_put(Dst, 15338);
+       dasm_put(Dst, 15361);
       } else if (op == BC_JFORI) {
-       dasm_put(Dst, 15343, -BCBIAS_J*4, BC_JLOOP);
+       dasm_put(Dst, 15366, -BCBIAS_J*4, BC_JLOOP);
       } else if (op == BC_IFORL) {
-       dasm_put(Dst, 15357);
+       dasm_put(Dst, 15380);
       } else {
-       dasm_put(Dst, 15353, BC_JLOOP);
+       dasm_put(Dst, 15376, BC_JLOOP);
       }
-      dasm_put(Dst, 15362);
+      dasm_put(Dst, 15385);
     } else if (!vk) {
-      dasm_put(Dst, 15369, LJ_TISNUM);
+      dasm_put(Dst, 15392, LJ_TISNUM);
     }
     if (!vk) {
-      dasm_put(Dst, 15375, LJ_TISNUM);
+      dasm_put(Dst, 15398, LJ_TISNUM);
     } else {
 #ifdef LUA_USE_ASSERT
-      dasm_put(Dst, 15389, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 15412, LJ_TISNUM, LJ_TISNUM);
 #endif
     }
-    dasm_put(Dst, 15408);
+    dasm_put(Dst, 15431);
     if (!vk) {
-      dasm_put(Dst, 15412, LJ_TISNUM);
+      dasm_put(Dst, 15435, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 15421);
+      dasm_put(Dst, 15444);
       if (vk) {
-       dasm_put(Dst, 15433);
+       dasm_put(Dst, 15456);
       } else {
-       dasm_put(Dst, 15452);
+       dasm_put(Dst, 15475);
       }
-      dasm_put(Dst, 15457);
+      dasm_put(Dst, 15480);
     } else {
-      dasm_put(Dst, 15470);
+      dasm_put(Dst, 15493);
       if (vk) {
-       dasm_put(Dst, 15476);
+       dasm_put(Dst, 15499);
       } else {
-       dasm_put(Dst, 15492);
+       dasm_put(Dst, 15515);
       }
-      dasm_put(Dst, 15500);
+      dasm_put(Dst, 15523);
       if (cmov) {
-      dasm_put(Dst, 10130);
+      dasm_put(Dst, 10153);
       } else {
-      dasm_put(Dst, 10136);
+      dasm_put(Dst, 10159);
       }
       if (!cmov) {
-       dasm_put(Dst, 15505);
+       dasm_put(Dst, 15528);
       }
     }
     if (op == BC_FORI) {
       if (LJ_DUALNUM) {
-       dasm_put(Dst, 15511);
+       dasm_put(Dst, 15534);
       } else {
-       dasm_put(Dst, 15516, -BCBIAS_J*4);
+       dasm_put(Dst, 15539, -BCBIAS_J*4);
       }
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 15526, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 15549, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
       if (LJ_DUALNUM) {
-       dasm_put(Dst, 15540);
+       dasm_put(Dst, 15563);
       } else {
-       dasm_put(Dst, 15545, -BCBIAS_J*4);
+       dasm_put(Dst, 15568, -BCBIAS_J*4);
       }
     } else {
-      dasm_put(Dst, 15536, BC_JLOOP);
+      dasm_put(Dst, 15559, BC_JLOOP);
     }
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10059);
+      dasm_put(Dst, 10082);
     } else {
-      dasm_put(Dst, 10833);
+      dasm_put(Dst, 10856);
     }
     if (sse) {
-      dasm_put(Dst, 15555);
+      dasm_put(Dst, 15578);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 15145, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15168, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2876,33 +2880,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 15566, LJ_TNIL);
+    dasm_put(Dst, 15589, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 15581, BC_JLOOP);
+      dasm_put(Dst, 15604, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15595, -BCBIAS_J*4);
+      dasm_put(Dst, 15618, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 10173);
+    dasm_put(Dst, 10196);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 15145, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15168, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10198);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 15611, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 15634, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 15652, -BCBIAS_J*4);
+    dasm_put(Dst, 15675, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2916,7 +2920,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 15678, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15701, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2926,47 +2930,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 15699, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 15722, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 15730, BC_JLOOP);
+      dasm_put(Dst, 15753, BC_JLOOP);
     } else {
-      dasm_put(Dst, 10175);
+      dasm_put(Dst, 10198);
     }
-    dasm_put(Dst, 15739, LJ_TNIL);
+    dasm_put(Dst, 15762, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 9282);
+    dasm_put(Dst, 9305);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 15761, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 15784, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 15730, BC_JLOOP);
+      dasm_put(Dst, 15753, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15858, -4+PC2PROTO(k));
+      dasm_put(Dst, 15881, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 15883, LJ_TNIL);
+    dasm_put(Dst, 15906, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 15905, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 15928, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 2381);
+      dasm_put(Dst, 2404);
     } else {
-      dasm_put(Dst, 15935);
+      dasm_put(Dst, 15958);
     }
-    dasm_put(Dst, 15943, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 15966, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15953);
+      dasm_put(Dst, 15976);
     } else {
-      dasm_put(Dst, 15958, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 15981, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 15964, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 15987, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2994,7 +2998,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 15990);
+  dasm_put(Dst, 16013);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
index 461f768cf21e877998f9717b78109fb08ad71d24..4b3f52377cf145a423dac53ecef63c21248779bb 100644 (file)
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP   0
 #define DASM_SECTION_CODE_SUB  1
 #define DASM_MAXSECTION                2
-static const unsigned char build_actionlist[15847] = {
+static const unsigned char build_actionlist[15870] = {
   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,
@@ -50,111 +50,112 @@ static const unsigned char build_actionlist[15847] = {
   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,72,141,61,245,255,72,1,252,249,139,122,252,248,139,191,233,
-  139,191,233,252,255,225,248,32,15,182,78,252,255,131,252,237,16,141,12,202,
-  41,252,233,15,132,244,33,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,34,248,35,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,36,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,37,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,33,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,38,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,39,15,182,70,252,254,255,72,141,68,36,80,252,233,244,247,248,
-  40,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,41,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,42,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,43,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,44,131,198,4,129,120,253,4,239,15,130,244,5,252,233,
-  244,6,248,45,129,120,253,4,239,252,233,244,4,248,46,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,47,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,48,255,15,182,110,252,255,255,248,49,141,4,199,252,233,
-  244,247,248,50,255,248,51,141,4,199,141,44,252,234,149,252,233,244,248,248,
-  52,141,4,194,137,197,252,233,244,248,248,53,255,248,54,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,41,248,43,137,193,41,208,137,113,252,244,
-  141,176,233,184,237,252,233,244,28,248,55,139,108,36,96,137,149,233,141,20,
-  194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,252,233,244,43,248,
-  56,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,255,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,57,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,58,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,59,129,252,
-  248,239,15,130,244,60,139,106,4,129,252,253,239,15,131,244,60,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,137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,1,15,
-  133,244,1,248,2,255,139,68,36,84,252,233,244,61,248,62,129,252,248,239,15,
-  130,244,60,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,63,248,3,184,237,252,233,244,2,248,
-  64,129,252,248,239,15,130,244,60,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,63,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,63,248,5,139,105,4,129,252,253,239,15,132,244,63,139,1,137,106,
-  252,252,137,66,252,248,252,233,244,63,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,65,129,252,248,239,15,130,244,60,129,122,253,4,239,15,133,244,60,
-  139,42,131,189,233,0,15,133,244,60,129,122,253,12,239,15,133,244,60,139,66,
-  8,137,133,233,139,114,252,252,199,66,252,252,237,255,137,106,252,248,252,
+  72,99,77,252,240,133,201,15,132,244,247,255,72,141,61,245,72,1,252,249,139,
+  122,252,248,139,191,233,139,191,233,252,255,225,248,1,41,213,193,252,237,
+  3,141,69,252,255,252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141,
+  12,202,41,252,233,15,132,244,34,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,35,248,
+  36,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,255,137,205,252,233,244,248,248,37,
+  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,38,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,34,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,39,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,40,15,182,70,252,254,255,72,141,68,36,80,252,
+  233,244,247,248,41,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,42,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,43,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,44,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,45,131,198,4,129,120,253,4,239,15,
+  130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,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,48,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,49,255,15,182,110,252,255,255,248,50,141,4,
+  199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233,
+  244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,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,42,248,44,137,193,41,208,
+  137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108,36,96,137,
+  149,233,141,20,194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,252,
+  233,244,44,248,57,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,255,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,58,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,59,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,60,129,252,248,239,15,130,244,61,139,106,4,129,252,253,239,15,131,244,
+  61,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,137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,
+  131,232,1,15,133,244,1,248,2,255,139,68,36,84,252,233,244,62,248,63,129,252,
+  248,239,15,130,244,61,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,64,248,3,184,237,252,233,
+  244,2,248,65,129,252,248,239,15,130,244,61,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,64,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,64,248,5,139,105,4,129,252,253,239,15,132,244,64,139,1,
+  137,106,252,252,137,66,252,248,252,233,244,64,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,66,129,252,248,239,15,130,244,61,129,122,253,4,239,15,133,244,
+  61,139,42,131,189,233,0,15,133,244,61,129,122,253,12,239,15,133,244,61,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,63,248,66,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,133,244,60,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,63,
-  248,67,255,129,252,248,239,15,133,244,60,129,122,253,4,239,255,15,133,244,
-  247,139,42,252,233,244,68,248,1,15,135,244,60,255,15,131,244,60,255,252,242,
-  15,16,2,252,233,244,69,255,221,2,252,233,244,70,255,248,71,129,252,248,239,
-  15,130,244,60,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,63,248,3,129,122,253,4,239,
-  15,135,244,60,131,187,233,0,15,133,244,60,139,171,233,59,171,233,255,15,130,
-  244,247,232,244,72,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,73,
-  129,252,248,239,15,130,244,60,15,132,244,248,248,1,129,122,253,4,239,15,133,
-  244,60,139,108,36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8,
+  133,233,248,1,252,233,244,64,248,67,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,133,244,61,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,64,
+  248,68,255,129,252,248,239,15,133,244,61,129,122,253,4,239,255,15,133,244,
+  247,139,42,252,233,244,69,248,1,15,135,244,61,255,15,131,244,61,255,252,242,
+  15,16,2,252,233,244,70,255,221,2,252,233,244,71,255,248,72,129,252,248,239,
+  15,130,244,61,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,64,248,3,129,122,253,4,239,
+  15,135,244,61,131,187,233,0,15,133,244,61,139,171,233,59,171,233,255,15,130,
+  244,247,232,244,73,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,74,
+  129,252,248,239,15,130,244,61,15,132,244,248,248,1,129,122,253,4,239,15,133,
+  244,61,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,74,184,
-  237,255,252,233,244,75,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,
-  252,237,252,233,244,63,248,76,129,252,248,239,15,130,244,60,139,42,129,122,
-  253,4,239,15,133,244,60,255,131,189,233,0,15,133,244,60,255,139,106,252,248,
+  244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,75,184,
+  237,255,252,233,244,76,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,
+  252,237,252,233,244,64,248,77,129,252,248,239,15,130,244,61,139,42,129,122,
+  253,4,239,15,133,244,61,255,131,189,233,0,15,133,244,61,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,75,248,77,129,252,248,239,15,130,244,60,129,122,253,4,
-  239,15,133,244,60,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,
+  184,237,252,233,244,76,248,78,129,252,248,239,15,130,244,61,129,122,253,4,
+  239,15,133,244,61,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,78,72,139,40,72,137,42,252,233,244,74,248,2,131,
-  189,233,0,15,132,244,78,137,252,233,137,213,137,194,232,251,1,14,137,252,
-  234,133,192,15,133,244,1,248,78,184,237,252,233,244,75,248,79,255,139,106,
+  120,253,4,239,15,132,244,79,72,139,40,72,137,42,252,233,244,75,248,2,131,
+  189,233,0,15,132,244,79,137,252,233,137,213,137,194,232,251,1,14,137,252,
+  234,133,192,15,133,244,1,248,79,184,237,252,233,244,76,248,80,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,75,248,80,129,252,248,239,15,130,244,
-  60,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,81,129,252,248,239,15,130,244,60,129,122,253,
-  12,239,15,133,244,60,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,82,129,252,
-  248,239,15,130,244,60,139,42,139,114,252,252,137,116,36,100,137,108,36,80,
-  129,122,253,4,239,15,133,244,60,72,131,189,233,0,15,133,244,60,128,189,233,
-  235,15,135,244,60,139,141,233,15,132,244,247,255,59,141,233,15,132,244,60,
-  248,1,141,116,193,252,240,59,181,233,15,135,244,60,137,181,233,139,108,36,
+  238,221,90,8,255,184,237,252,233,244,76,248,81,129,252,248,239,15,130,244,
+  61,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,82,129,252,248,239,15,130,244,61,129,122,253,
+  12,239,15,133,244,61,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,83,129,252,
+  248,239,15,130,244,61,139,42,139,114,252,252,137,116,36,100,137,108,36,80,
+  129,122,253,4,239,15,133,244,61,72,131,189,233,0,15,133,244,61,128,189,233,
+  235,15,135,244,61,139,141,233,15,132,244,247,255,59,141,233,15,132,244,61,
+  248,1,141,116,193,252,240,59,181,233,15,135,244,61,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,
@@ -166,10 +167,10 @@ static const unsigned char build_actionlist[15847] = {
   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,83,139,106,252,248,139,173,
+  1,0,139,116,36,80,139,149,233,252,233,244,4,248,84,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,60,255,128,189,233,235,15,135,244,60,139,141,233,15,132,244,247,59,141,
-  233,15,132,244,60,248,1,141,116,193,252,248,59,181,233,15,135,244,60,137,
+  244,61,255,128,189,233,235,15,135,244,61,139,141,233,15,132,244,247,59,141,
+  233,15,132,244,61,248,1,141,116,193,252,248,59,181,233,15,135,244,61,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,
@@ -180,206 +181,206 @@ static const unsigned char build_actionlist[15847] = {
   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,84,139,108,36,96,72,252,247,133,233,237,15,132,244,60,255,137,
+  233,244,4,248,85,139,108,36,96,72,252,247,133,233,237,15,132,244,61,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,68,255,248,70,139,114,252,252,221,90,252,248,
-  252,233,244,63,255,248,85,129,252,248,239,15,130,244,60,255,129,122,253,4,
-  239,15,133,244,248,139,42,131,252,253,0,15,137,244,68,252,247,221,15,136,
-  244,247,248,86,248,68,139,114,252,252,199,66,252,252,237,137,106,252,248,
-  252,233,244,63,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,63,248,2,15,135,244,60,255,129,122,253,4,239,15,131,
-  244,60,255,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,
-  69,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,69,248,
-  70,139,114,252,252,221,90,252,248,255,248,63,184,237,248,75,137,68,36,84,
-  248,61,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,
+  133,233,252,233,244,16,255,248,69,255,248,71,139,114,252,252,221,90,252,248,
+  252,233,244,64,255,248,86,129,252,248,239,15,130,244,61,255,129,122,253,4,
+  239,15,133,244,248,139,42,131,252,253,0,15,137,244,69,252,247,221,15,136,
+  244,247,248,87,248,69,139,114,252,252,199,66,252,252,237,137,106,252,248,
+  252,233,244,64,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,64,248,2,15,135,244,61,255,129,122,253,4,239,15,131,
+  244,61,255,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,
+  70,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,70,248,
+  71,139,114,252,252,221,90,252,248,255,248,64,184,237,248,76,137,68,36,84,
+  248,62,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,87,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,68,
-  248,1,15,135,244,60,255,252,242,15,16,2,232,244,88,255,252,242,15,45,232,
-  129,252,253,0,0,0,128,15,133,244,68,252,242,15,42,205,102,15,46,193,15,138,
-  244,69,15,132,244,68,255,221,2,232,244,88,255,248,89,255,252,242,15,16,2,
-  232,244,90,255,221,2,232,244,90,255,248,91,129,252,248,239,15,130,244,60,
-  129,122,253,4,239,15,131,244,60,252,242,15,81,2,252,233,244,69,255,248,91,
-  129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,221,2,217,252,
-  250,252,233,244,70,255,248,92,129,252,248,239,15,130,244,60,129,122,253,4,
-  239,15,131,244,60,217,252,237,221,2,217,252,241,252,233,244,70,248,93,129,
-  252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,217,252,236,221,
-  2,217,252,241,252,233,244,70,248,94,129,252,248,239,255,15,130,244,60,129,
-  122,253,4,239,15,131,244,60,221,2,232,244,95,252,233,244,70,248,96,129,252,
-  248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,221,2,217,252,254,252,
-  233,244,70,248,97,129,252,248,239,255,15,130,244,60,129,122,253,4,239,15,
-  131,244,60,221,2,217,252,255,252,233,244,70,248,98,129,252,248,239,15,130,
-  244,60,129,122,253,4,239,15,131,244,60,221,2,217,252,242,221,216,252,233,
-  244,70,248,99,129,252,248,239,15,130,244,60,255,129,122,253,4,239,15,131,
-  244,60,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
-  233,244,70,248,100,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
-  243,252,233,244,70,248,101,129,252,248,239,15,130,244,60,129,122,253,4,239,
-  15,131,244,60,255,221,2,217,232,217,252,243,252,233,244,70,255,248,102,129,
-  252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,
-  255,137,213,232,251,1,16,137,252,234,252,233,244,69,255,248,103,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,255,137,
-  213,232,251,1,17,137,252,234,252,233,244,69,255,248,104,129,252,248,239,15,
-  130,244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,255,137,213,232,
-  251,1,18,137,252,234,252,233,244,69,248,105,255,248,106,129,252,248,239,15,
-  130,244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,139,106,252,248,
-  252,242,15,89,133,233,252,233,244,69,255,248,106,129,252,248,239,15,130,244,
-  60,129,122,253,4,239,15,131,244,60,221,2,139,106,252,248,220,141,233,252,
-  233,244,70,255,248,107,129,252,248,239,15,130,244,60,129,122,253,4,239,15,
-  131,244,60,129,122,253,12,239,15,131,244,60,221,2,221,66,8,217,252,243,252,
-  233,244,70,248,108,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,129,122,253,12,239,255,15,131,244,60,221,66,8,221,2,217,252,253,221,
-  217,252,233,244,70,248,109,129,252,248,239,15,130,244,60,139,106,4,129,252,
-  253,239,15,131,244,60,139,114,252,252,139,2,137,106,252,252,137,66,252,248,
+  244,14,248,88,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,69,
+  248,1,15,135,244,61,255,252,242,15,16,2,232,244,89,255,252,242,15,45,232,
+  129,252,253,0,0,0,128,15,133,244,69,252,242,15,42,205,102,15,46,193,15,138,
+  244,70,15,132,244,69,255,221,2,232,244,89,255,248,90,255,252,242,15,16,2,
+  232,244,91,255,221,2,232,244,91,255,248,92,129,252,248,239,15,130,244,61,
+  129,122,253,4,239,15,131,244,61,252,242,15,81,2,252,233,244,70,255,248,92,
+  129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,221,2,217,252,
+  250,252,233,244,71,255,248,93,129,252,248,239,15,130,244,61,129,122,253,4,
+  239,15,131,244,61,217,252,237,221,2,217,252,241,252,233,244,71,248,94,129,
+  252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,217,252,236,221,
+  2,217,252,241,252,233,244,71,248,95,129,252,248,239,255,15,130,244,61,129,
+  122,253,4,239,15,131,244,61,221,2,232,244,96,252,233,244,71,248,97,129,252,
+  248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,221,2,217,252,254,252,
+  233,244,71,248,98,129,252,248,239,255,15,130,244,61,129,122,253,4,239,15,
+  131,244,61,221,2,217,252,255,252,233,244,71,248,99,129,252,248,239,15,130,
+  244,61,129,122,253,4,239,15,131,244,61,221,2,217,252,242,221,216,252,233,
+  244,71,248,100,129,252,248,239,15,130,244,61,255,129,122,253,4,239,15,131,
+  244,61,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
+  233,244,71,248,101,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
+  243,252,233,244,71,248,102,129,252,248,239,15,130,244,61,129,122,253,4,239,
+  15,131,244,61,255,221,2,217,232,217,252,243,252,233,244,71,255,248,103,129,
+  252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,
+  255,137,213,232,251,1,16,137,252,234,252,233,244,70,255,248,104,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,255,137,
+  213,232,251,1,17,137,252,234,252,233,244,70,255,248,105,129,252,248,239,15,
+  130,244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,255,137,213,232,
+  251,1,18,137,252,234,252,233,244,70,248,106,255,248,107,129,252,248,239,15,
+  130,244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,139,106,252,248,
+  252,242,15,89,133,233,252,233,244,70,255,248,107,129,252,248,239,15,130,244,
+  61,129,122,253,4,239,15,131,244,61,221,2,139,106,252,248,220,141,233,252,
+  233,244,71,255,248,108,129,252,248,239,15,130,244,61,129,122,253,4,239,15,
+  131,244,61,129,122,253,12,239,15,131,244,61,221,2,221,66,8,217,252,243,252,
+  233,244,71,248,109,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,129,122,253,12,239,255,15,131,244,61,221,66,8,221,2,217,252,253,221,
+  217,252,233,244,71,248,110,129,252,248,239,15,130,244,61,139,106,4,129,252,
+  253,239,15,131,244,61,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,75,248,3,255,15,
+  2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,76,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,110,129,252,
-  248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,255,
-  248,110,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,221,
+  255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,111,129,252,
+  248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,255,
+  248,111,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,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,111,252,242,15,92,224,248,1,252,242,15,17,66,
-  252,248,252,242,15,17,34,255,217,192,232,244,111,220,252,233,248,1,221,90,
+  244,250,255,15,40,224,232,244,112,252,242,15,92,224,248,1,252,242,15,17,66,
+  252,248,252,242,15,17,34,255,217,192,232,244,112,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,75,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,
+  237,252,233,244,76,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,
-  112,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,
-  253,12,239,15,131,244,60,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
-  138,244,1,221,217,252,233,244,70,255,248,113,129,252,248,239,15,130,244,60,
-  129,122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,
-  15,16,2,252,242,15,16,74,8,232,244,114,252,233,244,69,255,248,113,129,252,
-  248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,
-  15,131,244,60,221,2,221,66,8,232,244,114,252,233,244,70,255,248,115,185,2,
+  113,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,
+  253,12,239,15,131,244,61,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
+  138,244,1,221,217,252,233,244,71,255,248,114,129,252,248,239,15,130,244,61,
+  129,122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,252,242,
+  15,16,2,252,242,15,16,74,8,232,244,115,252,233,244,70,255,248,114,129,252,
+  248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,
+  15,131,244,61,221,2,221,66,8,232,244,115,252,233,244,71,255,248,116,185,2,
   0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,
-  68,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,60,255,252,233,244,252,
-  248,4,15,135,244,60,255,252,242,15,16,2,248,5,57,193,15,131,244,69,129,124,
-  253,202,252,252,239,255,15,130,244,252,15,135,244,60,252,242,15,42,76,202,
+  69,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,61,255,252,233,244,252,
+  248,4,15,135,244,61,255,252,242,15,16,2,248,5,57,193,15,131,244,70,129,124,
+  253,202,252,252,239,255,15,130,244,252,15,135,244,61,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,116,185,2,0,0,0,129,122,253,
-  4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,68,129,124,253,202,
+  242,15,93,193,131,193,1,252,233,244,5,255,248,117,185,2,0,0,0,129,122,253,
+  4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,69,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,60,255,248,6,252,242,15,16,76,202,252,248,
+  1,252,233,244,1,248,3,15,135,244,61,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,60,255,248,117,129,252,248,239,15,130,244,60,129,122,253,4,239,15,133,
-  244,60,139,42,255,139,173,233,252,233,244,68,255,252,242,15,42,133,233,252,
-  233,244,69,255,219,133,233,252,233,244,70,255,248,118,129,252,248,239,15,
-  133,244,60,129,122,253,4,239,15,133,244,60,139,42,139,114,252,252,131,189,
-  233,1,15,130,244,78,15,182,173,233,255,252,242,15,42,197,252,233,244,69,255,
-  137,108,36,80,219,68,36,80,252,233,244,70,255,248,119,139,171,233,59,171,
-  233,15,130,244,247,232,244,72,248,1,129,252,248,239,15,133,244,60,129,122,
-  253,4,239,255,15,133,244,60,139,42,129,252,253,252,255,0,0,0,15,135,244,60,
-  137,108,36,84,255,15,131,244,60,252,242,15,44,42,129,252,253,252,255,0,0,
-  0,15,135,244,60,137,108,36,84,255,15,131,244,60,221,2,219,92,36,84,129,124,
-  36,84,252,255,0,0,0,15,135,244,60,255,199,68,36,32,1,0,0,0,72,141,68,36,84,
-  248,120,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233,
+  244,61,255,248,118,129,252,248,239,15,130,244,61,129,122,253,4,239,15,133,
+  244,61,139,42,255,139,173,233,252,233,244,69,255,252,242,15,42,133,233,252,
+  233,244,70,255,219,133,233,252,233,244,71,255,248,119,129,252,248,239,15,
+  133,244,61,129,122,253,4,239,15,133,244,61,139,42,139,114,252,252,131,189,
+  233,1,15,130,244,79,15,182,173,233,255,252,242,15,42,197,252,233,244,70,255,
+  137,108,36,80,219,68,36,80,252,233,244,71,255,248,120,139,171,233,59,171,
+  233,15,130,244,247,232,244,73,248,1,129,252,248,239,15,133,244,61,129,122,
+  253,4,239,255,15,133,244,61,139,42,129,252,253,252,255,0,0,0,15,135,244,61,
+  137,108,36,84,255,15,131,244,61,252,242,15,44,42,129,252,253,252,255,0,0,
+  0,15,135,244,61,137,108,36,84,255,15,131,244,61,221,2,219,92,36,84,129,124,
+  36,84,252,255,0,0,0,15,135,244,61,255,199,68,36,32,1,0,0,0,72,141,68,36,84,
+  248,121,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,63,248,121,139,171,233,59,171,233,15,130,244,247,
-  232,244,72,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,
-  239,15,130,244,60,15,134,244,247,129,122,253,20,239,255,15,133,244,60,139,
-  106,16,137,108,36,84,255,15,131,244,60,252,242,15,44,106,16,137,108,36,84,
-  255,15,131,244,60,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133,
-  244,60,129,122,253,12,239,255,139,42,137,108,36,32,139,173,233,255,139,74,
+  137,66,252,248,252,233,244,64,248,122,139,171,233,59,171,233,15,130,244,247,
+  232,244,73,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,
+  239,15,130,244,61,15,134,244,247,129,122,253,20,239,255,15,133,244,61,139,
+  106,16,137,108,36,84,255,15,131,244,61,252,242,15,44,106,16,137,108,36,84,
+  255,15,131,244,61,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133,
+  244,61,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,122,141,172,253,
-  13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,120,248,5,15,140,
+  201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,123,141,172,253,
+  13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,121,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,122,49,192,252,233,244,4,248,123,129,252,248,239,15,130,244,60,139,
-  171,233,59,171,233,15,130,244,247,232,244,72,248,1,255,129,122,253,4,239,
-  15,133,244,60,129,122,253,12,239,139,42,255,15,133,244,60,139,66,8,255,15,
-  131,244,60,252,242,15,44,66,8,255,15,131,244,60,221,66,8,219,92,36,84,139,
-  68,36,84,255,133,192,15,142,244,122,131,189,233,1,15,130,244,122,15,133,244,
-  124,57,131,233,15,130,244,124,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,120,248,
-  125,129,252,248,239,255,15,130,244,60,139,171,233,59,171,233,15,130,244,247,
-  232,244,72,248,1,129,122,253,4,239,15,133,244,60,139,42,139,133,233,133,192,
-  15,132,244,122,57,131,233,15,130,244,126,129,197,239,137,116,36,84,137,68,
+  3,248,123,49,192,252,233,244,4,248,124,129,252,248,239,15,130,244,61,139,
+  171,233,59,171,233,15,130,244,247,232,244,73,248,1,255,129,122,253,4,239,
+  15,133,244,61,129,122,253,12,239,139,42,255,15,133,244,61,139,66,8,255,15,
+  131,244,61,252,242,15,44,66,8,255,15,131,244,61,221,66,8,219,92,36,84,139,
+  68,36,84,255,133,192,15,142,244,123,131,189,233,1,15,130,244,123,15,133,244,
+  125,57,131,233,15,130,244,125,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,121,248,
+  126,129,252,248,239,255,15,130,244,61,139,171,233,59,171,233,15,130,244,247,
+  232,244,73,248,1,129,122,253,4,239,15,133,244,61,139,42,139,133,233,133,192,
+  15,132,244,123,57,131,233,15,130,244,127,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,120,248,127,129,252,248,239,15,
-  130,244,60,139,171,233,59,171,233,15,130,244,247,232,244,72,248,1,129,122,
-  253,4,239,15,133,244,60,139,42,139,133,233,57,131,233,255,15,130,244,126,
+  244,1,137,252,240,139,116,36,84,252,233,244,121,248,128,129,252,248,239,15,
+  130,244,61,139,171,233,59,171,233,15,130,244,247,232,244,73,248,1,129,122,
+  253,4,239,15,133,244,61,139,42,139,133,233,57,131,233,255,15,130,244,127,
   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,120,248,128,129,252,248,239,15,130,244,60,255,139,171,
-  233,59,171,233,15,130,244,247,232,244,72,248,1,129,122,253,4,239,15,133,244,
-  60,139,42,139,133,233,57,131,233,15,130,244,126,129,197,239,137,116,36,84,
+  116,36,84,252,233,244,121,248,129,129,252,248,239,15,130,244,61,255,139,171,
+  233,59,171,233,15,130,244,247,232,244,73,248,1,129,122,253,4,239,15,133,244,
+  61,139,42,139,133,233,57,131,233,15,130,244,127,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,
-  120,248,129,129,252,248,239,15,130,244,60,129,122,253,4,239,15,133,244,60,
-  137,213,139,10,232,251,1,20,137,252,234,255,137,197,252,233,244,68,255,252,
-  242,15,42,192,252,233,244,69,255,248,130,129,122,253,4,239,255,15,133,244,
-  247,139,42,252,233,244,86,248,1,15,135,244,60,255,252,242,15,16,2,72,189,
+  121,248,130,129,252,248,239,15,130,244,61,129,122,253,4,239,15,133,244,61,
+  137,213,139,10,232,251,1,20,137,252,234,255,137,197,252,233,244,69,255,252,
+  242,15,42,192,252,233,244,70,255,248,131,129,122,253,4,239,255,15,133,244,
+  247,139,42,252,233,244,87,248,1,15,135,244,61,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,
-  86,255,248,131,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,60,255,
+  87,255,248,132,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,61,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,86,129,120,253,4,239,255,15,133,244,
-  248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,132,255,15,131,244,132,
+  68,194,252,240,248,1,57,208,15,134,244,87,129,120,253,4,239,255,15,133,244,
+  248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,133,255,15,131,244,133,
   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,133,255,15,133,244,248,11,40,131,232,8,252,233,244,1,248,
-  2,15,135,244,132,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,134,255,15,133,244,248,51,40,131,232,8,252,
-  233,244,1,248,2,15,135,244,132,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,135,129,122,253,4,239,255,
-  248,2,15,205,252,233,244,86,248,136,129,122,253,4,239,255,248,2,252,247,213,
-  255,248,86,252,242,15,42,197,252,233,244,69,255,248,132,139,68,36,84,252,
-  233,244,60,255,248,137,129,122,253,4,239,255,248,2,129,122,253,12,239,15,
-  133,244,60,139,74,8,255,248,137,129,252,248,239,15,130,244,60,129,122,253,
-  4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,2,252,
+  252,233,244,1,248,134,255,15,133,244,248,11,40,131,232,8,252,233,244,1,248,
+  2,15,135,244,133,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,135,255,15,133,244,248,51,40,131,232,8,252,
+  233,244,1,248,2,15,135,244,133,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,136,129,122,253,4,239,255,
+  248,2,15,205,252,233,244,87,248,137,129,122,253,4,239,255,248,2,252,247,213,
+  255,248,87,252,242,15,42,197,252,233,244,70,255,248,133,139,68,36,84,252,
+  233,244,61,255,248,138,129,122,253,4,239,255,248,2,129,122,253,12,239,15,
+  133,244,61,139,74,8,255,248,138,129,252,248,239,15,130,244,61,129,122,253,
+  4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,248,
-  138,129,122,253,4,239,255,248,138,129,252,248,239,15,130,244,60,129,122,253,
-  4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,2,252,
+  15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,87,255,248,
+  139,129,122,253,4,239,255,248,139,129,252,248,239,15,130,244,61,129,122,253,
+  4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,
-  248,139,129,122,253,4,239,255,248,139,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,2,
+  15,88,202,102,15,126,197,102,15,126,201,255,211,252,237,252,233,244,87,255,
+  248,140,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,
-  255,248,140,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,60,129,
-  122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,87,
+  255,248,141,129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,61,129,
+  122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,
-  248,141,129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,2,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,252,233,244,87,255,
+  248,142,129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,248,
-  124,184,237,252,233,244,60,248,126,184,237,248,60,139,108,36,96,139,114,252,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,211,205,252,233,244,87,248,
+  125,184,237,252,233,244,61,248,127,184,237,248,61,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,75,248,1,255,139,141,233,41,209,193,252,233,3,
-  133,192,141,65,1,139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,
-  252,233,15,182,205,131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,
+  149,233,133,192,15,143,244,76,248,1,255,139,141,233,41,209,193,252,233,3,
+  133,192,141,65,1,139,106,252,248,15,133,244,32,139,181,233,139,14,15,182,
+  252,233,15,182,205,131,198,4,252,255,36,252,235,248,32,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,72,93,
+  186,237,137,252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,73,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,142,255,15,182,131,233,168,
+  193,232,3,131,192,1,72,139,108,36,32,85,195,248,143,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,143,15,182,131,233,168,235,15,133,244,251,
-  252,233,244,247,248,144,15,182,131,233,168,235,15,133,244,251,168,235,15,
+  139,233,252,233,244,247,255,248,144,15,182,131,233,168,235,15,133,244,251,
+  252,233,244,247,248,145,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,145,131,198,4,139,77,232,137,76,36,84,252,
-  233,244,4,248,146,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,
+  252,255,164,253,252,235,233,248,146,131,198,4,139,77,232,137,76,36,84,252,
+  233,244,4,248,147,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,147,137,116,36,100,
-  255,248,148,255,137,116,36,100,131,206,1,248,1,255,141,68,194,252,248,139,
+  233,137,116,36,100,232,251,1,23,252,233,244,3,255,248,148,137,116,36,100,
+  255,248,149,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,
-  149,255,65,85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,
+  150,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,
@@ -390,7 +391,7 @@ static const unsigned char build_actionlist[15847] = {
   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,150,255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,
+  244,247,255,248,151,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,
@@ -398,25 +399,25 @@ static const unsigned char build_actionlist[15847] = {
   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,88,255,217,124,36,4,137,68,36,8,
+  137,252,233,137,194,232,251,1,26,255,248,89,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,151,72,184,237,237,
+  36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,152,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,90,255,217,124,36,4,137,
+  15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,91,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,152,72,184,
+  217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,153,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,111,255,217,
+  193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,112,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,153,72,184,237,237,
+  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,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,154,255,15,
+  84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,155,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,
@@ -424,12 +425,12 @@ static const unsigned char build_actionlist[15847] = {
   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,95,217,252,234,222,201,
-  248,155,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,156,217,192,217,252,252,220,252,233,217,
+  252,252,217,108,36,4,222,201,222,252,233,195,255,248,96,217,252,234,222,201,
+  248,156,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,157,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,114,255,248,157,252,242,15,45,193,252,242,15,42,208,
-  102,15,46,202,15,133,244,254,15,138,244,255,248,158,131,252,248,1,15,142,
+  217,252,238,195,255,248,115,255,248,158,252,242,15,45,193,252,242,15,42,208,
+  102,15,46,202,15,133,244,254,15,138,244,255,248,159,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,
@@ -446,27 +447,27 @@ static const unsigned char build_actionlist[15847] = {
   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,159,255,131,252,250,1,15,130,244,88,
-  15,132,244,90,131,252,250,3,15,130,244,111,15,135,244,248,252,242,15,81,192,
+  133,192,15,132,244,3,15,87,192,195,248,160,255,131,252,250,1,15,130,244,89,
+  15,132,244,91,131,252,250,3,15,130,244,112,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,95,80,252,233,244,253,248,1,232,244,155,255,80,
+  88,15,132,244,247,232,244,96,80,252,233,244,253,248,1,232,244,156,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,88,15,132,244,90,
-  131,252,250,3,15,130,244,111,15,135,244,248,217,252,250,195,248,2,131,252,
-  250,5,15,130,244,95,15,132,244,155,131,252,250,7,15,132,244,247,15,135,244,
+  195,255,139,84,36,12,221,68,36,4,131,252,250,1,15,130,244,89,15,132,244,91,
+  131,252,250,3,15,130,244,112,15,135,244,248,217,252,250,195,248,2,131,252,
+  250,5,15,130,244,96,15,132,244,156,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,160,255,65,131,252,248,1,15,132,244,247,15,135,244,248,252,
+  9,204,255,248,161,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,154,15,132,244,114,65,131,252,248,7,15,
+  248,2,65,131,252,248,5,15,130,244,155,15,132,244,115,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,
@@ -476,31 +477,31 @@ static const unsigned char build_actionlist[15847] = {
   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,154,15,132,244,114,131,252,248,7,15,
+  249,195,248,2,131,252,248,5,15,130,244,155,15,132,244,115,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,161,137,200,86,72,137,214,83,15,162,137,6,137,94,
-  4,137,78,8,137,86,12,91,94,195,248,162,255,85,72,137,229,83,72,137,203,139,
+  248,2,221,216,195,255,248,162,137,200,86,72,137,214,83,15,162,137,6,137,94,
+  4,137,78,8,137,86,12,91,94,195,248,163,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,248,163,255,249,255,129,124,253,202,4,239,15,133,244,
+  93,252,248,201,195,255,248,164,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,252,235,248,7,15,135,244,42,129,124,253,
-  194,4,239,15,130,244,247,15,133,244,42,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,42,255,252,
+  232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,43,129,124,253,
+  194,4,239,15,130,244,247,15,133,244,43,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,43,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,42,129,124,
-  253,194,4,239,15,131,244,42,255,248,1,252,242,15,16,4,194,248,2,131,198,4,
+  219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,43,129,124,
+  253,194,4,239,15,131,244,43,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,134,244,247,255,
   15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,254,
@@ -517,12 +518,12 @@ static const unsigned char build_actionlist[15847] = {
   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,47,129,124,253,202,4,239,15,132,244,47,255,
+  9,255,129,252,253,239,15,132,244,48,129,124,253,202,4,239,15,132,244,48,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,46,255,248,3,129,252,253,239,255,15,133,244,9,255,252,
-  233,244,47,255,72,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,
+  0,0,255,252,233,244,47,255,248,3,129,252,253,239,255,15,133,244,9,255,252,
+  233,244,48,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,
@@ -534,7 +535,7 @@ static const unsigned char build_actionlist[15847] = {
   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,
-  47,255,15,132,244,248,129,252,253,239,15,132,244,47,15,183,70,252,254,141,
+  48,255,15,132,244,248,129,252,253,239,15,132,244,48,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,
@@ -543,40 +544,40 @@ static const unsigned char build_actionlist[15847] = {
   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,52,255,
-  129,124,253,194,4,239,15,131,244,52,255,252,242,15,16,4,194,72,184,237,237,
+  68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,53,255,
+  129,124,253,194,4,239,15,131,244,53,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,55,139,12,194,137,213,232,251,1,20,255,252,242,15,42,192,
+  4,239,15,133,244,56,139,12,194,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,15,182,252,236,15,182,
-  192,255,129,124,253,252,234,4,239,15,133,244,49,129,124,253,199,4,239,15,
-  133,244,49,139,44,252,234,3,44,199,15,128,244,48,255,129,124,253,252,234,
-  4,239,15,133,244,51,129,124,253,199,4,239,15,133,244,51,139,4,199,3,4,252,
-  234,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,54,129,124,253,
-  194,4,239,15,133,244,54,139,44,252,234,3,44,194,15,128,244,53,255,199,68,
-  202,4,237,255,129,124,253,252,234,4,239,15,131,244,49,255,129,124,253,199,
-  4,239,15,131,244,49,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,51,255,129,124,
-  253,199,4,239,15,131,244,51,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,54,129,
-  124,253,194,4,239,15,131,244,54,255,252,242,15,16,4,252,234,252,242,15,88,
+  192,255,129,124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,
+  133,244,50,139,44,252,234,3,44,199,15,128,244,49,255,129,124,253,252,234,
+  4,239,15,133,244,52,129,124,253,199,4,239,15,133,244,52,139,4,199,3,4,252,
+  234,15,128,244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,
+  194,4,239,15,133,244,55,139,44,252,234,3,44,194,15,128,244,54,255,199,68,
+  202,4,237,255,129,124,253,252,234,4,239,15,131,244,50,255,129,124,253,199,
+  4,239,15,131,244,50,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,52,255,129,124,
+  253,199,4,239,15,131,244,52,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,55,129,
+  124,253,194,4,239,15,131,244,55,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,
-  49,129,124,253,199,4,239,15,133,244,49,139,44,252,234,43,44,199,15,128,244,
-  48,255,129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,
-  244,51,139,4,199,43,4,252,234,15,128,244,50,255,129,124,253,252,234,4,239,
-  15,133,244,54,129,124,253,194,4,239,15,133,244,54,139,44,252,234,43,44,194,
-  15,128,244,53,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
+  50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,43,44,199,15,128,244,
+  49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4,239,15,133,
+  244,52,139,4,199,43,4,252,234,15,128,244,51,255,129,124,253,252,234,4,239,
+  15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234,43,44,194,
+  15,128,244,54,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,49,129,124,
-  253,199,4,239,15,133,244,49,139,44,252,234,15,175,44,199,15,128,244,48,255,
-  129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,244,
-  51,139,4,199,15,175,4,252,234,15,128,244,50,255,129,124,253,252,234,4,239,
-  15,133,244,54,129,124,253,194,4,239,15,133,244,54,139,44,252,234,15,175,44,
-  194,15,128,244,53,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
+  4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,50,129,124,
+  253,199,4,239,15,133,244,50,139,44,252,234,15,175,44,199,15,128,244,49,255,
+  129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4,239,15,133,244,
+  52,139,4,199,15,175,4,252,234,15,128,244,51,255,129,124,253,252,234,4,239,
+  15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234,15,175,44,
+  194,15,128,244,54,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,
@@ -585,10 +586,10 @@ static const unsigned char build_actionlist[15847] = {
   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,164,232,244,
-  154,255,252,233,244,164,255,232,244,114,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,34,137,205,137,116,
-  36,100,232,251,1,27,139,149,233,133,192,15,133,244,43,15,182,110,252,255,
+  234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,165,232,244,
+  155,255,252,233,244,165,255,232,244,115,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,35,137,205,137,116,
+  36,100,232,251,1,27,139,149,233,133,192,15,133,244,44,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,
@@ -630,56 +631,56 @@ static const unsigned char build_actionlist[15847] = {
   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,32,
   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,165,255,72,252,247,208,139,106,
-  252,248,139,173,233,139,4,135,252,233,244,166,255,15,182,252,236,15,182,192,
-  129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,255,129,124,253,194,
+  252,248,139,173,233,139,4,135,252,233,244,166,255,72,252,247,208,139,106,
+  252,248,139,173,233,139,4,135,252,233,244,167,255,15,182,252,236,15,182,192,
+  129,124,253,252,234,4,239,15,133,244,38,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,37,255,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,
+  15,133,244,38,255,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,37,15,182,78,252,253,248,3,
+  249,139,141,233,252,246,129,233,235,15,132,244,38,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,
-  37,139,4,194,252,233,244,165,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,35,139,44,252,234,248,165,
+  38,139,4,194,252,233,244,166,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,36,139,44,252,234,248,166,
   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,35,
-  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,
-  44,252,234,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,
+  233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,36,
+  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,37,139,
+  44,252,234,59,133,233,15,131,244,37,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,36,255,15,182,78,252,253,248,3,
+  139,141,233,252,246,129,233,235,15,132,244,37,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,40,139,44,252,234,255,15,133,244,40,255,59,133,233,
-  15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,
+  252,234,4,239,15,133,244,41,139,44,252,234,255,15,133,244,41,255,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,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,40,15,182,
-  78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,40,139,4,
-  194,252,233,244,166,248,7,128,165,233,235,139,139,233,137,171,233,137,141,
+  233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,41,15,182,
+  78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,
+  194,252,233,244,167,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,38,139,44,252,234,
-  248,166,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
+  247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,
+  248,167,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,38,139,76,36,80,252,233,244,
+  80,139,141,233,252,246,129,233,235,15,132,244,39,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,38,248,6,137,68,36,80,199,68,36,84,237,
+  252,252,246,129,233,235,15,132,244,39,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,34,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,39,139,
-  44,252,234,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,
+  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,
+  44,252,234,59,133,233,15,131,244,40,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,39,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
+  15,132,244,40,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,
@@ -689,9 +690,9 @@ static const unsigned char build_actionlist[15847] = {
   137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,35,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,56,141,84,202,8,137,114,252,252,139,181,233,
+  202,4,239,139,44,202,15,133,244,57,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,57,
+  202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,58,
   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,
@@ -738,19 +739,19 @@ static const unsigned char build_actionlist[15847] = {
   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,
-  131,172,253,43,233,1,15,132,244,146,255,141,12,202,255,129,121,253,4,239,
-  15,133,244,255,255,129,121,253,12,239,15,133,244,58,129,121,253,20,239,15,
-  133,244,58,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,
-  244,163,129,121,253,20,239,15,133,244,163,255,139,105,16,133,252,237,15,136,
+  131,172,253,43,233,1,15,132,244,147,255,141,12,202,255,129,121,253,4,239,
+  15,133,244,255,255,129,121,253,12,239,15,133,244,59,129,121,253,20,239,15,
+  133,244,59,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,
+  244,164,129,121,253,20,239,15,133,244,164,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,58,129,121,253,12,
-  239,15,131,244,58,255,129,121,253,12,239,15,131,244,163,129,121,253,20,239,
-  15,131,244,163,255,139,105,20,255,129,252,253,239,15,131,244,58,255,252,242,
+  252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,59,129,121,253,12,
+  239,15,131,244,59,255,129,121,253,12,239,15,131,244,164,129,121,253,20,239,
+  15,131,244,164,255,139,105,20,255,129,252,253,239,15,131,244,59,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,
@@ -767,7 +768,7 @@ static const unsigned char build_actionlist[15847] = {
   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,131,172,253,43,233,1,15,132,244,148,255,139,190,
+  209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,149,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,
@@ -807,6 +808,7 @@ enum {
   GLOB_vmeta_call,
   GLOB_vm_call_dispatch_f,
   GLOB_vm_cpcall,
+  GLOB_vm_call_tail,
   GLOB_cont_cat,
   GLOB_cont_ra,
   GLOB_BC_CAT_Z,
@@ -967,6 +969,7 @@ static const char *const globnames[] = {
   "vmeta_call",
   "vm_call_dispatch_f",
   "vm_cpcall",
+  "vm_call_tail",
   "cont_cat",
   "cont_ra",
   "BC_CAT_Z",
@@ -1171,672 +1174,673 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   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, 0);
-  dasm_put(Dst, 768, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 604, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
+  dasm_put(Dst, 770, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 894);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 885, LJ_TISNUM);
+    dasm_put(Dst, 908, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 895);
+    dasm_put(Dst, 918);
   } else {
   }
-  dasm_put(Dst, 908, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
-  dasm_put(Dst, 1055, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 931, 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, 885, LJ_TISNUM);
+    dasm_put(Dst, 908, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 895);
+    dasm_put(Dst, 918);
   } else {
   }
-  dasm_put(Dst, 1078, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
-  dasm_put(Dst, 1351);
+  dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 1274, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+  dasm_put(Dst, 1374);
 #if LJ_HASFFI
-  dasm_put(Dst, 1371, Dt1(->base));
+  dasm_put(Dst, 1394, Dt1(->base));
 #endif
-  dasm_put(Dst, 1402);
+  dasm_put(Dst, 1425);
 #if LJ_DUALNUM
-  dasm_put(Dst, 1405);
+  dasm_put(Dst, 1428);
 #endif
-  dasm_put(Dst, 1411);
+  dasm_put(Dst, 1434);
 #if LJ_DUALNUM
-  dasm_put(Dst, 879);
+  dasm_put(Dst, 902);
 #endif
-  dasm_put(Dst, 1423);
+  dasm_put(Dst, 1446);
 #if LJ_DUALNUM
-  dasm_put(Dst, 1405);
+  dasm_put(Dst, 1428);
 #endif
-  dasm_put(Dst, 1451, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 1588, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
-  dasm_put(Dst, 1771, 1+1, ~LJ_TNUMX);
+  dasm_put(Dst, 1474, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 1611, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+  dasm_put(Dst, 1794, 1+1, ~LJ_TNUMX);
   if (cmov) {
-  dasm_put(Dst, 1816);
+  dasm_put(Dst, 1839);
   } else {
-  dasm_put(Dst, 1820);
+  dasm_put(Dst, 1843);
   }
-  dasm_put(Dst, 1829, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
-  dasm_put(Dst, 1908, 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, 1965, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
-  dasm_put(Dst, 2031, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
-  dasm_put(Dst, 2101, 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, 2190, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 1852, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
+  dasm_put(Dst, 1931, 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, 1988, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
+  dasm_put(Dst, 2054, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
+  dasm_put(Dst, 2124, 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, 2213, 1+1, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2204);
+    dasm_put(Dst, 2227);
   } else {
-    dasm_put(Dst, 2221);
+    dasm_put(Dst, 2244);
   }
   if (sse) {
-    dasm_put(Dst, 2226);
+    dasm_put(Dst, 2249);
   } else {
-    dasm_put(Dst, 2236);
+    dasm_put(Dst, 2259);
   }
-  dasm_put(Dst, 2243, 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, 2309, Dt1(->base));
+  dasm_put(Dst, 2266, 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, 2332, Dt1(->base));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2333);
+    dasm_put(Dst, 2356);
   } else {
-    dasm_put(Dst, 2338);
+    dasm_put(Dst, 2361);
   }
-  dasm_put(Dst, 2343, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
-  dasm_put(Dst, 2436, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2366, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
+  dasm_put(Dst, 2459, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2483, Dt6(->metatable));
+  dasm_put(Dst, 2506, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2492, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+  dasm_put(Dst, 2515, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2478);
+    dasm_put(Dst, 2501);
   } else {
-    dasm_put(Dst, 2221);
+    dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 2547);
+  dasm_put(Dst, 2570);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2552, LJ_TISNUM);
+    dasm_put(Dst, 2575, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 2568, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 2591, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 2601, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
-  dasm_put(Dst, 2463, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2624, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+  dasm_put(Dst, 2486, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2483, Dt6(->metatable));
+  dasm_put(Dst, 2506, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2678, Dt8(->upvalue[0]), LJ_TFUNC);
+  dasm_put(Dst, 2701, Dt8(->upvalue[0]), LJ_TFUNC);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2699, LJ_TISNUM);
+    dasm_put(Dst, 2722, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 2711);
-  } else {
-    dasm_put(Dst, 2721);
-  }
-  dasm_put(Dst, 2728, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
-  dasm_put(Dst, 2792, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
-  dasm_put(Dst, 2882, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
-  dasm_put(Dst, 2970, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
-  dasm_put(Dst, 3083, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
-  dasm_put(Dst, 3181, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
-  dasm_put(Dst, 3248, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
-  dasm_put(Dst, 3336, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
-  dasm_put(Dst, 3448, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+    dasm_put(Dst, 2734);
+  } else {
+    dasm_put(Dst, 2744);
+  }
+  dasm_put(Dst, 2751, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+  dasm_put(Dst, 2815, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+  dasm_put(Dst, 2905, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+  dasm_put(Dst, 2993, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+  dasm_put(Dst, 3106, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+  dasm_put(Dst, 3204, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 3271, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+  dasm_put(Dst, 3359, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+  dasm_put(Dst, 3471, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
   if (!LJ_DUALNUM) {
-    dasm_put(Dst, 3475);
+    dasm_put(Dst, 3498);
   }
   if (sse) {
-    dasm_put(Dst, 3478);
+    dasm_put(Dst, 3501);
   }
-  dasm_put(Dst, 3493, 1+1);
+  dasm_put(Dst, 3516, 1+1);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 3504, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 3527, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3584, LJ_TISNUM);
+    dasm_put(Dst, 3607, LJ_TISNUM);
   }
   if (sse) {
-    dasm_put(Dst, 3594, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 3617, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 3625);
+    dasm_put(Dst, 3648);
   }
-  dasm_put(Dst, 3642, 1+1, FRAME_TYPE, LJ_TNIL);
+  dasm_put(Dst, 3665, 1+1, FRAME_TYPE, LJ_TNIL);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 3738, LJ_TISNUM);
+  dasm_put(Dst, 3761, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 3584, LJ_TISNUM);
+  dasm_put(Dst, 3607, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 3760);
+  dasm_put(Dst, 3783);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3769);
+  dasm_put(Dst, 3792);
     }
-  dasm_put(Dst, 2231);
+  dasm_put(Dst, 2254);
   } else {
-  dasm_put(Dst, 3803);
+  dasm_put(Dst, 3826);
     if (LJ_DUALNUM) {
     } else {
-  dasm_put(Dst, 2238);
+  dasm_put(Dst, 2261);
     }
   }
-  dasm_put(Dst, 3809);
+  dasm_put(Dst, 3832);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 3738, LJ_TISNUM);
+  dasm_put(Dst, 3761, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 3584, LJ_TISNUM);
+  dasm_put(Dst, 3607, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 3812);
+  dasm_put(Dst, 3835);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3769);
+  dasm_put(Dst, 3792);
     }
-  dasm_put(Dst, 2231);
+  dasm_put(Dst, 2254);
   } else {
-  dasm_put(Dst, 3821);
+  dasm_put(Dst, 3844);
     if (LJ_DUALNUM) {
     } else {
-  dasm_put(Dst, 2238);
+  dasm_put(Dst, 2261);
     }
   }
   if (sse) {
-    dasm_put(Dst, 3827, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3850, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3856, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3879, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3885, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3954, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4011, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4074, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 4164);
+  dasm_put(Dst, 3908, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3977, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4034, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4097, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4187);
   if (sse) {
-  dasm_put(Dst, 4176, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4199, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4201);
+  dasm_put(Dst, 4224);
   if (sse) {
-  dasm_put(Dst, 4215, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4238, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4240);
+  dasm_put(Dst, 4263);
   if (sse) {
-  dasm_put(Dst, 4254, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4277, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4279);
+  dasm_put(Dst, 4302);
   if (sse) {
-    dasm_put(Dst, 4295, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4318, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   } else {
-    dasm_put(Dst, 4334, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4357, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   }
-  dasm_put(Dst, 4367, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
-  dasm_put(Dst, 4432, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4390, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4455, 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4531);
+    dasm_put(Dst, 4554);
   } else {
-    dasm_put(Dst, 4537);
+    dasm_put(Dst, 4560);
   }
-  dasm_put(Dst, 4546);
+  dasm_put(Dst, 4569);
   if (sse) {
-    dasm_put(Dst, 4571);
+    dasm_put(Dst, 4594);
   } else {
-    dasm_put(Dst, 4577);
+    dasm_put(Dst, 4600);
   }
-  dasm_put(Dst, 4580, 1+2);
+  dasm_put(Dst, 4603, 1+2);
   if (sse) {
-    dasm_put(Dst, 4589);
+    dasm_put(Dst, 4612);
   } else {
-    dasm_put(Dst, 4597);
+    dasm_put(Dst, 4620);
   }
-  dasm_put(Dst, 4605);
+  dasm_put(Dst, 4628);
   if (sse) {
-    dasm_put(Dst, 4608, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+    dasm_put(Dst, 4631, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
   } else {
-    dasm_put(Dst, 4635);
+    dasm_put(Dst, 4658);
   }
-  dasm_put(Dst, 4654);
+  dasm_put(Dst, 4677);
   if (sse) {
-    dasm_put(Dst, 4670, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4693, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4695, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4718, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4717);
+  dasm_put(Dst, 4740);
   if (sse) {
-    dasm_put(Dst, 4739);
+    dasm_put(Dst, 4762);
   } else {
-    dasm_put(Dst, 4765);
+    dasm_put(Dst, 4788);
   }
-  dasm_put(Dst, 4782, 1+2);
+  dasm_put(Dst, 4805, 1+2);
   if (sse) {
-    dasm_put(Dst, 4822);
+    dasm_put(Dst, 4845);
   } else {
-    dasm_put(Dst, 4830);
+    dasm_put(Dst, 4853);
   }
-  dasm_put(Dst, 4840, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4863, 2+1, LJ_TISNUM, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4892, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4915, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4939, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4962, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 4980, LJ_TISNUM);
+  dasm_put(Dst, 5003, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 4993, LJ_TISNUM);
+  dasm_put(Dst, 5016, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 4531);
+  dasm_put(Dst, 4554);
   } else {
   }
-  dasm_put(Dst, 5043);
+  dasm_put(Dst, 5066);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 5054, LJ_TISNUM);
+  dasm_put(Dst, 5077, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5075);
+  dasm_put(Dst, 5098);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 5096);
+  dasm_put(Dst, 5119);
   } else {
   }
-  dasm_put(Dst, 5121, LJ_TISNUM);
+  dasm_put(Dst, 5144, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5134, LJ_TISNUM);
+  dasm_put(Dst, 5157, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 4531);
+  dasm_put(Dst, 4554);
   } else {
   }
-  dasm_put(Dst, 5043);
+  dasm_put(Dst, 5066);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 5054, LJ_TISNUM);
+  dasm_put(Dst, 5077, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5075);
+  dasm_put(Dst, 5098);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 5184);
+  dasm_put(Dst, 5207);
   } else {
   }
   if (!sse) {
-    dasm_put(Dst, 5209);
+    dasm_put(Dst, 5232);
   }
-  dasm_put(Dst, 5218, 1+1, LJ_TSTR);
+  dasm_put(Dst, 5241, 1+1, LJ_TSTR);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5240, Dt5(->len));
+    dasm_put(Dst, 5263, Dt5(->len));
   } else if (sse) {
-    dasm_put(Dst, 5248, Dt5(->len));
+    dasm_put(Dst, 5271, Dt5(->len));
   } else {
-    dasm_put(Dst, 5259, Dt5(->len));
+    dasm_put(Dst, 5282, Dt5(->len));
   }
-  dasm_put(Dst, 5267, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+  dasm_put(Dst, 5290, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5243);
+    dasm_put(Dst, 5266);
   } else if (sse) {
-    dasm_put(Dst, 5305);
+    dasm_put(Dst, 5328);
   } else {
-    dasm_put(Dst, 5315);
+    dasm_put(Dst, 5338);
   }
-  dasm_put(Dst, 5328, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+  dasm_put(Dst, 5351, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5359);
-  } else if (sse) {
     dasm_put(Dst, 5382);
+  } else if (sse) {
+    dasm_put(Dst, 5405);
   } else {
-    dasm_put(Dst, 5408);
+    dasm_put(Dst, 5431);
   }
-  dasm_put(Dst, 5432, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+  dasm_put(Dst, 5455, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5540);
+    dasm_put(Dst, 5563);
   } else if (sse) {
-    dasm_put(Dst, 5552);
+    dasm_put(Dst, 5575);
   } else {
-    dasm_put(Dst, 5567);
+    dasm_put(Dst, 5590);
   }
-  dasm_put(Dst, 5579, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5602, LJ_TSTR, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2478);
+    dasm_put(Dst, 2501);
   } else {
-    dasm_put(Dst, 2221);
+    dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 5596, Dt5(->len));
+  dasm_put(Dst, 5619, Dt5(->len));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5606);
+    dasm_put(Dst, 5629);
   } else if (sse) {
-    dasm_put(Dst, 5610);
+    dasm_put(Dst, 5633);
   } else {
   }
-  dasm_put(Dst, 5617, sizeof(GCstr)-1);
-  dasm_put(Dst, 5692, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 5751, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5640, sizeof(GCstr)-1);
+  dasm_put(Dst, 5715, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 5774, LJ_TSTR, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5768);
+    dasm_put(Dst, 5791);
   } else if (sse) {
-    dasm_put(Dst, 5776);
+    dasm_put(Dst, 5799);
   } else {
-    dasm_put(Dst, 5787);
+    dasm_put(Dst, 5810);
   }
-  dasm_put(Dst, 5803, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 5868, 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, 5931, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
-  dasm_put(Dst, 6002, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 6087, 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, 6157, 1+1, LJ_TTAB);
+  dasm_put(Dst, 5826, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 5891, 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, 5954, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+  dasm_put(Dst, 6025, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 6110, 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, 6180, 1+1, LJ_TTAB);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 6225);
+    dasm_put(Dst, 6248);
   } else if (sse) {
-    dasm_put(Dst, 6232);
+    dasm_put(Dst, 6255);
   } else {
   }
-  dasm_put(Dst, 6242, LJ_TISNUM);
+  dasm_put(Dst, 6265, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6250);
+  dasm_put(Dst, 6273);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (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, 6291);
+    dasm_put(Dst, 6314);
   } else {
   }
-  dasm_put(Dst, 6296);
+  dasm_put(Dst, 6319);
   if (sse) {
-  dasm_put(Dst, 6299, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6322, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
-  dasm_put(Dst, 6309);
+  dasm_put(Dst, 6332);
   }
-  dasm_put(Dst, 2198, LJ_TISNUM);
+  dasm_put(Dst, 2221, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6335);
+  dasm_put(Dst, 6358);
   } else {
   }
-  dasm_put(Dst, 6350, LJ_TISNUM);
+  dasm_put(Dst, 6373, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6375);
+  dasm_put(Dst, 6398);
   } else {
-  dasm_put(Dst, 6395);
+  dasm_put(Dst, 6418);
   }
   if (sse) {
-  dasm_put(Dst, 6400);
+  dasm_put(Dst, 6423);
   } else {
   }
-  dasm_put(Dst, 6417);
+  dasm_put(Dst, 6440);
   if (sse) {
-  dasm_put(Dst, 6299, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6322, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
-  dasm_put(Dst, 6309);
+  dasm_put(Dst, 6332);
   }
-  dasm_put(Dst, 2198, LJ_TISNUM);
+  dasm_put(Dst, 2221, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6335);
+  dasm_put(Dst, 6358);
   } else {
   }
-  dasm_put(Dst, 6350, LJ_TISNUM);
+  dasm_put(Dst, 6373, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6427);
+  dasm_put(Dst, 6450);
   } else {
-  dasm_put(Dst, 6395);
+  dasm_put(Dst, 6418);
   }
   if (sse) {
-  dasm_put(Dst, 6447);
+  dasm_put(Dst, 6470);
   } else {
   }
-  dasm_put(Dst, 6464);
+  dasm_put(Dst, 6487);
   if (sse) {
-  dasm_put(Dst, 6299, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6322, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
-  dasm_put(Dst, 6309);
+  dasm_put(Dst, 6332);
   }
-  dasm_put(Dst, 2198, LJ_TISNUM);
+  dasm_put(Dst, 2221, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6335);
+  dasm_put(Dst, 6358);
   } else {
   }
-  dasm_put(Dst, 6350, LJ_TISNUM);
+  dasm_put(Dst, 6373, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6474);
+  dasm_put(Dst, 6497);
   } else {
-  dasm_put(Dst, 6395);
+  dasm_put(Dst, 6418);
   }
   if (sse) {
-  dasm_put(Dst, 6494);
+  dasm_put(Dst, 6517);
   } else {
   }
-  dasm_put(Dst, 6511, LJ_TISNUM);
+  dasm_put(Dst, 6534, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6526, LJ_TISNUM);
+  dasm_put(Dst, 6549, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6542);
+  dasm_put(Dst, 6565);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 6291);
+    dasm_put(Dst, 6314);
   } else if (sse) {
-    dasm_put(Dst, 6548);
+    dasm_put(Dst, 6571);
   } else {
   }
-  dasm_put(Dst, 6560);
+  dasm_put(Dst, 6583);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6571, LJ_TISNUM);
+  dasm_put(Dst, 6594, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6579, LJ_TISNUM);
+  dasm_put(Dst, 6602, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6594, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6617, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6661);
+  dasm_put(Dst, 6684);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6668, LJ_TISNUM);
+  dasm_put(Dst, 6691, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6579, LJ_TISNUM);
+  dasm_put(Dst, 6602, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6676, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6699, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6743);
+  dasm_put(Dst, 6766);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6751, LJ_TISNUM);
+  dasm_put(Dst, 6774, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6579, LJ_TISNUM);
+  dasm_put(Dst, 6602, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6759, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6782, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6826);
+  dasm_put(Dst, 6849);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6834, LJ_TISNUM);
+  dasm_put(Dst, 6857, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6579, LJ_TISNUM);
+  dasm_put(Dst, 6602, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6842, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6865, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6909);
+  dasm_put(Dst, 6932);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6916, LJ_TISNUM);
+  dasm_put(Dst, 6939, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6318);
+  dasm_put(Dst, 6341);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6267, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6290, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6579, LJ_TISNUM);
+  dasm_put(Dst, 6602, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 6924, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6947, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6991, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
-  dasm_put(Dst, 7067, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 7194, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7014, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+  dasm_put(Dst, 7090, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 7217, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7233, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 7256, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 7264, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 7315, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 7287, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 7338, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 7382, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 7405, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 7429);
+  dasm_put(Dst, 7452);
 #if LJ_HASJIT
-  dasm_put(Dst, 7259);
+  dasm_put(Dst, 7282);
 #endif
-  dasm_put(Dst, 7436);
+  dasm_put(Dst, 7459);
 #if LJ_HASJIT
-  dasm_put(Dst, 7439);
+  dasm_put(Dst, 7462);
 #endif
-  dasm_put(Dst, 7449, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7472, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7483);
+  dasm_put(Dst, 7506);
 #endif
-  dasm_put(Dst, 7488, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7511, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7519, 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);
+  dasm_put(Dst, 7542, 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, 7749);
+  dasm_put(Dst, 7772);
 #if LJ_HASJIT
-  dasm_put(Dst, 7752, 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, 7894);
+  dasm_put(Dst, 7775, 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, 7917);
 #endif
-  dasm_put(Dst, 7920);
+  dasm_put(Dst, 7943);
   if (!sse) {
-  dasm_put(Dst, 7923);
+  dasm_put(Dst, 7946);
   }
-  dasm_put(Dst, 7968, (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));
+  dasm_put(Dst, 7991, (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, 8054);
+  dasm_put(Dst, 8077);
   }
-  dasm_put(Dst, 8099, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+  dasm_put(Dst, 8122, (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, 8185);
+  dasm_put(Dst, 8208);
   }
-  dasm_put(Dst, 8224, (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));
+  dasm_put(Dst, 8247, (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, 8313, (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));
+    dasm_put(Dst, 8336, (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, 8427);
+    dasm_put(Dst, 8450);
   }
-  dasm_put(Dst, 8474);
+  dasm_put(Dst, 8497);
   if (!sse) {
   } else {
-    dasm_put(Dst, 8548);
+    dasm_put(Dst, 8571);
   }
-  dasm_put(Dst, 8551);
-  dasm_put(Dst, 8636, (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, 8739, (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, 8895);
+  dasm_put(Dst, 8574);
+  dasm_put(Dst, 8659, (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, 8762, (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, 8918);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 8936);
-    dasm_put(Dst, 9006);
-    dasm_put(Dst, 9079);
+    dasm_put(Dst, 8959);
+    dasm_put(Dst, 9029);
+    dasm_put(Dst, 9102);
   } else {
-    dasm_put(Dst, 9129);
-    dasm_put(Dst, 9221);
+    dasm_put(Dst, 9152);
+    dasm_put(Dst, 9244);
   }
-  dasm_put(Dst, 9267);
+  dasm_put(Dst, 9290);
 #endif
-  dasm_put(Dst, 9271);
+  dasm_put(Dst, 9294);
   if (sse) {
-    dasm_put(Dst, 9274, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
-    dasm_put(Dst, 9363, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 9297, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+    dasm_put(Dst, 9386, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 9487);
-    dasm_put(Dst, 9570);
+    dasm_put(Dst, 9510);
+    dasm_put(Dst, 9593);
     if (cmov) {
-    dasm_put(Dst, 9625);
+    dasm_put(Dst, 9648);
     } else {
-    dasm_put(Dst, 9644);
+    dasm_put(Dst, 9667);
     }
-    dasm_put(Dst, 9267);
+    dasm_put(Dst, 9290);
   }
-  dasm_put(Dst, 9685);
+  dasm_put(Dst, 9708);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 9713, DtE(->spadj));
+  dasm_put(Dst, 9736, DtE(->spadj));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9728, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]));
-  dasm_put(Dst, 9809, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
+  dasm_put(Dst, 9751, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]));
+  dasm_put(Dst, 9832, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9822);
+  dasm_put(Dst, 9845);
 #endif
-  dasm_put(Dst, 9830);
+  dasm_put(Dst, 9853);
 #ifdef LUA_USE_ASSERT
-  dasm_put(Dst, 9269);
+  dasm_put(Dst, 9292);
 #endif
-  dasm_put(Dst, 9269);
+  dasm_put(Dst, 9292);
 }
 
 /* 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, 9833, defop);
+  dasm_put(Dst, 9856, defop);
 
   switch (op) {
 
@@ -1847,296 +1851,296 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 9835, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 9858, LJ_TISNUM, LJ_TISNUM);
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 9865);
+      dasm_put(Dst, 9888);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 9870);
+      dasm_put(Dst, 9893);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 9875);
+      dasm_put(Dst, 9898);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 9880);
+      dasm_put(Dst, 9903);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 9885, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 9908, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 9939);
+       dasm_put(Dst, 9962);
       } else {
-       dasm_put(Dst, 9950);
+       dasm_put(Dst, 9973);
       }
-      dasm_put(Dst, 9961);
+      dasm_put(Dst, 9984);
       if (sse) {
-       dasm_put(Dst, 9968);
+       dasm_put(Dst, 9991);
        switch (op) {
        case BC_ISLT:
-       dasm_put(Dst, 9988);
+       dasm_put(Dst, 10011);
        break;
        case BC_ISGE:
-       dasm_put(Dst, 9993);
+       dasm_put(Dst, 10016);
        break;
        case BC_ISLE:
-       dasm_put(Dst, 9998);
+       dasm_put(Dst, 10021);
        break;
        case BC_ISGT:
-       dasm_put(Dst, 10003);
+       dasm_put(Dst, 10026);
        break;
        default: break;  /* Shut up GCC. */
        }
-       dasm_put(Dst, 10008);
+       dasm_put(Dst, 10031);
       } else {
-       dasm_put(Dst, 10013);
+       dasm_put(Dst, 10036);
       }
     } else {
-      dasm_put(Dst, 10021, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10044, LJ_TISNUM, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 10042);
+      dasm_put(Dst, 10065);
     } else {
-      dasm_put(Dst, 10063);
+      dasm_put(Dst, 10086);
       if (cmov) {
-      dasm_put(Dst, 10079);
+      dasm_put(Dst, 10102);
       } else {
-      dasm_put(Dst, 10085);
+      dasm_put(Dst, 10108);
       }
     }
     if (LJ_DUALNUM) {
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 9988);
+      dasm_put(Dst, 10011);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 9993);
+      dasm_put(Dst, 10016);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 9998);
+      dasm_put(Dst, 10021);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 10003);
+      dasm_put(Dst, 10026);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 10008);
+      dasm_put(Dst, 10031);
     } else {
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 10092);
+      dasm_put(Dst, 10115);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 10097);
+      dasm_put(Dst, 10120);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 10102);
+      dasm_put(Dst, 10125);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 10107);
+      dasm_put(Dst, 10130);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 10112, -BCBIAS_J*4);
+      dasm_put(Dst, 10135, -BCBIAS_J*4);
     }
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 10144);
+    dasm_put(Dst, 10167);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10152, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10175, LJ_TISNUM, LJ_TISNUM);
       if (vk) {
-       dasm_put(Dst, 10177);
+       dasm_put(Dst, 10200);
       } else {
-       dasm_put(Dst, 10182);
+       dasm_put(Dst, 10205);
       }
-      dasm_put(Dst, 10187, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 10210, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 10239);
+       dasm_put(Dst, 10262);
       } else {
-       dasm_put(Dst, 10246);
+       dasm_put(Dst, 10269);
       }
-      dasm_put(Dst, 10250);
+      dasm_put(Dst, 10273);
       if (sse) {
-       dasm_put(Dst, 10261);
+       dasm_put(Dst, 10284);
       } else {
-       dasm_put(Dst, 10273);
+       dasm_put(Dst, 10296);
       }
-      dasm_put(Dst, 10280);
+      dasm_put(Dst, 10303);
     } else {
-      dasm_put(Dst, 10285, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10308, LJ_TISNUM, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 10304);
+      dasm_put(Dst, 10327);
     } else {
-      dasm_put(Dst, 10322);
+      dasm_put(Dst, 10345);
       if (cmov) {
-      dasm_put(Dst, 10079);
+      dasm_put(Dst, 10102);
       } else {
-      dasm_put(Dst, 10085);
+      dasm_put(Dst, 10108);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 10335);
+      dasm_put(Dst, 10358);
     } else {
-      dasm_put(Dst, 10344);
+      dasm_put(Dst, 10367);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 10353, -BCBIAS_J*4);
+      dasm_put(Dst, 10376, -BCBIAS_J*4);
       if (!LJ_HASFFI) {
-       dasm_put(Dst, 4586);
+       dasm_put(Dst, 4609);
       }
     } else {
       if (!LJ_HASFFI) {
-       dasm_put(Dst, 4586);
+       dasm_put(Dst, 4609);
       }
-      dasm_put(Dst, 10368, -BCBIAS_J*4);
+      dasm_put(Dst, 10391, -BCBIAS_J*4);
     }
     if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
                       op == BC_ISEQN || op == BC_ISNEN)) {
-      dasm_put(Dst, 10383);
+      dasm_put(Dst, 10406);
     } else {
-      dasm_put(Dst, 10124);
+      dasm_put(Dst, 10147);
     }
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 9806);
+      dasm_put(Dst, 9829);
       if (LJ_HASFFI) {
-       dasm_put(Dst, 10388, LJ_TCDATA, LJ_TCDATA);
+       dasm_put(Dst, 10411, LJ_TCDATA, LJ_TCDATA);
       }
-      dasm_put(Dst, 10407, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 10430, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-       dasm_put(Dst, 10463);
+       dasm_put(Dst, 10486);
       } else {
-       dasm_put(Dst, 10467);
+       dasm_put(Dst, 10490);
       }
-      dasm_put(Dst, 10473);
+      dasm_put(Dst, 10496);
     } else if (LJ_HASFFI) {
-      dasm_put(Dst, 10478, LJ_TCDATA);
+      dasm_put(Dst, 10501, LJ_TCDATA);
       if (LJ_DUALNUM && vk) {
-       dasm_put(Dst, 10485);
+       dasm_put(Dst, 10508);
       } else {
-       dasm_put(Dst, 10458);
+       dasm_put(Dst, 10481);
       }
-      dasm_put(Dst, 10490);
+      dasm_put(Dst, 10513);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 10495, LJ_TSTR);
+    dasm_put(Dst, 10518, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 10339);
+      dasm_put(Dst, 10362);
     } else {
-      dasm_put(Dst, 2877);
+      dasm_put(Dst, 765);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 10521);
+    dasm_put(Dst, 10544);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10529, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10552, LJ_TISNUM, LJ_TISNUM);
       if (vk) {
-       dasm_put(Dst, 10177);
+       dasm_put(Dst, 10200);
       } else {
-       dasm_put(Dst, 10182);
+       dasm_put(Dst, 10205);
       }
-      dasm_put(Dst, 10554, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 10577, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 10602);
+       dasm_put(Dst, 10625);
       } else {
-       dasm_put(Dst, 10609);
+       dasm_put(Dst, 10632);
       }
-      dasm_put(Dst, 10613);
+      dasm_put(Dst, 10636);
       if (sse) {
-       dasm_put(Dst, 10620);
+       dasm_put(Dst, 10643);
       } else {
-       dasm_put(Dst, 10632);
+       dasm_put(Dst, 10655);
       }
-      dasm_put(Dst, 10280);
+      dasm_put(Dst, 10303);
     } else {
-      dasm_put(Dst, 10639, LJ_TISNUM);
+      dasm_put(Dst, 10662, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 10648);
+      dasm_put(Dst, 10671);
     } else {
-      dasm_put(Dst, 10666);
+      dasm_put(Dst, 10689);
       if (cmov) {
-      dasm_put(Dst, 10079);
+      dasm_put(Dst, 10102);
       } else {
-      dasm_put(Dst, 10085);
+      dasm_put(Dst, 10108);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 10679);
+    dasm_put(Dst, 10702);
     if (!LJ_HASFFI) goto iseqne_test;
     if (vk) {
-      dasm_put(Dst, 10693, -BCBIAS_J*4, LJ_TCDATA);
+      dasm_put(Dst, 10716, -BCBIAS_J*4, LJ_TCDATA);
     } else {
-      dasm_put(Dst, 10743, LJ_TCDATA, -BCBIAS_J*4);
+      dasm_put(Dst, 10766, LJ_TCDATA, -BCBIAS_J*4);
     }
     break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 10787, LJ_TISTRUECOND);
+    dasm_put(Dst, 10810, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 10107);
+      dasm_put(Dst, 10130);
     } else {
-      dasm_put(Dst, 10102);
+      dasm_put(Dst, 10125);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 10799);
+      dasm_put(Dst, 10822);
     }
-    dasm_put(Dst, 10112, -BCBIAS_J*4);
+    dasm_put(Dst, 10135, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 10810);
+    dasm_put(Dst, 10833);
     break;
   case BC_NOT:
-    dasm_put(Dst, 10838, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 10861, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10874, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10897, LJ_TISNUM, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 10951, LJ_TISNUM);
+      dasm_put(Dst, 10974, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 10962, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 10985, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 10987);
+      dasm_put(Dst, 11010);
     }
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10383);
+      dasm_put(Dst, 10406);
     } else {
-      dasm_put(Dst, 10124);
+      dasm_put(Dst, 10147);
     }
     break;
   case BC_LEN:
-    dasm_put(Dst, 10996, LJ_TSTR);
+    dasm_put(Dst, 11019, LJ_TSTR);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11010, Dt5(->len), LJ_TISNUM);
+      dasm_put(Dst, 11033, Dt5(->len), LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 11024, Dt5(->len));
+      dasm_put(Dst, 11047, Dt5(->len));
     } else {
-      dasm_put(Dst, 11042, Dt5(->len));
+      dasm_put(Dst, 11065, Dt5(->len));
     }
-    dasm_put(Dst, 11051, LJ_TTAB);
+    dasm_put(Dst, 11074, LJ_TTAB);
     if (LJ_DUALNUM) {
     } else if (sse) {
-      dasm_put(Dst, 11092);
+      dasm_put(Dst, 11115);
     } else {
     }
-    dasm_put(Dst, 11098);
+    dasm_put(Dst, 11121);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
@@ -2144,605 +2148,605 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11119, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11142, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 11152, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11175, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 11185, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11208, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 11218, LJ_TISNUM);
+    dasm_put(Dst, 11241, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 11020);
+    dasm_put(Dst, 11043);
     } else {
-    dasm_put(Dst, 10806);
+    dasm_put(Dst, 10829);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     } else {
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11224, LJ_TISNUM);
+    dasm_put(Dst, 11247, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11236, LJ_TISNUM);
+    dasm_put(Dst, 11259, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11247);
+    dasm_put(Dst, 11270);
     } else {
-    dasm_put(Dst, 11261);
+    dasm_put(Dst, 11284);
     }
       break;
     case 1:
-    dasm_put(Dst, 11269, LJ_TISNUM);
+    dasm_put(Dst, 11292, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11281, LJ_TISNUM);
+    dasm_put(Dst, 11304, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11292);
+    dasm_put(Dst, 11315);
     } else {
-    dasm_put(Dst, 11306);
+    dasm_put(Dst, 11329);
     }
       break;
     default:
-    dasm_put(Dst, 11314, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11337, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11336);
+    dasm_put(Dst, 11359);
     } else {
-    dasm_put(Dst, 11350);
+    dasm_put(Dst, 11373);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10980);
+    dasm_put(Dst, 11003);
     } else {
-    dasm_put(Dst, 10992);
+    dasm_put(Dst, 11015);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     }
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11358, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11381, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 11391, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11414, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 11424, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11447, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 11218, LJ_TISNUM);
+    dasm_put(Dst, 11241, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 11020);
+    dasm_put(Dst, 11043);
     } else {
-    dasm_put(Dst, 10806);
+    dasm_put(Dst, 10829);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     } else {
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11224, LJ_TISNUM);
+    dasm_put(Dst, 11247, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11236, LJ_TISNUM);
+    dasm_put(Dst, 11259, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11457);
+    dasm_put(Dst, 11480);
     } else {
-    dasm_put(Dst, 11471);
+    dasm_put(Dst, 11494);
     }
       break;
     case 1:
-    dasm_put(Dst, 11269, LJ_TISNUM);
+    dasm_put(Dst, 11292, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11281, LJ_TISNUM);
+    dasm_put(Dst, 11304, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11479);
+    dasm_put(Dst, 11502);
     } else {
-    dasm_put(Dst, 11493);
+    dasm_put(Dst, 11516);
     }
       break;
     default:
-    dasm_put(Dst, 11314, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11337, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11501);
+    dasm_put(Dst, 11524);
     } else {
-    dasm_put(Dst, 11515);
+    dasm_put(Dst, 11538);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10980);
+    dasm_put(Dst, 11003);
     } else {
-    dasm_put(Dst, 10992);
+    dasm_put(Dst, 11015);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     }
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11523, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11546, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 11557, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11580, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 11591, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11614, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 11218, LJ_TISNUM);
+    dasm_put(Dst, 11241, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 11020);
+    dasm_put(Dst, 11043);
     } else {
-    dasm_put(Dst, 10806);
+    dasm_put(Dst, 10829);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     } else {
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11224, LJ_TISNUM);
+    dasm_put(Dst, 11247, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11236, LJ_TISNUM);
+    dasm_put(Dst, 11259, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11625);
+    dasm_put(Dst, 11648);
     } else {
-    dasm_put(Dst, 11639);
+    dasm_put(Dst, 11662);
     }
       break;
     case 1:
-    dasm_put(Dst, 11269, LJ_TISNUM);
+    dasm_put(Dst, 11292, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11281, LJ_TISNUM);
+    dasm_put(Dst, 11304, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11647);
+    dasm_put(Dst, 11670);
     } else {
-    dasm_put(Dst, 11661);
+    dasm_put(Dst, 11684);
     }
       break;
     default:
-    dasm_put(Dst, 11314, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11337, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11669);
+    dasm_put(Dst, 11692);
     } else {
-    dasm_put(Dst, 11683);
+    dasm_put(Dst, 11706);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10980);
+    dasm_put(Dst, 11003);
     } else {
-    dasm_put(Dst, 10992);
+    dasm_put(Dst, 11015);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     }
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11224, LJ_TISNUM);
+    dasm_put(Dst, 11247, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11236, LJ_TISNUM);
+    dasm_put(Dst, 11259, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11691);
+    dasm_put(Dst, 11714);
     } else {
-    dasm_put(Dst, 11705);
+    dasm_put(Dst, 11728);
     }
       break;
     case 1:
-    dasm_put(Dst, 11269, LJ_TISNUM);
+    dasm_put(Dst, 11292, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11281, LJ_TISNUM);
+    dasm_put(Dst, 11304, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11713);
+    dasm_put(Dst, 11736);
     } else {
-    dasm_put(Dst, 11727);
+    dasm_put(Dst, 11750);
     }
       break;
     default:
-    dasm_put(Dst, 11314, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11337, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11735);
+    dasm_put(Dst, 11758);
     } else {
-    dasm_put(Dst, 11749);
+    dasm_put(Dst, 11772);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10980);
+    dasm_put(Dst, 11003);
     } else {
-    dasm_put(Dst, 10992);
+    dasm_put(Dst, 11015);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11224, LJ_TISNUM);
+    dasm_put(Dst, 11247, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11236, LJ_TISNUM);
+    dasm_put(Dst, 11259, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11757);
+    dasm_put(Dst, 11780);
     } else {
-    dasm_put(Dst, 11771);
+    dasm_put(Dst, 11794);
     }
       break;
     case 1:
-    dasm_put(Dst, 11269, LJ_TISNUM);
+    dasm_put(Dst, 11292, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11281, LJ_TISNUM);
+    dasm_put(Dst, 11304, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11779);
+    dasm_put(Dst, 11802);
     } else {
-    dasm_put(Dst, 11793);
+    dasm_put(Dst, 11816);
     }
       break;
     default:
-    dasm_put(Dst, 11314, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11337, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11801);
+    dasm_put(Dst, 11824);
     } else {
-    dasm_put(Dst, 11815);
+    dasm_put(Dst, 11838);
     }
       break;
     }
-    dasm_put(Dst, 11823);
+    dasm_put(Dst, 11846);
     if (sse) {
-    dasm_put(Dst, 10980);
+    dasm_put(Dst, 11003);
     } else {
-    dasm_put(Dst, 10992);
+    dasm_put(Dst, 11015);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11224, LJ_TISNUM);
+    dasm_put(Dst, 11247, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11236, LJ_TISNUM);
+    dasm_put(Dst, 11259, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11757);
+    dasm_put(Dst, 11780);
     } else {
-    dasm_put(Dst, 11771);
+    dasm_put(Dst, 11794);
     }
       break;
     case 1:
-    dasm_put(Dst, 11269, LJ_TISNUM);
+    dasm_put(Dst, 11292, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11281, LJ_TISNUM);
+    dasm_put(Dst, 11304, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11779);
+    dasm_put(Dst, 11802);
     } else {
-    dasm_put(Dst, 11793);
+    dasm_put(Dst, 11816);
     }
       break;
     default:
-    dasm_put(Dst, 11314, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11337, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11801);
+    dasm_put(Dst, 11824);
     } else {
-    dasm_put(Dst, 11815);
+    dasm_put(Dst, 11838);
     }
       break;
     }
-    dasm_put(Dst, 11829);
+    dasm_put(Dst, 11852);
     break;
   case BC_POW:
-    dasm_put(Dst, 11111);
+    dasm_put(Dst, 11134);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11224, LJ_TISNUM);
+    dasm_put(Dst, 11247, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11236, LJ_TISNUM);
+    dasm_put(Dst, 11259, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11757);
+    dasm_put(Dst, 11780);
     } else {
-    dasm_put(Dst, 11771);
+    dasm_put(Dst, 11794);
     }
       break;
     case 1:
-    dasm_put(Dst, 11269, LJ_TISNUM);
+    dasm_put(Dst, 11292, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 11281, LJ_TISNUM);
+    dasm_put(Dst, 11304, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 11779);
+    dasm_put(Dst, 11802);
     } else {
-    dasm_put(Dst, 11793);
+    dasm_put(Dst, 11816);
     }
       break;
     default:
-    dasm_put(Dst, 11314, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11337, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11801);
+    dasm_put(Dst, 11824);
     } else {
-    dasm_put(Dst, 11815);
+    dasm_put(Dst, 11838);
     }
       break;
     }
-    dasm_put(Dst, 11834);
+    dasm_put(Dst, 11857);
     if (sse) {
-    dasm_put(Dst, 10980);
+    dasm_put(Dst, 11003);
     } else {
-    dasm_put(Dst, 10992);
+    dasm_put(Dst, 11015);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 11838, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11861, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 11921, LJ_TSTR);
+    dasm_put(Dst, 11944, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 11921, LJ_TCDATA);
+    dasm_put(Dst, 11944, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11956, LJ_TISNUM);
+      dasm_put(Dst, 11979, LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 11968);
+      dasm_put(Dst, 11991);
     } else {
-      dasm_put(Dst, 11983);
+      dasm_put(Dst, 12006);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 11991);
+      dasm_put(Dst, 12014);
     } else {
-      dasm_put(Dst, 12004);
+      dasm_put(Dst, 12027);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 12011);
+    dasm_put(Dst, 12034);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 12039, LJ_TNIL);
+    dasm_put(Dst, 12062, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 12086, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12109, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 12126, 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, 12217);
+    dasm_put(Dst, 12149, 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, 12240);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 12229, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 12252, 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, 12322);
+    dasm_put(Dst, 12345);
     if (sse) {
-      dasm_put(Dst, 12327);
+      dasm_put(Dst, 12350);
     } else {
-      dasm_put(Dst, 10635);
+      dasm_put(Dst, 10658);
     }
-    dasm_put(Dst, 12334, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12357, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 12343);
+      dasm_put(Dst, 12366);
     } else {
-      dasm_put(Dst, 12349);
+      dasm_put(Dst, 12372);
     }
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     break;
   case BC_USETP:
-    dasm_put(Dst, 12352, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12375, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 12391, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12414, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 12446, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 12469, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 12512, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12535, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 12634, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12657, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 12729, Dt7(->env));
+    dasm_put(Dst, 12752, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 12748, Dt7(->env));
+    dasm_put(Dst, 12771, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 12767, LJ_TTAB);
+    dasm_put(Dst, 12790, LJ_TTAB);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 12790, LJ_TISNUM);
+      dasm_put(Dst, 12813, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 12804, LJ_TISNUM);
+      dasm_put(Dst, 12827, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 12815);
+       dasm_put(Dst, 12838);
       } else {
       }
-      dasm_put(Dst, 12836);
+      dasm_put(Dst, 12859);
     }
-    dasm_put(Dst, 12841, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
-    dasm_put(Dst, 12932, LJ_TSTR);
+    dasm_put(Dst, 12864, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
+    dasm_put(Dst, 12955, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 12950, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 13034, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 12973, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 13057, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 13105, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 13200, LJ_TNIL);
+    dasm_put(Dst, 13128, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13223, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 13217, LJ_TTAB);
+    dasm_put(Dst, 13240, LJ_TTAB);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 12790, LJ_TISNUM);
+      dasm_put(Dst, 12813, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 12804, LJ_TISNUM);
+      dasm_put(Dst, 12827, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 12815);
+       dasm_put(Dst, 12838);
       } else {
       }
-      dasm_put(Dst, 13240);
+      dasm_put(Dst, 13263);
     }
-    dasm_put(Dst, 13245, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
-    dasm_put(Dst, 13325, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13268, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
+    dasm_put(Dst, 13348, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 13382, 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, 13458, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 13546, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13405, 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, 13481, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 13569, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 13637, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 13731, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13660, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 13754, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 13777, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 13920, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13800, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 13943, 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, 11115);
+    dasm_put(Dst, 11138);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 13938);
+      dasm_put(Dst, 13961);
     }
-    dasm_put(Dst, 13943, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 13966, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 13938);
+    dasm_put(Dst, 13961);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 13985, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 14100, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 14008, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 14123, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 14171, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 14194, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 14242, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 14265, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11015, LJ_TISNUM);
+      dasm_put(Dst, 11038, LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 11092);
+      dasm_put(Dst, 11115);
     } else {
-      dasm_put(Dst, 14288);
+      dasm_put(Dst, 14311);
     }
-    dasm_put(Dst, 14294);
+    dasm_put(Dst, 14317);
     if (LJ_DUALNUM) {
     } else if (sse) {
-      dasm_put(Dst, 10980);
+      dasm_put(Dst, 11003);
     } else {
-      dasm_put(Dst, 10992);
+      dasm_put(Dst, 11015);
     }
-    dasm_put(Dst, 14307, -BCBIAS_J*4);
+    dasm_put(Dst, 14330, -BCBIAS_J*4);
     if (!LJ_DUALNUM && !sse) {
-      dasm_put(Dst, 14359);
+      dasm_put(Dst, 14382);
     }
-    dasm_put(Dst, 14365, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+    dasm_put(Dst, 14388, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 14437, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 14460, 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, 14537, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 14697, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14560, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 14720, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 13938);
+    dasm_put(Dst, 13961);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 14763);
+      dasm_put(Dst, 14786);
     }
-    dasm_put(Dst, 14767, FRAME_TYPE);
+    dasm_put(Dst, 14790, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 14786);
+      dasm_put(Dst, 14809);
       break;
     case BC_RET1:
-      dasm_put(Dst, 14838);
+      dasm_put(Dst, 14861);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 14848);
+      dasm_put(Dst, 14871);
     default:
       break;
     }
-    dasm_put(Dst, 14859, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 14882, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 14903, LJ_TNIL);
+      dasm_put(Dst, 14926, LJ_TNIL);
     } else {
-      dasm_put(Dst, 14912, LJ_TNIL);
+      dasm_put(Dst, 14935, LJ_TNIL);
     }
-    dasm_put(Dst, 14919, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 14942, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 14943);
+      dasm_put(Dst, 14966);
     }
-    dasm_put(Dst, 4665);
+    dasm_put(Dst, 4688);
     break;
 
   /* -- Loops and branches ------------------------------------------------ */
@@ -2750,7 +2754,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 14947, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14970, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2762,111 +2766,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 14968);
+    dasm_put(Dst, 14991);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 14972, LJ_TISNUM);
+      dasm_put(Dst, 14995, LJ_TISNUM);
       if (!vk) {
-       dasm_put(Dst, 14982, LJ_TISNUM, LJ_TISNUM);
+       dasm_put(Dst, 15005, LJ_TISNUM, LJ_TISNUM);
       } else {
 #ifdef LUA_USE_ASSERT
-       dasm_put(Dst, 15011, LJ_TISNUM, LJ_TISNUM);
+       dasm_put(Dst, 15034, LJ_TISNUM, LJ_TISNUM);
 #endif
-       dasm_put(Dst, 15030);
+       dasm_put(Dst, 15053);
       }
-      dasm_put(Dst, 15049, LJ_TISNUM);
+      dasm_put(Dst, 15072, LJ_TISNUM);
       if (op == BC_FORI) {
-       dasm_put(Dst, 15060, -BCBIAS_J*4);
+       dasm_put(Dst, 15083, -BCBIAS_J*4);
       } else if (op == BC_JFORI) {
-       dasm_put(Dst, 15074, -BCBIAS_J*4, BC_JLOOP);
+       dasm_put(Dst, 15097, -BCBIAS_J*4, BC_JLOOP);
       } else if (op == BC_IFORL) {
-       dasm_put(Dst, 15092, -BCBIAS_J*4);
+       dasm_put(Dst, 15115, -BCBIAS_J*4);
       } else {
-       dasm_put(Dst, 15084, BC_JLOOP);
+       dasm_put(Dst, 15107, BC_JLOOP);
       }
-      dasm_put(Dst, 15106);
+      dasm_put(Dst, 15129);
       if (vk) {
-       dasm_put(Dst, 15130);
+       dasm_put(Dst, 15153);
       }
-      dasm_put(Dst, 15049, LJ_TISNUM);
+      dasm_put(Dst, 15072, LJ_TISNUM);
       if (op == BC_FORI) {
-       dasm_put(Dst, 15139);
+       dasm_put(Dst, 15162);
       } else if (op == BC_JFORI) {
-       dasm_put(Dst, 15144, -BCBIAS_J*4, BC_JLOOP);
+       dasm_put(Dst, 15167, -BCBIAS_J*4, BC_JLOOP);
       } else if (op == BC_IFORL) {
-       dasm_put(Dst, 15158);
+       dasm_put(Dst, 15181);
       } else {
-       dasm_put(Dst, 15154, BC_JLOOP);
+       dasm_put(Dst, 15177, BC_JLOOP);
       }
-      dasm_put(Dst, 15163);
+      dasm_put(Dst, 15186);
     } else if (!vk) {
-      dasm_put(Dst, 15170, LJ_TISNUM);
+      dasm_put(Dst, 15193, LJ_TISNUM);
     }
     if (!vk) {
-      dasm_put(Dst, 15176, LJ_TISNUM);
+      dasm_put(Dst, 15199, LJ_TISNUM);
     } else {
 #ifdef LUA_USE_ASSERT
-      dasm_put(Dst, 15190, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 15213, LJ_TISNUM, LJ_TISNUM);
 #endif
     }
-    dasm_put(Dst, 15209);
+    dasm_put(Dst, 15232);
     if (!vk) {
-      dasm_put(Dst, 15213, LJ_TISNUM);
+      dasm_put(Dst, 15236, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 15222);
+      dasm_put(Dst, 15245);
       if (vk) {
-       dasm_put(Dst, 15234);
+       dasm_put(Dst, 15257);
       } else {
-       dasm_put(Dst, 15253);
+       dasm_put(Dst, 15276);
       }
-      dasm_put(Dst, 15258);
+      dasm_put(Dst, 15281);
     } else {
-      dasm_put(Dst, 15271);
+      dasm_put(Dst, 15294);
       if (vk) {
-       dasm_put(Dst, 15277);
+       dasm_put(Dst, 15300);
       } else {
-       dasm_put(Dst, 15293);
+       dasm_put(Dst, 15316);
       }
-      dasm_put(Dst, 15301);
+      dasm_put(Dst, 15324);
       if (cmov) {
-      dasm_put(Dst, 10079);
+      dasm_put(Dst, 10102);
       } else {
-      dasm_put(Dst, 10085);
+      dasm_put(Dst, 10108);
       }
       if (!cmov) {
-       dasm_put(Dst, 15306);
+       dasm_put(Dst, 15329);
       }
     }
     if (op == BC_FORI) {
       if (LJ_DUALNUM) {
-       dasm_put(Dst, 15312);
+       dasm_put(Dst, 15335);
       } else {
-       dasm_put(Dst, 15317, -BCBIAS_J*4);
+       dasm_put(Dst, 15340, -BCBIAS_J*4);
       }
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 15327, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 15350, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
       if (LJ_DUALNUM) {
-       dasm_put(Dst, 15341);
+       dasm_put(Dst, 15364);
       } else {
-       dasm_put(Dst, 15346, -BCBIAS_J*4);
+       dasm_put(Dst, 15369, -BCBIAS_J*4);
       }
     } else {
-      dasm_put(Dst, 15337, BC_JLOOP);
+      dasm_put(Dst, 15360, BC_JLOOP);
     }
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10008);
+      dasm_put(Dst, 10031);
     } else {
-      dasm_put(Dst, 10765);
+      dasm_put(Dst, 10788);
     }
     if (sse) {
-      dasm_put(Dst, 15356);
+      dasm_put(Dst, 15379);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 14947, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14970, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2875,33 +2879,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 15367, LJ_TNIL);
+    dasm_put(Dst, 15390, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 15382, BC_JLOOP);
+      dasm_put(Dst, 15405, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15396, -BCBIAS_J*4);
+      dasm_put(Dst, 15419, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 10122);
+    dasm_put(Dst, 10145);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 14947, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14970, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 10124);
+    dasm_put(Dst, 10147);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 15412, 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);
+    dasm_put(Dst, 15435, 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, 15521, -BCBIAS_J*4);
+    dasm_put(Dst, 15544, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2915,7 +2919,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 15546, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15569, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2925,47 +2929,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 15567, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 15590, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 15597, BC_JLOOP);
+      dasm_put(Dst, 15620, BC_JLOOP);
     } else {
-      dasm_put(Dst, 10124);
+      dasm_put(Dst, 10147);
     }
-    dasm_put(Dst, 15606, LJ_TNIL);
+    dasm_put(Dst, 15629, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 9269);
+    dasm_put(Dst, 9292);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 15628, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 15651, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 15597, BC_JLOOP);
+      dasm_put(Dst, 15620, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15719, -4+PC2PROTO(k));
+      dasm_put(Dst, 15742, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 15742, LJ_TNIL);
+    dasm_put(Dst, 15765, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 15764, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 15787, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 2329);
+      dasm_put(Dst, 2352);
     } else {
-      dasm_put(Dst, 15794);
+      dasm_put(Dst, 15817);
     }
-    dasm_put(Dst, 15802, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 15825, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15811);
+      dasm_put(Dst, 15834);
     } else {
-      dasm_put(Dst, 15815, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 15838, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 15820, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 15843, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2993,7 +2997,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 15845);
+  dasm_put(Dst, 15868);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
index b64617f94af10fd5b477464dcbb972aeba742c06..67282163fcda34a385771d15c3c7220fce345f2f 100644 (file)
@@ -691,12 +691,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |->vm_call_dispatch:
   |  mov LFUNC:RB, [RA-8]
   |  cmp dword [RA-4], LJ_TFUNC
-  |  jne ->vmeta_call          // Ensure KBASE defined and != BASE.
+  |  jne ->vmeta_call                  // Ensure KBASE defined and != BASE.
   |
   |->vm_call_dispatch_f:
   |  mov BASE, RA
   |  ins_call
-  |  // BASE = new base, RD = nargs+1
+  |  // BASE = new base, RB = func, RD = nargs+1, PC = caller PC
   |
   |->vm_cpcall:                                // Setup protected C frame, call C.
   |  // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp)
@@ -760,10 +760,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |  mov PC, [RB-12]                   // Restore PC from [cont|PC].
   |.if X64
   |  movsxd RAa, dword [RB-16]         // May be negative on WIN64 with debug.
+  |  test RA, RA
+  |  jz >1
   |  lea KBASEa, qword [=>0]
   |  add RAa, KBASEa
   |.else
   |  mov RA, dword [RB-16]
+  |  test RA, RA
+  |  jz >1
   |.endif
   |  mov LFUNC:KBASE, [BASE-8]
   |  mov KBASE, LFUNC:KBASE->pc
@@ -771,6 +775,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |  // BASE = base, RC = result, RB = meta base
   |  jmp RAa                           // Jump to continuation.
   |
+  |1:  // Tail call from C function.
+  |  sub RB, BASE
+  |  shr RB, 3
+  |  lea RD, [RB-1]
+  |  jmp ->vm_call_tail
+  |
   |->cont_cat:                         // BASE = base, RC = result, RB = mbase
   |  movzx RA, PC_RB
   |  sub RB, 16
@@ -2735,10 +2745,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |  test RD, RD
   |  lea NARGS:RD, [RA+1]
   |  mov LFUNC:RB, [BASE-8]
-  |  jne >2                            // Returned -1?
+  |  jne ->vm_call_tail                        // Returned -1?
   |  ins_callt                         // Returned 0: retry fast path.
   |
-  |2:  // Reconstruct previous base for vmeta_call during tailcall.
+  |// Reconstruct previous base for vmeta_call during tailcall.
+  |->vm_call_tail:
   |  mov RA, BASE
   |  test PC, FRAME_TYPE
   |  jnz >3
index 2df74098f40deeadb481b2146189d2625e9b42a8..8ada18ac076dc4e5284b90af3bea942b6f4c72ab 100644 (file)
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP   0
 #define DASM_SECTION_CODE_SUB  1
 #define DASM_MAXSECTION                2
-static const unsigned char build_actionlist[16947] = {
+static const unsigned char build_actionlist[16970] = {
   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,
@@ -49,113 +49,114 @@ static const unsigned char build_actionlist[16947] = {
   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,139,77,252,240,139,122,252,248,139,191,233,255,139,191,233,252,
-  255,225,248,32,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,
-  132,244,33,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,34,248,35,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,36,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,37,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,33,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,38,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,39,15,182,70,252,254,255,141,68,36,16,252,
-  233,244,247,248,40,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,41,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,42,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,43,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,44,131,198,4,129,120,253,4,239,15,130,244,5,252,233,
-  244,6,248,45,129,120,253,4,239,252,233,244,4,248,46,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,47,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,48,255,15,182,110,252,255,255,248,49,141,4,199,252,233,244,
-  247,248,50,255,248,51,141,4,199,141,44,252,234,149,252,233,244,248,248,52,
-  141,4,194,137,197,252,233,244,248,248,53,255,248,54,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,41,248,43,137,193,41,208,137,113,252,
-  244,141,176,233,184,237,252,233,244,28,248,55,139,108,36,48,137,149,233,141,
-  20,194,137,252,233,137,116,36,24,232,251,1,7,139,149,233,252,233,244,43,248,
-  56,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,255,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,57,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,58,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,59,129,
-  252,248,239,15,130,244,60,139,106,4,129,252,253,239,15,131,244,60,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,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,255,139,68,36,20,252,233,244,61,
-  248,62,129,252,248,239,15,130,244,60,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,63,248,64,129,252,248,239,15,130,244,60,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,63,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,63,248,5,139,105,4,129,252,253,239,255,15,132,244,63,139,
-  1,137,106,252,252,137,66,252,248,252,233,244,63,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,65,129,252,248,239,15,130,244,60,255,129,122,
-  253,4,239,15,133,244,60,139,42,131,189,233,0,15,133,244,60,129,122,253,12,
-  239,15,133,244,60,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,63,248,66,129,252,248,239,
-  15,130,244,60,129,122,253,4,239,15,133,244,60,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,63,
-  248,67,129,252,248,239,15,133,244,60,129,122,253,4,239,255,15,133,244,247,
-  139,42,252,233,244,68,248,1,15,135,244,60,255,15,131,244,60,255,252,242,15,
-  16,2,252,233,244,69,255,221,2,252,233,244,70,255,248,71,129,252,248,239,15,
-  130,244,60,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,63,248,3,129,122,253,4,239,15,135,
-  244,60,131,187,233,0,15,133,244,60,139,171,233,59,171,233,255,15,130,244,
-  247,232,244,72,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,73,129,
-  252,248,239,15,130,244,60,15,132,244,248,248,1,129,122,253,4,239,15,133,244,
-  60,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,
+  117,252,244,139,77,252,240,133,201,15,132,244,247,255,139,122,252,248,139,
+  191,233,139,191,233,252,255,225,248,1,41,213,193,252,237,3,141,69,252,255,
+  252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41,252,
+  233,15,132,244,34,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,35,248,36,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,37,255,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,38,
+  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,34,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,39,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,40,15,182,70,252,254,255,141,
+  68,36,16,252,233,244,247,248,41,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,42,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,43,
+  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,44,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,45,131,198,4,129,120,253,4,239,15,
+  130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,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,48,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,49,255,15,182,110,252,255,255,248,50,141,4,
+  199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233,
+  244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,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,42,248,44,137,193,
+  41,208,137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108,
+  36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,1,7,139,149,
+  233,252,233,244,44,248,57,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,255,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,58,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,59,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,60,129,252,248,239,15,130,244,61,139,106,4,129,252,253,239,15,131,244,
+  61,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,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,255,139,68,36,20,252,233,
+  244,62,248,63,129,252,248,239,15,130,244,61,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,64,248,65,129,252,248,239,15,130,244,61,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,64,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,64,248,5,139,105,4,129,252,253,239,255,15,132,244,64,
+  139,1,137,106,252,252,137,66,252,248,252,233,244,64,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,66,129,252,248,239,15,130,244,61,255,129,
+  122,253,4,239,15,133,244,61,139,42,131,189,233,0,15,133,244,61,129,122,253,
+  12,239,15,133,244,61,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,64,248,67,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,133,244,61,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,
+  64,248,68,129,252,248,239,15,133,244,61,129,122,253,4,239,255,15,133,244,
+  247,139,42,252,233,244,69,248,1,15,135,244,61,255,15,131,244,61,255,252,242,
+  15,16,2,252,233,244,70,255,221,2,252,233,244,71,255,248,72,129,252,248,239,
+  15,130,244,61,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,64,248,3,129,122,253,4,239,
+  15,135,244,61,131,187,233,0,15,133,244,61,139,171,233,59,171,233,255,15,130,
+  244,247,232,244,73,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,74,
+  129,252,248,239,15,130,244,61,15,132,244,248,248,1,129,122,253,4,239,15,133,
+  244,61,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,74,184,237,255,252,233,244,75,248,
-  2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,63,248,
-  76,129,252,248,239,15,130,244,60,139,42,129,122,253,4,239,15,133,244,60,255,
-  131,189,233,0,15,133,244,60,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,75,248,
-  77,129,252,248,239,15,130,244,60,129,122,253,4,239,15,133,244,60,129,122,
+  139,106,16,139,66,20,137,42,137,66,4,248,75,184,237,255,252,233,244,76,248,
+  2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,64,248,
+  77,129,252,248,239,15,130,244,61,139,42,129,122,253,4,239,15,133,244,61,255,
+  131,189,233,0,15,133,244,61,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,76,248,
+  78,129,252,248,239,15,130,244,61,129,122,253,4,239,15,133,244,61,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,78,139,40,139,64,4,137,42,137,66,4,252,233,244,74,248,2,131,189,233,
-  0,15,132,244,78,137,252,233,137,213,137,194,232,251,1,14,137,252,234,133,
-  192,15,133,244,1,248,78,184,237,252,233,244,75,248,79,255,139,106,252,248,
+  132,244,79,139,40,139,64,4,137,42,137,66,4,252,233,244,75,248,2,131,189,233,
+  0,15,132,244,79,137,252,233,137,213,137,194,232,251,1,14,137,252,234,133,
+  192,15,133,244,1,248,79,184,237,252,233,244,76,248,80,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,75,248,80,129,252,248,239,15,130,244,60,
+  221,90,8,255,184,237,252,233,244,76,248,81,129,252,248,239,15,130,244,61,
   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,81,129,252,248,239,15,130,244,60,129,122,253,
-  12,239,15,133,244,60,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,82,129,252,
-  248,239,15,130,244,60,139,42,139,114,252,252,137,116,36,24,137,44,36,129,
-  122,253,4,239,15,133,244,60,131,189,233,0,15,133,244,60,128,189,233,235,15,
-  135,244,60,139,141,233,15,132,244,247,255,59,141,233,15,132,244,60,248,1,
-  141,116,193,252,240,59,181,233,15,135,244,60,137,181,233,139,108,36,48,137,
+  1,252,238,252,233,244,28,248,82,129,252,248,239,15,130,244,61,129,122,253,
+  12,239,15,133,244,61,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,83,129,252,
+  248,239,15,130,244,61,139,42,139,114,252,252,137,116,36,24,137,44,36,129,
+  122,253,4,239,15,133,244,61,131,189,233,0,15,133,244,61,128,189,233,235,15,
+  135,244,61,139,141,233,15,132,244,247,255,59,141,233,15,132,244,61,248,1,
+  141,116,193,252,240,59,181,233,15,135,244,61,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,
@@ -168,10 +169,10 @@ static const unsigned char build_actionlist[16947] = {
   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,83,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,60,255,128,189,233,235,15,135,244,
-  60,139,141,233,15,132,244,247,59,141,233,15,132,244,60,248,1,141,116,193,
-  252,248,59,181,233,15,135,244,60,137,181,233,139,108,36,48,137,149,233,137,
+  252,233,244,4,248,84,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,61,255,128,189,233,235,15,135,244,
+  61,139,141,233,15,132,244,247,59,141,233,15,132,244,61,248,1,141,116,193,
+  252,248,59,181,233,15,135,244,61,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,
@@ -182,271 +183,271 @@ static const unsigned char build_actionlist[16947] = {
   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,84,139,108,36,48,252,247,133,233,237,15,132,244,60,255,
+  252,233,244,4,248,85,139,108,36,48,252,247,133,233,237,15,132,244,61,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,68,255,248,70,139,114,252,252,221,90,252,248,
-  252,233,244,63,255,248,85,129,252,248,239,15,130,244,60,255,129,122,253,4,
-  239,15,133,244,248,139,42,131,252,253,0,15,137,244,68,252,247,221,15,136,
-  244,247,248,86,248,68,139,114,252,252,199,66,252,252,237,137,106,252,248,
-  252,233,244,63,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,63,248,2,15,135,244,60,255,129,122,253,4,239,15,131,
-  244,60,255,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209,
-  1,15,84,193,248,69,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,
-  225,248,69,248,70,139,114,252,252,221,90,252,248,255,248,63,184,237,248,75,
-  137,68,36,20,248,61,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,
+  133,233,252,233,244,16,255,248,69,255,248,71,139,114,252,252,221,90,252,248,
+  252,233,244,64,255,248,86,129,252,248,239,15,130,244,61,255,129,122,253,4,
+  239,15,133,244,248,139,42,131,252,253,0,15,137,244,69,252,247,221,15,136,
+  244,247,248,87,248,69,139,114,252,252,199,66,252,252,237,137,106,252,248,
+  252,233,244,64,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,64,248,2,15,135,244,61,255,129,122,253,4,239,15,131,
+  244,61,255,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209,
+  1,15,84,193,248,70,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,
+  225,248,70,248,71,139,114,252,252,221,90,252,248,255,248,64,184,237,248,76,
+  137,68,36,20,248,62,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,87,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,68,
-  248,1,15,135,244,60,255,252,242,15,16,2,232,244,88,255,252,242,15,45,232,
-  129,252,253,0,0,0,128,15,133,244,68,252,242,15,42,205,102,15,46,193,15,138,
-  244,69,15,132,244,68,255,221,2,232,244,88,255,219,20,36,139,44,36,129,252,
+  244,14,248,88,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,69,
+  248,1,15,135,244,61,255,252,242,15,16,2,232,244,89,255,252,242,15,45,232,
+  129,252,253,0,0,0,128,15,133,244,69,252,242,15,42,205,102,15,46,193,15,138,
+  244,70,15,132,244,69,255,221,2,232,244,89,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,70,15,133,244,70,248,2,221,216,252,
-  233,244,68,255,248,89,255,252,242,15,16,2,232,244,90,255,221,2,232,244,90,
-  255,248,91,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,
-  252,242,15,81,2,252,233,244,69,255,248,91,129,252,248,239,15,130,244,60,129,
-  122,253,4,239,15,131,244,60,221,2,217,252,250,252,233,244,70,255,248,92,129,
-  252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,217,252,237,221,
-  2,217,252,241,252,233,244,70,248,93,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,217,252,236,221,2,217,252,241,252,233,244,70,248,
-  94,129,252,248,239,255,15,130,244,60,129,122,253,4,239,15,131,244,60,221,
-  2,232,244,95,252,233,244,70,248,96,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,221,2,217,252,254,252,233,244,70,248,97,129,252,248,
-  239,255,15,130,244,60,129,122,253,4,239,15,131,244,60,221,2,217,252,255,252,
-  233,244,70,248,98,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,221,2,217,252,242,221,216,252,233,244,70,248,99,129,252,248,239,15,
-  130,244,60,255,129,122,253,4,239,15,131,244,60,221,2,217,192,216,200,217,
-  232,222,225,217,252,250,217,252,243,252,233,244,70,248,100,129,252,248,239,
-  15,130,244,60,129,122,253,4,239,15,131,244,60,221,2,217,192,216,200,217,232,
-  222,225,217,252,250,217,201,217,252,243,252,233,244,70,248,101,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,131,244,60,255,221,2,217,232,217,252,
-  243,252,233,244,70,255,248,102,129,252,248,239,15,130,244,60,129,122,253,
-  4,239,15,131,244,60,252,242,15,16,2,252,242,15,17,4,36,255,248,102,129,252,
-  248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,221,2,221,28,36,255,
-  137,213,232,251,1,16,137,252,234,252,233,244,70,255,248,103,129,252,248,239,
-  15,130,244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,252,242,15,
-  17,4,36,255,248,103,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,221,2,221,28,36,255,137,213,232,251,1,17,137,252,234,252,233,244,70,
-  255,248,104,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,
-  252,242,15,16,2,252,242,15,17,4,36,255,248,104,129,252,248,239,15,130,244,
-  60,129,122,253,4,239,15,131,244,60,221,2,221,28,36,255,137,213,232,251,1,
-  18,137,252,234,252,233,244,70,248,105,255,248,106,129,252,248,239,15,130,
-  244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,139,106,252,248,252,
-  242,15,89,133,233,252,233,244,69,255,248,106,129,252,248,239,15,130,244,60,
-  129,122,253,4,239,15,131,244,60,221,2,139,106,252,248,220,141,233,252,233,
-  244,70,255,248,107,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,
-  244,60,129,122,253,12,239,15,131,244,60,221,2,221,66,8,217,252,243,252,233,
-  244,70,248,108,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,
-  60,129,122,253,12,239,255,15,131,244,60,221,66,8,221,2,217,252,253,221,217,
-  252,233,244,70,248,109,129,252,248,239,15,130,244,60,139,106,4,129,252,253,
-  239,15,131,244,60,139,114,252,252,139,2,137,106,252,252,137,66,252,248,209,
+  218,252,233,223,224,158,255,15,138,244,71,15,133,244,71,248,2,221,216,252,
+  233,244,69,255,248,90,255,252,242,15,16,2,232,244,91,255,221,2,232,244,91,
+  255,248,92,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,
+  252,242,15,81,2,252,233,244,70,255,248,92,129,252,248,239,15,130,244,61,129,
+  122,253,4,239,15,131,244,61,221,2,217,252,250,252,233,244,71,255,248,93,129,
+  252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,217,252,237,221,
+  2,217,252,241,252,233,244,71,248,94,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,217,252,236,221,2,217,252,241,252,233,244,71,248,
+  95,129,252,248,239,255,15,130,244,61,129,122,253,4,239,15,131,244,61,221,
+  2,232,244,96,252,233,244,71,248,97,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,221,2,217,252,254,252,233,244,71,248,98,129,252,248,
+  239,255,15,130,244,61,129,122,253,4,239,15,131,244,61,221,2,217,252,255,252,
+  233,244,71,248,99,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,221,2,217,252,242,221,216,252,233,244,71,248,100,129,252,248,239,15,
+  130,244,61,255,129,122,253,4,239,15,131,244,61,221,2,217,192,216,200,217,
+  232,222,225,217,252,250,217,252,243,252,233,244,71,248,101,129,252,248,239,
+  15,130,244,61,129,122,253,4,239,15,131,244,61,221,2,217,192,216,200,217,232,
+  222,225,217,252,250,217,201,217,252,243,252,233,244,71,248,102,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,131,244,61,255,221,2,217,232,217,252,
+  243,252,233,244,71,255,248,103,129,252,248,239,15,130,244,61,129,122,253,
+  4,239,15,131,244,61,252,242,15,16,2,252,242,15,17,4,36,255,248,103,129,252,
+  248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,221,2,221,28,36,255,
+  137,213,232,251,1,16,137,252,234,252,233,244,71,255,248,104,129,252,248,239,
+  15,130,244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,252,242,15,
+  17,4,36,255,248,104,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,221,2,221,28,36,255,137,213,232,251,1,17,137,252,234,252,233,244,71,
+  255,248,105,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,
+  252,242,15,16,2,252,242,15,17,4,36,255,248,105,129,252,248,239,15,130,244,
+  61,129,122,253,4,239,15,131,244,61,221,2,221,28,36,255,137,213,232,251,1,
+  18,137,252,234,252,233,244,71,248,106,255,248,107,129,252,248,239,15,130,
+  244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,139,106,252,248,252,
+  242,15,89,133,233,252,233,244,70,255,248,107,129,252,248,239,15,130,244,61,
+  129,122,253,4,239,15,131,244,61,221,2,139,106,252,248,220,141,233,252,233,
+  244,71,255,248,108,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,
+  244,61,129,122,253,12,239,15,131,244,61,221,2,221,66,8,217,252,243,252,233,
+  244,71,248,109,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,
+  61,129,122,253,12,239,255,15,131,244,61,221,66,8,221,2,217,252,253,221,217,
+  252,233,244,71,248,110,129,252,248,239,15,130,244,61,139,106,4,129,252,253,
+  239,15,131,244,61,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,75,248,3,255,15,87,192,
+  252,242,15,17,2,255,221,26,255,184,237,252,233,244,76,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,110,129,
-  252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,252,242,15,16,2,
-  255,248,110,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,
+  248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,111,129,
+  252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,252,242,15,16,2,
+  255,248,111,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,
   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,111,252,242,15,92,224,248,1,252,242,15,
-  17,66,252,248,252,242,15,17,34,255,217,192,232,244,111,220,252,233,248,1,
+  132,244,250,255,15,40,224,232,244,112,252,242,15,92,224,248,1,252,242,15,
+  17,66,252,248,252,242,15,17,34,255,217,192,232,244,112,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,75,248,3,129,252,245,0,0,0,128,137,106,4,252,233,
+  248,2,184,237,252,233,244,76,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,112,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,
-  60,129,122,253,12,239,15,131,244,60,221,66,8,221,2,248,1,217,252,248,223,
-  224,158,15,138,244,1,221,217,252,233,244,70,255,248,113,129,252,248,239,15,
-  130,244,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,
-  60,252,242,15,16,2,252,242,15,16,74,8,232,244,114,252,233,244,69,255,248,
-  113,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,
-  253,12,239,15,131,244,60,221,2,221,66,8,232,244,114,252,233,244,70,255,248,
-  115,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,
-  15,131,244,68,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,60,255,252,
-  233,244,252,248,4,15,135,244,60,255,252,242,15,16,2,248,5,57,193,15,131,244,
-  69,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,60,252,242,15,
+  1,255,248,113,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,
+  61,129,122,253,12,239,15,131,244,61,221,66,8,221,2,248,1,217,252,248,223,
+  224,158,15,138,244,1,221,217,252,233,244,71,255,248,114,129,252,248,239,15,
+  130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,
+  61,252,242,15,16,2,252,242,15,16,74,8,232,244,115,252,233,244,70,255,248,
+  114,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,
+  253,12,239,15,131,244,61,221,2,221,66,8,232,244,115,252,233,244,71,255,248,
+  116,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,
+  15,131,244,69,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,61,255,252,
+  233,244,252,248,4,15,135,244,61,255,252,242,15,16,2,248,5,57,193,15,131,244,
+  70,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,61,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,70,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,255,
+  131,244,71,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,116,185,2,0,0,0,
-  129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,68,129,
+  246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,117,185,2,0,0,0,
+  129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,69,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,60,255,248,6,252,242,15,16,76,
+  248,131,193,1,252,233,244,1,248,3,15,135,244,61,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,60,255,248,117,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,133,244,60,139,42,255,139,173,233,
-  252,233,244,68,255,252,242,15,42,133,233,252,233,244,69,255,219,133,233,252,
-  233,244,70,255,248,118,129,252,248,239,15,133,244,60,129,122,253,4,239,15,
-  133,244,60,139,42,139,114,252,252,131,189,233,1,15,130,244,78,15,182,173,
-  233,255,252,242,15,42,197,252,233,244,69,255,137,108,36,16,219,68,36,16,252,
-  233,244,70,255,248,119,139,171,233,59,171,233,15,130,244,247,232,244,72,248,
-  1,129,252,248,239,15,133,244,60,129,122,253,4,239,255,15,133,244,60,139,42,
-  129,252,253,252,255,0,0,0,15,135,244,60,137,108,36,20,255,15,131,244,60,252,
-  242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,60,137,108,36,20,255,15,
-  131,244,60,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,60,255,
-  199,68,36,8,1,0,0,0,141,68,36,20,248,120,139,108,36,48,137,149,233,137,68,
+  248,2,221,216,88,255,248,9,221,216,252,233,244,61,255,248,118,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,133,244,61,139,42,255,139,173,233,
+  252,233,244,69,255,252,242,15,42,133,233,252,233,244,70,255,219,133,233,252,
+  233,244,71,255,248,119,129,252,248,239,15,133,244,61,129,122,253,4,239,15,
+  133,244,61,139,42,139,114,252,252,131,189,233,1,15,130,244,79,15,182,173,
+  233,255,252,242,15,42,197,252,233,244,70,255,137,108,36,16,219,68,36,16,252,
+  233,244,71,255,248,120,139,171,233,59,171,233,15,130,244,247,232,244,73,248,
+  1,129,252,248,239,15,133,244,61,129,122,253,4,239,255,15,133,244,61,139,42,
+  129,252,253,252,255,0,0,0,15,135,244,61,137,108,36,20,255,15,131,244,61,252,
+  242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,61,137,108,36,20,255,15,
+  131,244,61,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,61,255,
+  199,68,36,8,1,0,0,0,141,68,36,20,248,121,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,63,248,121,139,171,233,59,171,233,
-  15,130,244,247,232,244,72,248,1,199,68,36,20,252,255,252,255,252,255,252,
-  255,129,252,248,239,15,130,244,60,15,134,244,247,129,122,253,20,239,255,15,
-  133,244,60,139,106,16,137,108,36,20,255,15,131,244,60,252,242,15,44,106,16,
-  137,108,36,20,255,15,131,244,60,221,66,16,219,92,36,20,255,248,1,129,122,
-  253,4,239,15,133,244,60,129,122,253,12,239,255,139,42,137,108,36,12,139,173,
+  66,252,252,237,137,66,252,248,252,233,244,64,248,122,139,171,233,59,171,233,
+  15,130,244,247,232,244,73,248,1,199,68,36,20,252,255,252,255,252,255,252,
+  255,129,252,248,239,15,130,244,61,15,134,244,247,129,122,253,20,239,255,15,
+  133,244,61,139,106,16,137,108,36,20,255,15,131,244,61,252,242,15,44,106,16,
+  137,108,36,20,255,15,131,244,61,221,66,16,219,92,36,20,255,248,1,129,122,
+  253,4,239,15,133,244,61,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,122,141,172,253,13,233,131,192,1,248,4,
-  137,68,36,8,137,232,252,233,244,120,248,5,15,140,244,252,141,68,40,1,252,
+  3,139,108,36,12,41,200,15,140,244,123,141,172,253,13,233,131,192,1,248,4,
+  137,68,36,8,137,232,252,233,244,121,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,122,49,192,252,
-  233,244,4,248,123,129,252,248,239,15,130,244,60,139,171,233,59,171,233,15,
-  130,244,247,232,244,72,248,1,255,129,122,253,4,239,15,133,244,60,129,122,
-  253,12,239,139,42,255,15,133,244,60,139,66,8,255,15,131,244,60,252,242,15,
-  44,66,8,255,15,131,244,60,221,66,8,219,92,36,20,139,68,36,20,255,133,192,
-  15,142,244,122,131,189,233,1,15,130,244,122,15,133,244,124,57,131,233,15,
-  130,244,124,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,120,248,125,129,252,248,
-  239,255,15,130,244,60,139,171,233,59,171,233,15,130,244,247,232,244,72,248,
-  1,129,122,253,4,239,15,133,244,60,139,42,139,133,233,133,192,15,132,244,122,
-  57,131,233,15,130,244,126,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
+  131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,123,49,192,252,
+  233,244,4,248,124,129,252,248,239,15,130,244,61,139,171,233,59,171,233,15,
+  130,244,247,232,244,73,248,1,255,129,122,253,4,239,15,133,244,61,129,122,
+  253,12,239,139,42,255,15,133,244,61,139,66,8,255,15,131,244,61,252,242,15,
+  44,66,8,255,15,131,244,61,221,66,8,219,92,36,20,139,68,36,20,255,133,192,
+  15,142,244,123,131,189,233,1,15,130,244,123,15,133,244,125,57,131,233,15,
+  130,244,125,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,121,248,126,129,252,248,
+  239,255,15,130,244,61,139,171,233,59,171,233,15,130,244,247,232,244,73,248,
+  1,129,122,253,4,239,15,133,244,61,139,42,139,133,233,133,192,15,132,244,123,
+  57,131,233,15,130,244,127,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,120,248,127,129,252,248,239,15,130,244,60,139,171,
-  233,59,171,233,15,130,244,247,232,244,72,248,1,129,122,253,4,239,15,133,244,
-  60,139,42,139,133,233,57,131,233,255,15,130,244,126,129,197,239,137,116,36,
+  139,116,36,20,252,233,244,121,248,128,129,252,248,239,15,130,244,61,139,171,
+  233,59,171,233,15,130,244,247,232,244,73,248,1,129,122,253,4,239,15,133,244,
+  61,139,42,139,133,233,57,131,233,255,15,130,244,127,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,120,
-  248,128,129,252,248,239,15,130,244,60,255,139,171,233,59,171,233,15,130,244,
-  247,232,244,72,248,1,129,122,253,4,239,15,133,244,60,139,42,139,133,233,57,
-  131,233,15,130,244,126,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
+  12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,121,
+  248,129,129,252,248,239,15,130,244,61,255,139,171,233,59,171,233,15,130,244,
+  247,232,244,73,248,1,129,122,253,4,239,15,133,244,61,139,42,139,133,233,57,
+  131,233,15,130,244,127,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,120,248,129,129,252,248,
-  239,15,130,244,60,129,122,253,4,239,15,133,244,60,137,213,139,10,232,251,
-  1,20,137,252,234,255,137,197,252,233,244,68,255,252,242,15,42,192,252,233,
-  244,69,255,137,4,36,219,4,36,252,233,244,70,255,248,130,129,122,253,4,239,
-  255,15,133,244,247,139,42,252,233,244,86,248,1,15,135,244,60,255,252,242,
+  15,137,244,1,137,252,240,139,116,36,20,252,233,244,121,248,130,129,252,248,
+  239,15,130,244,61,129,122,253,4,239,15,133,244,61,137,213,139,10,232,251,
+  1,20,137,252,234,255,137,197,252,233,244,69,255,252,242,15,42,192,252,233,
+  244,70,255,137,4,36,219,4,36,252,233,244,71,255,248,131,129,122,253,4,239,
+  255,15,133,244,247,139,42,252,233,244,87,248,1,15,135,244,61,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,86,255,248,131,255,189,0,0,56,67,102,15,110,205,
+  139,44,36,255,252,233,244,87,255,248,132,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,60,255,252,242,15,16,2,252,242,15,88,193,102,
+  233,244,248,248,1,15,135,244,61,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,86,129,120,253,4,239,255,15,
-  133,244,248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,132,255,15,131,
-  244,132,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,133,255,
-  15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,132,255,252,
+  20,141,68,194,252,240,248,1,57,208,15,134,244,87,129,120,253,4,239,255,15,
+  133,244,248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,133,255,15,131,
+  244,133,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,134,255,
+  15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,133,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,134,255,15,133,244,248,
-  51,40,131,232,8,252,233,244,1,248,2,15,135,244,132,255,252,242,15,16,0,252,
+  221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,135,255,15,133,244,248,
+  51,40,131,232,8,252,233,244,1,248,2,15,135,244,133,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,135,129,122,253,4,239,255,221,2,199,68,
+  36,255,131,232,8,252,233,244,1,248,136,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,86,248,136,129,122,253,4,239,255,248,2,252,247,213,255,248,86,252,242,
-  15,42,197,252,233,244,69,255,248,86,137,44,36,219,4,36,252,233,244,70,255,
-  248,132,139,68,36,20,252,233,244,60,255,248,137,129,122,253,4,239,255,248,
-  2,129,122,253,12,239,15,133,244,60,139,74,8,255,248,137,129,252,248,239,15,
-  130,244,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,
-  60,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,
+  244,87,248,137,129,122,253,4,239,255,248,2,252,247,213,255,248,87,252,242,
+  15,42,197,252,233,244,70,255,248,87,137,44,36,219,4,36,252,233,244,71,255,
+  248,133,139,68,36,20,252,233,244,61,255,248,138,129,122,253,4,239,255,248,
+  2,129,122,253,12,239,15,133,244,61,139,74,8,255,248,138,129,252,248,239,15,
+  130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,
+  61,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,137,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,
-  60,129,122,253,12,239,15,131,244,60,221,2,221,66,8,199,68,36,16,0,0,192,89,
+  201,255,248,138,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,
+  61,129,122,253,12,239,15,131,244,61,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,86,255,248,138,129,122,253,4,239,255,248,138,129,252,
-  248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,
-  15,131,244,60,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,
+  211,229,252,233,244,87,255,248,139,129,122,253,4,239,255,248,139,129,252,
+  248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,
+  15,131,244,61,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,138,129,252,248,239,15,130,244,60,129,122,253,4,239,
-  15,131,244,60,129,122,253,12,239,15,131,244,60,221,2,221,66,8,199,68,36,16,
+  102,15,126,201,255,248,139,129,252,248,239,15,130,244,61,129,122,253,4,239,
+  15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,248,139,129,122,253,4,239,255,248,
-  139,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,129,122,
-  253,12,239,15,131,244,60,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,
+  44,36,255,211,252,237,252,233,244,87,255,248,140,129,122,253,4,239,255,248,
+  140,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,129,122,
+  253,12,239,15,131,244,61,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,139,129,252,248,239,15,130,244,60,129,122,
-  253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,221,2,221,66,8,199,
+  15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,130,244,61,129,122,
+  253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,248,140,129,122,253,4,239,
-  255,248,140,129,252,248,239,15,130,244,60,129,122,253,4,239,15,131,244,60,
-  129,122,253,12,239,15,131,244,60,252,242,15,16,2,252,242,15,16,74,8,189,0,
+  36,8,139,44,36,255,211,252,253,252,233,244,87,255,248,141,129,122,253,4,239,
+  255,248,141,129,252,248,239,15,130,244,61,129,122,253,4,239,15,131,244,61,
+  129,122,253,12,239,15,131,244,61,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,
-  60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,60,221,2,
+  202,102,15,126,197,102,15,126,201,255,248,141,129,252,248,239,15,130,244,
+  61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,61,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,86,255,248,141,129,122,
-  253,4,239,255,248,141,129,252,248,239,15,130,244,60,129,122,253,4,239,15,
-  131,244,60,129,122,253,12,239,15,131,244,60,252,242,15,16,2,252,242,15,16,
+  28,36,139,76,36,8,139,44,36,255,211,197,252,233,244,87,255,248,142,129,122,
+  253,4,239,255,248,142,129,252,248,239,15,130,244,61,129,122,253,4,239,15,
+  131,244,61,129,122,253,12,239,15,131,244,61,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,60,129,122,253,4,239,15,131,244,60,129,122,253,12,239,15,131,244,
-  60,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,86,248,124,
-  184,237,252,233,244,60,248,126,184,237,248,60,139,108,36,48,139,114,252,252,
+  242,15,88,202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239,15,
+  130,244,61,129,122,253,4,239,15,131,244,61,129,122,253,12,239,15,131,244,
+  61,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,87,248,125,
+  184,237,252,233,244,61,248,127,184,237,248,61,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,75,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
-  141,65,1,139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,252,233,
-  15,182,205,131,198,4,252,255,36,171,248,2,137,209,252,247,198,237,15,133,
+  133,192,15,143,244,76,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
+  141,65,1,139,106,252,248,15,133,244,32,139,181,233,139,14,15,182,252,233,
+  15,182,205,131,198,4,252,255,36,171,248,32,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,72,93,137,108,36,
+  252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,73,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,142,255,15,182,131,233,168,235,15,133,244,
+  192,1,139,108,36,16,85,195,248,143,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,143,15,182,131,233,168,235,15,133,244,251,252,233,244,247,
-  248,144,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,
+  244,247,255,248,144,15,182,131,233,168,235,15,133,244,251,252,233,244,247,
+  248,145,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,145,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,146,
+  253,171,233,248,146,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,147,
   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,147,137,116,36,24,255,248,148,255,137,116,
+  251,1,23,252,233,244,3,255,248,148,137,116,36,24,255,248,149,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,149,255,85,141,108,36,12,85,83,
+  252,253,193,232,3,131,192,1,252,255,229,248,150,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,150,255,133,192,
+  225,239,137,204,137,169,233,139,149,233,139,177,233,255,248,151,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,88,255,217,124,36,4,
+  252,247,216,137,252,233,137,194,232,251,1,26,255,248,89,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,151,102,
+  36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,152,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,90,255,217,124,36,4,137,68,36,8,102,
+  242,15,92,200,15,40,193,248,1,195,248,91,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,152,102,15,252,239,210,
+  6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,153,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,111,255,217,124,36,4,137,68,36,8,102,184,0,12,
+  200,15,40,193,248,1,195,248,112,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,153,102,15,252,239,210,102,15,118,210,102,15,115,210,
+  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,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,154,255,15,40,232,252,242,15,94,193,102,15,252,239,210,102,15,118,
+  1,195,248,155,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,
@@ -454,11 +455,11 @@ static const unsigned char build_actionlist[16947] = {
   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,95,217,252,234,222,201,
-  248,155,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,156,217,192,217,252,252,220,252,233,217,
+  252,252,217,108,36,4,222,201,222,252,233,195,255,248,96,217,252,234,222,201,
+  248,156,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,157,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,114,219,84,36,4,219,68,36,4,255,223,252,233,255,221,
+  217,252,238,195,255,248,115,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,
@@ -467,14 +468,14 @@ static const unsigned char build_actionlist[16947] = {
   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,156,248,9,255,217,232,255,223,252,234,255,221,252,234,
+  252,241,252,233,244,157,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,114,255,248,
-  157,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,
-  244,255,248,158,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,
+  238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,4,195,255,248,115,255,248,
+  158,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,
+  244,255,248,159,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,
@@ -492,30 +493,30 @@ static const unsigned char build_actionlist[16947] = {
   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,159,
+  192,195,248,5,102,15,80,193,133,192,15,132,244,3,255,15,87,192,195,248,160,
   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,88,252,233,244,253,248,1,232,244,90,252,233,244,253,248,2,
-  131,252,248,3,15,132,244,247,15,135,244,248,232,244,111,255,252,233,244,253,
+  244,248,232,244,89,252,233,244,253,248,1,232,244,91,252,233,244,253,248,2,
+  131,252,248,3,15,132,244,247,15,135,244,248,232,244,112,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,95,15,132,244,155,248,2,131,252,248,
+  221,68,36,4,131,252,248,5,15,130,244,96,15,132,244,156,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,
-  88,15,132,244,90,131,252,248,3,15,130,244,111,15,135,244,248,217,252,250,
-  195,248,2,131,252,248,5,15,130,244,95,15,132,244,155,131,252,248,7,15,132,
+  89,15,132,244,91,131,252,248,3,15,130,244,112,15,135,244,248,217,252,250,
+  195,248,2,131,252,248,5,15,130,244,96,15,132,244,156,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,160,255,139,68,36,20,252,242,15,16,68,36,4,
+  216,195,255,248,9,204,255,248,161,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,154,252,233,244,7,248,1,90,
-  232,244,114,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
+  248,5,15,132,244,247,255,15,135,244,248,232,244,155,252,233,244,7,248,1,90,
+  232,244,115,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,
@@ -524,32 +525,32 @@ static const unsigned char build_actionlist[16947] = {
   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,154,15,132,
-  244,114,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
+  222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,155,15,132,
+  244,115,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,161,156,90,137,209,129,252,242,
+  244,248,217,201,248,2,221,216,195,255,248,162,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,162,
+  162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,163,
   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,248,163,255,249,255,129,124,253,202,4,239,15,133,244,253,129,124,
+  195,255,248,164,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,42,129,124,253,194,4,239,
-  15,130,244,247,15,133,244,42,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,42,255,252,242,15,
+  198,4,193,232,16,252,255,36,171,248,7,15,135,244,43,129,124,253,194,4,239,
+  15,130,244,247,15,133,244,43,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,43,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,42,129,124,253,
-  194,4,239,15,131,244,42,255,248,1,252,242,15,16,4,194,248,2,131,198,4,102,
+  4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,43,129,124,253,
+  194,4,239,15,131,244,43,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,134,244,247,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,
@@ -565,12 +566,12 @@ static const unsigned char build_actionlist[16947] = {
   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,47,129,124,253,202,4,239,
-  15,132,244,47,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,
+  233,244,9,255,248,5,255,129,252,253,239,15,132,244,48,129,124,253,202,4,239,
+  15,132,244,48,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,46,255,248,3,129,252,253,239,255,
-  15,133,244,9,255,252,233,244,47,255,252,247,208,139,108,202,4,131,198,4,129,
+  252,237,255,189,1,0,0,0,255,252,233,244,47,255,248,3,129,252,253,239,255,
+  15,133,244,9,255,252,233,244,48,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,
@@ -582,7 +583,7 @@ static const unsigned char build_actionlist[16947] = {
   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,47,255,15,132,244,248,129,252,253,239,15,132,244,47,15,183,70,252,
+  233,244,48,255,15,132,244,248,129,252,253,239,15,132,244,48,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,
@@ -592,39 +593,39 @@ static const unsigned char build_actionlist[16947] = {
   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,52,255,129,124,253,194,4,239,15,131,244,52,255,252,242,15,16,4,194,
+  135,244,53,255,129,124,253,194,4,239,15,131,244,53,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,55,139,12,194,137,213,232,251,
+  171,248,2,129,124,253,194,4,239,15,133,244,56,139,12,194,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,15,182,252,236,15,182,192,255,129,124,253,252,234,
-  4,239,15,133,244,49,129,124,253,199,4,239,15,133,244,49,139,44,252,234,3,
-  44,199,15,128,244,48,255,129,124,253,252,234,4,239,15,133,244,51,129,124,
-  253,199,4,239,15,133,244,51,139,4,199,3,4,252,234,15,128,244,50,255,129,124,
-  253,252,234,4,239,15,133,244,54,129,124,253,194,4,239,15,133,244,54,139,44,
-  252,234,3,44,194,15,128,244,53,255,199,68,202,4,237,255,129,124,253,252,234,
-  4,239,15,131,244,49,255,129,124,253,199,4,239,15,131,244,49,255,252,242,15,
+  4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,3,
+  44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,
+  253,199,4,239,15,133,244,52,139,4,199,3,4,252,234,15,128,244,51,255,129,124,
+  253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,
+  252,234,3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,234,
+  4,239,15,131,244,50,255,129,124,253,199,4,239,15,131,244,50,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,51,255,129,124,253,199,4,239,15,131,244,51,255,
+  253,252,234,4,239,15,131,244,52,255,129,124,253,199,4,239,15,131,244,52,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,54,129,124,253,194,4,239,15,131,244,
-  54,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,49,129,124,253,199,4,239,15,
-  133,244,49,139,44,252,234,43,44,199,15,128,244,48,255,129,124,253,252,234,
-  4,239,15,133,244,51,129,124,253,199,4,239,15,133,244,51,139,4,199,43,4,252,
-  234,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,54,129,124,253,
-  194,4,239,15,133,244,54,139,44,252,234,43,44,194,15,128,244,53,255,252,242,
+  129,124,253,252,234,4,239,15,131,244,55,129,124,253,194,4,239,15,131,244,
+  55,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,50,129,124,253,199,4,239,15,
+  133,244,50,139,44,252,234,43,44,199,15,128,244,49,255,129,124,253,252,234,
+  4,239,15,133,244,52,129,124,253,199,4,239,15,133,244,52,139,4,199,43,4,252,
+  234,15,128,244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,
+  194,4,239,15,133,244,55,139,44,252,234,43,44,194,15,128,244,54,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,49,129,124,253,199,4,239,15,133,
-  244,49,139,44,252,234,15,175,44,199,15,128,244,48,255,129,124,253,252,234,
-  4,239,15,133,244,51,129,124,253,199,4,239,15,133,244,51,139,4,199,15,175,
-  4,252,234,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,54,129,124,
-  253,194,4,239,15,133,244,54,139,44,252,234,15,175,44,194,15,128,244,53,255,
+  255,129,124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,
+  244,50,139,44,252,234,15,175,44,199,15,128,244,49,255,129,124,253,252,234,
+  4,239,15,133,244,52,129,124,253,199,4,239,15,133,244,52,139,4,199,15,175,
+  4,252,234,15,128,244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,
+  253,194,4,239,15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,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,
@@ -634,10 +635,10 @@ static const unsigned char build_actionlist[16947] = {
   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,164,232,244,154,255,252,233,244,164,255,
-  232,244,114,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,
-  68,36,8,248,34,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,
-  1,27,139,149,233,133,192,15,133,244,43,15,182,110,252,255,15,182,78,252,253,
+  255,221,4,252,234,221,4,194,255,248,165,232,244,155,255,252,233,244,165,255,
+  232,244,115,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,
+  68,36,8,248,35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,
+  1,27,139,149,233,133,192,15,133,244,44,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,
@@ -679,57 +680,57 @@ static const unsigned char build_actionlist[16947] = {
   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,32,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,165,255,252,247,208,139,106,252,248,139,173,233,139,
-  4,135,252,233,244,166,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
-  239,15,133,244,37,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251,
+  139,4,135,252,233,244,166,255,252,247,208,139,106,252,248,139,173,233,139,
+  4,135,252,233,244,167,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
+  239,15,133,244,38,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,37,255,59,133,233,15,131,244,37,193,224,3,3,133,233,
+  219,4,36,255,15,133,244,38,255,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,
-  37,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,37,139,4,194,252,233,244,165,255,15,182,252,236,
-  15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,35,
-  139,44,252,234,248,165,139,141,233,35,136,233,105,201,239,3,141,233,248,1,
+  38,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,38,139,4,194,252,233,244,166,255,15,182,252,236,
+  15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36,
+  139,44,252,234,248,166,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,35,255,15,182,252,236,15,182,192,129,124,253,
-  252,234,4,239,15,133,244,36,139,44,252,234,59,133,233,15,131,244,36,193,224,
+  235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,
+  252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,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,36,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,40,139,44,
-  252,234,255,15,133,244,40,255,59,133,233,15,131,244,40,193,224,3,3,133,233,
+  132,244,37,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,41,139,44,
+  252,234,255,15,133,244,41,255,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,139,
-  141,233,252,246,129,233,235,255,15,132,244,40,15,182,78,252,253,252,233,244,
-  1,248,5,129,124,253,194,4,239,15,133,244,40,139,4,194,252,233,244,166,248,
+  141,233,252,246,129,233,235,255,15,132,244,41,15,182,78,252,253,252,233,244,
+  1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,167,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,38,139,44,252,234,248,166,139,141,233,35,136,233,
+  252,234,4,239,15,133,244,39,139,44,252,234,248,167,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,38,139,76,36,16,252,233,244,2,248,5,139,137,233,
+  246,129,233,235,15,132,244,39,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,38,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,
+  235,15,132,244,39,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,34,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,39,139,44,252,
-  234,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,
+  182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252,
+  234,59,133,233,15,131,244,40,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,39,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
+  235,15,132,244,40,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,
@@ -739,10 +740,10 @@ static const unsigned char build_actionlist[16947] = {
   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,35,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,56,141,84,202,8,137,114,
+  20,255,129,124,253,202,4,239,139,44,202,15,133,244,57,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,57,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,
+  244,29,248,58,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,
@@ -790,20 +791,20 @@ static const unsigned char build_actionlist[16947] = {
   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,131,172,253,43,233,1,15,132,244,146,
+  137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,147,
   255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12,239,
-  15,133,244,58,129,121,253,20,239,15,133,244,58,139,41,131,121,16,0,15,140,
-  244,251,255,129,121,253,12,239,15,133,244,163,129,121,253,20,239,15,133,244,
-  163,255,139,105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,137,41,
+  15,133,244,59,129,121,253,20,239,15,133,244,59,139,41,131,121,16,0,15,140,
+  244,251,255,129,121,253,12,239,15,133,244,164,129,121,253,20,239,15,133,244,
+  164,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,58,129,121,253,12,239,15,131,244,58,255,129,121,253,12,
-  239,15,131,244,163,129,121,253,20,239,15,131,244,163,255,139,105,20,255,129,
-  252,253,239,15,131,244,58,255,252,242,15,16,1,252,242,15,16,73,8,255,252,
+  239,255,15,131,244,59,129,121,253,12,239,15,131,244,59,255,129,121,253,12,
+  239,15,131,244,164,129,121,253,20,239,15,131,244,164,255,139,105,20,255,129,
+  252,253,239,15,131,244,59,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,
@@ -815,7 +816,7 @@ static const unsigned char build_actionlist[16947] = {
   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,131,172,253,43,233,1,15,132,244,148,
+  137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,149,
   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,
@@ -855,6 +856,7 @@ enum {
   GLOB_vmeta_call,
   GLOB_vm_call_dispatch_f,
   GLOB_vm_cpcall,
+  GLOB_vm_call_tail,
   GLOB_cont_cat,
   GLOB_cont_ra,
   GLOB_BC_CAT_Z,
@@ -1015,6 +1017,7 @@ static const char *const globnames[] = {
   "vmeta_call",
   "vm_call_dispatch_f",
   "vm_cpcall",
+  "vm_call_tail",
   "cont_cat",
   "cont_ra",
   "BC_CAT_Z",
@@ -1219,766 +1222,767 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   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, Dt7(->pc));
-  dasm_put(Dst, 754, PC2PROTO(k), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 573, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
+  dasm_put(Dst, 753, Dt7(->pc), PC2PROTO(k), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 875);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 858, LJ_TISNUM);
+    dasm_put(Dst, 881, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 868);
+    dasm_put(Dst, 891);
   } else {
-    dasm_put(Dst, 881);
+    dasm_put(Dst, 904);
   }
-  dasm_put(Dst, 894, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
-  dasm_put(Dst, 1046, DISPATCH_GL(tmptv), LJ_TTAB);
+  dasm_put(Dst, 917, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+  dasm_put(Dst, 1069, DISPATCH_GL(tmptv), LJ_TTAB);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 858, LJ_TISNUM);
+    dasm_put(Dst, 881, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 868);
+    dasm_put(Dst, 891);
   } else {
-    dasm_put(Dst, 881);
+    dasm_put(Dst, 904);
   }
-  dasm_put(Dst, 1069, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 1263, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
-  dasm_put(Dst, 1370);
+  dasm_put(Dst, 1092, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 1286, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+  dasm_put(Dst, 1393);
 #if LJ_HASFFI
-  dasm_put(Dst, 1385, Dt1(->base));
+  dasm_put(Dst, 1408, Dt1(->base));
 #endif
-  dasm_put(Dst, 1416);
+  dasm_put(Dst, 1439);
 #if LJ_DUALNUM
-  dasm_put(Dst, 1419);
+  dasm_put(Dst, 1442);
 #endif
-  dasm_put(Dst, 1425);
+  dasm_put(Dst, 1448);
 #if LJ_DUALNUM
-  dasm_put(Dst, 852);
+  dasm_put(Dst, 875);
 #endif
-  dasm_put(Dst, 1437);
+  dasm_put(Dst, 1460);
 #if LJ_DUALNUM
-  dasm_put(Dst, 1419);
+  dasm_put(Dst, 1442);
 #endif
-  dasm_put(Dst, 1465, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 1620, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
-  dasm_put(Dst, 1797, 1+1, ~LJ_TNUMX);
+  dasm_put(Dst, 1488, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 1643, 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, 1826);
+  dasm_put(Dst, 1849);
   } else {
-  dasm_put(Dst, 1830);
+  dasm_put(Dst, 1853);
   }
-  dasm_put(Dst, 1839, ((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, 1922, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
-  dasm_put(Dst, 1980, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
-  dasm_put(Dst, 2043, 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, 2115, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 1862, ((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, 1945, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
+  dasm_put(Dst, 2003, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
+  dasm_put(Dst, 2066, 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, 2138, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2204);
+    dasm_put(Dst, 2227);
   } else {
-    dasm_put(Dst, 2221);
+    dasm_put(Dst, 2244);
   }
   if (sse) {
-    dasm_put(Dst, 2226);
+    dasm_put(Dst, 2249);
   } else {
-    dasm_put(Dst, 2236);
+    dasm_put(Dst, 2259);
   }
-  dasm_put(Dst, 2243, 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, 2309, Dt1(->base));
+  dasm_put(Dst, 2266, 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, 2332, Dt1(->base));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2333);
+    dasm_put(Dst, 2356);
   } else {
-    dasm_put(Dst, 2338);
+    dasm_put(Dst, 2361);
   }
-  dasm_put(Dst, 2343, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
-  dasm_put(Dst, 2452, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2366, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
+  dasm_put(Dst, 2475, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2499, Dt6(->metatable));
+  dasm_put(Dst, 2522, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2508, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+  dasm_put(Dst, 2531, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2494);
+    dasm_put(Dst, 2517);
   } else {
-    dasm_put(Dst, 2221);
+    dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 2563);
+  dasm_put(Dst, 2586);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2568, LJ_TISNUM);
+    dasm_put(Dst, 2591, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 2584);
+    dasm_put(Dst, 2607);
   } else {
-    dasm_put(Dst, 2623);
+    dasm_put(Dst, 2646);
   }
-  dasm_put(Dst, 2641, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
-  dasm_put(Dst, 2479, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2664, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+  dasm_put(Dst, 2502, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2499, Dt6(->metatable));
+  dasm_put(Dst, 2522, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2722, Dt8(->upvalue[0]), LJ_TFUNC);
+  dasm_put(Dst, 2745, Dt8(->upvalue[0]), LJ_TFUNC);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2743, LJ_TISNUM);
+    dasm_put(Dst, 2766, LJ_TISNUM);
   } else if (sse) {
-    dasm_put(Dst, 2755);
-  } else {
-    dasm_put(Dst, 2765);
-  }
-  dasm_put(Dst, 2772, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
-  dasm_put(Dst, 2836, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
-  dasm_put(Dst, 2924, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
-  dasm_put(Dst, 3025, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
-  dasm_put(Dst, 3139, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
-  dasm_put(Dst, 3237, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
-  dasm_put(Dst, 3303, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
-  dasm_put(Dst, 3404, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
-  dasm_put(Dst, 3517, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+    dasm_put(Dst, 2778);
+  } else {
+    dasm_put(Dst, 2788);
+  }
+  dasm_put(Dst, 2795, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+  dasm_put(Dst, 2859, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+  dasm_put(Dst, 2947, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+  dasm_put(Dst, 3048, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+  dasm_put(Dst, 3162, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+  dasm_put(Dst, 3260, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 3326, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+  dasm_put(Dst, 3427, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+  dasm_put(Dst, 3540, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
   if (!LJ_DUALNUM) {
-    dasm_put(Dst, 3543);
+    dasm_put(Dst, 3566);
   }
   if (sse) {
-    dasm_put(Dst, 3546);
+    dasm_put(Dst, 3569);
   }
-  dasm_put(Dst, 3561, 1+1);
+  dasm_put(Dst, 3584, 1+1);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 3572, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 3595, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3652, LJ_TISNUM);
+    dasm_put(Dst, 3675, LJ_TISNUM);
   }
   if (sse) {
-    dasm_put(Dst, 3662);
+    dasm_put(Dst, 3685);
   } else {
-    dasm_put(Dst, 3698);
+    dasm_put(Dst, 3721);
   }
-  dasm_put(Dst, 3715, 1+1, FRAME_TYPE, LJ_TNIL);
+  dasm_put(Dst, 3738, 1+1, FRAME_TYPE, LJ_TNIL);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 3807, LJ_TISNUM);
+  dasm_put(Dst, 3830, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 3652, LJ_TISNUM);
+  dasm_put(Dst, 3675, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 3829);
+  dasm_put(Dst, 3852);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3838);
+  dasm_put(Dst, 3861);
     }
-  dasm_put(Dst, 2231);
+  dasm_put(Dst, 2254);
   } else {
-  dasm_put(Dst, 3872);
+  dasm_put(Dst, 3895);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3878);
-  if (cmov) {
   dasm_put(Dst, 3901);
+  if (cmov) {
+  dasm_put(Dst, 3924);
   } else {
-  dasm_put(Dst, 3907);
+  dasm_put(Dst, 3930);
   }
-  dasm_put(Dst, 3914);
+  dasm_put(Dst, 3937);
     } else {
-  dasm_put(Dst, 2238);
+  dasm_put(Dst, 2261);
     }
   }
-  dasm_put(Dst, 3931);
+  dasm_put(Dst, 3954);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 3807, LJ_TISNUM);
+  dasm_put(Dst, 3830, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 3652, LJ_TISNUM);
+  dasm_put(Dst, 3675, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 3934);
+  dasm_put(Dst, 3957);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3838);
+  dasm_put(Dst, 3861);
     }
-  dasm_put(Dst, 2231);
+  dasm_put(Dst, 2254);
   } else {
-  dasm_put(Dst, 3943);
+  dasm_put(Dst, 3966);
     if (LJ_DUALNUM) {
-  dasm_put(Dst, 3878);
-  if (cmov) {
   dasm_put(Dst, 3901);
+  if (cmov) {
+  dasm_put(Dst, 3924);
   } else {
-  dasm_put(Dst, 3907);
+  dasm_put(Dst, 3930);
   }
-  dasm_put(Dst, 3914);
+  dasm_put(Dst, 3937);
     } else {
-  dasm_put(Dst, 2238);
+  dasm_put(Dst, 2261);
     }
   }
   if (sse) {
-    dasm_put(Dst, 3949, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3972, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3978, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4001, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4007, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4076, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4133, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4196, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 4286);
+  dasm_put(Dst, 4030, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4099, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4156, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4219, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4309);
   if (sse) {
-  dasm_put(Dst, 4298, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4321, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 4329, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4352, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4354);
+  dasm_put(Dst, 4377);
   if (sse) {
-  dasm_put(Dst, 4368, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4391, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 4399, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4422, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4424);
+  dasm_put(Dst, 4447);
   if (sse) {
-  dasm_put(Dst, 4438, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4461, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 4469, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4492, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4494);
+  dasm_put(Dst, 4517);
   if (sse) {
-    dasm_put(Dst, 4510, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4533, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   } else {
-    dasm_put(Dst, 4549, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4572, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   }
-  dasm_put(Dst, 4582, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
-  dasm_put(Dst, 4647, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4605, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4670, 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4746);
+    dasm_put(Dst, 4769);
   } else {
-    dasm_put(Dst, 4752);
+    dasm_put(Dst, 4775);
   }
-  dasm_put(Dst, 4761);
+  dasm_put(Dst, 4784);
   if (sse) {
-    dasm_put(Dst, 4786);
+    dasm_put(Dst, 4809);
   } else {
-    dasm_put(Dst, 4792);
+    dasm_put(Dst, 4815);
   }
-  dasm_put(Dst, 4795, 1+2);
+  dasm_put(Dst, 4818, 1+2);
   if (sse) {
-    dasm_put(Dst, 4804);
+    dasm_put(Dst, 4827);
   } else {
-    dasm_put(Dst, 4812);
+    dasm_put(Dst, 4835);
   }
-  dasm_put(Dst, 4820);
+  dasm_put(Dst, 4843);
   if (sse) {
-    dasm_put(Dst, 4823);
+    dasm_put(Dst, 4846);
   } else {
-    dasm_put(Dst, 4855);
+    dasm_put(Dst, 4878);
   }
-  dasm_put(Dst, 4874);
+  dasm_put(Dst, 4897);
   if (sse) {
-    dasm_put(Dst, 4890, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4913, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4915, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4938, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4937);
+  dasm_put(Dst, 4960);
   if (sse) {
-    dasm_put(Dst, 4959);
+    dasm_put(Dst, 4982);
   } else {
-    dasm_put(Dst, 4985);
+    dasm_put(Dst, 5008);
   }
-  dasm_put(Dst, 5002, 1+2);
+  dasm_put(Dst, 5025, 1+2);
   if (sse) {
-    dasm_put(Dst, 5042);
+    dasm_put(Dst, 5065);
   } else {
-    dasm_put(Dst, 5050);
+    dasm_put(Dst, 5073);
   }
-  dasm_put(Dst, 5060, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 5083, 2+1, LJ_TISNUM, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 5112, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 5135, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 5159, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 5182, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 5200, LJ_TISNUM);
+  dasm_put(Dst, 5223, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5213, LJ_TISNUM);
+  dasm_put(Dst, 5236, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 4746);
+  dasm_put(Dst, 4769);
   } else {
-  dasm_put(Dst, 4752);
+  dasm_put(Dst, 4775);
   }
-  dasm_put(Dst, 5263);
+  dasm_put(Dst, 5286);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 5274, LJ_TISNUM);
+  dasm_put(Dst, 5297, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5295);
+  dasm_put(Dst, 5318);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 5316);
+  dasm_put(Dst, 5339);
   } else {
-  dasm_put(Dst, 5341, LJ_TISNUM);
+  dasm_put(Dst, 5364, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5359);
+  dasm_put(Dst, 5382);
   } else {
-  dasm_put(Dst, 5377);
+  dasm_put(Dst, 5400);
   }
-  dasm_put(Dst, 5382);
+  dasm_put(Dst, 5405);
   if (cmov) {
-  dasm_put(Dst, 5392);
+  dasm_put(Dst, 5415);
   } else {
-  dasm_put(Dst, 5400);
+  dasm_put(Dst, 5423);
   }
-  dasm_put(Dst, 5333);
+  dasm_put(Dst, 5356);
   }
-  dasm_put(Dst, 5421, LJ_TISNUM);
+  dasm_put(Dst, 5444, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5434, LJ_TISNUM);
+  dasm_put(Dst, 5457, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 4746);
+  dasm_put(Dst, 4769);
   } else {
-  dasm_put(Dst, 4752);
+  dasm_put(Dst, 4775);
   }
-  dasm_put(Dst, 5263);
+  dasm_put(Dst, 5286);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 5274, LJ_TISNUM);
+  dasm_put(Dst, 5297, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5295);
+  dasm_put(Dst, 5318);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 5484);
+  dasm_put(Dst, 5507);
   } else {
-  dasm_put(Dst, 5341, LJ_TISNUM);
+  dasm_put(Dst, 5364, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 5359);
+  dasm_put(Dst, 5382);
   } else {
-  dasm_put(Dst, 5377);
+  dasm_put(Dst, 5400);
   }
-  dasm_put(Dst, 5382);
+  dasm_put(Dst, 5405);
   if (cmov) {
-  dasm_put(Dst, 5509);
+  dasm_put(Dst, 5532);
   } else {
-  dasm_put(Dst, 5517);
+  dasm_put(Dst, 5540);
   }
-  dasm_put(Dst, 5333);
+  dasm_put(Dst, 5356);
   }
   if (!sse) {
-    dasm_put(Dst, 5538);
+    dasm_put(Dst, 5561);
   }
-  dasm_put(Dst, 5547, 1+1, LJ_TSTR);
+  dasm_put(Dst, 5570, 1+1, LJ_TSTR);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5569, Dt5(->len));
+    dasm_put(Dst, 5592, Dt5(->len));
   } else if (sse) {
-    dasm_put(Dst, 5577, Dt5(->len));
+    dasm_put(Dst, 5600, Dt5(->len));
   } else {
-    dasm_put(Dst, 5588, Dt5(->len));
+    dasm_put(Dst, 5611, Dt5(->len));
   }
-  dasm_put(Dst, 5596, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+  dasm_put(Dst, 5619, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 3926);
+    dasm_put(Dst, 3949);
   } else if (sse) {
-    dasm_put(Dst, 5634);
+    dasm_put(Dst, 5657);
   } else {
-    dasm_put(Dst, 5644);
+    dasm_put(Dst, 5667);
   }
-  dasm_put(Dst, 5657, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+  dasm_put(Dst, 5680, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5688);
-  } else if (sse) {
     dasm_put(Dst, 5711);
+  } else if (sse) {
+    dasm_put(Dst, 5734);
   } else {
-    dasm_put(Dst, 5737);
+    dasm_put(Dst, 5760);
   }
-  dasm_put(Dst, 5761, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+  dasm_put(Dst, 5784, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5864);
+    dasm_put(Dst, 5887);
   } else if (sse) {
-    dasm_put(Dst, 5876);
+    dasm_put(Dst, 5899);
   } else {
-    dasm_put(Dst, 5891);
+    dasm_put(Dst, 5914);
   }
-  dasm_put(Dst, 5903, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5926, LJ_TSTR, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 2494);
+    dasm_put(Dst, 2517);
   } else {
-    dasm_put(Dst, 2221);
+    dasm_put(Dst, 2244);
   }
-  dasm_put(Dst, 5920, Dt5(->len));
+  dasm_put(Dst, 5943, Dt5(->len));
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 5930);
+    dasm_put(Dst, 5953);
   } else if (sse) {
-    dasm_put(Dst, 5934);
+    dasm_put(Dst, 5957);
   } else {
-    dasm_put(Dst, 5941);
+    dasm_put(Dst, 5964);
   }
-  dasm_put(Dst, 5953, sizeof(GCstr)-1);
-  dasm_put(Dst, 6028, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 6087, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5976, sizeof(GCstr)-1);
+  dasm_put(Dst, 6051, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 6110, LJ_TSTR, LJ_TISNUM);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 6104);
+    dasm_put(Dst, 6127);
   } else if (sse) {
-    dasm_put(Dst, 6112);
+    dasm_put(Dst, 6135);
   } else {
-    dasm_put(Dst, 6123);
+    dasm_put(Dst, 6146);
   }
-  dasm_put(Dst, 6139, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 6204, 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, 6267, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
-  dasm_put(Dst, 6338, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 6423, 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, 6493, 1+1, LJ_TTAB);
+  dasm_put(Dst, 6162, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 6227, 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, 6290, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+  dasm_put(Dst, 6361, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 6446, 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, 6516, 1+1, LJ_TTAB);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 6561);
+    dasm_put(Dst, 6584);
   } else if (sse) {
-    dasm_put(Dst, 6568);
+    dasm_put(Dst, 6591);
   } else {
-    dasm_put(Dst, 6578);
+    dasm_put(Dst, 6601);
   }
-  dasm_put(Dst, 6589, LJ_TISNUM);
+  dasm_put(Dst, 6612, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6597);
+  dasm_put(Dst, 6620);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6643);
+  dasm_put(Dst, 6666);
   }
   dasm_put(Dst, 111);
   if (LJ_DUALNUM || sse) {
     if (!sse) {
-      dasm_put(Dst, 6661);
+      dasm_put(Dst, 6684);
     }
-    dasm_put(Dst, 6665);
+    dasm_put(Dst, 6688);
   } else {
-    dasm_put(Dst, 6581);
+    dasm_put(Dst, 6604);
   }
-  dasm_put(Dst, 6670);
+  dasm_put(Dst, 6693);
   if (sse) {
-  dasm_put(Dst, 6673);
+  dasm_put(Dst, 6696);
   } else {
-  dasm_put(Dst, 6688);
+  dasm_put(Dst, 6711);
   }
-  dasm_put(Dst, 2198, LJ_TISNUM);
+  dasm_put(Dst, 2221, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6714);
+  dasm_put(Dst, 6737);
   } else {
-  dasm_put(Dst, 6729);
+  dasm_put(Dst, 6752);
   }
-  dasm_put(Dst, 6742, LJ_TISNUM);
+  dasm_put(Dst, 6765, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6767);
+  dasm_put(Dst, 6790);
   } else {
-  dasm_put(Dst, 6787);
+  dasm_put(Dst, 6810);
   }
   if (sse) {
-  dasm_put(Dst, 6792);
+  dasm_put(Dst, 6815);
   } else {
-  dasm_put(Dst, 6809);
+  dasm_put(Dst, 6832);
   }
-  dasm_put(Dst, 6822);
+  dasm_put(Dst, 6845);
   if (sse) {
-  dasm_put(Dst, 6673);
+  dasm_put(Dst, 6696);
   } else {
-  dasm_put(Dst, 6688);
+  dasm_put(Dst, 6711);
   }
-  dasm_put(Dst, 2198, LJ_TISNUM);
+  dasm_put(Dst, 2221, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6714);
+  dasm_put(Dst, 6737);
   } else {
-  dasm_put(Dst, 6729);
+  dasm_put(Dst, 6752);
   }
-  dasm_put(Dst, 6742, LJ_TISNUM);
+  dasm_put(Dst, 6765, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6832);
+  dasm_put(Dst, 6855);
   } else {
-  dasm_put(Dst, 6787);
+  dasm_put(Dst, 6810);
   }
   if (sse) {
-  dasm_put(Dst, 6852);
+  dasm_put(Dst, 6875);
   } else {
-  dasm_put(Dst, 6869);
+  dasm_put(Dst, 6892);
   }
-  dasm_put(Dst, 6882);
+  dasm_put(Dst, 6905);
   if (sse) {
-  dasm_put(Dst, 6673);
+  dasm_put(Dst, 6696);
   } else {
-  dasm_put(Dst, 6688);
+  dasm_put(Dst, 6711);
   }
-  dasm_put(Dst, 2198, LJ_TISNUM);
+  dasm_put(Dst, 2221, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6714);
+  dasm_put(Dst, 6737);
   } else {
-  dasm_put(Dst, 6729);
+  dasm_put(Dst, 6752);
   }
-  dasm_put(Dst, 6742, LJ_TISNUM);
+  dasm_put(Dst, 6765, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6892);
+  dasm_put(Dst, 6915);
   } else {
-  dasm_put(Dst, 6787);
+  dasm_put(Dst, 6810);
   }
   if (sse) {
-  dasm_put(Dst, 6912);
+  dasm_put(Dst, 6935);
   } else {
-  dasm_put(Dst, 6929);
+  dasm_put(Dst, 6952);
   }
-  dasm_put(Dst, 6942, LJ_TISNUM);
+  dasm_put(Dst, 6965, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6957);
+  dasm_put(Dst, 6980);
   }
-  dasm_put(Dst, 6978, LJ_TISNUM);
+  dasm_put(Dst, 7001, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6957);
+  dasm_put(Dst, 6980);
   }
-  dasm_put(Dst, 6994);
+  dasm_put(Dst, 7017);
   if (LJ_DUALNUM) {
-    dasm_put(Dst, 6665);
+    dasm_put(Dst, 6688);
   } else if (sse) {
-    dasm_put(Dst, 7000);
+    dasm_put(Dst, 7023);
   } else {
-    dasm_put(Dst, 7012);
+    dasm_put(Dst, 7035);
   }
-  dasm_put(Dst, 7025);
+  dasm_put(Dst, 7048);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 7036, LJ_TISNUM);
+  dasm_put(Dst, 7059, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6957);
+  dasm_put(Dst, 6980);
   }
-  dasm_put(Dst, 7044, LJ_TISNUM);
+  dasm_put(Dst, 7067, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 7059, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7082, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7131, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7154, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7195);
+  dasm_put(Dst, 7218);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 7202, LJ_TISNUM);
+  dasm_put(Dst, 7225, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6957);
+  dasm_put(Dst, 6980);
   }
-  dasm_put(Dst, 7044, LJ_TISNUM);
+  dasm_put(Dst, 7067, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 7210, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7233, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7282, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7305, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7346);
+  dasm_put(Dst, 7369);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 7354, LJ_TISNUM);
+  dasm_put(Dst, 7377, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6957);
+  dasm_put(Dst, 6980);
   }
-  dasm_put(Dst, 7044, LJ_TISNUM);
+  dasm_put(Dst, 7067, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 7362, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7385, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7434, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7457, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7498);
+  dasm_put(Dst, 7521);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 7506, LJ_TISNUM);
+  dasm_put(Dst, 7529, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6957);
+  dasm_put(Dst, 6980);
   }
-  dasm_put(Dst, 7044, LJ_TISNUM);
+  dasm_put(Dst, 7067, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 7514, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7537, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7586, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7609, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7650);
+  dasm_put(Dst, 7673);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 7657, LJ_TISNUM);
+  dasm_put(Dst, 7680, LJ_TISNUM);
   if (LJ_DUALNUM) {
-  dasm_put(Dst, 6697);
+  dasm_put(Dst, 6720);
   } else {
-  dasm_put(Dst, 2221);
+  dasm_put(Dst, 2244);
   }
   if (sse) {
-  dasm_put(Dst, 6614);
+  dasm_put(Dst, 6637);
   } else {
-  dasm_put(Dst, 6957);
+  dasm_put(Dst, 6980);
   }
-  dasm_put(Dst, 7044, LJ_TISNUM);
+  dasm_put(Dst, 7067, LJ_TISNUM);
   } else if (sse) {
-  dasm_put(Dst, 7665, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7688, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7737, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7760, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7801, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
-  dasm_put(Dst, 7877, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 8001, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7824, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+  dasm_put(Dst, 7900, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 8024, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 8039, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 8062, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 8070, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 8121, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 8093, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 8144, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 8187, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 8210, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 8233);
+  dasm_put(Dst, 8256);
 #if LJ_HASJIT
-  dasm_put(Dst, 8065);
+  dasm_put(Dst, 8088);
 #endif
-  dasm_put(Dst, 8240);
+  dasm_put(Dst, 8263);
 #if LJ_HASJIT
-  dasm_put(Dst, 8243);
+  dasm_put(Dst, 8266);
 #endif
-  dasm_put(Dst, 8253, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 8276, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 8287);
+  dasm_put(Dst, 8310);
 #endif
-  dasm_put(Dst, 8292, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 8315, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 8321, 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);
+  dasm_put(Dst, 8344, 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, 8464);
+  dasm_put(Dst, 8487);
 #if LJ_HASJIT
-  dasm_put(Dst, 8467, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 8490, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
 #endif
-  dasm_put(Dst, 8545);
+  dasm_put(Dst, 8568);
   if (!sse) {
-  dasm_put(Dst, 8548);
+  dasm_put(Dst, 8571);
   }
-  dasm_put(Dst, 8593);
+  dasm_put(Dst, 8616);
   if (!sse) {
-  dasm_put(Dst, 8695);
+  dasm_put(Dst, 8718);
   }
-  dasm_put(Dst, 8740);
+  dasm_put(Dst, 8763);
   if (!sse) {
-  dasm_put(Dst, 8842);
+  dasm_put(Dst, 8865);
   }
-  dasm_put(Dst, 8881);
+  dasm_put(Dst, 8904);
   if (sse) {
-    dasm_put(Dst, 8986);
+    dasm_put(Dst, 9009);
   } else {
-    dasm_put(Dst, 9116);
+    dasm_put(Dst, 9139);
   }
-  dasm_put(Dst, 9163);
+  dasm_put(Dst, 9186);
   if (!sse) {
-  dasm_put(Dst, 9237);
+  dasm_put(Dst, 9260);
   if (cmov) {
-  dasm_put(Dst, 9248);
+  dasm_put(Dst, 9271);
   } else {
-  dasm_put(Dst, 9252);
+  dasm_put(Dst, 9275);
   }
-  dasm_put(Dst, 9259);
-  dasm_put(Dst, 9333);
-  dasm_put(Dst, 9433);
+  dasm_put(Dst, 9282);
+  dasm_put(Dst, 9356);
+  dasm_put(Dst, 9456);
   if (cmov) {
-  dasm_put(Dst, 9436);
+  dasm_put(Dst, 9459);
   } else {
-  dasm_put(Dst, 9440);
+  dasm_put(Dst, 9463);
   }
-  dasm_put(Dst, 9447);
+  dasm_put(Dst, 9470);
   if (cmov) {
-  dasm_put(Dst, 9248);
+  dasm_put(Dst, 9271);
   } else {
-  dasm_put(Dst, 9252);
+  dasm_put(Dst, 9275);
   }
-  dasm_put(Dst, 9465);
+  dasm_put(Dst, 9488);
   } else {
-    dasm_put(Dst, 9544);
+    dasm_put(Dst, 9567);
   }
-  dasm_put(Dst, 9547);
-  dasm_put(Dst, 9632);
-  dasm_put(Dst, 9762);
-  dasm_put(Dst, 9968);
+  dasm_put(Dst, 9570);
+  dasm_put(Dst, 9655);
+  dasm_put(Dst, 9785);
+  dasm_put(Dst, 9991);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 9975);
-    dasm_put(Dst, 10032);
-    dasm_put(Dst, 10123);
+    dasm_put(Dst, 9998);
+    dasm_put(Dst, 10055);
+    dasm_put(Dst, 10146);
   } else {
-    dasm_put(Dst, 10165);
-    dasm_put(Dst, 10257);
+    dasm_put(Dst, 10188);
+    dasm_put(Dst, 10280);
   }
-  dasm_put(Dst, 10303);
+  dasm_put(Dst, 10326);
 #endif
-  dasm_put(Dst, 10307);
+  dasm_put(Dst, 10330);
   if (sse) {
-    dasm_put(Dst, 10310);
-    dasm_put(Dst, 10415);
-    dasm_put(Dst, 10498);
+    dasm_put(Dst, 10333);
+    dasm_put(Dst, 10438);
+    dasm_put(Dst, 10521);
   } else {
-    dasm_put(Dst, 10570);
-    dasm_put(Dst, 10653);
+    dasm_put(Dst, 10593);
+    dasm_put(Dst, 10676);
     if (cmov) {
-    dasm_put(Dst, 10708);
+    dasm_put(Dst, 10731);
     } else {
-    dasm_put(Dst, 10727);
+    dasm_put(Dst, 10750);
     }
-    dasm_put(Dst, 10303);
+    dasm_put(Dst, 10326);
   }
-  dasm_put(Dst, 10768);
+  dasm_put(Dst, 10791);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 10824, DtE(->spadj));
+  dasm_put(Dst, 10847, DtE(->spadj));
 #if LJ_TARGET_WINDOWS
-  dasm_put(Dst, 10834, DtE(->spadj));
+  dasm_put(Dst, 10857, DtE(->spadj));
 #endif
-  dasm_put(Dst, 10838, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0]));
-  dasm_put(Dst, 10908, DtE(->fpr[0].f[0]));
+  dasm_put(Dst, 10861, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0]));
+  dasm_put(Dst, 10931, DtE(->fpr[0].f[0]));
 #if LJ_TARGET_WINDOWS
-  dasm_put(Dst, 10914, DtE(->spadj));
+  dasm_put(Dst, 10937, DtE(->spadj));
 #endif
-  dasm_put(Dst, 10918);
+  dasm_put(Dst, 10941);
 #endif
-  dasm_put(Dst, 10925);
+  dasm_put(Dst, 10948);
 #ifdef LUA_USE_ASSERT
-  dasm_put(Dst, 10305);
+  dasm_put(Dst, 10328);
 #endif
-  dasm_put(Dst, 10305);
+  dasm_put(Dst, 10328);
 }
 
 /* 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, 10928, defop);
+  dasm_put(Dst, 10951, defop);
 
   switch (op) {
 
@@ -1989,297 +1993,297 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 10930, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 10953, LJ_TISNUM, LJ_TISNUM);
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 10960);
+      dasm_put(Dst, 10983);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 10965);
+      dasm_put(Dst, 10988);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 10970);
+      dasm_put(Dst, 10993);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 10975);
+      dasm_put(Dst, 10998);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 10980, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 11003, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 11033);
+       dasm_put(Dst, 11056);
       } else {
-       dasm_put(Dst, 11044);
+       dasm_put(Dst, 11067);
       }
-      dasm_put(Dst, 11055);
+      dasm_put(Dst, 11078);
       if (sse) {
-       dasm_put(Dst, 11062);
+       dasm_put(Dst, 11085);
        switch (op) {
        case BC_ISLT:
-       dasm_put(Dst, 11082);
+       dasm_put(Dst, 11105);
        break;
        case BC_ISGE:
-       dasm_put(Dst, 11087);
+       dasm_put(Dst, 11110);
        break;
        case BC_ISLE:
-       dasm_put(Dst, 11092);
+       dasm_put(Dst, 11115);
        break;
        case BC_ISGT:
-       dasm_put(Dst, 11097);
+       dasm_put(Dst, 11120);
        break;
        default: break;  /* Shut up GCC. */
        }
-       dasm_put(Dst, 11102);
+       dasm_put(Dst, 11125);
       } else {
-       dasm_put(Dst, 11107);
+       dasm_put(Dst, 11130);
       }
     } else {
-      dasm_put(Dst, 11115, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 11138, LJ_TISNUM, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 11136);
+      dasm_put(Dst, 11159);
     } else {
-      dasm_put(Dst, 11157);
+      dasm_put(Dst, 11180);
       if (cmov) {
-      dasm_put(Dst, 3901);
+      dasm_put(Dst, 3924);
       } else {
-      dasm_put(Dst, 3907);
+      dasm_put(Dst, 3930);
       }
     }
     if (LJ_DUALNUM) {
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 11082);
+      dasm_put(Dst, 11105);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 11087);
+      dasm_put(Dst, 11110);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 11092);
+      dasm_put(Dst, 11115);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 11097);
+      dasm_put(Dst, 11120);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 11102);
+      dasm_put(Dst, 11125);
     } else {
       switch (op) {
       case BC_ISLT:
-      dasm_put(Dst, 11173);
+      dasm_put(Dst, 11196);
       break;
       case BC_ISGE:
-      dasm_put(Dst, 11178);
+      dasm_put(Dst, 11201);
       break;
       case BC_ISLE:
-      dasm_put(Dst, 11183);
+      dasm_put(Dst, 11206);
       break;
       case BC_ISGT:
-      dasm_put(Dst, 11188);
+      dasm_put(Dst, 11211);
       break;
       default: break;  /* Shut up GCC. */
       }
-      dasm_put(Dst, 11193, -BCBIAS_J*4);
+      dasm_put(Dst, 11216, -BCBIAS_J*4);
     }
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 11224);
+    dasm_put(Dst, 11247);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11232, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 11255, LJ_TISNUM, LJ_TISNUM);
       if (vk) {
-       dasm_put(Dst, 11257);
+       dasm_put(Dst, 11280);
       } else {
-       dasm_put(Dst, 11262);
+       dasm_put(Dst, 11285);
       }
-      dasm_put(Dst, 11267, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 11290, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 11318);
+       dasm_put(Dst, 11341);
       } else {
-       dasm_put(Dst, 11325);
+       dasm_put(Dst, 11348);
       }
-      dasm_put(Dst, 11329);
+      dasm_put(Dst, 11352);
       if (sse) {
-       dasm_put(Dst, 11340);
+       dasm_put(Dst, 11363);
       } else {
-       dasm_put(Dst, 11352);
+       dasm_put(Dst, 11375);
       }
-      dasm_put(Dst, 11359);
+      dasm_put(Dst, 11382);
     } else {
-      dasm_put(Dst, 11364, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 11387, LJ_TISNUM, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 11383);
+      dasm_put(Dst, 11406);
     } else {
-      dasm_put(Dst, 11401);
+      dasm_put(Dst, 11424);
       if (cmov) {
-      dasm_put(Dst, 3901);
+      dasm_put(Dst, 3924);
       } else {
-      dasm_put(Dst, 3907);
+      dasm_put(Dst, 3930);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 11414);
+      dasm_put(Dst, 11437);
     } else {
-      dasm_put(Dst, 11423);
+      dasm_put(Dst, 11446);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 11432, -BCBIAS_J*4);
+      dasm_put(Dst, 11455, -BCBIAS_J*4);
       if (!LJ_HASFFI) {
-       dasm_put(Dst, 4801);
+       dasm_put(Dst, 4824);
       }
     } else {
       if (!LJ_HASFFI) {
-       dasm_put(Dst, 4801);
+       dasm_put(Dst, 4824);
       }
-      dasm_put(Dst, 11447, -BCBIAS_J*4);
+      dasm_put(Dst, 11470, -BCBIAS_J*4);
     }
     if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
                       op == BC_ISEQN || op == BC_ISNEN)) {
-      dasm_put(Dst, 11462);
+      dasm_put(Dst, 11485);
     } else {
-      dasm_put(Dst, 11205);
+      dasm_put(Dst, 11228);
     }
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 11467);
+      dasm_put(Dst, 11490);
       if (LJ_HASFFI) {
-       dasm_put(Dst, 11470, LJ_TCDATA, LJ_TCDATA);
+       dasm_put(Dst, 11493, LJ_TCDATA, LJ_TCDATA);
       }
-      dasm_put(Dst, 11489, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 11512, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-       dasm_put(Dst, 11545);
+       dasm_put(Dst, 11568);
       } else {
-       dasm_put(Dst, 11549);
+       dasm_put(Dst, 11572);
       }
-      dasm_put(Dst, 11555);
+      dasm_put(Dst, 11578);
     } else if (LJ_HASFFI) {
-      dasm_put(Dst, 11560, LJ_TCDATA);
+      dasm_put(Dst, 11583, LJ_TCDATA);
       if (LJ_DUALNUM && vk) {
-       dasm_put(Dst, 11567);
+       dasm_put(Dst, 11590);
       } else {
-       dasm_put(Dst, 11540);
+       dasm_put(Dst, 11563);
       }
-      dasm_put(Dst, 11572);
+      dasm_put(Dst, 11595);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 11577, LJ_TSTR);
+    dasm_put(Dst, 11600, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 11418);
+      dasm_put(Dst, 11441);
     } else {
-      dasm_put(Dst, 2919);
+      dasm_put(Dst, 748);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 11602);
+    dasm_put(Dst, 11625);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11610, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 11633, LJ_TISNUM, LJ_TISNUM);
       if (vk) {
-       dasm_put(Dst, 11257);
+       dasm_put(Dst, 11280);
       } else {
-       dasm_put(Dst, 11262);
+       dasm_put(Dst, 11285);
       }
-      dasm_put(Dst, 11635, -BCBIAS_J*4, LJ_TISNUM);
+      dasm_put(Dst, 11658, -BCBIAS_J*4, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 11682);
+       dasm_put(Dst, 11705);
       } else {
-       dasm_put(Dst, 11689);
+       dasm_put(Dst, 11712);
       }
-      dasm_put(Dst, 11693);
+      dasm_put(Dst, 11716);
       if (sse) {
-       dasm_put(Dst, 11700);
+       dasm_put(Dst, 11723);
       } else {
-       dasm_put(Dst, 11712);
+       dasm_put(Dst, 11735);
       }
-      dasm_put(Dst, 11359);
+      dasm_put(Dst, 11382);
     } else {
-      dasm_put(Dst, 11719, LJ_TISNUM);
+      dasm_put(Dst, 11742, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 11728);
+      dasm_put(Dst, 11751);
     } else {
-      dasm_put(Dst, 11746);
+      dasm_put(Dst, 11769);
       if (cmov) {
-      dasm_put(Dst, 3901);
+      dasm_put(Dst, 3924);
       } else {
-      dasm_put(Dst, 3907);
+      dasm_put(Dst, 3930);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 11759);
+    dasm_put(Dst, 11782);
     if (!LJ_HASFFI) goto iseqne_test;
     if (vk) {
-      dasm_put(Dst, 11772, -BCBIAS_J*4, LJ_TCDATA);
+      dasm_put(Dst, 11795, -BCBIAS_J*4, LJ_TCDATA);
     } else {
-      dasm_put(Dst, 11821, LJ_TCDATA, -BCBIAS_J*4);
+      dasm_put(Dst, 11844, LJ_TCDATA, -BCBIAS_J*4);
     }
     break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 11864, LJ_TISTRUECOND);
+    dasm_put(Dst, 11887, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 11188);
+      dasm_put(Dst, 11211);
     } else {
-      dasm_put(Dst, 11183);
+      dasm_put(Dst, 11206);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 11876);
+      dasm_put(Dst, 11899);
     }
-    dasm_put(Dst, 11193, -BCBIAS_J*4);
+    dasm_put(Dst, 11216, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 11887);
+    dasm_put(Dst, 11910);
     break;
   case BC_NOT:
-    dasm_put(Dst, 11920, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 11943, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11955, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 11978, LJ_TISNUM, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 12031, LJ_TISNUM);
+      dasm_put(Dst, 12054, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 12042);
+      dasm_put(Dst, 12065);
     } else {
-      dasm_put(Dst, 12072);
+      dasm_put(Dst, 12095);
     }
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11462);
+      dasm_put(Dst, 11485);
     } else {
-      dasm_put(Dst, 11205);
+      dasm_put(Dst, 11228);
     }
     break;
   case BC_LEN:
-    dasm_put(Dst, 12081, LJ_TSTR);
+    dasm_put(Dst, 12104, LJ_TSTR);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 12095, Dt5(->len), LJ_TISNUM);
+      dasm_put(Dst, 12118, Dt5(->len), LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 12109, Dt5(->len));
+      dasm_put(Dst, 12132, Dt5(->len));
     } else {
-      dasm_put(Dst, 12127, Dt5(->len));
+      dasm_put(Dst, 12150, Dt5(->len));
     }
-    dasm_put(Dst, 12136, LJ_TTAB);
+    dasm_put(Dst, 12159, LJ_TTAB);
     if (LJ_DUALNUM) {
     } else if (sse) {
-      dasm_put(Dst, 12176);
+      dasm_put(Dst, 12199);
     } else {
-      dasm_put(Dst, 12182);
+      dasm_put(Dst, 12205);
     }
-    dasm_put(Dst, 12189);
+    dasm_put(Dst, 12212);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
@@ -2287,620 +2291,620 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12210, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12233, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 12243, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12266, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 12276, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12299, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 12309, LJ_TISNUM);
+    dasm_put(Dst, 12332, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 12105);
+    dasm_put(Dst, 12128);
     } else {
-    dasm_put(Dst, 11883);
+    dasm_put(Dst, 11906);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     } else {
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12315, LJ_TISNUM);
+    dasm_put(Dst, 12338, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12327, LJ_TISNUM);
+    dasm_put(Dst, 12350, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12338);
+    dasm_put(Dst, 12361);
     } else {
-    dasm_put(Dst, 12352);
+    dasm_put(Dst, 12375);
     }
       break;
     case 1:
-    dasm_put(Dst, 12360, LJ_TISNUM);
+    dasm_put(Dst, 12383, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12372, LJ_TISNUM);
+    dasm_put(Dst, 12395, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12383);
+    dasm_put(Dst, 12406);
     } else {
-    dasm_put(Dst, 12397);
+    dasm_put(Dst, 12420);
     }
       break;
     default:
-    dasm_put(Dst, 12405, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12428, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 12427);
+    dasm_put(Dst, 12450);
     } else {
-    dasm_put(Dst, 12441);
+    dasm_put(Dst, 12464);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 12065);
+    dasm_put(Dst, 12088);
     } else {
-    dasm_put(Dst, 12077);
+    dasm_put(Dst, 12100);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     }
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12449, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12472, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 12482, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12505, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 12515, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12538, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 12309, LJ_TISNUM);
+    dasm_put(Dst, 12332, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 12105);
+    dasm_put(Dst, 12128);
     } else {
-    dasm_put(Dst, 11883);
+    dasm_put(Dst, 11906);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     } else {
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12315, LJ_TISNUM);
+    dasm_put(Dst, 12338, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12327, LJ_TISNUM);
+    dasm_put(Dst, 12350, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12548);
+    dasm_put(Dst, 12571);
     } else {
-    dasm_put(Dst, 12562);
+    dasm_put(Dst, 12585);
     }
       break;
     case 1:
-    dasm_put(Dst, 12360, LJ_TISNUM);
+    dasm_put(Dst, 12383, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12372, LJ_TISNUM);
+    dasm_put(Dst, 12395, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12570);
+    dasm_put(Dst, 12593);
     } else {
-    dasm_put(Dst, 12584);
+    dasm_put(Dst, 12607);
     }
       break;
     default:
-    dasm_put(Dst, 12405, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12428, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 12592);
+    dasm_put(Dst, 12615);
     } else {
-    dasm_put(Dst, 12606);
+    dasm_put(Dst, 12629);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 12065);
+    dasm_put(Dst, 12088);
     } else {
-    dasm_put(Dst, 12077);
+    dasm_put(Dst, 12100);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     }
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12614, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12637, LJ_TISNUM, LJ_TISNUM);
       break;
     case 1:
-    dasm_put(Dst, 12648, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12671, LJ_TISNUM, LJ_TISNUM);
       break;
     default:
-    dasm_put(Dst, 12682, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12705, LJ_TISNUM, LJ_TISNUM);
       break;
     }
-    dasm_put(Dst, 12309, LJ_TISNUM);
+    dasm_put(Dst, 12332, LJ_TISNUM);
     if (vk == 1) {
-    dasm_put(Dst, 12105);
+    dasm_put(Dst, 12128);
     } else {
-    dasm_put(Dst, 11883);
+    dasm_put(Dst, 11906);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     } else {
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12315, LJ_TISNUM);
+    dasm_put(Dst, 12338, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12327, LJ_TISNUM);
+    dasm_put(Dst, 12350, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12716);
+    dasm_put(Dst, 12739);
     } else {
-    dasm_put(Dst, 12730);
+    dasm_put(Dst, 12753);
     }
       break;
     case 1:
-    dasm_put(Dst, 12360, LJ_TISNUM);
+    dasm_put(Dst, 12383, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12372, LJ_TISNUM);
+    dasm_put(Dst, 12395, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12738);
+    dasm_put(Dst, 12761);
     } else {
-    dasm_put(Dst, 12752);
+    dasm_put(Dst, 12775);
     }
       break;
     default:
-    dasm_put(Dst, 12405, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12428, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 12760);
+    dasm_put(Dst, 12783);
     } else {
-    dasm_put(Dst, 12774);
+    dasm_put(Dst, 12797);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 12065);
+    dasm_put(Dst, 12088);
     } else {
-    dasm_put(Dst, 12077);
+    dasm_put(Dst, 12100);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     }
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12315, LJ_TISNUM);
+    dasm_put(Dst, 12338, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12327, LJ_TISNUM);
+    dasm_put(Dst, 12350, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12782);
+    dasm_put(Dst, 12805);
     } else {
-    dasm_put(Dst, 12796);
+    dasm_put(Dst, 12819);
     }
       break;
     case 1:
-    dasm_put(Dst, 12360, LJ_TISNUM);
+    dasm_put(Dst, 12383, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12372, LJ_TISNUM);
+    dasm_put(Dst, 12395, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12804);
+    dasm_put(Dst, 12827);
     } else {
-    dasm_put(Dst, 12818);
+    dasm_put(Dst, 12841);
     }
       break;
     default:
-    dasm_put(Dst, 12405, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12428, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 12826);
+    dasm_put(Dst, 12849);
     } else {
-    dasm_put(Dst, 12840);
+    dasm_put(Dst, 12863);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 12065);
+    dasm_put(Dst, 12088);
     } else {
-    dasm_put(Dst, 12077);
+    dasm_put(Dst, 12100);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12315, LJ_TISNUM);
+    dasm_put(Dst, 12338, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12327, LJ_TISNUM);
+    dasm_put(Dst, 12350, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12848);
+    dasm_put(Dst, 12871);
     } else {
-    dasm_put(Dst, 12862);
+    dasm_put(Dst, 12885);
     }
       break;
     case 1:
-    dasm_put(Dst, 12360, LJ_TISNUM);
+    dasm_put(Dst, 12383, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12372, LJ_TISNUM);
+    dasm_put(Dst, 12395, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12870);
+    dasm_put(Dst, 12893);
     } else {
-    dasm_put(Dst, 12884);
+    dasm_put(Dst, 12907);
     }
       break;
     default:
-    dasm_put(Dst, 12405, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12428, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 12892);
+    dasm_put(Dst, 12915);
     } else {
-    dasm_put(Dst, 12906);
+    dasm_put(Dst, 12929);
     }
       break;
     }
-    dasm_put(Dst, 12914);
+    dasm_put(Dst, 12937);
     if (sse) {
-    dasm_put(Dst, 12065);
+    dasm_put(Dst, 12088);
     } else {
-    dasm_put(Dst, 12077);
+    dasm_put(Dst, 12100);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12315, LJ_TISNUM);
+    dasm_put(Dst, 12338, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12327, LJ_TISNUM);
+    dasm_put(Dst, 12350, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12848);
+    dasm_put(Dst, 12871);
     } else {
-    dasm_put(Dst, 12862);
+    dasm_put(Dst, 12885);
     }
       break;
     case 1:
-    dasm_put(Dst, 12360, LJ_TISNUM);
+    dasm_put(Dst, 12383, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12372, LJ_TISNUM);
+    dasm_put(Dst, 12395, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12870);
+    dasm_put(Dst, 12893);
     } else {
-    dasm_put(Dst, 12884);
+    dasm_put(Dst, 12907);
     }
       break;
     default:
-    dasm_put(Dst, 12405, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12428, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 12892);
+    dasm_put(Dst, 12915);
     } else {
-    dasm_put(Dst, 12906);
+    dasm_put(Dst, 12929);
     }
       break;
     }
-    dasm_put(Dst, 12920);
+    dasm_put(Dst, 12943);
     break;
   case BC_POW:
-    dasm_put(Dst, 12202);
+    dasm_put(Dst, 12225);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 12315, LJ_TISNUM);
+    dasm_put(Dst, 12338, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12327, LJ_TISNUM);
+    dasm_put(Dst, 12350, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12848);
+    dasm_put(Dst, 12871);
     } else {
-    dasm_put(Dst, 12862);
+    dasm_put(Dst, 12885);
     }
       break;
     case 1:
-    dasm_put(Dst, 12360, LJ_TISNUM);
+    dasm_put(Dst, 12383, LJ_TISNUM);
     if (LJ_DUALNUM) {
-    dasm_put(Dst, 12372, LJ_TISNUM);
+    dasm_put(Dst, 12395, LJ_TISNUM);
     }
     if (sse) {
-    dasm_put(Dst, 12870);
+    dasm_put(Dst, 12893);
     } else {
-    dasm_put(Dst, 12884);
+    dasm_put(Dst, 12907);
     }
       break;
     default:
-    dasm_put(Dst, 12405, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 12428, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 12892);
+    dasm_put(Dst, 12915);
     } else {
-    dasm_put(Dst, 12906);
+    dasm_put(Dst, 12929);
     }
       break;
     }
-    dasm_put(Dst, 12925);
+    dasm_put(Dst, 12948);
     if (sse) {
-    dasm_put(Dst, 12065);
+    dasm_put(Dst, 12088);
     } else {
-    dasm_put(Dst, 12077);
+    dasm_put(Dst, 12100);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 12929, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12952, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 13023, LJ_TSTR);
+    dasm_put(Dst, 13046, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 13023, LJ_TCDATA);
+    dasm_put(Dst, 13046, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 13056, LJ_TISNUM);
+      dasm_put(Dst, 13079, LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 13068);
+      dasm_put(Dst, 13091);
     } else {
-      dasm_put(Dst, 13083);
+      dasm_put(Dst, 13106);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 13091);
+      dasm_put(Dst, 13114);
     } else {
-      dasm_put(Dst, 13104);
+      dasm_put(Dst, 13127);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 13111);
+    dasm_put(Dst, 13134);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 13137, LJ_TNIL);
+    dasm_put(Dst, 13160, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 13183, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 13206, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 13227, 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, 13317);
+    dasm_put(Dst, 13250, 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, 13340);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 13329, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 13352, 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, 13420);
+    dasm_put(Dst, 13443);
     if (sse) {
-      dasm_put(Dst, 13425);
+      dasm_put(Dst, 13448);
     } else {
-      dasm_put(Dst, 11715);
+      dasm_put(Dst, 11738);
     }
-    dasm_put(Dst, 13432, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 13455, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 13441);
+      dasm_put(Dst, 13464);
     } else {
-      dasm_put(Dst, 13447);
+      dasm_put(Dst, 13470);
     }
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     break;
   case BC_USETP:
-    dasm_put(Dst, 13450, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 13473, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 13487, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 13510, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 13541, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 13564, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 13612, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 13635, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 13738, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 13761, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 13830, Dt7(->env));
+    dasm_put(Dst, 13853, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 13848, Dt7(->env));
+    dasm_put(Dst, 13871, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 13866, LJ_TTAB);
+    dasm_put(Dst, 13889, LJ_TTAB);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 13889, LJ_TISNUM);
+      dasm_put(Dst, 13912, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 13903, LJ_TISNUM);
+      dasm_put(Dst, 13926, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 13914);
+       dasm_put(Dst, 13937);
       } else {
-       dasm_put(Dst, 13935);
+       dasm_put(Dst, 13958);
        if (cmov) {
-       dasm_put(Dst, 3901);
+       dasm_put(Dst, 3924);
        } else {
-       dasm_put(Dst, 3907);
+       dasm_put(Dst, 3930);
        }
-       dasm_put(Dst, 2637);
+       dasm_put(Dst, 2660);
       }
-      dasm_put(Dst, 13945);
+      dasm_put(Dst, 13968);
     }
-    dasm_put(Dst, 13950, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
-    dasm_put(Dst, 14045, LJ_TSTR);
+    dasm_put(Dst, 13973, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
+    dasm_put(Dst, 14068, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 14063, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 14151, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 14086, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 14174, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 14221, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 14320, LJ_TNIL);
+    dasm_put(Dst, 14244, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 14343, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 14337, LJ_TTAB);
+    dasm_put(Dst, 14360, LJ_TTAB);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 13889, LJ_TISNUM);
+      dasm_put(Dst, 13912, LJ_TISNUM);
     } else {
-      dasm_put(Dst, 13903, LJ_TISNUM);
+      dasm_put(Dst, 13926, LJ_TISNUM);
       if (sse) {
-       dasm_put(Dst, 13914);
+       dasm_put(Dst, 13937);
       } else {
-       dasm_put(Dst, 13935);
+       dasm_put(Dst, 13958);
        if (cmov) {
-       dasm_put(Dst, 3901);
+       dasm_put(Dst, 3924);
        } else {
-       dasm_put(Dst, 3907);
+       dasm_put(Dst, 3930);
        }
-       dasm_put(Dst, 2637);
+       dasm_put(Dst, 2660);
       }
-      dasm_put(Dst, 14360);
+      dasm_put(Dst, 14383);
     }
-    dasm_put(Dst, 14365, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
-    dasm_put(Dst, 14449, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 14388, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
+    dasm_put(Dst, 14472, LJ_TSTR, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 14506, 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, 14581, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 14673, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 14529, 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, 14604, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 14696, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 14769, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 14867, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 14792, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 14890, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 14913, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 15062, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 14936, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 15085, 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, 12206);
+    dasm_put(Dst, 12229);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 15080);
+      dasm_put(Dst, 15103);
     }
-    dasm_put(Dst, 15085, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 15108, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 15080);
+    dasm_put(Dst, 15103);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 15126, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 15244, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 15149, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 15267, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 15314, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 15337, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 15394, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 15417, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 12100, LJ_TISNUM);
+      dasm_put(Dst, 12123, LJ_TISNUM);
     } else if (sse) {
-      dasm_put(Dst, 12176);
+      dasm_put(Dst, 12199);
     } else {
-      dasm_put(Dst, 15440);
+      dasm_put(Dst, 15463);
     }
-    dasm_put(Dst, 15446);
+    dasm_put(Dst, 15469);
     if (LJ_DUALNUM) {
     } else if (sse) {
-      dasm_put(Dst, 12065);
+      dasm_put(Dst, 12088);
     } else {
-      dasm_put(Dst, 12077);
+      dasm_put(Dst, 12100);
     }
-    dasm_put(Dst, 15465, -BCBIAS_J*4);
+    dasm_put(Dst, 15488, -BCBIAS_J*4);
     if (!LJ_DUALNUM && !sse) {
-      dasm_put(Dst, 15516);
+      dasm_put(Dst, 15539);
     }
-    dasm_put(Dst, 15522, 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, 15597);
+    dasm_put(Dst, 15545, 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, 15620);
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 15605, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 15628, 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, 15704, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 15868, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 15727, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 15891, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 15080);
+    dasm_put(Dst, 15103);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 15939);
+      dasm_put(Dst, 15962);
     }
-    dasm_put(Dst, 15943, FRAME_TYPE);
+    dasm_put(Dst, 15966, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 15962);
+      dasm_put(Dst, 15985);
       break;
     case BC_RET1:
-      dasm_put(Dst, 16020);
+      dasm_put(Dst, 16043);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 16036);
+      dasm_put(Dst, 16059);
     default:
       break;
     }
-    dasm_put(Dst, 16047, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 16070, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 16089, LJ_TNIL);
+      dasm_put(Dst, 16112, LJ_TNIL);
     } else {
-      dasm_put(Dst, 16098, LJ_TNIL);
+      dasm_put(Dst, 16121, LJ_TNIL);
     }
-    dasm_put(Dst, 16105, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 16128, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 16129);
+      dasm_put(Dst, 16152);
     }
-    dasm_put(Dst, 4885);
+    dasm_put(Dst, 4908);
     break;
 
   /* -- Loops and branches ------------------------------------------------ */
@@ -2908,7 +2912,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 16133, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 16156, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2920,111 +2924,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 16154);
+    dasm_put(Dst, 16177);
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 16158, LJ_TISNUM);
+      dasm_put(Dst, 16181, LJ_TISNUM);
       if (!vk) {
-       dasm_put(Dst, 16168, LJ_TISNUM, LJ_TISNUM);
+       dasm_put(Dst, 16191, LJ_TISNUM, LJ_TISNUM);
       } else {
 #ifdef LUA_USE_ASSERT
-       dasm_put(Dst, 16197, LJ_TISNUM, LJ_TISNUM);
+       dasm_put(Dst, 16220, LJ_TISNUM, LJ_TISNUM);
 #endif
-       dasm_put(Dst, 16216);
+       dasm_put(Dst, 16239);
       }
-      dasm_put(Dst, 16235, LJ_TISNUM);
+      dasm_put(Dst, 16258, LJ_TISNUM);
       if (op == BC_FORI) {
-       dasm_put(Dst, 16246, -BCBIAS_J*4);
+       dasm_put(Dst, 16269, -BCBIAS_J*4);
       } else if (op == BC_JFORI) {
-       dasm_put(Dst, 16260, -BCBIAS_J*4, BC_JLOOP);
+       dasm_put(Dst, 16283, -BCBIAS_J*4, BC_JLOOP);
       } else if (op == BC_IFORL) {
-       dasm_put(Dst, 16278, -BCBIAS_J*4);
+       dasm_put(Dst, 16301, -BCBIAS_J*4);
       } else {
-       dasm_put(Dst, 16270, BC_JLOOP);
+       dasm_put(Dst, 16293, BC_JLOOP);
       }
-      dasm_put(Dst, 16292);
+      dasm_put(Dst, 16315);
       if (vk) {
-       dasm_put(Dst, 16315);
+       dasm_put(Dst, 16338);
       }
-      dasm_put(Dst, 16235, LJ_TISNUM);
+      dasm_put(Dst, 16258, LJ_TISNUM);
       if (op == BC_FORI) {
-       dasm_put(Dst, 16324);
+       dasm_put(Dst, 16347);
       } else if (op == BC_JFORI) {
-       dasm_put(Dst, 16329, -BCBIAS_J*4, BC_JLOOP);
+       dasm_put(Dst, 16352, -BCBIAS_J*4, BC_JLOOP);
       } else if (op == BC_IFORL) {
-       dasm_put(Dst, 16343);
+       dasm_put(Dst, 16366);
       } else {
-       dasm_put(Dst, 16339, BC_JLOOP);
+       dasm_put(Dst, 16362, BC_JLOOP);
       }
-      dasm_put(Dst, 16348);
+      dasm_put(Dst, 16371);
     } else if (!vk) {
-      dasm_put(Dst, 16355, LJ_TISNUM);
+      dasm_put(Dst, 16378, LJ_TISNUM);
     }
     if (!vk) {
-      dasm_put(Dst, 16361, LJ_TISNUM);
+      dasm_put(Dst, 16384, LJ_TISNUM);
     } else {
 #ifdef LUA_USE_ASSERT
-      dasm_put(Dst, 16375, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 16398, LJ_TISNUM, LJ_TISNUM);
 #endif
     }
-    dasm_put(Dst, 16394);
+    dasm_put(Dst, 16417);
     if (!vk) {
-      dasm_put(Dst, 16398, LJ_TISNUM);
+      dasm_put(Dst, 16421, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 16407);
+      dasm_put(Dst, 16430);
       if (vk) {
-       dasm_put(Dst, 16419);
+       dasm_put(Dst, 16442);
       } else {
-       dasm_put(Dst, 16438);
+       dasm_put(Dst, 16461);
       }
-      dasm_put(Dst, 16443);
+      dasm_put(Dst, 16466);
     } else {
-      dasm_put(Dst, 16456);
+      dasm_put(Dst, 16479);
       if (vk) {
-       dasm_put(Dst, 16462);
+       dasm_put(Dst, 16485);
       } else {
-       dasm_put(Dst, 16478);
+       dasm_put(Dst, 16501);
       }
-      dasm_put(Dst, 16486);
+      dasm_put(Dst, 16509);
       if (cmov) {
-      dasm_put(Dst, 3901);
+      dasm_put(Dst, 3924);
       } else {
-      dasm_put(Dst, 3907);
+      dasm_put(Dst, 3930);
       }
       if (!cmov) {
-       dasm_put(Dst, 16491);
+       dasm_put(Dst, 16514);
       }
     }
     if (op == BC_FORI) {
       if (LJ_DUALNUM) {
-       dasm_put(Dst, 16497);
+       dasm_put(Dst, 16520);
       } else {
-       dasm_put(Dst, 16502, -BCBIAS_J*4);
+       dasm_put(Dst, 16525, -BCBIAS_J*4);
       }
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 16512, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 16535, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
       if (LJ_DUALNUM) {
-       dasm_put(Dst, 16526);
+       dasm_put(Dst, 16549);
       } else {
-       dasm_put(Dst, 16531, -BCBIAS_J*4);
+       dasm_put(Dst, 16554, -BCBIAS_J*4);
       }
     } else {
-      dasm_put(Dst, 16522, BC_JLOOP);
+      dasm_put(Dst, 16545, BC_JLOOP);
     }
     if (LJ_DUALNUM) {
-      dasm_put(Dst, 11102);
+      dasm_put(Dst, 11125);
     } else {
-      dasm_put(Dst, 11843);
+      dasm_put(Dst, 11866);
     }
     if (sse) {
-      dasm_put(Dst, 16541);
+      dasm_put(Dst, 16564);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 16133, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 16156, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -3033,33 +3037,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 16552, LJ_TNIL);
+    dasm_put(Dst, 16575, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 16567, BC_JLOOP);
+      dasm_put(Dst, 16590, BC_JLOOP);
     } else {
-      dasm_put(Dst, 16581, -BCBIAS_J*4);
+      dasm_put(Dst, 16604, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 11203);
+    dasm_put(Dst, 11226);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 16133, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 16156, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 11205);
+    dasm_put(Dst, 11228);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 16597, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 16620, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 16620, -BCBIAS_J*4);
+    dasm_put(Dst, 16643, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -3073,7 +3077,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 16644, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 16667, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -3083,47 +3087,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 16665, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 16688, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 16695, BC_JLOOP);
+      dasm_put(Dst, 16718, BC_JLOOP);
     } else {
-      dasm_put(Dst, 11205);
+      dasm_put(Dst, 11228);
     }
-    dasm_put(Dst, 16704, LJ_TNIL);
+    dasm_put(Dst, 16727, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 10305);
+    dasm_put(Dst, 10328);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 16726, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 16749, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 16695, BC_JLOOP);
+      dasm_put(Dst, 16718, BC_JLOOP);
     } else {
-      dasm_put(Dst, 16817, -4+PC2PROTO(k));
+      dasm_put(Dst, 16840, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 16839, LJ_TNIL);
+    dasm_put(Dst, 16862, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 16861, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 16884, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 16890);
+      dasm_put(Dst, 16913);
     } else {
-      dasm_put(Dst, 16894);
+      dasm_put(Dst, 16917);
     }
-    dasm_put(Dst, 16902, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 16925, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 16911);
+      dasm_put(Dst, 16934);
     } else {
-      dasm_put(Dst, 16915, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 16938, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 16920, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 16943, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -3151,7 +3155,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 16945);
+  dasm_put(Dst, 16968);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
index 4942c1d6d71c24de2d4d5a60d0678431e104123f..3a8448b525c03f1bf53bf253056a80e08bba47e4 100644 (file)
@@ -1104,7 +1104,7 @@ LUA_API int lua_yield(lua_State *L, int nresults)
       setcont(top+1, lj_cont_hook);
       setframe_pc(top+1, cframe_pc(cf)-1);
       setframe_gc(top+2, obj2gco(L));
-      top[2].fr.tp.ftsz = (int)((char *)(top+3)-(char *)L->base)+FRAME_CONT;
+      setframe_ftsz(top+2, (int)((char *)(top+3)-(char *)L->base)+FRAME_CONT);
       L->top = L->base = top+3;
     }
 #if LJ_TARGET_X64
index c123353e49cfc70e1686d7496654bb1a44a5391a..4a2a767afa798744660a34f1eb70d81075f8e2dc 100644 (file)
@@ -51,6 +51,7 @@ enum {
 /* Note: this macro does not skip over FRAME_VARG. */
 
 #define setframe_pc(f, pc)     (setmref((f)->fr.tp.pcr, (pc)))
+#define setframe_ftsz(f, sz)   ((f)->fr.tp.ftsz = (sz))
 #define setframe_gc(f, p)      (setgcref((f)->fr.func, (p)))
 
 /* -- C stack frame ------------------------------------------------------- */
index cd6fa8d38e21cfb81a89f47d33c4b1109007828f..58c6c73ac0ec27272070c075f87d55fa9d941235 100644 (file)
@@ -15,6 +15,7 @@
 #include "lj_str.h"
 #include "lj_tab.h"
 #include "lj_meta.h"
+#include "lj_frame.h"
 #include "lj_bc.h"
 #include "lj_vm.h"
 
@@ -68,6 +69,29 @@ cTValue *lj_meta_lookup(lua_State *L, cTValue *o, MMS mm)
   return niltv(L);
 }
 
+/* Tailcall from C function. */
+int lj_meta_tailcall(lua_State *L, cTValue *tv)
+{
+  TValue *base = L->base;
+  TValue *top = L->top;
+  const BCIns *pc = frame_pc(base-1);  /* Preserve old PC from frame. */
+  copyTV(L, base-1, tv);  /* Replace frame with new object. */
+  top->u64 = 0;
+  setframe_pc(top, pc);
+  setframe_gc(top+1, obj2gco(L));  /* Dummy frame object. */
+  setframe_ftsz(top+1, (int)((char *)(top+2) - (char *)base) + FRAME_CONT);
+  L->base = L->top = top+2;
+  /*
+  ** before:   [old_mo|PC]    [... ...]
+  **                         ^base     ^top
+  ** after:    [new_mo|itype] [... ...] [NULL|PC] [dummy|delta]
+  **                                                           ^base/top
+  ** tailcall: [new_mo|PC]    [... ...]
+  **                         ^base     ^top
+  */
+  return 0;
+}
+
 /* Setup call to metamethod to be run by Assembler VM. */
 static TValue *mmcall(lua_State *L, ASMFunction cont, cTValue *mo,
                    cTValue *a, cTValue *b)
index 32b3dec3c601da6a7f8bbfa80f85c1b1c4363ab2..c16c0da378dd42ec7abc1b84ba7eb5e4e89d8cad 100644 (file)
@@ -12,6 +12,7 @@
 LJ_FUNC void lj_meta_init(lua_State *L);
 LJ_FUNC cTValue *lj_meta_cache(GCtab *mt, MMS mm, GCstr *name);
 LJ_FUNC cTValue *lj_meta_lookup(lua_State *L, cTValue *o, MMS mm);
+LJ_FUNC int lj_meta_tailcall(lua_State *L, cTValue *tv);
 
 #define lj_meta_fastg(g, mt, mm) \
   ((mt) == NULL ? NULL : ((mt)->nomm & (1u<<(mm))) ? NULL : \