From 87a6c8a980edf4bd8ba6b2126269400a925b4d05 Mon Sep 17 00:00:00 2001
From: Mike Pall <mike>
Date: Mon, 10 Jan 2011 20:50:34 +0100
Subject: FFI: Auto-detect __stdcall and fix up C function declarations.

---
 src/Makefile.dep     |    3 +-
 src/buildvm_x64.h    |  644 ++++++++++++++++----------------
 src/buildvm_x64win.h | 1014 +++++++++++++++++++++++++-------------------------
 src/buildvm_x86.dasc |    6 +
 src/buildvm_x86.h    |  847 ++++++++++++++++++++---------------------
 src/lj_ccall.c       |   10 +-
 src/lj_ctype.h       |    1 +
 7 files changed, 1281 insertions(+), 1244 deletions(-)

diff --git a/src/Makefile.dep b/src/Makefile.dep
index ba31804c..8cebc39d 100644
--- a/src/Makefile.dep
+++ b/src/Makefile.dep
@@ -58,7 +58,8 @@ lj_bc.o: lj_bc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_bc.h \
  lj_bcdef.h
 lj_ccall.o: lj_ccall.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_ctype.h lj_cconv.h lj_cdata.h \
- lj_ccall.h
+ lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
+ lj_traceerr.h
 lj_cconv.o: lj_cconv.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
  lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h
 lj_cdata.o: lj_cdata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index a80a39b8..16bcc65b 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -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[14436] = {
+static const unsigned char build_actionlist[14438] = {
   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,
@@ -470,58 +470,58 @@ static const unsigned char build_actionlist[14436] = {
   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,155,137,252,248,83,15,162,137,6,
   137,94,4,137,78,8,137,86,12,91,195,248,156,255,85,72,137,229,83,72,137,252,
-  251,139,131,233,72,41,196,15,182,139,233,131,252,233,1,15,136,244,248,248,
-  1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,
-  1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72,139,
-  139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,
-  255,15,40,139,233,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,72,139,93,252,
-  248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,
-  15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,
-  202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158,
-  255,15,134,244,248,255,15,131,244,248,255,248,1,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,15,135,244,251,
-  129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,
-  202,255,221,4,202,221,4,194,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,248,5,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,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,
-  244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,
-  244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,
-  199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,
-  129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,
-  44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,
-  182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,
-  44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
-  252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,
-  202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
-  238,255,129,124,253,194,4,239,15,135,244,48,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,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,50,139,60,194,137,213,
-  232,251,1,18,255,252,242,15,42,192,137,252,234,255,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,
-  135,244,46,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,135,244,47,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,135,244,49,129,124,253,194,4,239,15,135,244,
-  49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,
-  4,194,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,252,242,15,16,4,252,234,252,242,65,15,89,4,199,
-  255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,
-  4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,
-  242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,
-  252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,
-  16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,
+  251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,
+  248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,
+  244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72,
+  139,139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,
+  233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244,
+  251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255,
+  147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,255,72,
+  139,93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,
+  194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,
+  255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,233,
+  223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,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,15,135,
+  244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,
+  15,46,4,202,255,221,4,202,221,4,194,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,248,5,
+  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,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,
+  15,133,244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,
+  15,135,244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,
+  221,4,199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,
+  195,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,
+  4,139,44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,
+  3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,
+  139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
+  65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,
+  108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
+  252,238,255,129,124,253,194,4,239,15,135,244,48,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,
+  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,50,139,60,194,137,
+  213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,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,135,244,46,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,135,244,47,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,135,244,49,129,124,253,194,4,239,15,135,
+  244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,
+  220,4,194,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,252,242,15,16,4,252,234,252,242,65,15,89,
+  4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,
+  15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,
+  252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,
+  234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,
+  15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,
   242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,
   252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,
   4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,
@@ -1455,8 +1455,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   dasm_put(Dst, 9407);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 9431, DtE(->spadj), 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]));
-  dasm_put(Dst, 9521, DtE(->fpr[1]), 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, 9431, DtE(->spadj));
+#if LJ_TARGET_WINDOWS
+#endif
+  dasm_put(Dst, 9447, 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, 9526, 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, 9581);
 #endif
 }
 
@@ -1473,20 +1479,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* 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, 9587, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9589, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9608);
+      dasm_put(Dst, 9610);
     } else {
-      dasm_put(Dst, 9623);
+      dasm_put(Dst, 9625);
       if (cmov) {
-      dasm_put(Dst, 9633);
+      dasm_put(Dst, 9635);
       } else {
-      dasm_put(Dst, 9639);
+      dasm_put(Dst, 9641);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 9646);
+      dasm_put(Dst, 9648);
       break;
     case BC_ISGE:
       dasm_put(Dst, 9287);
@@ -1495,599 +1501,599 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
       dasm_put(Dst, 5894);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 9651);
+      dasm_put(Dst, 9653);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 9656, -BCBIAS_J*4);
+    dasm_put(Dst, 9658, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 9691, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9693, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9717);
+      dasm_put(Dst, 9719);
     } else {
-      dasm_put(Dst, 9729);
+      dasm_put(Dst, 9731);
       if (cmov) {
-      dasm_put(Dst, 9633);
+      dasm_put(Dst, 9635);
       } else {
-      dasm_put(Dst, 9639);
+      dasm_put(Dst, 9641);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 9736);
+      dasm_put(Dst, 9738);
     } else {
-      dasm_put(Dst, 9745);
+      dasm_put(Dst, 9747);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 9754, -BCBIAS_J*4);
+      dasm_put(Dst, 9756, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 9769, -BCBIAS_J*4);
+      dasm_put(Dst, 9771, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 9784, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 9786, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-	dasm_put(Dst, 9842);
+	dasm_put(Dst, 9844);
       } else {
-	dasm_put(Dst, 9846);
+	dasm_put(Dst, 9848);
       }
-      dasm_put(Dst, 9852);
+      dasm_put(Dst, 9854);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 9857, LJ_TSTR);
+    dasm_put(Dst, 9859, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 9740);
+      dasm_put(Dst, 9742);
     } else {
       dasm_put(Dst, 2803);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 9882, LJ_TISNUM);
+    dasm_put(Dst, 9884, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9896);
+      dasm_put(Dst, 9898);
     } else {
-      dasm_put(Dst, 9909);
+      dasm_put(Dst, 9911);
       if (cmov) {
-      dasm_put(Dst, 9633);
+      dasm_put(Dst, 9635);
       } else {
-      dasm_put(Dst, 9639);
+      dasm_put(Dst, 9641);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 9917);
+    dasm_put(Dst, 9919);
     goto iseqne_test;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 9929, LJ_TISTRUECOND);
+    dasm_put(Dst, 9931, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 9941);
+      dasm_put(Dst, 9943);
     } else {
-      dasm_put(Dst, 9946);
+      dasm_put(Dst, 9948);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 9951);
+      dasm_put(Dst, 9953);
     }
-    dasm_put(Dst, 9962, -BCBIAS_J*4);
+    dasm_put(Dst, 9964, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 9995);
+    dasm_put(Dst, 9997);
     break;
   case BC_NOT:
-    dasm_put(Dst, 10024, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 10026, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 10061, LJ_TISNUM);
+    dasm_put(Dst, 10063, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10072, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 10074, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 10097);
+      dasm_put(Dst, 10099);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_LEN:
-    dasm_put(Dst, 10106, LJ_TSTR);
+    dasm_put(Dst, 10108, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 10120, Dt5(->len));
+      dasm_put(Dst, 10122, Dt5(->len));
     } else {
-      dasm_put(Dst, 10138, Dt5(->len));
+      dasm_put(Dst, 10140, Dt5(->len));
     }
-    dasm_put(Dst, 10147, LJ_TTAB);
+    dasm_put(Dst, 10149, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 10189);
+      dasm_put(Dst, 10191);
     } else {
     }
-    dasm_put(Dst, 10198);
+    dasm_put(Dst, 10200);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 10208);
+    dasm_put(Dst, 10210);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10216, LJ_TISNUM);
+    dasm_put(Dst, 10218, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10228);
+    dasm_put(Dst, 10230);
     } else {
-    dasm_put(Dst, 10243);
+    dasm_put(Dst, 10245);
     }
       break;
     case 1:
-    dasm_put(Dst, 10252, LJ_TISNUM);
+    dasm_put(Dst, 10254, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10264);
+    dasm_put(Dst, 10266);
     } else {
-    dasm_put(Dst, 10279);
+    dasm_put(Dst, 10281);
     }
       break;
     default:
-    dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10310);
+    dasm_put(Dst, 10312);
     } else {
-    dasm_put(Dst, 10324);
+    dasm_put(Dst, 10326);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10090);
+    dasm_put(Dst, 10092);
     } else {
-    dasm_put(Dst, 10102);
+    dasm_put(Dst, 10104);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 10208);
+    dasm_put(Dst, 10210);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10216, LJ_TISNUM);
+    dasm_put(Dst, 10218, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10332);
+    dasm_put(Dst, 10334);
     } else {
-    dasm_put(Dst, 10347);
+    dasm_put(Dst, 10349);
     }
       break;
     case 1:
-    dasm_put(Dst, 10252, LJ_TISNUM);
+    dasm_put(Dst, 10254, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10356);
+    dasm_put(Dst, 10358);
     } else {
-    dasm_put(Dst, 10371);
+    dasm_put(Dst, 10373);
     }
       break;
     default:
-    dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10380);
+    dasm_put(Dst, 10382);
     } else {
-    dasm_put(Dst, 10394);
+    dasm_put(Dst, 10396);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10090);
+    dasm_put(Dst, 10092);
     } else {
-    dasm_put(Dst, 10102);
+    dasm_put(Dst, 10104);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 10208);
+    dasm_put(Dst, 10210);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10216, LJ_TISNUM);
+    dasm_put(Dst, 10218, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10402);
+    dasm_put(Dst, 10404);
     } else {
-    dasm_put(Dst, 10417);
+    dasm_put(Dst, 10419);
     }
       break;
     case 1:
-    dasm_put(Dst, 10252, LJ_TISNUM);
+    dasm_put(Dst, 10254, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10426);
+    dasm_put(Dst, 10428);
     } else {
-    dasm_put(Dst, 10441);
+    dasm_put(Dst, 10443);
     }
       break;
     default:
-    dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10450);
+    dasm_put(Dst, 10452);
     } else {
-    dasm_put(Dst, 10464);
+    dasm_put(Dst, 10466);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10090);
+    dasm_put(Dst, 10092);
     } else {
-    dasm_put(Dst, 10102);
+    dasm_put(Dst, 10104);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 10208);
+    dasm_put(Dst, 10210);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10216, LJ_TISNUM);
+    dasm_put(Dst, 10218, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10472);
+    dasm_put(Dst, 10474);
     } else {
-    dasm_put(Dst, 10487);
+    dasm_put(Dst, 10489);
     }
       break;
     case 1:
-    dasm_put(Dst, 10252, LJ_TISNUM);
+    dasm_put(Dst, 10254, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10496);
+    dasm_put(Dst, 10498);
     } else {
-    dasm_put(Dst, 10511);
+    dasm_put(Dst, 10513);
     }
       break;
     default:
-    dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10520);
+    dasm_put(Dst, 10522);
     } else {
-    dasm_put(Dst, 10534);
+    dasm_put(Dst, 10536);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10090);
+    dasm_put(Dst, 10092);
     } else {
-    dasm_put(Dst, 10102);
+    dasm_put(Dst, 10104);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 10208);
+    dasm_put(Dst, 10210);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10216, LJ_TISNUM);
+    dasm_put(Dst, 10218, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10542);
+    dasm_put(Dst, 10544);
     } else {
-    dasm_put(Dst, 10557);
+    dasm_put(Dst, 10559);
     }
       break;
     case 1:
-    dasm_put(Dst, 10252, LJ_TISNUM);
+    dasm_put(Dst, 10254, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10566);
+    dasm_put(Dst, 10568);
     } else {
-    dasm_put(Dst, 10581);
+    dasm_put(Dst, 10583);
     }
       break;
     default:
-    dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10590);
+    dasm_put(Dst, 10592);
     } else {
-    dasm_put(Dst, 10604);
+    dasm_put(Dst, 10606);
     }
       break;
     }
-    dasm_put(Dst, 10612);
+    dasm_put(Dst, 10614);
     if (sse) {
-    dasm_put(Dst, 10090);
+    dasm_put(Dst, 10092);
     } else {
-    dasm_put(Dst, 10102);
+    dasm_put(Dst, 10104);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 10208);
+    dasm_put(Dst, 10210);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10216, LJ_TISNUM);
+    dasm_put(Dst, 10218, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10542);
+    dasm_put(Dst, 10544);
     } else {
-    dasm_put(Dst, 10557);
+    dasm_put(Dst, 10559);
     }
       break;
     case 1:
-    dasm_put(Dst, 10252, LJ_TISNUM);
+    dasm_put(Dst, 10254, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10566);
+    dasm_put(Dst, 10568);
     } else {
-    dasm_put(Dst, 10581);
+    dasm_put(Dst, 10583);
     }
       break;
     default:
-    dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10590);
+    dasm_put(Dst, 10592);
     } else {
-    dasm_put(Dst, 10604);
+    dasm_put(Dst, 10606);
     }
       break;
     }
-    dasm_put(Dst, 10618);
+    dasm_put(Dst, 10620);
     break;
   case BC_POW:
-    dasm_put(Dst, 10208);
+    dasm_put(Dst, 10210);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10216, LJ_TISNUM);
+    dasm_put(Dst, 10218, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10542);
+    dasm_put(Dst, 10544);
     } else {
-    dasm_put(Dst, 10557);
+    dasm_put(Dst, 10559);
     }
       break;
     case 1:
-    dasm_put(Dst, 10252, LJ_TISNUM);
+    dasm_put(Dst, 10254, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10566);
+    dasm_put(Dst, 10568);
     } else {
-    dasm_put(Dst, 10581);
+    dasm_put(Dst, 10583);
     }
       break;
     default:
-    dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10590);
+    dasm_put(Dst, 10592);
     } else {
-    dasm_put(Dst, 10604);
+    dasm_put(Dst, 10606);
     }
       break;
     }
-    dasm_put(Dst, 10623);
+    dasm_put(Dst, 10625);
     if (sse) {
-    dasm_put(Dst, 10090);
+    dasm_put(Dst, 10092);
     } else {
-    dasm_put(Dst, 10102);
+    dasm_put(Dst, 10104);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 10627, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 10629, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 10711, LJ_TSTR);
+    dasm_put(Dst, 10713, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 10711, LJ_TCDATA);
+    dasm_put(Dst, 10713, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 10748);
+      dasm_put(Dst, 10750);
     } else {
-      dasm_put(Dst, 10763);
+      dasm_put(Dst, 10765);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 10771);
+      dasm_put(Dst, 10773);
     } else {
-      dasm_put(Dst, 10785);
+      dasm_put(Dst, 10787);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 10793);
+    dasm_put(Dst, 10795);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 10822, LJ_TNIL);
+    dasm_put(Dst, 10824, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 10870, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 10872, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 10911, 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, 11007);
+    dasm_put(Dst, 10913, 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, 11009);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 11019, 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, 11021, 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, 11115);
+    dasm_put(Dst, 11117);
     if (sse) {
-      dasm_put(Dst, 11120);
+      dasm_put(Dst, 11122);
     } else {
-      dasm_put(Dst, 9912);
+      dasm_put(Dst, 9914);
     }
-    dasm_put(Dst, 11128, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11130, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 11137);
+      dasm_put(Dst, 11139);
     } else {
-      dasm_put(Dst, 11143);
+      dasm_put(Dst, 11145);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
   case BC_USETP:
-    dasm_put(Dst, 11146, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11148, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 11186, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11188, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 11242, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 11244, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 11309, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11311, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 11433, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11435, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 11532, Dt7(->env));
+    dasm_put(Dst, 11534, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 11552, Dt7(->env));
+    dasm_put(Dst, 11554, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 11572, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11574, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11605);
+      dasm_put(Dst, 11607);
     } else {
     }
-    dasm_put(Dst, 11626, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11711, LJ_TNIL, LJ_TSTR);
+    dasm_put(Dst, 11628, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11713, LJ_TNIL, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 11740, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 11825, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11742, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 11827, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 11897, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11993, LJ_TNIL);
+    dasm_put(Dst, 11899, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11995, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 12010, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 12012, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11605);
+      dasm_put(Dst, 11607);
     } else {
     }
-    dasm_put(Dst, 12043, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 12123, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12045, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 12125, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 12187, 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, 12264, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 12351, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12189, 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, 12266, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 12353, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 12443, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 12538, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12445, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 12540, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 12586, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 12736, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12588, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12738, Dt6(->marked), cast_byte(~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, 10212);
+    dasm_put(Dst, 10214);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 12756);
+      dasm_put(Dst, 12758);
     }
-    dasm_put(Dst, 12761, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 12763, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 12756);
+    dasm_put(Dst, 12758);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 12804, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 12922, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 12806, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 12924, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 12996, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 12998, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 13068, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 13070, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (sse) {
-      dasm_put(Dst, 13120);
+      dasm_put(Dst, 13122);
     } else {
-      dasm_put(Dst, 13126);
+      dasm_put(Dst, 13128);
     }
-    dasm_put(Dst, 13132);
+    dasm_put(Dst, 13134);
     if (sse) {
-      dasm_put(Dst, 10090);
+      dasm_put(Dst, 10092);
     } else {
-      dasm_put(Dst, 10102);
+      dasm_put(Dst, 10104);
     }
-    dasm_put(Dst, 13145, -BCBIAS_J*4);
+    dasm_put(Dst, 13147, -BCBIAS_J*4);
     if (!sse) {
-      dasm_put(Dst, 13199);
+      dasm_put(Dst, 13201);
     }
-    dasm_put(Dst, 13205, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+    dasm_put(Dst, 13207, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 13284, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 13286, 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, 13385, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 13552, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 13387, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 13554, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 12756);
+    dasm_put(Dst, 12758);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 13622);
+      dasm_put(Dst, 13624);
     }
-    dasm_put(Dst, 13626, FRAME_TYPE);
+    dasm_put(Dst, 13628, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 13645);
+      dasm_put(Dst, 13647);
       break;
     case BC_RET1:
-      dasm_put(Dst, 13699);
+      dasm_put(Dst, 13701);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 13709);
+      dasm_put(Dst, 13711);
     default:
       break;
     }
-    dasm_put(Dst, 13720, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 13722, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 13768, LJ_TNIL);
+      dasm_put(Dst, 13770, LJ_TNIL);
     } else {
-      dasm_put(Dst, 13779, LJ_TNIL);
+      dasm_put(Dst, 13781, LJ_TNIL);
     }
-    dasm_put(Dst, 13786, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 13788, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 13810);
+      dasm_put(Dst, 13812);
     }
     dasm_put(Dst, 4546);
     break;
@@ -2097,7 +2103,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2109,57 +2115,57 @@ 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, 13835);
+    dasm_put(Dst, 13837);
     if (!vk) {
-      dasm_put(Dst, 13839, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 13841, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 13858);
+    dasm_put(Dst, 13860);
     if (!vk) {
-      dasm_put(Dst, 13862, LJ_TISNUM);
+      dasm_put(Dst, 13864, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 13871);
+      dasm_put(Dst, 13873);
       if (vk) {
-	dasm_put(Dst, 13883);
+	dasm_put(Dst, 13885);
       } else {
-	dasm_put(Dst, 13902);
+	dasm_put(Dst, 13904);
       }
-      dasm_put(Dst, 13907);
+      dasm_put(Dst, 13909);
     } else {
-      dasm_put(Dst, 13920);
+      dasm_put(Dst, 13922);
       if (vk) {
-	dasm_put(Dst, 13926);
+	dasm_put(Dst, 13928);
       } else {
-	dasm_put(Dst, 13942);
+	dasm_put(Dst, 13944);
       }
-      dasm_put(Dst, 13950);
+      dasm_put(Dst, 13952);
       if (cmov) {
-      dasm_put(Dst, 9633);
+      dasm_put(Dst, 9635);
       } else {
-      dasm_put(Dst, 9639);
+      dasm_put(Dst, 9641);
       }
       if (!cmov) {
-	dasm_put(Dst, 13955);
+	dasm_put(Dst, 13957);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 13961, -BCBIAS_J*4);
+      dasm_put(Dst, 13963, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 13971, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 13973, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 13985, -BCBIAS_J*4);
+      dasm_put(Dst, 13987, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 13981, BC_JLOOP);
+      dasm_put(Dst, 13983, BC_JLOOP);
     }
-    dasm_put(Dst, 9668);
+    dasm_put(Dst, 9670);
     if (sse) {
-      dasm_put(Dst, 13995);
+      dasm_put(Dst, 13997);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2168,33 +2174,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 14006, LJ_TNIL);
+    dasm_put(Dst, 14008, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 14021, BC_JLOOP);
+      dasm_put(Dst, 14023, BC_JLOOP);
     } else {
-      dasm_put(Dst, 14035, -BCBIAS_J*4);
+      dasm_put(Dst, 14037, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9972);
+    dasm_put(Dst, 9974);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9672);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 14051, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 14053, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 14092, -BCBIAS_J*4);
+    dasm_put(Dst, 14094, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2208,7 +2214,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 14118, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14120, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2218,13 +2224,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 14139, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 14141, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 14170, BC_JLOOP);
+      dasm_put(Dst, 14172, BC_JLOOP);
     } else {
-      dasm_put(Dst, 9670);
+      dasm_put(Dst, 9672);
     }
-    dasm_put(Dst, 14179, LJ_TNIL);
+    dasm_put(Dst, 14181, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
@@ -2235,30 +2241,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 14201, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 14203, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 14170, BC_JLOOP);
+      dasm_put(Dst, 14172, BC_JLOOP);
     } else {
-      dasm_put(Dst, 14298, -4+PC2PROTO(k));
+      dasm_put(Dst, 14300, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 14323, LJ_TNIL);
+    dasm_put(Dst, 14325, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 14345, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 14347, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14375);
+      dasm_put(Dst, 14377);
     } else {
-      dasm_put(Dst, 14379);
+      dasm_put(Dst, 14381);
     }
-    dasm_put(Dst, 14387, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 14389, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14397);
+      dasm_put(Dst, 14399);
     } else {
-      dasm_put(Dst, 14402, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 14404, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 14408, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14410, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2286,7 +2292,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 14434);
+  dasm_put(Dst, 14436);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index 19a703c8..a0cad3b6 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -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[14340] = {
+static const unsigned char build_actionlist[14342] = {
   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,
@@ -472,244 +472,244 @@ static const unsigned char build_actionlist[14340] = {
   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,155,137,200,86,72,137,214,83,15,162,137,6,137,94,
   4,137,78,8,137,86,12,91,94,195,248,156,255,85,72,137,229,83,72,137,203,139,
-  131,233,72,41,196,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,255,15,40,155,
-  233,248,5,252,255,147,233,72,137,131,233,15,41,131,233,72,139,93,252,248,
-  201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,
-  135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,
-  221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,
-  15,134,244,248,255,15,131,244,248,255,248,1,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,15,135,244,251,129,124,
-  253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
-  221,4,202,221,4,194,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,248,5,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,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,
-  248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,
-  255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,
-  247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,
-  255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,
-  202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,
-  232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137,44,202,
-  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,49,
-  252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,
-  15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,4,
-  239,15,135,244,48,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,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,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,
-  192,137,252,234,255,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,135,244,46,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,135,244,47,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,135,244,49,129,124,253,
-  194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,
-  221,4,252,234,220,4,194,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,252,242,15,16,4,252,234,252,242,15,89,
-  4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,
-  4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,
-  15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,
-  242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,
-  242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,
-  234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,
-  252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,
-  4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,
-  16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,157,
-  232,244,148,255,252,233,244,157,255,232,244,107,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,33,137,205,
-  137,116,36,100,232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,
-  252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,
-  15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,
-  4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,
-  232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192,252,242,15,17,
-  4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,
-  4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,
-  204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,
-  141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,
-  244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
-  255,139,106,252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,
-  202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,
-  139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,
-  139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,
-  244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
-  252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,
-  15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233,244,
-  1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,
-  233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,
-  182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,
-  129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,
-  233,232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,
-  15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
-  25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,
-  65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
-  255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149,
-  233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,
-  15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,
-  108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36,
-  100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
-  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,
-  108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251,
-  248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,
-  249,248,2,137,252,233,137,194,232,251,1,29,139,149,233,15,182,78,252,253,
-  137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
-  16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,
-  251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96,
-  139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139,
-  20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199,
-  68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
-  252,235,248,3,137,252,233,232,251,1,30,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,158,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,
-  244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
-  36,139,44,252,234,129,124,253,194,4,239,15,135,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,36,
-  59,133,233,15,131,244,36,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,15,182,78,252,253,248,3,255,199,68,202,
-  4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,
-  233,244,158,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,34,139,44,252,234,248,158,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,34,255,15,182,252,236,
-  15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,
-  233,15,131,244,35,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,35,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,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,
-  244,39,59,133,233,15,131,244,39,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,255,252,246,129,233,235,
-  15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,
-  15,133,244,39,139,4,194,252,233,244,159,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,
-  37,139,44,252,234,248,159,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,37,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,37,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,32,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,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,
+  131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,
+  139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,
+  2,15,182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139,
+  233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,15,40,
+  155,233,248,5,255,252,255,147,233,72,137,131,233,15,41,131,233,255,72,139,
+  93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,
+  4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,
+  221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,
+  224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,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,15,135,244,
+  251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,
+  4,202,255,221,4,202,221,4,194,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,248,5,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,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,
+  244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,
+  248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,
+  252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,
+  239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,
+  44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,
+  182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137,
+  44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+  255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
+  204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,
+  4,239,15,135,244,48,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,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,50,139,12,194,137,213,232,251,1,18,255,252,242,15,
+  42,192,137,252,234,255,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,135,244,46,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,135,244,47,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,135,244,49,129,
+  124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,
+  4,194,255,221,4,252,234,220,4,194,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,252,242,15,16,4,252,234,
+  252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,
+  252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,
+  252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,
+  4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,
+  16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,
+  15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,
+  242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,
+  252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,
+  255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,
+  194,255,248,157,232,244,148,255,252,233,244,157,255,232,244,107,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,33,137,205,137,116,36,100,232,251,1,25,139,149,233,133,192,15,133,244,
+  42,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,
+  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,
+  247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192,
+  252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,
+  252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,
+  4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,
+  141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,
+  57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+  255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,233,72,139,
+  69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+  36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,
+  233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,
+  233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
+  16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,
+  246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,
+  234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,
+  139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,
+  248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
+  235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,
+  213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139,106,
+  252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,
+  242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,
+  233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
+  252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,
+  132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,
+  1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,
+  72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,
+  252,233,137,116,36,100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,
+  199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+  36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,
+  100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,
+  255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,29,139,149,233,
+  15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,
+  5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247,
+  208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,
+  244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,
+  253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,
+  232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,30,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,158,255,72,252,247,208,139,106,252,248,139,173,233,
+  139,4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,
+  4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,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,36,59,133,233,15,131,244,36,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,15,182,78,252,253,248,3,
+  255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
+  36,139,4,194,252,233,244,158,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,34,139,44,252,234,248,158,
+  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,34,
+  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,
+  44,252,234,59,133,233,15,131,244,35,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,35,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,39,139,44,252,234,129,124,253,194,4,239,15,135,244,
+  251,255,15,133,244,39,59,133,233,15,131,244,39,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,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,
-  139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,
-  124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,
-  15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,
-  233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,
-  8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,
-  182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,
-  96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,33,
-  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,51,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,28,248,
-  52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
-  68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
-  199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
-  1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
-  4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
-  253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
-  233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
-  137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
-  141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
-  224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
-  133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
-  205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
-  252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
-  15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,252,242,15,42,192,
-  255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,
-  68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,
-  84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
-  36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,
-  41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,
-  239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,
-  72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,
-  244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
-  124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
-  244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
-  248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
-  36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,
-  244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233,141,
-  12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,
-  57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131,193,
-  8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,
-  8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182,232,
-  131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,
-  41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84,139,
-  108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248,131,
-  199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,
-  233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137,252,
-  233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,
-  255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255,
-  248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252,
-  248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,
-  248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5,
-  56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
-  202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
-  198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,
-  8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,
-  252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,
-  252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140,255,141,12,202,
-  255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,
-  139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,
-  15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,
-  249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,
-  65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,
-  221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,
-  244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,
-  131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,
-  233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,
-  105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,
-  1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,
-  139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,
-  137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,
-  102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,
-  127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,
-  233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,
-  134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
-  255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,
-  142,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,23,15,
-  182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,
-  255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,
-  2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,
-  248,139,108,36,96,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15,
-  182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
-  249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
-  252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
-  15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,
-  131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,
-  139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,
-  233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,233,255,15,135,
-  244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,
-  237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,
-  244,12,255,254,0
+  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,255,252,246,129,
+  233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,
+  4,239,15,133,244,39,139,4,194,252,233,244,159,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,37,139,44,252,234,248,159,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,37,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,37,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,32,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,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
+  233,129,120,253,4,239,15,132,244,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,38,15,182,78,252,253,252,233,244,1,248,7,128,
+  165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,
+  244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,
+  133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,
+  252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,
+  139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,
+  36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+  248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,
+  100,232,251,1,33,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,51,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,28,248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,
+  137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,
+  193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,
+  68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,
+  233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15,
+  133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139,
+  191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15,
+  133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198,
+  239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,
+  41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,
+  252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139,
+  14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36,
+  80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198,
+  4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244,
+  250,255,252,242,15,42,192,255,219,68,202,252,248,255,72,139,44,199,72,137,
+  108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,180,
+  253,134,233,248,3,139,92,36,84,139,124,36,80,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,252,235,248,4,131,192,1,255,137,68,202,252,
+  248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252,
+  248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,72,139,175,233,
+  72,139,135,233,72,137,44,202,72,137,68,202,8,137,92,202,252,248,252,233,244,
+  2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,244,
+  251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,253,
+  202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,253,
+  134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,
+  198,4,193,232,16,252,255,36,252,235,248,5,198,70,252,252,235,141,180,253,
+  134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36,
+  80,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251,
+  141,108,252,233,252,248,57,215,15,131,244,248,248,1,72,139,71,252,248,131,
+  199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,
+  2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,
+  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,
+  68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,
+  197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,
+  72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,
+  244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,
+  252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,
+  6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,
+  133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,
+  72,137,111,252,248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,
+  182,110,252,255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,
+  248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,
+  209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,
+  182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,
+  237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,
+  7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,
+  137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140,
+  255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,
+  135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,
+  16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,
+  15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,
+  24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,
+  247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,
+  255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,
+  252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,
+  46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,
+  247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,
+  134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,
+  139,128,233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,
+  108,36,32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,
+  102,15,127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,
+  233,102,68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,
+  68,15,127,169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,
+  255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
+  252,255,36,252,235,255,137,252,245,209,252,237,129,229,239,102,131,172,253,
+  43,233,1,15,132,244,142,255,139,190,233,139,108,36,96,141,12,202,59,141,233,
+  15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,
+  254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,
+  244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,
+  252,252,137,120,252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,22,
+  137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,
+  57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,
+  192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,
+  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,
+  3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,
+  106,252,248,72,139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,
+  136,233,59,141,233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,
+  233,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,
+  255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,
+  252,252,252,233,244,12,255,254,0
 };
 
 enum {
@@ -1455,8 +1455,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   dasm_put(Dst, 9413);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 9441, DtE(->spadj), 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]));
-  dasm_put(Dst, 9530, DtE(->fpr[3]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
+  dasm_put(Dst, 9441, DtE(->spadj));
+#if LJ_TARGET_WINDOWS
+#endif
+  dasm_put(Dst, 9456, 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, 9537, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
+#if LJ_TARGET_WINDOWS
+#endif
+  dasm_put(Dst, 9550);
 #endif
 }
 
@@ -1473,20 +1479,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* 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, 9556, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9558, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9577);
+      dasm_put(Dst, 9579);
     } else {
-      dasm_put(Dst, 9592);
+      dasm_put(Dst, 9594);
       if (cmov) {
-      dasm_put(Dst, 9602);
+      dasm_put(Dst, 9604);
       } else {
-      dasm_put(Dst, 9608);
+      dasm_put(Dst, 9610);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 9615);
+      dasm_put(Dst, 9617);
       break;
     case BC_ISGE:
       dasm_put(Dst, 9293);
@@ -1495,599 +1501,599 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
       dasm_put(Dst, 5854);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 9620);
+      dasm_put(Dst, 9622);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 9625, -BCBIAS_J*4);
+    dasm_put(Dst, 9627, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 9659, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9661, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9685);
+      dasm_put(Dst, 9687);
     } else {
-      dasm_put(Dst, 9697);
+      dasm_put(Dst, 9699);
       if (cmov) {
-      dasm_put(Dst, 9602);
+      dasm_put(Dst, 9604);
       } else {
-      dasm_put(Dst, 9608);
+      dasm_put(Dst, 9610);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 9704);
+      dasm_put(Dst, 9706);
     } else {
-      dasm_put(Dst, 9713);
+      dasm_put(Dst, 9715);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 9722, -BCBIAS_J*4);
+      dasm_put(Dst, 9724, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 9737, -BCBIAS_J*4);
+      dasm_put(Dst, 9739, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 9752, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 9754, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-	dasm_put(Dst, 9810);
+	dasm_put(Dst, 9812);
       } else {
-	dasm_put(Dst, 9814);
+	dasm_put(Dst, 9816);
       }
-      dasm_put(Dst, 9820);
+      dasm_put(Dst, 9822);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 9825, LJ_TSTR);
+    dasm_put(Dst, 9827, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 9708);
+      dasm_put(Dst, 9710);
     } else {
       dasm_put(Dst, 2772);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 9849, LJ_TISNUM);
+    dasm_put(Dst, 9851, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9863);
+      dasm_put(Dst, 9865);
     } else {
-      dasm_put(Dst, 9875);
+      dasm_put(Dst, 9877);
       if (cmov) {
-      dasm_put(Dst, 9602);
+      dasm_put(Dst, 9604);
       } else {
-      dasm_put(Dst, 9608);
+      dasm_put(Dst, 9610);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 9882);
+    dasm_put(Dst, 9884);
     goto iseqne_test;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 9894, LJ_TISTRUECOND);
+    dasm_put(Dst, 9896, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 9906);
+      dasm_put(Dst, 9908);
     } else {
-      dasm_put(Dst, 9911);
+      dasm_put(Dst, 9913);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 9916);
+      dasm_put(Dst, 9918);
     }
-    dasm_put(Dst, 9927, -BCBIAS_J*4);
+    dasm_put(Dst, 9929, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 9959);
+    dasm_put(Dst, 9961);
     break;
   case BC_NOT:
-    dasm_put(Dst, 9987, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 9989, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 10023, LJ_TISNUM);
+    dasm_put(Dst, 10025, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10034, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 10036, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 10059);
+      dasm_put(Dst, 10061);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_LEN:
-    dasm_put(Dst, 10068, LJ_TSTR);
+    dasm_put(Dst, 10070, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 10082, Dt5(->len));
+      dasm_put(Dst, 10084, Dt5(->len));
     } else {
-      dasm_put(Dst, 10100, Dt5(->len));
+      dasm_put(Dst, 10102, Dt5(->len));
     }
-    dasm_put(Dst, 10109, LJ_TTAB);
+    dasm_put(Dst, 10111, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 10150);
+      dasm_put(Dst, 10152);
     } else {
     }
-    dasm_put(Dst, 10159);
+    dasm_put(Dst, 10161);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 10169);
+    dasm_put(Dst, 10171);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10177, LJ_TISNUM);
+    dasm_put(Dst, 10179, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10189);
+    dasm_put(Dst, 10191);
     } else {
-    dasm_put(Dst, 10203);
+    dasm_put(Dst, 10205);
     }
       break;
     case 1:
-    dasm_put(Dst, 10211, LJ_TISNUM);
+    dasm_put(Dst, 10213, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10223);
+    dasm_put(Dst, 10225);
     } else {
-    dasm_put(Dst, 10237);
+    dasm_put(Dst, 10239);
     }
       break;
     default:
-    dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10267);
+    dasm_put(Dst, 10269);
     } else {
-    dasm_put(Dst, 10281);
+    dasm_put(Dst, 10283);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10052);
+    dasm_put(Dst, 10054);
     } else {
-    dasm_put(Dst, 10064);
+    dasm_put(Dst, 10066);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 10169);
+    dasm_put(Dst, 10171);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10177, LJ_TISNUM);
+    dasm_put(Dst, 10179, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10289);
+    dasm_put(Dst, 10291);
     } else {
-    dasm_put(Dst, 10303);
+    dasm_put(Dst, 10305);
     }
       break;
     case 1:
-    dasm_put(Dst, 10211, LJ_TISNUM);
+    dasm_put(Dst, 10213, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10311);
+    dasm_put(Dst, 10313);
     } else {
-    dasm_put(Dst, 10325);
+    dasm_put(Dst, 10327);
     }
       break;
     default:
-    dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10333);
+    dasm_put(Dst, 10335);
     } else {
-    dasm_put(Dst, 10347);
+    dasm_put(Dst, 10349);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10052);
+    dasm_put(Dst, 10054);
     } else {
-    dasm_put(Dst, 10064);
+    dasm_put(Dst, 10066);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 10169);
+    dasm_put(Dst, 10171);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10177, LJ_TISNUM);
+    dasm_put(Dst, 10179, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10355);
+    dasm_put(Dst, 10357);
     } else {
-    dasm_put(Dst, 10369);
+    dasm_put(Dst, 10371);
     }
       break;
     case 1:
-    dasm_put(Dst, 10211, LJ_TISNUM);
+    dasm_put(Dst, 10213, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10377);
+    dasm_put(Dst, 10379);
     } else {
-    dasm_put(Dst, 10391);
+    dasm_put(Dst, 10393);
     }
       break;
     default:
-    dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10399);
+    dasm_put(Dst, 10401);
     } else {
-    dasm_put(Dst, 10413);
+    dasm_put(Dst, 10415);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10052);
+    dasm_put(Dst, 10054);
     } else {
-    dasm_put(Dst, 10064);
+    dasm_put(Dst, 10066);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 10169);
+    dasm_put(Dst, 10171);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10177, LJ_TISNUM);
+    dasm_put(Dst, 10179, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10421);
+    dasm_put(Dst, 10423);
     } else {
-    dasm_put(Dst, 10435);
+    dasm_put(Dst, 10437);
     }
       break;
     case 1:
-    dasm_put(Dst, 10211, LJ_TISNUM);
+    dasm_put(Dst, 10213, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10443);
+    dasm_put(Dst, 10445);
     } else {
-    dasm_put(Dst, 10457);
+    dasm_put(Dst, 10459);
     }
       break;
     default:
-    dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10465);
+    dasm_put(Dst, 10467);
     } else {
-    dasm_put(Dst, 10479);
+    dasm_put(Dst, 10481);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10052);
+    dasm_put(Dst, 10054);
     } else {
-    dasm_put(Dst, 10064);
+    dasm_put(Dst, 10066);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 10169);
+    dasm_put(Dst, 10171);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10177, LJ_TISNUM);
+    dasm_put(Dst, 10179, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10487);
+    dasm_put(Dst, 10489);
     } else {
-    dasm_put(Dst, 10501);
+    dasm_put(Dst, 10503);
     }
       break;
     case 1:
-    dasm_put(Dst, 10211, LJ_TISNUM);
+    dasm_put(Dst, 10213, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10509);
+    dasm_put(Dst, 10511);
     } else {
-    dasm_put(Dst, 10523);
+    dasm_put(Dst, 10525);
     }
       break;
     default:
-    dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10531);
+    dasm_put(Dst, 10533);
     } else {
-    dasm_put(Dst, 10545);
+    dasm_put(Dst, 10547);
     }
       break;
     }
-    dasm_put(Dst, 10553);
+    dasm_put(Dst, 10555);
     if (sse) {
-    dasm_put(Dst, 10052);
+    dasm_put(Dst, 10054);
     } else {
-    dasm_put(Dst, 10064);
+    dasm_put(Dst, 10066);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 10169);
+    dasm_put(Dst, 10171);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10177, LJ_TISNUM);
+    dasm_put(Dst, 10179, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10487);
+    dasm_put(Dst, 10489);
     } else {
-    dasm_put(Dst, 10501);
+    dasm_put(Dst, 10503);
     }
       break;
     case 1:
-    dasm_put(Dst, 10211, LJ_TISNUM);
+    dasm_put(Dst, 10213, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10509);
+    dasm_put(Dst, 10511);
     } else {
-    dasm_put(Dst, 10523);
+    dasm_put(Dst, 10525);
     }
       break;
     default:
-    dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10531);
+    dasm_put(Dst, 10533);
     } else {
-    dasm_put(Dst, 10545);
+    dasm_put(Dst, 10547);
     }
       break;
     }
-    dasm_put(Dst, 10559);
+    dasm_put(Dst, 10561);
     break;
   case BC_POW:
-    dasm_put(Dst, 10169);
+    dasm_put(Dst, 10171);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10177, LJ_TISNUM);
+    dasm_put(Dst, 10179, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10487);
+    dasm_put(Dst, 10489);
     } else {
-    dasm_put(Dst, 10501);
+    dasm_put(Dst, 10503);
     }
       break;
     case 1:
-    dasm_put(Dst, 10211, LJ_TISNUM);
+    dasm_put(Dst, 10213, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10509);
+    dasm_put(Dst, 10511);
     } else {
-    dasm_put(Dst, 10523);
+    dasm_put(Dst, 10525);
     }
       break;
     default:
-    dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10531);
+    dasm_put(Dst, 10533);
     } else {
-    dasm_put(Dst, 10545);
+    dasm_put(Dst, 10547);
     }
       break;
     }
-    dasm_put(Dst, 10564);
+    dasm_put(Dst, 10566);
     if (sse) {
-    dasm_put(Dst, 10052);
+    dasm_put(Dst, 10054);
     } else {
-    dasm_put(Dst, 10064);
+    dasm_put(Dst, 10066);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 10568, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 10570, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 10651, LJ_TSTR);
+    dasm_put(Dst, 10653, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 10651, LJ_TCDATA);
+    dasm_put(Dst, 10653, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 10686);
+      dasm_put(Dst, 10688);
     } else {
-      dasm_put(Dst, 10701);
+      dasm_put(Dst, 10703);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 10709);
+      dasm_put(Dst, 10711);
     } else {
-      dasm_put(Dst, 10722);
+      dasm_put(Dst, 10724);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 10729);
+    dasm_put(Dst, 10731);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 10757, LJ_TNIL);
+    dasm_put(Dst, 10759, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 10804, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 10806, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 10844, 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, 10935);
+    dasm_put(Dst, 10846, 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, 10937);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 10947, 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, 10949, 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, 11040);
+    dasm_put(Dst, 11042);
     if (sse) {
-      dasm_put(Dst, 11045);
+      dasm_put(Dst, 11047);
     } else {
-      dasm_put(Dst, 9878);
+      dasm_put(Dst, 9880);
     }
-    dasm_put(Dst, 11052, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11054, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 11061);
+      dasm_put(Dst, 11063);
     } else {
-      dasm_put(Dst, 11067);
+      dasm_put(Dst, 11069);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
   case BC_USETP:
-    dasm_put(Dst, 11070, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11072, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 11109, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11111, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 11164, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 11166, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 11230, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11232, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 11352, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11354, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 11447, Dt7(->env));
+    dasm_put(Dst, 11449, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 11466, Dt7(->env));
+    dasm_put(Dst, 11468, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 11485, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11487, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11518);
+      dasm_put(Dst, 11520);
     } else {
     }
-    dasm_put(Dst, 11539, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11623, LJ_TNIL, LJ_TSTR);
+    dasm_put(Dst, 11541, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11625, LJ_TNIL, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 11652, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 11736, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11654, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 11738, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 11807, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11902, LJ_TNIL);
+    dasm_put(Dst, 11809, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11904, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 11919, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11921, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11518);
+      dasm_put(Dst, 11520);
     } else {
     }
-    dasm_put(Dst, 11952, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 12031, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 11954, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 12033, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 12093, 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, 12169, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 12257, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12095, 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, 12171, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 12259, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 12348, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 12442, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12350, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 12444, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 12488, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 12631, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12490, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12633, Dt6(->marked), cast_byte(~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, 10173);
+    dasm_put(Dst, 10175);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 12649);
+      dasm_put(Dst, 12651);
     }
-    dasm_put(Dst, 12654, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 12656, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 12649);
+    dasm_put(Dst, 12651);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 12696, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 12811, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 12698, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 12813, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 12882, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 12884, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 12953, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 12955, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (sse) {
-      dasm_put(Dst, 12999);
+      dasm_put(Dst, 13001);
     } else {
-      dasm_put(Dst, 13005);
+      dasm_put(Dst, 13007);
     }
-    dasm_put(Dst, 13011);
+    dasm_put(Dst, 13013);
     if (sse) {
-      dasm_put(Dst, 10052);
+      dasm_put(Dst, 10054);
     } else {
-      dasm_put(Dst, 10064);
+      dasm_put(Dst, 10066);
     }
-    dasm_put(Dst, 13024, -BCBIAS_J*4);
+    dasm_put(Dst, 13026, -BCBIAS_J*4);
     if (!sse) {
-      dasm_put(Dst, 13076);
+      dasm_put(Dst, 13078);
     }
-    dasm_put(Dst, 13082, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+    dasm_put(Dst, 13084, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 13154, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 13156, 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, 13254, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 13414, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 13256, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 13416, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 12649);
+    dasm_put(Dst, 12651);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 13480);
+      dasm_put(Dst, 13482);
     }
-    dasm_put(Dst, 13484, FRAME_TYPE);
+    dasm_put(Dst, 13486, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 13503);
+      dasm_put(Dst, 13505);
       break;
     case BC_RET1:
-      dasm_put(Dst, 13555);
+      dasm_put(Dst, 13557);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 13565);
+      dasm_put(Dst, 13567);
     default:
       break;
     }
-    dasm_put(Dst, 13576, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 13578, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 13620, LJ_TNIL);
+      dasm_put(Dst, 13622, LJ_TNIL);
     } else {
-      dasm_put(Dst, 13629, LJ_TNIL);
+      dasm_put(Dst, 13631, LJ_TNIL);
     }
-    dasm_put(Dst, 13636, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 13638, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 13660);
+      dasm_put(Dst, 13662);
     }
     dasm_put(Dst, 4522);
     break;
@@ -2097,7 +2103,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2109,57 +2115,57 @@ 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, 13685);
+    dasm_put(Dst, 13687);
     if (!vk) {
-      dasm_put(Dst, 13689, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 13691, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 13708);
+    dasm_put(Dst, 13710);
     if (!vk) {
-      dasm_put(Dst, 13712, LJ_TISNUM);
+      dasm_put(Dst, 13714, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 13721);
+      dasm_put(Dst, 13723);
       if (vk) {
-	dasm_put(Dst, 13733);
+	dasm_put(Dst, 13735);
       } else {
-	dasm_put(Dst, 13752);
+	dasm_put(Dst, 13754);
       }
-      dasm_put(Dst, 13757);
+      dasm_put(Dst, 13759);
     } else {
-      dasm_put(Dst, 13770);
+      dasm_put(Dst, 13772);
       if (vk) {
-	dasm_put(Dst, 13776);
+	dasm_put(Dst, 13778);
       } else {
-	dasm_put(Dst, 13792);
+	dasm_put(Dst, 13794);
       }
-      dasm_put(Dst, 13800);
+      dasm_put(Dst, 13802);
       if (cmov) {
-      dasm_put(Dst, 9602);
+      dasm_put(Dst, 9604);
       } else {
-      dasm_put(Dst, 9608);
+      dasm_put(Dst, 9610);
       }
       if (!cmov) {
-	dasm_put(Dst, 13805);
+	dasm_put(Dst, 13807);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 13811, -BCBIAS_J*4);
+      dasm_put(Dst, 13813, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 13821, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 13823, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 13835, -BCBIAS_J*4);
+      dasm_put(Dst, 13837, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 13831, BC_JLOOP);
+      dasm_put(Dst, 13833, BC_JLOOP);
     }
-    dasm_put(Dst, 9637);
+    dasm_put(Dst, 9639);
     if (sse) {
-      dasm_put(Dst, 13845);
+      dasm_put(Dst, 13847);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2168,33 +2174,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 13856, LJ_TNIL);
+    dasm_put(Dst, 13858, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 13871, BC_JLOOP);
+      dasm_put(Dst, 13873, BC_JLOOP);
     } else {
-      dasm_put(Dst, 13885, -BCBIAS_J*4);
+      dasm_put(Dst, 13887, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9937);
+    dasm_put(Dst, 9939);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9641);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13901, 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, 13903, 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, 14010, -BCBIAS_J*4);
+    dasm_put(Dst, 14012, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2208,7 +2214,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 14035, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14037, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2218,13 +2224,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 14056, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 14058, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 14086, BC_JLOOP);
+      dasm_put(Dst, 14088, BC_JLOOP);
     } else {
-      dasm_put(Dst, 9639);
+      dasm_put(Dst, 9641);
     }
-    dasm_put(Dst, 14095, LJ_TNIL);
+    dasm_put(Dst, 14097, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
@@ -2235,30 +2241,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 14117, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 14119, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 14086, BC_JLOOP);
+      dasm_put(Dst, 14088, BC_JLOOP);
     } else {
-      dasm_put(Dst, 14208, -4+PC2PROTO(k));
+      dasm_put(Dst, 14210, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 14231, LJ_TNIL);
+    dasm_put(Dst, 14233, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 14253, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 14255, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14283);
+      dasm_put(Dst, 14285);
     } else {
-      dasm_put(Dst, 14287);
+      dasm_put(Dst, 14289);
     }
-    dasm_put(Dst, 14295, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 14297, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14304);
+      dasm_put(Dst, 14306);
     } else {
-      dasm_put(Dst, 14308, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 14310, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 14313, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14315, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2286,7 +2292,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 14338);
+  dasm_put(Dst, 14340);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index e88039b9..9666dfca 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -3428,6 +3428,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |  sub rsp, rax
   |.else
   |  sub esp, CCSTATE->spadj
+#if LJ_TARGET_WINDOWS
+  |  mov CCSTATE->spadj, esp
+#endif
   |.endif
   |
   |  // Copy stack slots.
@@ -3494,6 +3497,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |6:
   |  fstp dword CCSTATE->fpr[0].f[0]
   |7:
+#if LJ_TARGET_WINDOWS
+  |  sub CCSTATE->spadj, esp
+#endif
   |.endif
   |
   |.if X64
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 4d1aa660..ef8ba886 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -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[15684] = {
+static const unsigned char build_actionlist[15694] = {
   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,
@@ -533,149 +533,150 @@ static const unsigned char build_actionlist[15684] = {
   244,248,217,201,248,2,221,216,195,255,248,155,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,156,
-  255,85,137,229,83,137,203,43,163,233,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,255,252,233,244,253,248,6,
-  217,155,233,248,7,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239,
-  15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,
-  131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223,252,233,
-  221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,
-  255,248,1,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,15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,
-  15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,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,248,5,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,45,255,252,247,208,131,198,4,129,124,
-  253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,
-  202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,
-  4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,
-  198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,
-  4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,
-  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,
-  4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,
-  193,232,16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239,
-  137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
-  171,255,129,124,253,194,4,239,15,135,244,48,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,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,50,139,12,194,137,
-  213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,137,4,36,137,252,234,
-  219,4,36,255,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,135,244,46,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,135,244,47,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,135,244,49,129,124,253,194,
-  4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,
-  4,252,234,220,4,194,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,252,242,15,16,4,252,234,252,242,15,89,4,
-  199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,
-  252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,
-  15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,
-  242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,
-  242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,
-  234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,
-  252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,
-  4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,
-  16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,157,
-  232,244,148,255,252,233,244,157,255,232,244,107,255,15,182,252,236,15,182,
-  192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,
-  36,137,149,233,137,116,36,24,232,251,1,25,139,149,233,133,192,15,133,244,
-  42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,
-  68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
-  255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,
-  182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,252,
-  242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,
-  15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,252,247,208,
-  137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
-  171,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,
-  193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
-  252,255,36,171,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,
-  4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,
-  193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,141,233,128,189,
-  233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,
-  252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,
-  198,4,193,232,16,252,255,36,171,248,2,129,232,239,129,252,248,239,15,134,
-  244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,
-  26,137,252,234,252,233,244,1,255,252,247,208,139,106,252,248,139,172,253,
-  141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,
-  133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
-  36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,
-  137,213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139,
-  106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,
-  252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,253,141,
-  233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
-  252,255,36,171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,
-  244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,1,
-  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,
-  208,139,74,252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,
-  36,137,149,233,137,116,36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,
-  4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
-  255,36,171,255,139,108,36,48,137,149,233,139,139,233,59,139,233,137,116,36,
-  24,15,131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,
-  8,61,252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,
-  139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
-  15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,
-  244,2,248,5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255,
-  252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,233,
-  15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182,
-  78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,
-  4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,30,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,158,255,252,247,208,139,106,252,248,139,173,233,139,
-  4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
-  239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,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,36,59,133,233,15,131,244,36,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,15,182,78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,
-  248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,158,255,15,
-  182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,
-  133,244,34,139,44,252,234,248,158,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,34,255,15,182,252,236,15,182,192,129,124,
-  253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,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,35,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,39,139,
-  44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,
-  233,15,131,244,39,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,255,252,246,129,233,235,15,132,244,
-  39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
-  39,139,4,194,252,233,244,159,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,37,139,44,252,
-  234,248,159,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,37,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,37,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,32,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,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
+  255,85,137,229,83,137,203,43,163,233,255,137,163,233,255,15,182,139,233,131,
+  252,233,1,15,136,244,248,248,1,139,132,253,139,233,137,4,140,131,252,233,
+  1,15,137,244,1,248,2,139,139,233,139,147,233,252,255,147,233,137,131,233,
+  137,147,233,128,187,233,1,15,130,244,253,15,132,244,252,221,155,233,252,233,
+  244,253,248,6,255,217,155,233,248,7,255,41,163,233,255,139,93,252,252,201,
+  195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,
+  15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,
+  202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,
+  255,15,134,244,248,255,15,131,244,248,255,248,1,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,15,135,244,251,129,124,
+  253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
+  221,4,202,221,4,194,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,248,5,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,45,255,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,
+  139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,
+  252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,
+  131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,
+  131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,
+  15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,
+  198,4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,
+  137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
+  255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
+  204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,
+  239,15,135,244,48,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,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,50,139,12,194,137,213,232,251,1,18,255,
+  252,242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,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,135,244,46,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,135,244,47,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,135,244,49,129,124,253,194,4,239,15,135,244,49,255,
+  252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,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,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,
+  220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,
+  220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,
+  252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,
+  4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,
+  221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,
+  255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,
+  199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,
+  252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,
+  16,12,194,255,221,4,252,234,221,4,194,255,248,157,232,244,148,255,252,233,
+  244,157,255,232,244,107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,
+  76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,
+  24,232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,
+  78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,
+  15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,
+  139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,
+  4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17,
+  4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,
+  4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,
+  204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,
+  68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,
+  1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,
+  106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,
+  4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+  171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,
+  12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,
+  15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+  255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,
+  235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233,
+  244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,
+  133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,
+  15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,
+  233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,
+  232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,
+  16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
+  25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,
+  4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,
+  180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,
+  20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,15,182,
+  232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,
+  4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,
+  36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
+  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,
+  36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248,
+  1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,
+  132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,139,149,233,15,182,78,
+  252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,
+  193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,
+  232,251,1,30,15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,
+  139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,
+  20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199,
+  68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+  171,248,3,137,252,233,232,251,1,30,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,158,
+  255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,159,255,
+  15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,
+  252,234,129,124,253,194,4,239,15,135,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,36,59,133,233,15,131,244,36,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,15,182,
+  78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,
+  4,239,15,133,244,36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,
+  252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,
+  234,248,158,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,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,
+  15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,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,
+  35,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,39,139,44,252,234,
+  129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,
+  244,39,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,255,252,246,129,233,235,15,132,244,39,
+  15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,
+  139,4,194,252,233,244,159,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,37,139,44,252,234,
+  248,159,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,37,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,37,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,32,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,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
   233,129,120,253,4,239,15,132,244,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,
@@ -1571,8 +1572,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   dasm_put(Dst, 10731);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 10787, DtE(->spadj), 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, 10860, DtE(->fpr[0].f[0]));
+  dasm_put(Dst, 10787, DtE(->spadj));
+#if LJ_TARGET_WINDOWS
+  dasm_put(Dst, 10797, DtE(->spadj));
+#endif
+  dasm_put(Dst, 10801, 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, 10871, DtE(->fpr[0].f[0]));
+#if LJ_TARGET_WINDOWS
+  dasm_put(Dst, 10877, DtE(->spadj));
+#endif
+  dasm_put(Dst, 10881);
 #endif
 }
 
@@ -1580,7 +1589,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
 static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 {
   int vk = 0;
-  dasm_put(Dst, 10878, defop);
+  dasm_put(Dst, 10888, defop);
 
   switch (op) {
 
@@ -1589,20 +1598,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* 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, 10880, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10890, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10901);
+      dasm_put(Dst, 10911);
     } else {
-      dasm_put(Dst, 10916);
-      if (cmov) {
       dasm_put(Dst, 10926);
+      if (cmov) {
+      dasm_put(Dst, 10936);
       } else {
-      dasm_put(Dst, 10932);
+      dasm_put(Dst, 10942);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 10939);
+      dasm_put(Dst, 10949);
       break;
     case BC_ISGE:
       dasm_put(Dst, 10081);
@@ -1611,615 +1620,615 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
       dasm_put(Dst, 6207);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 10944);
+      dasm_put(Dst, 10954);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 10949, -BCBIAS_J*4);
+    dasm_put(Dst, 10959, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 10982, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10992, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11008);
+      dasm_put(Dst, 11018);
     } else {
-      dasm_put(Dst, 11020);
+      dasm_put(Dst, 11030);
       if (cmov) {
-      dasm_put(Dst, 10926);
+      dasm_put(Dst, 10936);
       } else {
-      dasm_put(Dst, 10932);
+      dasm_put(Dst, 10942);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 11027);
+      dasm_put(Dst, 11037);
     } else {
-      dasm_put(Dst, 11036);
+      dasm_put(Dst, 11046);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 11045, -BCBIAS_J*4);
+      dasm_put(Dst, 11055, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 11060, -BCBIAS_J*4);
+      dasm_put(Dst, 11070, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 11075, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 11085, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-	dasm_put(Dst, 11133);
+	dasm_put(Dst, 11143);
       } else {
-	dasm_put(Dst, 11137);
+	dasm_put(Dst, 11147);
       }
-      dasm_put(Dst, 11143);
+      dasm_put(Dst, 11153);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 11148, LJ_TSTR);
+    dasm_put(Dst, 11158, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 11031);
+      dasm_put(Dst, 11041);
     } else {
       dasm_put(Dst, 2829);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 11171, LJ_TISNUM);
+    dasm_put(Dst, 11181, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11185);
+      dasm_put(Dst, 11195);
     } else {
-      dasm_put(Dst, 11197);
+      dasm_put(Dst, 11207);
       if (cmov) {
-      dasm_put(Dst, 10926);
+      dasm_put(Dst, 10936);
       } else {
-      dasm_put(Dst, 10932);
+      dasm_put(Dst, 10942);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 11204);
+    dasm_put(Dst, 11214);
     goto iseqne_test;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 11215, LJ_TISTRUECOND);
+    dasm_put(Dst, 11225, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 11227);
+      dasm_put(Dst, 11237);
     } else {
-      dasm_put(Dst, 11232);
+      dasm_put(Dst, 11242);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 11237);
+      dasm_put(Dst, 11247);
     }
-    dasm_put(Dst, 11248, -BCBIAS_J*4);
+    dasm_put(Dst, 11258, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 11279);
+    dasm_put(Dst, 11289);
     break;
   case BC_NOT:
-    dasm_put(Dst, 11312, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 11322, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 11347, LJ_TISNUM);
+    dasm_put(Dst, 11357, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11358);
+      dasm_put(Dst, 11368);
     } else {
-      dasm_put(Dst, 11388);
+      dasm_put(Dst, 11398);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_LEN:
-    dasm_put(Dst, 11397, LJ_TSTR);
+    dasm_put(Dst, 11407, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 11411, Dt5(->len));
+      dasm_put(Dst, 11421, Dt5(->len));
     } else {
-      dasm_put(Dst, 11429, Dt5(->len));
+      dasm_put(Dst, 11439, Dt5(->len));
     }
-    dasm_put(Dst, 11438, LJ_TTAB);
+    dasm_put(Dst, 11448, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 11478);
+      dasm_put(Dst, 11488);
     } else {
-      dasm_put(Dst, 11487);
+      dasm_put(Dst, 11497);
     }
-    dasm_put(Dst, 11497);
+    dasm_put(Dst, 11507);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11517);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11515, LJ_TISNUM);
+    dasm_put(Dst, 11525, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11527);
+    dasm_put(Dst, 11537);
     } else {
-    dasm_put(Dst, 11541);
+    dasm_put(Dst, 11551);
     }
       break;
     case 1:
-    dasm_put(Dst, 11549, LJ_TISNUM);
+    dasm_put(Dst, 11559, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11561);
+    dasm_put(Dst, 11571);
     } else {
-    dasm_put(Dst, 11575);
+    dasm_put(Dst, 11585);
     }
       break;
     default:
-    dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11605);
+    dasm_put(Dst, 11615);
     } else {
-    dasm_put(Dst, 11619);
+    dasm_put(Dst, 11629);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11381);
+    dasm_put(Dst, 11391);
     } else {
-    dasm_put(Dst, 11393);
+    dasm_put(Dst, 11403);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11517);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11515, LJ_TISNUM);
+    dasm_put(Dst, 11525, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11627);
+    dasm_put(Dst, 11637);
     } else {
-    dasm_put(Dst, 11641);
+    dasm_put(Dst, 11651);
     }
       break;
     case 1:
-    dasm_put(Dst, 11549, LJ_TISNUM);
+    dasm_put(Dst, 11559, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11649);
+    dasm_put(Dst, 11659);
     } else {
-    dasm_put(Dst, 11663);
+    dasm_put(Dst, 11673);
     }
       break;
     default:
-    dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11671);
+    dasm_put(Dst, 11681);
     } else {
-    dasm_put(Dst, 11685);
+    dasm_put(Dst, 11695);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11381);
+    dasm_put(Dst, 11391);
     } else {
-    dasm_put(Dst, 11393);
+    dasm_put(Dst, 11403);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11517);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11515, LJ_TISNUM);
+    dasm_put(Dst, 11525, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11693);
+    dasm_put(Dst, 11703);
     } else {
-    dasm_put(Dst, 11707);
+    dasm_put(Dst, 11717);
     }
       break;
     case 1:
-    dasm_put(Dst, 11549, LJ_TISNUM);
+    dasm_put(Dst, 11559, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11715);
+    dasm_put(Dst, 11725);
     } else {
-    dasm_put(Dst, 11729);
+    dasm_put(Dst, 11739);
     }
       break;
     default:
-    dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11737);
+    dasm_put(Dst, 11747);
     } else {
-    dasm_put(Dst, 11751);
+    dasm_put(Dst, 11761);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11381);
+    dasm_put(Dst, 11391);
     } else {
-    dasm_put(Dst, 11393);
+    dasm_put(Dst, 11403);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11517);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11515, LJ_TISNUM);
+    dasm_put(Dst, 11525, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11759);
+    dasm_put(Dst, 11769);
     } else {
-    dasm_put(Dst, 11773);
+    dasm_put(Dst, 11783);
     }
       break;
     case 1:
-    dasm_put(Dst, 11549, LJ_TISNUM);
+    dasm_put(Dst, 11559, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11781);
+    dasm_put(Dst, 11791);
     } else {
-    dasm_put(Dst, 11795);
+    dasm_put(Dst, 11805);
     }
       break;
     default:
-    dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11803);
+    dasm_put(Dst, 11813);
     } else {
-    dasm_put(Dst, 11817);
+    dasm_put(Dst, 11827);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11381);
+    dasm_put(Dst, 11391);
     } else {
-    dasm_put(Dst, 11393);
+    dasm_put(Dst, 11403);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11517);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11515, LJ_TISNUM);
+    dasm_put(Dst, 11525, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11825);
+    dasm_put(Dst, 11835);
     } else {
-    dasm_put(Dst, 11839);
+    dasm_put(Dst, 11849);
     }
       break;
     case 1:
-    dasm_put(Dst, 11549, LJ_TISNUM);
+    dasm_put(Dst, 11559, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11847);
+    dasm_put(Dst, 11857);
     } else {
-    dasm_put(Dst, 11861);
+    dasm_put(Dst, 11871);
     }
       break;
     default:
-    dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11869);
+    dasm_put(Dst, 11879);
     } else {
-    dasm_put(Dst, 11883);
+    dasm_put(Dst, 11893);
     }
       break;
     }
-    dasm_put(Dst, 11891);
+    dasm_put(Dst, 11901);
     if (sse) {
-    dasm_put(Dst, 11381);
+    dasm_put(Dst, 11391);
     } else {
-    dasm_put(Dst, 11393);
+    dasm_put(Dst, 11403);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11517);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11515, LJ_TISNUM);
+    dasm_put(Dst, 11525, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11825);
+    dasm_put(Dst, 11835);
     } else {
-    dasm_put(Dst, 11839);
+    dasm_put(Dst, 11849);
     }
       break;
     case 1:
-    dasm_put(Dst, 11549, LJ_TISNUM);
+    dasm_put(Dst, 11559, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11847);
+    dasm_put(Dst, 11857);
     } else {
-    dasm_put(Dst, 11861);
+    dasm_put(Dst, 11871);
     }
       break;
     default:
-    dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11869);
+    dasm_put(Dst, 11879);
     } else {
-    dasm_put(Dst, 11883);
+    dasm_put(Dst, 11893);
     }
       break;
     }
-    dasm_put(Dst, 11897);
+    dasm_put(Dst, 11907);
     break;
   case BC_POW:
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11517);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11515, LJ_TISNUM);
+    dasm_put(Dst, 11525, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11825);
+    dasm_put(Dst, 11835);
     } else {
-    dasm_put(Dst, 11839);
+    dasm_put(Dst, 11849);
     }
       break;
     case 1:
-    dasm_put(Dst, 11549, LJ_TISNUM);
+    dasm_put(Dst, 11559, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11847);
+    dasm_put(Dst, 11857);
     } else {
-    dasm_put(Dst, 11861);
+    dasm_put(Dst, 11871);
     }
       break;
     default:
-    dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11869);
+    dasm_put(Dst, 11879);
     } else {
-    dasm_put(Dst, 11883);
+    dasm_put(Dst, 11893);
     }
       break;
     }
-    dasm_put(Dst, 11902);
+    dasm_put(Dst, 11912);
     if (sse) {
-    dasm_put(Dst, 11381);
+    dasm_put(Dst, 11391);
     } else {
-    dasm_put(Dst, 11393);
+    dasm_put(Dst, 11403);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 11906, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11916, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 12000, LJ_TSTR);
+    dasm_put(Dst, 12010, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 12000, LJ_TCDATA);
+    dasm_put(Dst, 12010, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 12033);
+      dasm_put(Dst, 12043);
     } else {
-      dasm_put(Dst, 12048);
+      dasm_put(Dst, 12058);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 12056);
+      dasm_put(Dst, 12066);
     } else {
-      dasm_put(Dst, 12069);
+      dasm_put(Dst, 12079);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 12076);
+    dasm_put(Dst, 12086);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 12102, LJ_TNIL);
+    dasm_put(Dst, 12112, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 12148, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12158, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 12192, 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, 12282);
+    dasm_put(Dst, 12202, 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, 12292);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 12294, 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, 12304, 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, 12385);
+    dasm_put(Dst, 12395);
     if (sse) {
-      dasm_put(Dst, 12390);
+      dasm_put(Dst, 12400);
     } else {
-      dasm_put(Dst, 11200);
+      dasm_put(Dst, 11210);
     }
-    dasm_put(Dst, 12397, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12407, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 12406);
+      dasm_put(Dst, 12416);
     } else {
-      dasm_put(Dst, 12412);
+      dasm_put(Dst, 12422);
     }
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
   case BC_USETP:
-    dasm_put(Dst, 12415, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12425, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 12452, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12462, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 12506, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 12516, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 12577, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12587, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 12703, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12713, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 12795, Dt7(->env));
+    dasm_put(Dst, 12805, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 12813, Dt7(->env));
+    dasm_put(Dst, 12823, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 12831, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 12841, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 12864);
+      dasm_put(Dst, 12874);
     } else {
-      dasm_put(Dst, 12885);
+      dasm_put(Dst, 12895);
       if (cmov) {
-      dasm_put(Dst, 10926);
+      dasm_put(Dst, 10936);
       } else {
-      dasm_put(Dst, 10932);
+      dasm_put(Dst, 10942);
       }
       dasm_put(Dst, 2539);
     }
-    dasm_put(Dst, 12895, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 12983, LJ_TNIL, LJ_TSTR);
+    dasm_put(Dst, 12905, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 12993, LJ_TNIL, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 13012, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 13100, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13022, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 13110, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 13170, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 13269, LJ_TNIL);
+    dasm_put(Dst, 13180, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13279, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 13286, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 13296, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 12864);
+      dasm_put(Dst, 12874);
     } else {
-      dasm_put(Dst, 12885);
+      dasm_put(Dst, 12895);
       if (cmov) {
-      dasm_put(Dst, 10926);
+      dasm_put(Dst, 10936);
       } else {
-      dasm_put(Dst, 10932);
+      dasm_put(Dst, 10942);
       }
       dasm_put(Dst, 2539);
     }
-    dasm_put(Dst, 13319, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 13402, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13329, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 13412, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 13464, 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, 13539, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 13631, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13474, 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, 13549, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 13641, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 13727, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 13825, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13737, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 13835, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 13871, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 14020, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13881, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 14030, Dt6(->marked), cast_byte(~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, 11511);
+    dasm_put(Dst, 11521);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 14038);
+      dasm_put(Dst, 14048);
     }
-    dasm_put(Dst, 14043, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 14053, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 14038);
+    dasm_put(Dst, 14048);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 14084, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 14202, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 14094, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 14212, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 14272, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 14282, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 14352, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 14362, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (sse) {
-      dasm_put(Dst, 14398);
+      dasm_put(Dst, 14408);
     } else {
-      dasm_put(Dst, 14404);
+      dasm_put(Dst, 14414);
     }
-    dasm_put(Dst, 14410);
+    dasm_put(Dst, 14420);
     if (sse) {
-      dasm_put(Dst, 11381);
+      dasm_put(Dst, 11391);
     } else {
-      dasm_put(Dst, 11393);
+      dasm_put(Dst, 11403);
     }
-    dasm_put(Dst, 14429, -BCBIAS_J*4);
+    dasm_put(Dst, 14439, -BCBIAS_J*4);
     if (!sse) {
-      dasm_put(Dst, 14480);
+      dasm_put(Dst, 14490);
     }
-    dasm_put(Dst, 14486, 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, 14561);
+    dasm_put(Dst, 14496, 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, 14571);
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 14569, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 14579, 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, 14668, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 14832, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14678, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 14842, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 14038);
+    dasm_put(Dst, 14048);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 14903);
+      dasm_put(Dst, 14913);
     }
-    dasm_put(Dst, 14907, FRAME_TYPE);
+    dasm_put(Dst, 14917, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 14926);
+      dasm_put(Dst, 14936);
       break;
     case BC_RET1:
-      dasm_put(Dst, 14984);
+      dasm_put(Dst, 14994);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 15000);
+      dasm_put(Dst, 15010);
     default:
       break;
     }
-    dasm_put(Dst, 15011, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 15021, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 15053, LJ_TNIL);
+      dasm_put(Dst, 15063, LJ_TNIL);
     } else {
-      dasm_put(Dst, 15062, LJ_TNIL);
+      dasm_put(Dst, 15072, LJ_TNIL);
     }
-    dasm_put(Dst, 15069, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 15079, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 15093);
+      dasm_put(Dst, 15103);
     }
     dasm_put(Dst, 4704);
     break;
@@ -2229,7 +2238,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2241,57 +2250,57 @@ 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, 15118);
+    dasm_put(Dst, 15128);
     if (!vk) {
-      dasm_put(Dst, 15122, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 15132, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 15141);
+    dasm_put(Dst, 15151);
     if (!vk) {
-      dasm_put(Dst, 15145, LJ_TISNUM);
+      dasm_put(Dst, 15155, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 15154);
+      dasm_put(Dst, 15164);
       if (vk) {
-	dasm_put(Dst, 15166);
+	dasm_put(Dst, 15176);
       } else {
-	dasm_put(Dst, 15185);
+	dasm_put(Dst, 15195);
       }
-      dasm_put(Dst, 15190);
+      dasm_put(Dst, 15200);
     } else {
-      dasm_put(Dst, 15203);
+      dasm_put(Dst, 15213);
       if (vk) {
-	dasm_put(Dst, 15209);
+	dasm_put(Dst, 15219);
       } else {
-	dasm_put(Dst, 15225);
+	dasm_put(Dst, 15235);
       }
-      dasm_put(Dst, 15233);
+      dasm_put(Dst, 15243);
       if (cmov) {
-      dasm_put(Dst, 10926);
+      dasm_put(Dst, 10936);
       } else {
-      dasm_put(Dst, 10932);
+      dasm_put(Dst, 10942);
       }
       if (!cmov) {
-	dasm_put(Dst, 15238);
+	dasm_put(Dst, 15248);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 15244, -BCBIAS_J*4);
+      dasm_put(Dst, 15254, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 15254, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 15264, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 15268, -BCBIAS_J*4);
+      dasm_put(Dst, 15278, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 15264, BC_JLOOP);
+      dasm_put(Dst, 15274, BC_JLOOP);
     }
-    dasm_put(Dst, 10961);
+    dasm_put(Dst, 10971);
     if (sse) {
-      dasm_put(Dst, 15278);
+      dasm_put(Dst, 15288);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2300,33 +2309,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 15289, LJ_TNIL);
+    dasm_put(Dst, 15299, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 15304, BC_JLOOP);
+      dasm_put(Dst, 15314, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15318, -BCBIAS_J*4);
+      dasm_put(Dst, 15328, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 11258);
+    dasm_put(Dst, 11268);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 10963);
+    dasm_put(Dst, 10973);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 15334, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 15344, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 15357, -BCBIAS_J*4);
+    dasm_put(Dst, 15367, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2340,7 +2349,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 15381, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15391, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2350,13 +2359,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 15402, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 15412, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 15432, BC_JLOOP);
+      dasm_put(Dst, 15442, BC_JLOOP);
     } else {
-      dasm_put(Dst, 10963);
+      dasm_put(Dst, 10973);
     }
-    dasm_put(Dst, 15441, LJ_TNIL);
+    dasm_put(Dst, 15451, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
@@ -2367,30 +2376,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 15463, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 15473, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 15432, BC_JLOOP);
+      dasm_put(Dst, 15442, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15554, -4+PC2PROTO(k));
+      dasm_put(Dst, 15564, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 15576, LJ_TNIL);
+    dasm_put(Dst, 15586, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 15598, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 15608, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15627);
+      dasm_put(Dst, 15637);
     } else {
-      dasm_put(Dst, 15631);
+      dasm_put(Dst, 15641);
     }
-    dasm_put(Dst, 15639, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 15649, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15648);
+      dasm_put(Dst, 15658);
     } else {
-      dasm_put(Dst, 15652, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 15662, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 15657, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 15667, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2418,7 +2427,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 15682);
+  dasm_put(Dst, 15692);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
diff --git a/src/lj_ccall.c b/src/lj_ccall.c
index 03f0ec06..6d5156fb 100644
--- a/src/lj_ccall.c
+++ b/src/lj_ccall.c
@@ -14,6 +14,7 @@
 #include "lj_cconv.h"
 #include "lj_cdata.h"
 #include "lj_ccall.h"
+#include "lj_trace.h"
 
 /* Target-specific handling of register arguments. */
 #if LJ_TARGET_X86
@@ -127,7 +128,7 @@ static int ccall_set_args(lua_State *L, CTState *cts, CType *ct,
 #if LJ_TARGET_X86
   /* x86 has several different calling conventions. */
   cc->resx87 = 0;
-  switch ((ct->info >> CTSHIFT_CCONV) & CTMASK_CCONV) {
+  switch (ctype_cconv(ct->info)) {
   case CTCC_FASTCALL: maxgpr = 2; break;
   case CTCC_THISCALL: maxgpr = 1; break;
   default: maxgpr = 0; break;
@@ -352,6 +353,13 @@ int lj_ccall_func(lua_State *L, GCcdata *cd)
     gcsteps = ccall_set_args(L, cts, ct, &cc);
     lj_vm_ffi_call(&cc);
     gcsteps += ccall_get_results(L, cts, ct, &cc, &ret);
+#if LJ_TARGET_X86 && LJ_ABI_WIN
+    /* Automatically detect __stdcall and fix up C function declaration. */
+    if (cc.spadj && ctype_cconv(ct->info) == CTCC_CDECL) {
+      CTF_INSERT(ct->info, CCONV, CTCC_STDCALL);
+      lj_trace_abort(G(L));
+    }
+#endif
     while (gcsteps-- > 0)
       lj_gc_check(L);
     return ret;
diff --git a/src/lj_ctype.h b/src/lj_ctype.h
index c804b706..17a6fdc3 100644
--- a/src/lj_ctype.h
+++ b/src/lj_ctype.h
@@ -173,6 +173,7 @@ typedef struct CTState {
 #define ctype_bitcsz(info)	(((info) >> CTSHIFT_BITCSZ) & CTMASK_BITCSZ)
 #define ctype_vsizeP(info)	(((info) >> CTSHIFT_VSIZEP) & CTMASK_VSIZEP)
 #define ctype_msizeP(info)	(((info) >> CTSHIFT_MSIZEP) & CTMASK_MSIZEP)
+#define ctype_cconv(info)	(((info) >> CTSHIFT_CCONV) & CTMASK_CCONV)
 
 /* Simple type checks. */
 #define ctype_isnum(info)	(ctype_type((info)) == CT_NUM)
-- 
cgit v1.2.3-55-g6feb