summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2009-12-19 17:25:54 +0100
committerMike Pall <mike>2009-12-19 17:25:54 +0100
commita1d4d05f2ce7ed3c8ab0978ffb3b6055ceaaa7eb (patch)
tree2e4d8193f8db8e814692e947e38f063afb4c583a
parented8d86bf665fbeba28350da1ad8f981b7348a26a (diff)
downloadluajit-a1d4d05f2ce7ed3c8ab0978ffb3b6055ceaaa7eb.tar.gz
luajit-a1d4d05f2ce7ed3c8ab0978ffb3b6055ceaaa7eb.tar.bz2
luajit-a1d4d05f2ce7ed3c8ab0978ffb3b6055ceaaa7eb.zip
Adapt most outbound calls in interpreter to x64 calling conventions.
-rw-r--r--src/buildvm_x86.dasc236
-rw-r--r--src/buildvm_x86.h1513
2 files changed, 961 insertions, 788 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 02fe461b..960afa1d 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -55,6 +55,8 @@
55|.define CARG2d, edx 55|.define CARG2d, edx
56|.define CARG3d, r8d 56|.define CARG3d, r8d
57|.define CARG4d, r9d 57|.define CARG4d, r9d
58|.define FCARG1, CARG1d // Upwards compatible to x86 fastcall.
59|.define FCARG2, CARG2d
58|.else 60|.else
59|.define CARG1, rsi // x64/POSIX C call arguments. 61|.define CARG1, rsi // x64/POSIX C call arguments.
60|.define CARG2, rdi 62|.define CARG2, rdi
@@ -68,6 +70,8 @@
68|.define CARG4d, ecx 70|.define CARG4d, ecx
69|.define CARG5d, r8d 71|.define CARG5d, r8d
70|.define CARG6d, r9d 72|.define CARG6d, r9d
73|.define FCARG1, CARG1d // Simulate x86 fastcall.
74|.define FCARG2, CARG2d
71|.endif 75|.endif
72| 76|
73|// Type definitions. Some of these are only used for documentation. 77|// Type definitions. Some of these are only used for documentation.
@@ -154,7 +158,7 @@
154| pop rbx; pop rsi; pop rdi; pop rbp 158| pop rbx; pop rsi; pop rdi; pop rbp
155|.endmacro 159|.endmacro
156| 160|
157|.define UNUSED1, aword [rsp+dword*26] 161|.define SAVE_CFRAME, aword [rsp+aword*13]
158|.define SAVE_PC, dword [rsp+dword*25] 162|.define SAVE_PC, dword [rsp+dword*25]
159|.define SAVE_L, dword [rsp+dword*24] 163|.define SAVE_L, dword [rsp+dword*24]
160|.define SAVE_ERRF, dword [rsp+dword*23] 164|.define SAVE_ERRF, dword [rsp+dword*23]
@@ -167,7 +171,7 @@
167|.define SAVE_R3, aword [rsp+aword*7] 171|.define SAVE_R3, aword [rsp+aword*7]
168|.define SAVE_R2, aword [rsp+aword*6] 172|.define SAVE_R2, aword [rsp+aword*6]
169|.define SAVE_R1, aword [rsp+aword*5] //<-- rsp after register saves. 173|.define SAVE_R1, aword [rsp+aword*5] //<-- rsp after register saves.
170|.define SAVE_CFRAME, aword [rsp+aword*4] 174|.define ARG5, aword [rsp+aword*4]
171|.define CSAVE_4, aword [rsp+aword*3] 175|.define CSAVE_4, aword [rsp+aword*3]
172|.define CSAVE_3, aword [rsp+aword*2] 176|.define CSAVE_3, aword [rsp+aword*2]
173|.define CSAVE_2, aword [rsp+aword*1] 177|.define CSAVE_2, aword [rsp+aword*1]
@@ -175,8 +179,9 @@
175|//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee 179|//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee
176| 180|
177|// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). 181|// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ).
178|.define TMPQ, qword [rsp] 182|.define TMPQ, qword [rsp+aword*10]
179|.define NRESULTS, TMP2 183|.define NRESULTS, TMP2
184|.define ARG5d, dword [rsp+aword*4]
180| 185|
181|//----------------------------------------------------------------------- 186|//-----------------------------------------------------------------------
182|.else // x64/POSIX stack layout 187|.else // x64/POSIX stack layout
@@ -869,12 +874,20 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
869 | movzx RB, PC_RB // Reload TValue *t from RB. 874 | movzx RB, PC_RB // Reload TValue *t from RB.
870 | lea RB, [BASE+RB*8] 875 | lea RB, [BASE+RB*8]
871 |2: 876 |2:
877 |.if X64
878 | mov L:CARG1d, SAVE_L
879 | mov L:CARG1d->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
880 | mov CARG2d, RB
881 | mov CARG3d, RC
882 | mov L:RB, L:CARG1d
883 |.else
872 | mov ARG2, RB 884 | mov ARG2, RB
873 | mov L:RB, SAVE_L 885 | mov L:RB, SAVE_L
874 | mov ARG3, RC 886 | mov ARG3, RC
875 | mov ARG1, L:RB 887 | mov ARG1, L:RB
876 | mov SAVE_PC, PC
877 | mov L:RB->base, BASE 888 | mov L:RB->base, BASE
889 |.endif
890 | mov SAVE_PC, PC
878 | call extern lj_meta_tget // (lua_State *L, TValue *o, TValue *k) 891 | call extern lj_meta_tget // (lua_State *L, TValue *o, TValue *k)
879 | // TValue * (finished) or NULL (metamethod) returned in eax (RC). 892 | // TValue * (finished) or NULL (metamethod) returned in eax (RC).
880 | mov BASE, L:RB->base 893 | mov BASE, L:RB->base
@@ -927,12 +940,20 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
927 | movzx RB, PC_RB // Reload TValue *t from RB. 940 | movzx RB, PC_RB // Reload TValue *t from RB.
928 | lea RB, [BASE+RB*8] 941 | lea RB, [BASE+RB*8]
929 |2: 942 |2:
943 |.if X64
944 | mov L:CARG1d, SAVE_L
945 | mov L:CARG1d->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
946 | mov CARG2d, RB
947 | mov CARG3d, RC
948 | mov L:RB, L:CARG1d
949 |.else
930 | mov ARG2, RB 950 | mov ARG2, RB
931 | mov L:RB, SAVE_L 951 | mov L:RB, SAVE_L
932 | mov ARG3, RC 952 | mov ARG3, RC
933 | mov ARG1, L:RB 953 | mov ARG1, L:RB
934 | mov SAVE_PC, PC
935 | mov L:RB->base, BASE 954 | mov L:RB->base, BASE
955 |.endif
956 | mov SAVE_PC, PC
936 | call extern lj_meta_tset // (lua_State *L, TValue *o, TValue *k) 957 | call extern lj_meta_tset // (lua_State *L, TValue *o, TValue *k)
937 | // TValue * (finished) or NULL (metamethod) returned in eax (RC). 958 | // TValue * (finished) or NULL (metamethod) returned in eax (RC).
938 | mov BASE, L:RB->base 959 | mov BASE, L:RB->base
@@ -965,6 +986,19 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
965 |//-- Comparison metamethods --------------------------------------------- 986 |//-- Comparison metamethods ---------------------------------------------
966 | 987 |
967 |->vmeta_comp: 988 |->vmeta_comp:
989 |.if X64
990 | mov L:RB, SAVE_L
991 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d == BASE.
992 |.if X64WIN
993 | lea CARG3d, [BASE+RD*8]
994 | lea CARG2d, [BASE+RA*8]
995 |.else
996 | lea CARG2d, [BASE+RA*8]
997 | lea CARG3d, [BASE+RD*8]
998 |.endif
999 | mov CARG1d, L:RB // Caveat: CARG1d/CARG4d == RA.
1000 | movzx CARG4d, PC_OP
1001 |.else
968 | movzx RB, PC_OP 1002 | movzx RB, PC_OP
969 | lea RD, [BASE+RD*8] 1003 | lea RD, [BASE+RD*8]
970 | lea RA, [BASE+RA*8] 1004 | lea RA, [BASE+RA*8]
@@ -973,8 +1007,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
973 | mov ARG3, RD 1007 | mov ARG3, RD
974 | mov ARG2, RA 1008 | mov ARG2, RA
975 | mov ARG1, L:RB 1009 | mov ARG1, L:RB
976 | mov SAVE_PC, PC
977 | mov L:RB->base, BASE 1010 | mov L:RB->base, BASE
1011 |.endif
1012 | mov SAVE_PC, PC
978 | call extern lj_meta_comp // (lua_State *L, TValue *o1, *o2, int op) 1013 | call extern lj_meta_comp // (lua_State *L, TValue *o1, *o2, int op)
979 | // 0/1 or TValue * (metamethod) returned in eax (RC). 1014 | // 0/1 or TValue * (metamethod) returned in eax (RC).
980 |3: 1015 |3:
@@ -1001,14 +1036,30 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1001 | jmp <4 1036 | jmp <4
1002 | 1037 |
1003 |->vmeta_equal: 1038 |->vmeta_equal:
1039 | sub PC, 4
1040 |.if X64WIN
1041 | mov CARG3d, RD
1042 | mov CARG4d, RB
1043 | mov L:RB, SAVE_L
1044 | mov L:RB->base, BASE // Caveat: CARG2d == BASE.
1045 | mov CARG2d, RA
1046 | mov CARG1d, L:RB // Caveat: CARG1d == RA.
1047 |.elif X64
1048 | mov CARG2d, RA
1049 | mov CARG4d, RB // Caveat: CARG4d == RA.
1050 | mov L:RB, SAVE_L
1051 | mov L:RB->base, BASE // Caveat: CARG3d == BASE.
1052 | mov CARG3d, RD
1053 | mov CARG1d, L:RB
1054 |.else
1004 | mov ARG4, RB 1055 | mov ARG4, RB
1005 | mov L:RB, SAVE_L 1056 | mov L:RB, SAVE_L
1006 | sub PC, 4
1007 | mov ARG3, RD 1057 | mov ARG3, RD
1008 | mov ARG2, RA 1058 | mov ARG2, RA
1009 | mov ARG1, L:RB 1059 | mov ARG1, L:RB
1010 | mov SAVE_PC, PC
1011 | mov L:RB->base, BASE 1060 | mov L:RB->base, BASE
1061 |.endif
1062 | mov SAVE_PC, PC
1012 | call extern lj_meta_equal // (lua_State *L, GCobj *o1, *o2, int ne) 1063 | call extern lj_meta_equal // (lua_State *L, GCobj *o1, *o2, int ne)
1013 | // 0/1 or TValue * (metamethod) returned in eax (RC). 1064 | // 0/1 or TValue * (metamethod) returned in eax (RC).
1014 | jmp <3 1065 | jmp <3
@@ -1036,6 +1087,24 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1036 | lea RB, [BASE+RB*8] 1087 | lea RB, [BASE+RB*8]
1037 |2: 1088 |2:
1038 | lea RA, [BASE+RA*8] 1089 | lea RA, [BASE+RA*8]
1090 |.if X64WIN
1091 | mov CARG3d, RB
1092 | mov CARG4d, RC
1093 | movzx RC, PC_OP
1094 | mov ARG5d, RC
1095 | mov L:RB, SAVE_L
1096 | mov L:RB->base, BASE // Caveat: CARG2d == BASE.
1097 | mov CARG2d, RA
1098 | mov CARG1d, L:RB // Caveat: CARG1d == RA.
1099 |.elif X64
1100 | movzx CARG5d, PC_OP
1101 | mov CARG2d, RA
1102 | mov CARG4d, RC // Caveat: CARG4d == RA.
1103 | mov L:CARG1d, SAVE_L
1104 | mov L:CARG1d->base, BASE // Caveat: CARG3d == BASE.
1105 | mov CARG3d, RB
1106 | mov L:RB, L:CARG1d
1107 |.else
1039 | mov ARG3, RB 1108 | mov ARG3, RB
1040 | mov L:RB, SAVE_L 1109 | mov L:RB, SAVE_L
1041 | mov ARG4, RC 1110 | mov ARG4, RC
@@ -1043,8 +1112,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1043 | mov ARG2, RA 1112 | mov ARG2, RA
1044 | mov ARG5, RC 1113 | mov ARG5, RC
1045 | mov ARG1, L:RB 1114 | mov ARG1, L:RB
1046 | mov SAVE_PC, PC
1047 | mov L:RB->base, BASE 1115 | mov L:RB->base, BASE
1116 |.endif
1117 | mov SAVE_PC, PC
1048 | call extern lj_meta_arith // (lua_State *L, TValue *ra,*rb,*rc, BCReg op) 1118 | call extern lj_meta_arith // (lua_State *L, TValue *ra,*rb,*rc, BCReg op)
1049 | // NULL (finished) or TValue * (metamethod) returned in eax (RC). 1119 | // NULL (finished) or TValue * (metamethod) returned in eax (RC).
1050 | mov BASE, L:RB->base 1120 | mov BASE, L:RB->base
@@ -1065,12 +1135,19 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1065 | jmp aword LFUNC:RB->gate 1135 | jmp aword LFUNC:RB->gate
1066 | 1136 |
1067 |->vmeta_len: 1137 |->vmeta_len:
1138 |.if X64
1139 | mov L:RB, SAVE_L
1140 | mov L:RB->base, BASE // Caveat: CARG2d may be BASE.
1141 | lea CARG2d, [BASE+RD*8]
1142 | mov CARG1d, L:RB
1143 |.else
1068 | lea RD, [BASE+RD*8] 1144 | lea RD, [BASE+RD*8]
1069 | mov L:RB, SAVE_L 1145 | mov L:RB, SAVE_L
1070 | mov ARG2, RD 1146 | mov ARG2, RD
1071 | mov ARG1, L:RB 1147 | mov ARG1, L:RB
1072 | mov SAVE_PC, PC
1073 | mov L:RB->base, BASE 1148 | mov L:RB->base, BASE
1149 |.endif
1150 | mov SAVE_PC, PC
1074 | call extern lj_meta_len // (lua_State *L, TValue *o) 1151 | call extern lj_meta_len // (lua_State *L, TValue *o)
1075 | // TValue * (metamethod) returned in eax (RC). 1152 | // TValue * (metamethod) returned in eax (RC).
1076 | mov BASE, L:RB->base 1153 | mov BASE, L:RB->base
@@ -1083,13 +1160,21 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1083 | mov TMP2, RA // Save RA, RC for us. 1160 | mov TMP2, RA // Save RA, RC for us.
1084 | mov TMP1, NARGS:RC 1161 | mov TMP1, NARGS:RC
1085 | sub RA, 8 1162 | sub RA, 8
1163 |.if X64
1164 | mov L:RB, SAVE_L
1165 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
1166 | mov CARG2d, RA
1167 | lea CARG3d, [RA+NARGS:RC*8]
1168 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
1169 |.else
1086 | lea RC, [RA+NARGS:RC*8] 1170 | lea RC, [RA+NARGS:RC*8]
1087 | mov L:RB, SAVE_L 1171 | mov L:RB, SAVE_L
1088 | mov ARG2, RA 1172 | mov ARG2, RA
1089 | mov ARG3, RC 1173 | mov ARG3, RC
1090 | mov ARG1, L:RB 1174 | mov ARG1, L:RB
1091 | mov SAVE_PC, PC
1092 | mov L:RB->base, BASE // This is the callers base! 1175 | mov L:RB->base, BASE // This is the callers base!
1176 |.endif
1177 | mov SAVE_PC, PC
1093 | call extern lj_meta_call // (lua_State *L, TValue *func, TValue *top) 1178 | call extern lj_meta_call // (lua_State *L, TValue *func, TValue *top)
1094 | mov BASE, L:RB->base 1179 | mov BASE, L:RB->base
1095 | mov RA, TMP2 1180 | mov RA, TMP2
@@ -1104,11 +1189,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1104 |//-- Argument coercion for 'for' statement ------------------------------ 1189 |//-- Argument coercion for 'for' statement ------------------------------
1105 | 1190 |
1106 |->vmeta_for: 1191 |->vmeta_for:
1192 |.if X64
1193 | mov L:RB, SAVE_L
1194 | mov L:RB->base, BASE // Caveat: CARG2d may be BASE.
1195 | mov CARG2d, RA
1196 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
1197 |.else
1107 | mov L:RB, SAVE_L 1198 | mov L:RB, SAVE_L
1108 | mov ARG2, RA 1199 | mov ARG2, RA
1109 | mov ARG1, L:RB 1200 | mov ARG1, L:RB
1110 | mov SAVE_PC, PC
1111 | mov L:RB->base, BASE 1201 | mov L:RB->base, BASE
1202 |.endif
1203 | mov SAVE_PC, PC
1112 | call extern lj_meta_for // (lua_State *L, TValue *base) 1204 | call extern lj_meta_for // (lua_State *L, TValue *base)
1113 | mov BASE, L:RB->base 1205 | mov BASE, L:RB->base
1114 | mov RC, [PC-4] 1206 | mov RC, [PC-4]
@@ -1184,7 +1276,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1184 | mov [RA-8], RB 1276 | mov [RA-8], RB
1185 | sub RD, 2 1277 | sub RD, 2
1186 | jz >2 1278 | jz >2
1187 | mov ARG1, RA 1279 | mov TMP1, RA
1188 |1: 1280 |1:
1189 | add RA, 8 1281 | add RA, 8
1190 | mov RB, [RA+4] 1282 | mov RB, [RA+4]
@@ -1193,7 +1285,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1193 | mov [RA-8], RB 1285 | mov [RA-8], RB
1194 | sub RD, 1 1286 | sub RD, 1
1195 | jnz <1 1287 | jnz <1
1196 | mov RA, ARG1 1288 | mov RA, TMP1
1197 |2: 1289 |2:
1198 | mov RD, NRESULTS 1290 | mov RD, NRESULTS
1199 | jmp ->fff_res_ 1291 | jmp ->fff_res_
@@ -1230,7 +1322,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1230 | mov STR:RC, [DISPATCH+DISPATCH_GL(mmname)+4*MM_metatable] 1322 | mov STR:RC, [DISPATCH+DISPATCH_GL(mmname)+4*MM_metatable]
1231 | mov dword [RA-4], LJ_TTAB // Store metatable as default result. 1323 | mov dword [RA-4], LJ_TTAB // Store metatable as default result.
1232 | mov [RA-8], TAB:RB 1324 | mov [RA-8], TAB:RB
1233 | mov ARG1, RA // Save result pointer. 1325 | mov TMP1, RA // Save result pointer.
1234 | mov RA, TAB:RB->hmask 1326 | mov RA, TAB:RB->hmask
1235 | and RA, STR:RC->hash 1327 | and RA, STR:RC->hash
1236 | imul RA, #NODE 1328 | imul RA, #NODE
@@ -1249,7 +1341,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1249 | mov RB, [RA+4] 1341 | mov RB, [RA+4]
1250 | cmp RB, LJ_TNIL; je ->fff_res1 // Dito for nil value. 1342 | cmp RB, LJ_TNIL; je ->fff_res1 // Dito for nil value.
1251 | mov RC, [RA] 1343 | mov RC, [RA]
1252 | mov RA, ARG1 // Restore result pointer. 1344 | mov RA, TMP1 // Restore result pointer.
1253 | mov [RA-4], RB // Return value of mt.__metatable. 1345 | mov [RA-4], RB // Return value of mt.__metatable.
1254 | mov [RA-8], RC 1346 | mov [RA-8], RC
1255 | jmp ->fff_res1 1347 | jmp ->fff_res1
@@ -1282,6 +1374,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1282 | 1374 |
1283 |.ffunc_2 rawget 1375 |.ffunc_2 rawget
1284 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1376 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
1377 |.if X64
1378 | mov TMP1, BASE // Save BASE and RA.
1379 | mov RB, RA
1380 | mov CARG2d, [RA]
1381 | lea CARG3d, [RA+8]
1382 | mov CARG1d, SAVE_L // Caveat: CARG1d may be RA.
1383 |.else
1285 | mov TAB:RC, [RA] 1384 | mov TAB:RC, [RA]
1286 | mov L:RB, SAVE_L 1385 | mov L:RB, SAVE_L
1287 | mov ARG2, TAB:RC 1386 | mov ARG2, TAB:RC
@@ -1290,6 +1389,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1290 | mov TMP1, BASE // Save BASE and RA. 1389 | mov TMP1, BASE // Save BASE and RA.
1291 | add RA, 8 1390 | add RA, 8
1292 | mov ARG3, RA 1391 | mov ARG3, RA
1392 |.endif
1293 | call extern lj_tab_get // (lua_State *L, GCtab *t, cTValue *key) 1393 | call extern lj_tab_get // (lua_State *L, GCtab *t, cTValue *key)
1294 | // cTValue * returned in eax (RC). 1394 | // cTValue * returned in eax (RC).
1295 | mov RA, RB 1395 | mov RA, RB
@@ -1327,13 +1427,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1327 | mov L:RB->base, RA // Add frame since C call can throw. 1427 | mov L:RB->base, RA // Add frame since C call can throw.
1328 | mov [RA-4], PC 1428 | mov [RA-4], PC
1329 | mov SAVE_PC, PC // Redundant (but a defined value). 1429 | mov SAVE_PC, PC // Redundant (but a defined value).
1330 | mov ARG3, BASE // Save BASE. 1430 | mov TMP1, BASE // Save BASE.
1331 | mov FCARG2, RA // Caveat: FCARG2 == BASE 1431 | mov FCARG2, RA // Caveat: FCARG2 == BASE
1332 | mov L:FCARG1, L:RB // Caveat: FCARG1 == RA 1432 | mov L:FCARG1, L:RB // Caveat: FCARG1 == RA
1333 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np) 1433 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np)
1334 | // GCstr returned in eax (RC). 1434 | // GCstr returned in eax (RC).
1335 | mov RA, L:RB->base 1435 | mov RA, L:RB->base
1336 | mov BASE, ARG3 1436 | mov BASE, TMP1
1337 | jmp <2 1437 | jmp <2
1338 | 1438 |
1339 |//-- Base library: iterators ------------------------------------------- 1439 |//-- Base library: iterators -------------------------------------------
@@ -1342,16 +1442,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1342 | je >2 // Missing 2nd arg? 1442 | je >2 // Missing 2nd arg?
1343 |1: 1443 |1:
1344 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 1444 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
1445 |.if X64
1446 | mov CARG2d, [RA]
1447 | mov L:RB, SAVE_L
1448 | mov L:RB->base, RA // Add frame since C call can throw.
1449 | mov [RA-4], PC
1450 | mov TMP1, BASE // Save BASE.
1451 | lea CARG3d, [RA+8]
1452 | mov CARG1d, L:RB // Caveat: CARG1d may be RA.
1453 |.else
1345 | mov TAB:RB, [RA] 1454 | mov TAB:RB, [RA]
1346 | mov ARG2, TAB:RB 1455 | mov ARG2, TAB:RB
1347 | mov L:RB, SAVE_L 1456 | mov L:RB, SAVE_L
1348 | mov ARG1, L:RB 1457 | mov ARG1, L:RB
1349 | mov L:RB->base, RA // Add frame since C call can throw. 1458 | mov L:RB->base, RA // Add frame since C call can throw.
1350 | mov [RA-4], PC 1459 | mov [RA-4], PC
1351 | mov SAVE_PC, PC // Redundant (but a defined value).
1352 | mov TMP1, BASE // Save BASE. 1460 | mov TMP1, BASE // Save BASE.
1353 | add RA, 8 1461 | add RA, 8
1354 | mov ARG3, RA 1462 | mov ARG3, RA
1463 |.endif
1464 | mov SAVE_PC, PC // Redundant (but a defined value).
1355 | call extern lj_tab_next // (lua_State *L, GCtab *t, TValue *key) 1465 | call extern lj_tab_next // (lua_State *L, GCtab *t, TValue *key)
1356 | // Flag returned in eax (RC). 1466 | // Flag returned in eax (RC).
1357 | mov RA, L:RB->base 1467 | mov RA, L:RB->base
@@ -1390,7 +1500,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1390 | fld qword [RA+8] 1500 | fld qword [RA+8]
1391 | fld1 1501 | fld1
1392 | faddp st1 1502 | faddp st1
1393 | fist ARG2 1503 | fist ARG2 // Caveat: used in getinth call, too.
1394 | fstp qword [RA-8] 1504 | fstp qword [RA-8]
1395 | mov TAB:RB, [RA] 1505 | mov TAB:RB, [RA]
1396 | mov RC, ARG2 1506 | mov RC, ARG2
@@ -1406,13 +1516,17 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1406 | jmp ->fff_res2 1516 | jmp ->fff_res2
1407 |2: // Check for empty hash part first. Otherwise call C function. 1517 |2: // Check for empty hash part first. Otherwise call C function.
1408 | cmp dword TAB:RB->hmask, 0; je ->fff_res0 1518 | cmp dword TAB:RB->hmask, 0; je ->fff_res0
1519 |.if X64
1520 | mov CARG1d, TAB:RB
1521 |.else
1409 | mov ARG1, TAB:RB 1522 | mov ARG1, TAB:RB
1410 | mov ARG3, BASE // Save BASE and RA. 1523 |.endif
1524 | mov TMP1, BASE // Save BASE and RA.
1411 | mov RB, RA 1525 | mov RB, RA
1412 | call extern lj_tab_getinth // (GCtab *t, int32_t key) 1526 | call extern lj_tab_getinth // (GCtab *t, int32_t key)
1413 | // cTValue * or NULL returned in eax (RC). 1527 | // cTValue * or NULL returned in eax (RC).
1414 | mov RA, RB 1528 | mov RA, RB
1415 | mov BASE, ARG3 1529 | mov BASE, TMP1
1416 | test RC, RC 1530 | test RC, RC
1417 | jnz <1 1531 | jnz <1
1418 |->fff_res0: 1532 |->fff_res0:
@@ -1481,14 +1595,22 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1481 |.endif 1595 |.endif
1482 | mov [RA-4], PC 1596 | mov [RA-4], PC
1483 | mov SAVE_PC, PC 1597 | mov SAVE_PC, PC
1598 |.if X64
1599 | mov TMP1, L:RB
1600 |.else
1484 | mov ARG1, L:RB 1601 | mov ARG1, L:RB
1602 |.endif
1485 |.if resume 1603 |.if resume
1486 | cmp dword [RA+4], LJ_TTHREAD; jne <9 1604 | cmp dword [RA+4], LJ_TTHREAD; jne <9
1487 |.endif 1605 |.endif
1488 | cmp aword L:RB->cframe, 0; jne <9 1606 | cmp aword L:RB->cframe, 0; jne <9
1489 | cmp byte L:RB->status, LUA_YIELD; ja <9 1607 | cmp byte L:RB->status, LUA_YIELD; ja <9
1490 | mov PC, L:RB->top 1608 | mov PC, L:RB->top
1609 |.if X64
1610 | mov TMP2, PC
1611 |.else
1491 | mov ARG2, PC 1612 | mov ARG2, PC
1613 |.endif
1492 | je >1 // Status != LUA_YIELD (i.e. 0)? 1614 | je >1 // Status != LUA_YIELD (i.e. 0)?
1493 | cmp PC, L:RB->base; je <9 // Check for presence of initial func. 1615 | cmp PC, L:RB->base; je <9 // Check for presence of initial func.
1494 |1: 1616 |1:
@@ -1506,7 +1628,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1506 | add RA, 8 // Keep resumed thread in stack for GC. 1628 | add RA, 8 // Keep resumed thread in stack for GC.
1507 |.endif 1629 |.endif
1508 | mov L:RB->top, RA 1630 | mov L:RB->top, RA
1631 |.if X64
1632 | mov RB, TMP2
1633 |.else
1509 | mov RB, ARG2 1634 | mov RB, ARG2
1635 |.endif
1510 |.if resume 1636 |.if resume
1511 | lea RA, [RA+NARGS:RC*8-24] // RA = end of source for stack move. 1637 | lea RA, [RA+NARGS:RC*8-24] // RA = end of source for stack move.
1512 |.else 1638 |.else
@@ -1525,14 +1651,23 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1525 | cmp PC, RB 1651 | cmp PC, RB
1526 | jne <2 1652 | jne <2
1527 |3: 1653 |3:
1654 |.if X64
1655 | mov CARG1d, TMP1
1656 | mov CARG2d, TMP2
1657 |.else
1528 | xor RA, RA 1658 | xor RA, RA
1529 | mov ARG4, RA 1659 | mov ARG4, RA
1530 | mov ARG3, RA 1660 | mov ARG3, RA
1661 |.endif
1531 | call ->vm_resume // (lua_State *L, TValue *base, 0, 0) 1662 | call ->vm_resume // (lua_State *L, TValue *base, 0, 0)
1532 | set_vmstate INTERP 1663 | set_vmstate INTERP
1533 | 1664 |
1534 | mov L:RB, SAVE_L 1665 | mov L:RB, SAVE_L
1666 |.if X64
1667 | mov L:PC, TMP1
1668 |.else
1535 | mov L:PC, ARG1 // The callee doesn't modify SAVE_L. 1669 | mov L:PC, ARG1 // The callee doesn't modify SAVE_L.
1670 |.endif
1536 | mov BASE, L:RB->base 1671 | mov BASE, L:RB->base
1537 | cmp eax, LUA_YIELD 1672 | cmp eax, LUA_YIELD
1538 | ja >8 1673 | ja >8
@@ -1590,8 +1725,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1590 | mov RD, 1+2 // nresults+1 = 1 + false + error. 1725 | mov RD, 1+2 // nresults+1 = 1 + false + error.
1591 | jmp <7 1726 | jmp <7
1592 |.else 1727 |.else
1728 |.if X64
1729 | mov CARG2d, L:PC
1730 | mov CARG1d, L:RB
1731 |.else
1593 | mov ARG2, L:PC 1732 | mov ARG2, L:PC
1594 | mov ARG1, L:RB 1733 | mov ARG1, L:RB
1734 |.endif
1595 | call extern lj_ffh_coroutine_wrap_err // (lua_State *L, lua_State *co) 1735 | call extern lj_ffh_coroutine_wrap_err // (lua_State *L, lua_State *co)
1596 | // Error function does not return. 1736 | // Error function does not return.
1597 |.endif 1737 |.endif
@@ -1599,8 +1739,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1599 |9: // Handle stack expansion on return from yield. 1739 |9: // Handle stack expansion on return from yield.
1600 | mov L:RA, ARG1 // The callee doesn't modify SAVE_L. 1740 | mov L:RA, ARG1 // The callee doesn't modify SAVE_L.
1601 | mov L:RA->top, KBASE // Undo coroutine stack clearing. 1741 | mov L:RA->top, KBASE // Undo coroutine stack clearing.
1742 |.if X64
1743 | mov CARG2d, PC
1744 | mov CARG1d, L:RB
1745 |.else
1602 | mov ARG2, PC 1746 | mov ARG2, PC
1603 | mov ARG1, L:RB 1747 | mov ARG1, L:RB
1748 |.endif
1604 | call extern lj_state_growstack // (lua_State *L, int n) 1749 | call extern lj_state_growstack // (lua_State *L, int n)
1605 | mov BASE, L:RB->base 1750 | mov BASE, L:RB->base
1606 | jmp <4 // Retry the stack move. 1751 | jmp <4 // Retry the stack move.
@@ -1617,8 +1762,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1617 | mov L:RB->base, RA 1762 | mov L:RB->base, RA
1618 | lea RC, [RA+NARGS:RC*8-8] 1763 | lea RC, [RA+NARGS:RC*8-8]
1619 | mov L:RB->top, RC 1764 | mov L:RB->top, RC
1620 | xor eax, eax 1765 | xor RD, RD
1621 | mov aword L:RB->cframe, eax 1766 | mov aword L:RB->cframe, RDa
1622 | mov al, LUA_YIELD 1767 | mov al, LUA_YIELD
1623 | mov byte L:RB->status, al 1768 | mov byte L:RB->status, al
1624 | jmp ->vm_leave_unw 1769 | jmp ->vm_leave_unw
@@ -1706,7 +1851,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1706 | cmp RB, 0x00200000; jb >4 1851 | cmp RB, 0x00200000; jb >4
1707 |1: 1852 |1:
1708 | shr RB, 21; sub RB, RC // Extract and unbias exponent. 1853 | shr RB, 21; sub RB, RC // Extract and unbias exponent.
1709 | mov ARG1, RB; fild ARG1 1854 | mov TMP1, RB; fild TMP1
1710 | mov RB, [RA-4] 1855 | mov RB, [RA-4]
1711 | and RB, 0x800fffff // Mask off exponent. 1856 | and RB, 0x800fffff // Mask off exponent.
1712 | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0. 1857 | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0.
@@ -1719,7 +1864,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1719 | fldz; jmp <2 1864 | fldz; jmp <2
1720 |4: // Handle denormals by multiplying with 2^54 and adjusting the bias. 1865 |4: // Handle denormals by multiplying with 2^54 and adjusting the bias.
1721 | fld qword [RA] 1866 | fld qword [RA]
1722 | mov ARG1, 0x5a800000; fmul ARG1 // x = x*2^54 1867 | mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54
1723 | fstp qword [RA-8] 1868 | fstp qword [RA-8]
1724 | mov RB, [RA-4]; mov RC, 1076; shl RB, 1; jmp <1 1869 | mov RB, [RA-4]; mov RC, 1076; shl RB, 1; jmp <1
1725 | 1870 |
@@ -1786,8 +1931,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1786 | cmp dword STR:RB->len, 1 1931 | cmp dword STR:RB->len, 1
1787 | jb ->fff_res0 // Return no results for empty string. 1932 | jb ->fff_res0 // Return no results for empty string.
1788 | movzx RB, byte STR:RB[1] 1933 | movzx RB, byte STR:RB[1]
1789 | mov ARG1, RB 1934 | mov TMP1, RB
1790 | fild ARG1 1935 | fild TMP1
1791 | jmp ->fff_resn 1936 | jmp ->fff_resn
1792 | 1937 |
1793 |.ffunc string_char // Only handle the 1-arg case here. 1938 |.ffunc string_char // Only handle the 1-arg case here.
@@ -1956,14 +2101,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
1956 | 2101 |
1957 |.ffunc_1 table_getn 2102 |.ffunc_1 table_getn
1958 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback 2103 | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback
1959 | mov ARG2, BASE // Save RA and BASE. 2104 | mov TMP1, BASE // Save RA and BASE.
1960 | mov RB, RA 2105 | mov RB, RA
1961 | mov TAB:FCARG1, [RA] // Caveat: FCARG1 == RA 2106 | mov TAB:FCARG1, [RA] // Caveat: FCARG1 == RA
1962 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t) 2107 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t)
1963 | // Length of table returned in eax (RC). 2108 | // Length of table returned in eax (RC).
1964 | mov ARG1, RC 2109 | mov ARG1, RC
1965 | mov RA, RB // Restore RA and BASE. 2110 | mov RA, RB // Restore RA and BASE.
1966 | mov BASE, ARG2 2111 | mov BASE, TMP1
1967 | fild ARG1 2112 | fild ARG1
1968 | jmp ->fff_resn 2113 | jmp ->fff_resn
1969 | 2114 |
@@ -2106,7 +2251,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
2106 | mov SAVE_PC, PC // Redundant (but a defined value). 2251 | mov SAVE_PC, PC // Redundant (but a defined value).
2107 | mov L:RB->base, RA 2252 | mov L:RB->base, RA
2108 | lea RC, [RA+NARGS:RC*8-8] 2253 | lea RC, [RA+NARGS:RC*8-8]
2254 |.if X64
2255 | mov CARG1d, L:RB
2256 |.else
2109 | mov ARG1, L:RB 2257 | mov ARG1, L:RB
2258 |.endif
2110 | mov L:RB->top, RC 2259 | mov L:RB->top, RC
2111 | call extern lj_gc_step // (lua_State *L) 2260 | call extern lj_gc_step // (lua_State *L)
2112 | mov RA, L:RB->base 2261 | mov RA, L:RB->base
@@ -2152,12 +2301,20 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
2152 | test RDL, LUA_MASKLINE 2301 | test RDL, LUA_MASKLINE
2153 | jz >5 2302 | jz >5
2154 |1: 2303 |1:
2304 |.if X64
2305 | mov L:RB, SAVE_L
2306 | mov L:RB->base, BASE // Caveat: CARG2d/CARG3d may be BASE.
2307 | mov CARG3d, NRESULTS // Dynamic top for *M instructions.
2308 | mov CARG2d, PC
2309 | mov CARG1d, L:RB
2310 |.else
2155 | mov L:RB, SAVE_L 2311 | mov L:RB, SAVE_L
2156 | mov RD, NRESULTS // Dynamic top for *M instructions. 2312 | mov RD, NRESULTS // Dynamic top for *M instructions.
2157 | mov ARG3, RD 2313 | mov ARG3, RD
2158 | mov L:RB->base, BASE 2314 | mov L:RB->base, BASE
2159 | mov ARG2, PC 2315 | mov ARG2, PC
2160 | mov ARG1, L:RB 2316 | mov ARG1, L:RB
2317 |.endif
2161 | // SAVE_PC must hold the _previous_ PC. The callee updates it with PC. 2318 | // SAVE_PC must hold the _previous_ PC. The callee updates it with PC.
2162 | call extern lj_dispatch_ins // (lua_State *L, BCIns *pc, int nres) 2319 | call extern lj_dispatch_ins // (lua_State *L, BCIns *pc, int nres)
2163 |4: 2320 |4:
@@ -2171,12 +2328,17 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
2171 |->vm_hotloop: // Hot loop counter underflow. 2328 |->vm_hotloop: // Hot loop counter underflow.
2172#if LJ_HASJIT 2329#if LJ_HASJIT
2173 | mov L:RB, SAVE_L 2330 | mov L:RB, SAVE_L
2331 | mov L:RB->base, BASE
2332 |.if X64
2333 | mov CARG2d, PC
2334 | lea CARG1d, [DISPATCH+GG_DISP2J]
2335 |.else
2174 | lea RA, [DISPATCH+GG_DISP2J] 2336 | lea RA, [DISPATCH+GG_DISP2J]
2175 | mov ARG2, PC 2337 | mov ARG2, PC
2176 | mov ARG1, RA 2338 | mov ARG1, RA
2339 |.endif
2177 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2340 | mov [DISPATCH+DISPATCH_J(L)], L:RB
2178 | mov SAVE_PC, PC 2341 | mov SAVE_PC, PC
2179 | mov L:RB->base, BASE
2180 | call extern lj_trace_hot // (jit_State *J, const BCIns *pc) 2342 | call extern lj_trace_hot // (jit_State *J, const BCIns *pc)
2181 | jmp <4 2343 | jmp <4
2182#endif 2344#endif
@@ -2184,12 +2346,17 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
2184 |->vm_hotcall: // Hot call counter underflow. 2346 |->vm_hotcall: // Hot call counter underflow.
2185#if LJ_HASJIT 2347#if LJ_HASJIT
2186 | mov L:RB, SAVE_L 2348 | mov L:RB, SAVE_L
2349 | mov L:RB->base, BASE
2350 |.if X64
2351 | mov CARG2d, PC
2352 | lea CARG1d, [DISPATCH+GG_DISP2J]
2353 |.else
2187 | lea RA, [DISPATCH+GG_DISP2J] 2354 | lea RA, [DISPATCH+GG_DISP2J]
2188 | mov ARG2, PC 2355 | mov ARG2, PC
2189 | mov ARG1, RA 2356 | mov ARG1, RA
2357 |.endif
2190 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2358 | mov [DISPATCH+DISPATCH_J(L)], L:RB
2191 | mov SAVE_PC, PC 2359 | mov SAVE_PC, PC
2192 | mov L:RB->base, BASE
2193 | call extern lj_trace_hot // (jit_State *J, const BCIns *pc) 2360 | call extern lj_trace_hot // (jit_State *J, const BCIns *pc)
2194 | mov BASE, L:RB->base 2361 | mov BASE, L:RB->base
2195 | // Dispatch the first instruction and optionally record it. 2362 | // Dispatch the first instruction and optionally record it.
@@ -2900,7 +3067,12 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov)
2900 | test byte GCOBJ:RA->gch.marked, LJ_GC_WHITES // iswhite(v) 3067 | test byte GCOBJ:RA->gch.marked, LJ_GC_WHITES // iswhite(v)
2901 | jz <1 3068 | jz <1
2902 | // Crossed a write barrier. Move the barrier forward. 3069 | // Crossed a write barrier. Move the barrier forward.
3070 |.if X64 and not X64WIN
3071 | mov FCARG2, RB
3072 | mov RB, BASE // Save BASE.
3073 |.else
2903 | xchg FCARG2, RB // Save BASE (FCARG2 == BASE). 3074 | xchg FCARG2, RB // Save BASE (FCARG2 == BASE).
3075 |.endif
2904 | lea GL:FCARG1, [DISPATCH+GG_DISP2G] 3076 | lea GL:FCARG1, [DISPATCH+GG_DISP2G]
2905 | call extern lj_gc_barrieruv@8 // (global_State *g, TValue *tv) 3077 | call extern lj_gc_barrieruv@8 // (global_State *g, TValue *tv)
2906 | mov BASE, RB // Restore BASE. 3078 | mov BASE, RB // Restore BASE.
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 83b1ed98..a799cbae 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[12300] = { 15static const unsigned char build_actionlist[12310] = {
16 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233, 16 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233,
17 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135, 17 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135,
18 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244, 18 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244,
@@ -73,7 +73,7 @@ static const unsigned char build_actionlist[12300] = {
73 199,65,4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,137,68,36,12, 73 199,65,4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,137,68,36,12,
74 219,68,36,12,221,92,36,16,141,68,36,16,252,233,244,247,248,36,15,182,70,252, 74 219,68,36,12,221,92,36,16,141,68,36,16,252,233,244,247,248,36,15,182,70,252,
75 254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4, 75 254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,
76 139,108,36,48,137,68,36,8,137,44,36,137,116,36,24,137,149,233,232,251,1,1, 76 139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,1,
77 139,149,233,133,192,15,132,244,249,248,32,15,182,78,252,253,139,104,4,139, 77 139,149,233,133,192,15,132,244,249,248,32,15,182,78,252,253,139,104,4,139,
78 0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 78 0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
79 252,255,36,171,248,3,139,141,233,255,137,113,252,244,141,177,233,41,214,139, 79 252,255,36,171,248,3,139,141,233,255,137,113,252,244,141,177,233,41,214,139,
@@ -82,529 +82,530 @@ static const unsigned char build_actionlist[12300] = {
82 65,4,237,137,205,252,233,244,248,248,38,15,182,70,252,254,137,68,36,12,219, 82 65,4,237,137,205,252,233,244,248,248,38,15,182,70,252,254,137,68,36,12,219,
83 68,36,12,221,92,36,16,141,68,36,16,252,233,244,247,248,39,15,182,70,252,254, 83 68,36,12,221,92,36,16,141,68,36,16,252,233,244,247,248,39,15,182,70,252,254,
84 141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139, 84 141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,
85 108,36,48,137,68,36,8,137,44,36,137,116,36,24,137,149,233,232,251,1,2,139, 85 108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,2,139,
86 149,233,133,192,15,132,244,249,255,15,182,78,252,253,139,108,202,4,139,12, 86 149,233,133,192,15,132,244,249,255,15,182,78,252,253,139,108,202,4,139,12,
87 202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198,4,193,232, 87 202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198,4,193,232,
88 16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,253,139, 88 16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,
89 108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,252,248, 89 108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,
90 184,4,0,0,0,252,255,165,233,248,41,15,182,110,252,252,141,4,194,141,12,202, 90 184,4,0,0,0,252,255,165,233,248,41,15,182,110,252,252,141,4,194,141,12,202,
91 137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,116,36, 91 137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,
92 24,137,149,233,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,42, 92 137,116,36,24,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,42,248,
93 248,4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233, 93 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,
94 248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 94 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,43,
95 43,131,198,4,129,120,253,4,239,15,130,244,5,255,252,233,244,6,248,44,129, 95 131,198,4,129,120,253,4,239,15,130,244,5,255,252,233,244,6,248,44,129,120,
96 120,253,4,239,252,233,244,4,248,45,137,108,36,12,139,108,36,48,131,252,238, 96 253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,108,36,48,
97 4,137,68,36,8,137,76,36,4,137,44,36,137,116,36,24,137,149,233,232,251,1,4, 97 137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,4,252,
98 252,233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252, 98 233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,234,
99 234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,255, 99 149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,255,141,
100 141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48, 100 4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,
101 137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,116, 101 68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,
102 36,24,137,149,233,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,137, 102 137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,
103 193,41,208,137,113,252,244,141,176,233,139,105,252,248,184,3,0,0,0,129,121, 103 41,208,137,113,252,244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,
104 253,252,252,239,15,133,244,29,252,255,165,233,248,50,141,4,194,139,108,36, 104 252,252,239,15,133,244,29,252,255,165,233,248,50,141,4,194,139,108,36,48,
105 48,137,68,36,4,137,44,36,137,116,36,24,137,149,233,232,251,1,6,139,149,233, 105 137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,6,139,149,233,252,
106 252,233,244,42,248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139, 106 233,244,42,248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,
107 108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,116,36,24,137,149,233,232, 107 36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,
108 251,1,7,139,149,233,255,139,76,36,20,139,68,36,16,139,105,252,248,131,192, 108 1,7,139,149,233,255,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57,
109 1,57,215,15,132,244,51,252,255,165,233,248,52,139,108,36,48,137,76,36,4,137, 109 215,15,132,244,51,252,255,165,233,248,52,139,108,36,48,137,76,36,4,137,44,
110 44,36,137,116,36,24,137,149,233,232,251,1,8,139,149,233,139,70,252,252,15, 110 36,137,149,233,137,116,36,24,232,251,1,8,139,149,233,139,70,252,252,15,182,
111 182,204,15,182,232,193,232,16,252,255,164,253,171,233,248,53,129,252,248, 111 204,15,182,232,193,232,16,252,255,164,253,171,233,248,53,129,252,248,239,
112 239,15,130,244,54,139,105,4,129,252,253,239,15,131,244,54,137,68,36,20,137, 112 15,130,244,54,139,105,4,129,252,253,239,15,131,244,54,137,68,36,20,137,105,
113 105,252,252,139,41,137,105,252,248,131,232,2,15,132,244,248,137,12,36,248, 113 252,252,139,41,137,105,252,248,131,232,2,15,132,244,248,137,76,36,16,248,
114 1,131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15, 114 1,131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,
115 133,244,1,139,12,36,248,2,255,139,68,36,20,252,233,244,55,248,56,129,252, 115 133,244,1,139,76,36,16,248,2,255,139,68,36,20,252,233,244,55,248,56,129,252,
116 248,239,15,130,244,54,139,105,4,184,237,252,247,213,57,232,255,15,71,197, 116 248,239,15,130,244,54,139,105,4,184,237,252,247,213,57,232,255,15,71,197,
117 255,15,134,244,247,137,232,248,1,255,139,105,252,248,139,132,253,197,233, 117 255,15,134,244,247,137,232,248,1,255,139,105,252,248,139,132,253,197,233,
118 199,65,252,252,237,137,65,252,248,252,233,244,57,248,58,129,252,248,239,15, 118 199,65,252,252,237,137,65,252,248,252,233,244,57,248,58,129,252,248,239,15,
119 130,244,54,139,105,4,129,252,253,239,15,133,244,252,248,1,139,41,139,173, 119 130,244,54,139,105,4,129,252,253,239,15,133,244,252,248,1,139,41,139,173,
120 233,248,2,133,252,237,199,65,252,252,237,15,132,244,57,139,65,252,248,139, 120 233,248,2,133,252,237,199,65,252,252,237,15,132,244,57,139,65,252,248,139,
121 131,233,199,65,252,252,237,137,105,252,248,137,12,36,139,141,233,255,35,136, 121 131,233,199,65,252,252,237,137,105,252,248,137,76,36,16,139,141,233,255,35,
122 233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233, 122 136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,
123 15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,57,248, 123 233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,57,
124 5,139,105,4,129,252,253,239,15,132,244,57,255,139,1,139,12,36,137,105,252, 124 248,5,139,105,4,129,252,253,239,15,132,244,57,255,139,1,139,76,36,16,137,
125 252,137,65,252,248,252,233,244,57,248,6,129,252,253,239,15,132,244,1,129, 125 105,252,252,137,65,252,248,252,233,244,57,248,6,129,252,253,239,15,132,244,
126 252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171,233, 126 1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171,
127 252,233,244,2,248,59,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133, 127 233,252,233,244,2,248,59,129,252,248,239,15,130,244,54,129,121,253,4,239,
128 244,54,255,139,41,131,189,233,0,15,133,244,54,129,121,253,12,239,15,133,244, 128 15,133,244,54,255,139,41,131,189,233,0,15,133,244,54,129,121,253,12,239,15,
129 54,139,65,8,137,133,233,199,65,252,252,237,137,105,252,248,252,246,133,233, 129 133,244,54,139,65,8,137,133,233,199,65,252,252,237,137,105,252,248,252,246,
130 235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248, 130 133,233,235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,
131 1,252,233,244,57,248,60,255,129,252,248,239,15,130,244,54,129,121,253,4,239, 131 233,248,1,252,233,244,57,248,60,255,129,252,248,239,15,130,244,54,129,121,
132 15,133,244,54,139,1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36, 132 253,4,239,15,133,244,54,139,1,139,108,36,48,137,68,36,4,137,44,36,137,205,
133 16,131,193,8,137,76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139, 133 137,84,36,16,131,193,8,137,76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,
134 64,4,137,105,252,248,137,65,252,252,252,233,244,57,248,61,129,252,248,239, 134 40,139,64,4,137,105,252,248,137,65,252,252,252,233,244,57,248,61,129,252,
135 15,133,244,54,129,121,253,4,239,15,135,244,54,221,1,252,233,244,62,248,63, 135 248,239,15,133,244,54,129,121,253,4,239,15,135,244,54,221,1,252,233,244,62,
136 129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,133,244,249,139,1, 136 248,63,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,133,244,249,
137 248,2,199,65,252,252,237,137,65,252,248,252,233,244,57,248,3,129,121,253, 137 139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244,57,248,3,129,121,
138 4,239,15,135,244,54,131,187,233,0,15,133,244,54,139,171,233,59,171,233,15, 138 253,4,239,15,135,244,54,131,187,233,0,15,133,244,54,139,171,233,59,171,233,
139 130,244,247,232,244,64,248,1,255,139,108,36,48,137,141,233,137,113,252,252, 139 15,130,244,247,232,244,64,248,1,255,139,108,36,48,137,141,233,137,113,252,
140 137,116,36,24,137,84,36,8,137,202,137,252,233,232,251,1,10,139,141,233,139, 140 252,137,116,36,24,137,84,36,16,137,202,137,252,233,232,251,1,10,139,141,233,
141 84,36,8,252,233,244,2,248,65,129,252,248,239,15,130,244,54,15,132,244,248, 141 139,84,36,16,252,233,244,2,248,65,129,252,248,239,15,130,244,54,15,132,244,
142 248,1,129,121,253,4,239,15,133,244,54,139,41,137,108,36,4,139,108,36,48,137, 142 248,248,1,129,121,253,4,239,15,133,244,54,139,41,137,108,36,4,139,108,36,
143 44,36,137,141,233,137,113,252,252,137,116,36,24,137,84,36,16,131,193,8,137, 143 48,137,44,36,137,141,233,137,113,252,252,137,84,36,16,131,193,8,137,76,36,
144 76,36,8,232,251,1,11,139,141,233,139,84,36,16,133,192,15,132,244,249,139, 144 8,137,116,36,24,232,251,1,11,139,141,233,139,84,36,16,133,192,15,132,244,
145 105,8,139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,20,137,41, 145 249,139,105,8,139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,
146 137,65,4,248,66,184,237,255,252,233,244,67,248,2,199,65,12,237,252,233,244, 146 20,137,41,137,65,4,248,66,184,237,255,252,233,244,67,248,2,199,65,12,237,
147 1,248,3,199,65,252,252,237,252,233,244,57,248,68,129,252,248,239,15,130,244, 147 252,233,244,1,248,3,199,65,252,252,237,252,233,244,57,248,68,129,252,248,
148 54,129,121,253,4,239,15,133,244,54,139,133,233,199,65,252,252,237,137,65, 148 239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,133,233,199,65,252,
149 252,248,199,65,12,237,255,184,237,252,233,244,67,248,69,129,252,248,239,15, 149 252,237,137,65,252,248,199,65,12,237,255,184,237,252,233,244,67,248,69,129,
150 130,244,54,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244, 150 252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,129,121,253,12,
151 54,221,65,8,217,232,222,193,219,84,36,4,221,89,252,248,139,41,139,68,36,4, 151 239,15,135,244,54,221,65,8,217,232,222,193,219,84,36,4,221,89,252,248,139,
152 59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15, 152 41,139,68,36,4,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
153 132,244,70,255,139,40,139,64,4,137,41,137,65,4,252,233,244,66,248,2,131,189, 153 253,4,239,15,132,244,70,255,139,40,139,64,4,137,41,137,65,4,252,233,244,66,
154 233,0,15,132,244,70,137,44,36,137,84,36,8,137,205,232,251,1,12,137,252,233, 154 248,2,131,189,233,0,15,132,244,70,137,44,36,137,84,36,16,137,205,232,251,
155 139,84,36,8,133,192,15,133,244,1,248,70,184,237,252,233,244,67,248,71,129, 155 1,12,137,252,233,139,84,36,16,133,192,15,133,244,1,248,70,184,237,252,233,
156 252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,133,233,255, 156 244,67,248,71,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,
157 199,65,252,252,237,137,65,252,248,217,252,238,221,89,8,184,237,252,233,244, 157 54,139,133,233,255,199,65,252,252,237,137,65,252,248,217,252,238,221,89,8,
158 67,248,72,129,252,248,239,15,130,244,54,137,113,252,252,190,237,137,202,131, 158 184,237,252,233,244,67,248,72,129,252,248,239,15,130,244,54,137,113,252,252,
159 193,8,131,232,1,139,105,252,248,248,1,252,246,131,233,235,15,133,244,249, 159 190,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,252,246,131,233,
160 248,2,129,121,253,252,252,239,15,133,244,29,252,255,165,233,248,3,255,131, 160 235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,29,252,255,165,
161 198,1,252,233,244,2,248,73,129,252,248,239,15,130,244,54,129,121,253,12,239, 161 233,248,3,255,131,198,1,252,233,244,2,248,73,129,252,248,239,15,130,244,54,
162 15,133,244,54,137,113,252,252,139,105,4,137,105,12,199,65,4,237,139,41,139, 162 129,121,253,12,239,15,133,244,54,137,113,252,252,139,105,4,137,105,12,199,
163 113,8,137,105,8,137,49,190,237,137,202,129,193,239,131,232,2,252,233,244, 163 65,4,237,139,41,139,113,8,137,105,8,137,49,190,237,137,202,129,193,239,131,
164 1,248,9,139,116,36,24,252,233,244,54,248,74,129,252,248,239,15,130,244,54, 164 232,2,252,233,244,1,248,9,139,116,36,24,252,233,244,54,248,74,129,252,248,
165 255,139,41,137,113,252,252,137,116,36,24,137,44,36,129,121,253,4,239,15,133, 165 239,15,130,244,54,255,139,41,137,113,252,252,137,116,36,24,137,44,36,129,
166 244,9,131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233, 166 121,253,4,239,15,133,244,9,131,189,233,0,15,133,244,9,128,189,233,235,15,
167 137,116,36,4,15,132,244,247,59,181,233,15,132,244,9,248,1,141,116,198,252, 167 135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132,244,9,
168 240,59,181,233,15,135,244,9,255,137,181,233,139,108,36,48,137,141,233,131, 168 248,1,141,116,198,252,240,59,181,233,15,135,244,9,255,137,181,233,139,108,
169 193,8,137,141,233,139,108,36,4,141,76,193,232,41,252,241,57,252,238,15,132, 169 36,48,137,141,233,131,193,8,137,141,233,139,108,36,4,141,76,193,232,41,252,
170 244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248,131,252, 170 241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,
171 238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244, 171 70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,
172 26,199,131,233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15, 172 137,76,36,8,232,244,26,199,131,233,237,139,108,36,48,139,52,36,139,149,233,
173 135,244,254,248,4,139,142,233,139,190,233,255,137,142,233,137,252,254,41, 173 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,255,137,142,
174 206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213, 174 233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,
175 41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15, 175 135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,
176 133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68,36, 176 193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,
177 20,185,252,248,252,255,252,255,252,255,252,247,198,237,15,132,244,17,252, 177 116,36,24,137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237,
178 233,244,18,248,8,199,66,252,252,237,139,142,233,255,131,252,233,8,137,142, 178 15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233,255,131,
179 233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,12,36,137, 179 252,233,8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,
180 185,233,137,116,36,4,137,44,36,232,251,1,0,139,149,233,252,233,244,4,248, 180 248,9,139,12,36,137,185,233,137,116,36,4,137,44,36,232,251,1,0,139,149,233,
181 9,139,116,36,24,252,233,244,54,248,75,139,173,233,137,113,252,252,137,116, 181 252,233,244,4,248,9,139,116,36,24,252,233,244,54,248,75,139,173,233,137,113,
182 36,24,137,44,36,131,189,233,0,15,133,244,9,128,189,233,235,15,135,244,9,255, 182 252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,9,128,189,233,235,
183 139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132,244,9,248,1,141, 183 15,135,244,9,255,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132,
184 116,198,252,248,59,181,233,15,135,244,9,137,181,233,139,108,36,48,137,141, 184 244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137,181,233,139,108,
185 233,137,141,233,139,108,36,4,141,76,193,252,240,41,252,241,57,252,238,15, 185 36,48,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,41,252,241,
186 132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,252,248,131, 186 57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70,
187 252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137,76,36,8,232, 187 252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137,
188 244,26,255,199,131,233,237,139,108,36,48,139,52,36,139,149,233,129,252,248, 188 76,36,8,232,244,26,255,199,131,233,237,139,108,36,48,139,52,36,139,149,233,
189 239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254, 189 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,
190 41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137, 190 137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,
191 213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249, 191 244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,
192 15,133,244,5,248,6,141,70,1,248,7,255,139,116,36,24,137,68,36,20,49,201,252, 192 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,255,139,116,36,24,137,68,36,
193 247,198,237,15,132,244,17,252,233,244,18,248,8,137,116,36,4,137,44,36,232, 193 20,49,201,252,247,198,237,15,132,244,17,252,233,244,18,248,8,137,116,36,4,
194 251,1,13,248,9,139,12,36,137,185,233,137,116,36,4,137,44,36,232,251,1,0,139, 194 137,44,36,232,251,1,13,248,9,139,12,36,137,185,233,137,116,36,4,137,44,36,
195 149,233,252,233,244,4,248,76,139,108,36,48,137,113,252,252,252,247,133,233, 195 232,251,1,0,139,149,233,252,233,244,4,248,76,139,108,36,48,137,113,252,252,
196 237,15,132,244,54,137,141,233,141,68,193,252,248,137,133,233,49,192,137,133, 196 252,247,133,233,237,15,132,244,54,137,141,233,141,68,193,252,248,137,133,
197 233,176,235,255,136,133,233,252,233,244,22,248,77,129,252,248,239,15,130, 197 233,49,192,137,133,233,176,235,255,136,133,233,252,233,244,22,248,77,129,
198 244,54,129,121,253,4,239,15,135,244,54,221,1,217,225,248,62,221,89,252,248, 198 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,225,248,
199 248,57,184,237,248,67,137,68,36,20,248,55,252,247,198,237,15,133,244,253, 199 62,221,89,252,248,248,57,184,237,248,67,137,68,36,20,248,55,252,247,198,237,
200 248,5,56,70,252,255,15,135,244,252,255,139,6,15,182,204,15,182,232,131,198, 200 15,133,244,253,248,5,56,70,252,255,15,135,244,252,255,139,6,15,182,204,15,
201 4,193,232,16,252,255,36,171,248,6,199,68,193,252,244,237,131,192,1,252,233, 201 182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,193,252,244,237,
202 244,5,248,7,137,202,185,252,248,252,255,252,255,252,255,252,233,244,18,248, 202 131,192,1,252,233,244,5,248,7,137,202,185,252,248,252,255,252,255,252,255,
203 78,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,232, 203 252,233,244,18,248,78,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
204 244,79,252,233,244,62,248,80,129,252,248,239,255,15,130,244,54,129,121,253, 204 135,244,54,221,1,232,244,79,252,233,244,62,248,80,129,252,248,239,255,15,
205 4,239,15,135,244,54,221,1,232,244,81,252,233,244,62,248,82,129,252,248,239, 205 130,244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,81,252,233,244,62,
206 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,250,252,233,244, 206 248,82,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
207 62,248,83,129,252,248,239,255,15,130,244,54,129,121,253,4,239,15,135,244, 207 1,217,252,250,252,233,244,62,248,83,129,252,248,239,255,15,130,244,54,129,
208 54,217,252,237,221,1,217,252,241,252,233,244,62,248,84,129,252,248,239,15, 208 121,253,4,239,15,135,244,54,217,252,237,221,1,217,252,241,252,233,244,62,
209 130,244,54,129,121,253,4,239,15,135,244,54,217,252,236,221,1,217,252,241, 209 248,84,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,217,
210 252,233,244,62,248,85,129,252,248,239,15,130,244,54,255,129,121,253,4,239, 210 252,236,221,1,217,252,241,252,233,244,62,248,85,129,252,248,239,15,130,244,
211 15,135,244,54,221,1,232,244,86,252,233,244,62,248,87,129,252,248,239,15,130, 211 54,255,129,121,253,4,239,15,135,244,54,221,1,232,244,86,252,233,244,62,248,
212 244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,254,252,233,244,62,248, 212 87,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,
213 88,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,135,244,54,221, 213 252,254,252,233,244,62,248,88,129,252,248,239,15,130,244,54,255,129,121,253,
214 1,217,252,255,252,233,244,62,248,89,129,252,248,239,15,130,244,54,129,121, 214 4,239,15,135,244,54,221,1,217,252,255,252,233,244,62,248,89,129,252,248,239,
215 253,4,239,15,135,244,54,221,1,217,252,242,221,216,252,233,244,62,248,90,129, 215 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,242,221,216,252,
216 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,255,221,1,217,192, 216 233,244,62,248,90,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,
217 216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,62,248,91,129, 217 244,54,255,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
218 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,192,216, 218 252,233,244,62,248,91,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
219 200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,244,62,248,92, 219 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
220 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,232, 220 252,243,252,233,244,62,248,92,129,252,248,239,15,130,244,54,129,121,253,4,
221 217,252,243,252,233,244,62,248,93,255,129,252,248,239,15,130,244,54,129,121, 221 239,15,135,244,54,221,1,217,232,217,252,243,252,233,244,62,248,93,255,129,
222 253,4,239,15,135,244,54,221,1,137,76,36,16,221,28,36,137,213,232,251,1,14, 222 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,137,76,36,
223 139,76,36,16,137,252,234,252,233,244,62,248,94,129,252,248,239,15,130,244, 223 16,221,28,36,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233,244,62,
224 54,129,121,253,4,239,15,135,244,54,221,1,137,76,36,16,221,28,36,137,213,232, 224 248,94,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,
225 251,1,15,139,76,36,16,137,252,234,252,233,244,62,248,95,129,252,248,239,15, 225 1,137,76,36,16,221,28,36,137,213,232,251,1,15,139,76,36,16,137,252,234,252,
226 130,244,54,255,129,121,253,4,239,15,135,244,54,221,1,137,76,36,16,221,28, 226 233,244,62,248,95,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,
227 36,137,213,232,251,1,16,139,76,36,16,137,252,234,252,233,244,62,248,96,248, 227 135,244,54,221,1,137,76,36,16,221,28,36,137,213,232,251,1,16,139,76,36,16,
228 97,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,220, 228 137,252,234,252,233,244,62,248,96,248,97,129,252,248,239,15,130,244,54,129,
229 141,233,252,233,244,62,248,98,129,252,248,239,15,130,244,54,255,129,121,253, 229 121,253,4,239,15,135,244,54,221,1,220,141,233,252,233,244,62,248,98,129,252,
230 4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,217,252, 230 248,239,15,130,244,54,255,129,121,253,4,239,15,135,244,54,129,121,253,12,
231 243,252,233,244,62,248,99,129,252,248,239,15,130,244,54,129,121,253,4,239, 231 239,15,135,244,54,221,1,221,65,8,217,252,243,252,233,244,62,248,99,129,252,
232 15,135,244,54,129,121,253,12,239,15,135,244,54,221,65,8,221,1,217,252,253, 232 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,
233 221,217,252,233,244,62,248,100,255,129,252,248,239,15,130,244,54,139,105, 233 15,135,244,54,221,65,8,221,1,217,252,253,221,217,252,233,244,62,248,100,255,
234 4,129,252,253,239,15,135,244,54,139,1,137,105,252,252,137,65,252,248,209, 234 129,252,248,239,15,130,244,54,139,105,4,129,252,253,239,15,135,244,54,139,
235 229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252, 235 1,137,105,252,252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131,
236 254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197, 236 244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,
237 137,44,36,219,4,36,139,105,252,252,129,229,252,255,252,255,15,128,129,205, 237 244,250,248,1,193,252,237,21,41,197,137,108,36,16,219,68,36,16,139,105,252,
238 0,0,224,63,137,105,252,252,248,2,221,25,184,237,252,233,244,67,248,3,217, 238 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,105,252,252,248,
239 252,238,252,233,244,2,248,4,255,221,1,199,4,36,0,0,128,90,216,12,36,221,89, 239 2,221,25,184,237,252,233,244,67,248,3,217,252,238,252,233,244,2,248,4,255,
240 252,248,139,105,252,252,184,52,4,0,0,209,229,252,233,244,1,248,101,129,252, 240 221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,252,248,139,105,252,252,
241 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,139,105,4,209, 241 184,52,4,0,0,209,229,252,233,244,1,248,101,129,252,248,239,15,130,244,54,
242 229,129,252,253,0,0,224,252,255,15,132,244,250,217,192,232,244,102,220,252, 242 129,121,253,4,239,15,135,244,54,221,1,139,105,4,209,229,129,252,253,0,0,224,
243 233,248,1,221,89,252,248,221,25,139,65,252,252,139,105,4,49,232,15,136,244, 243 252,255,15,132,244,250,217,192,232,244,102,220,252,233,248,1,221,89,252,248,
244 249,248,2,184,237,252,233,244,67,248,3,255,129,252,245,0,0,0,128,137,105, 244 221,25,139,65,252,252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,233,
245 4,252,233,244,2,248,4,217,252,238,217,201,252,233,244,1,248,103,129,252,248, 245 244,67,248,3,255,129,252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,217,
246 239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135, 246 252,238,217,201,252,233,244,1,248,103,129,252,248,239,15,130,244,54,129,121,
247 244,54,221,65,8,221,1,248,1,217,252,248,223,224,158,15,138,244,1,221,217, 247 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,65,8,221,1,248,
248 252,233,244,62,248,104,255,129,252,248,239,15,130,244,54,129,121,253,4,239, 248 1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,62,248,104,255,
249 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,232,244,105, 249 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,
250 252,233,244,62,248,106,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 250 12,239,15,135,244,54,221,1,221,65,8,232,244,105,252,233,244,62,248,106,129,
251 135,244,54,255,221,1,189,2,0,0,0,248,1,57,197,15,131,244,62,129,124,253,252, 251 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,255,221,1,189,2,
252 233,252,252,239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,219, 252 0,0,0,248,1,57,197,15,131,244,62,129,124,253,252,233,252,252,239,15,135,244,
253 209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248, 253 251,221,68,252,233,252,248,255,219,252,233,219,209,221,217,255,80,221,225,
254 2,221,216,88,255,131,197,1,252,233,244,1,248,107,129,252,248,239,15,130,244, 254 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,131,197,
255 54,129,121,253,4,239,15,135,244,54,221,1,189,2,0,0,0,248,1,57,197,15,131, 255 1,252,233,244,1,248,107,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
256 244,62,129,124,253,252,233,252,252,239,15,135,244,251,221,68,252,233,252, 256 135,244,54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,62,129,124,253,252,233,
257 248,255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246,196,1, 257 252,252,239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,218,209,
258 15,133,244,248,217,201,248,2,221,216,88,255,131,197,1,252,233,244,1,248,5, 258 221,217,255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,
259 221,216,252,233,244,54,248,108,129,252,248,239,15,130,244,54,129,121,253, 259 221,216,88,255,131,197,1,252,233,244,1,248,5,221,216,252,233,244,54,248,108,
260 4,239,15,133,244,54,139,41,219,133,233,252,233,244,62,248,109,129,252,248, 260 129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,41,219,
261 239,15,133,244,54,129,121,253,4,239,255,15,133,244,54,139,41,131,189,233, 261 133,233,252,233,244,62,248,109,129,252,248,239,15,133,244,54,129,121,253,
262 1,15,130,244,70,15,182,173,233,137,44,36,219,4,36,252,233,244,62,248,110, 262 4,239,255,15,133,244,54,139,41,131,189,233,1,15,130,244,70,15,182,173,233,
263 139,171,233,59,171,233,15,130,244,247,232,244,64,248,1,129,252,248,239,15, 263 137,108,36,16,219,68,36,16,252,233,244,62,248,110,139,171,233,59,171,233,
264 133,244,54,129,121,253,4,239,255,15,135,244,54,221,1,219,92,36,20,129,124, 264 15,130,244,247,232,244,64,248,1,129,252,248,239,15,133,244,54,129,121,253,
265 36,20,252,255,0,0,0,15,135,244,54,141,68,36,20,137,76,36,16,199,68,36,8,1, 265 4,239,255,15,135,244,54,221,1,219,92,36,20,129,124,36,20,252,255,0,0,0,15,
266 0,0,0,137,68,36,4,248,111,139,108,36,48,137,44,36,137,116,36,24,137,149,233, 266 135,244,54,141,68,36,20,137,76,36,16,199,68,36,8,1,0,0,0,137,68,36,4,248,
267 232,251,1,17,139,76,36,16,139,149,233,199,65,252,252,237,137,65,252,248,252, 267 111,139,108,36,48,137,44,36,137,116,36,24,137,149,233,232,251,1,17,139,76,
268 233,244,57,248,112,139,171,233,59,171,233,15,130,244,247,232,244,64,248,1, 268 36,16,139,149,233,199,65,252,252,237,137,65,252,248,252,233,244,57,248,112,
269 137,76,36,16,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239, 269 139,171,233,59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16,199,68,
270 15,130,244,54,255,15,134,244,247,129,121,253,20,239,15,135,244,54,221,65, 270 36,20,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,54,255,15,
271 16,219,92,36,20,248,1,129,121,253,4,239,15,133,244,54,129,121,253,12,239, 271 134,244,247,129,121,253,20,239,15,135,244,54,221,65,16,219,92,36,20,248,1,
272 15,135,244,54,139,41,137,108,36,4,139,173,233,221,65,8,219,92,36,8,139,68, 272 129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244,54,139,41,137,
273 36,20,57,197,15,130,244,251,248,2,139,76,36,8,133,201,15,142,244,253,248, 273 108,36,4,139,173,233,221,65,8,219,92,36,8,139,68,36,20,57,197,15,130,244,
274 3,139,108,36,4,41,200,15,140,244,113,255,141,172,253,13,233,131,192,1,248, 274 251,248,2,139,76,36,8,133,201,15,142,244,253,248,3,139,108,36,4,41,200,15,
275 4,137,108,36,4,137,68,36,8,252,233,244,111,248,5,15,140,244,252,141,68,40, 275 140,244,113,255,141,172,253,13,233,131,192,1,248,4,137,108,36,4,137,68,36,
276 1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,15,132,244,254,1,252,233, 276 8,252,233,244,111,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,
277 131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,113,255,49,192, 277 232,252,233,244,2,248,7,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,
278 252,233,244,4,248,114,129,252,248,239,15,130,244,54,139,171,233,59,171,233, 278 8,185,1,0,0,0,252,233,244,3,248,113,255,49,192,252,233,244,4,248,114,129,
279 15,130,244,247,232,244,64,248,1,137,76,36,16,129,121,253,4,239,15,133,244, 279 252,248,239,15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244,64,
280 54,129,121,253,12,239,15,135,244,54,139,41,221,65,8,219,92,36,20,139,68,36, 280 248,1,137,76,36,16,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,
281 20,133,192,15,142,244,113,255,131,189,233,1,15,130,244,113,15,133,244,115, 281 135,244,54,139,41,221,65,8,219,92,36,20,139,68,36,20,133,192,15,142,244,113,
282 57,131,233,15,130,244,115,15,182,141,233,139,171,233,137,68,36,8,137,108, 282 255,131,189,233,1,15,130,244,113,15,133,244,115,57,131,233,15,130,244,115,
283 36,4,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,252,233,244,111,248, 283 15,182,141,233,139,171,233,137,68,36,8,137,108,36,4,248,1,136,77,0,131,197,
284 116,129,252,248,239,15,130,244,54,139,171,233,255,59,171,233,15,130,244,247, 284 1,131,232,1,15,133,244,1,252,233,244,111,248,116,129,252,248,239,15,130,244,
285 232,244,64,248,1,137,76,36,16,129,121,253,4,239,15,133,244,54,139,41,139, 285 54,139,171,233,255,59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16,
286 133,233,133,192,15,132,244,113,57,131,233,15,130,244,117,129,197,239,137, 286 129,121,253,4,239,15,133,244,54,139,41,139,133,233,133,192,15,132,244,113,
287 116,36,20,137,68,36,8,139,179,233,137,116,36,4,248,1,15,182,77,0,131,197, 287 57,131,233,15,130,244,117,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
288 1,131,232,1,136,12,6,15,133,244,1,255,139,116,36,20,252,233,244,111,248,118, 288 137,116,36,4,248,1,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,
289 129,252,248,239,15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244, 289 255,139,116,36,20,252,233,244,111,248,118,129,252,248,239,15,130,244,54,139,
290 64,248,1,137,76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233, 290 171,233,59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16,129,121,253,
291 57,131,233,15,130,244,117,255,129,197,239,137,116,36,20,137,68,36,8,139,179, 291 4,239,15,133,244,54,139,41,139,133,233,57,131,233,15,130,244,117,255,129,
292 233,137,116,36,4,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130, 292 197,239,137,116,36,20,137,68,36,8,139,179,233,137,116,36,4,252,233,244,249,
293 244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3, 293 248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,
294 131,232,1,15,137,244,1,139,116,36,20,252,233,244,111,248,119,129,252,248, 294 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,139,116,36,
295 239,15,130,244,54,139,171,233,255,59,171,233,15,130,244,247,232,244,64,248, 295 20,252,233,244,111,248,119,129,252,248,239,15,130,244,54,139,171,233,255,
296 1,137,76,36,16,129,121,253,4,239,15,133,244,54,139,41,139,133,233,57,131, 296 59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16,129,121,253,4,239,
297 233,15,130,244,117,129,197,239,137,116,36,20,137,68,36,8,139,179,233,137, 297 15,133,244,54,139,41,139,133,233,57,131,233,15,130,244,117,129,197,239,137,
298 116,36,4,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248, 298 116,36,20,137,68,36,8,139,179,233,137,116,36,4,252,233,244,249,248,1,15,182,
299 255,131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131, 299 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
300 232,1,15,137,244,1,139,116,36,20,252,233,244,111,248,120,129,252,248,239, 300 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,139,116,36,20,252,
301 15,130,244,54,129,121,253,4,239,15,133,244,54,137,84,36,4,137,205,139,9,232, 301 233,244,111,248,120,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,
302 251,1,18,137,4,36,137,252,233,139,84,36,4,219,4,36,252,233,244,62,248,121, 302 244,54,137,84,36,16,137,205,139,9,232,251,1,18,137,4,36,137,252,233,139,84,
303 129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,135,244,54,221,1,199, 303 36,16,219,4,36,252,233,244,62,248,121,129,252,248,239,15,130,244,54,255,129,
304 68,36,16,0,0,192,89,216,68,36,16,221,28,36,219,4,36,252,233,244,62,248,122, 304 121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,
305 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68, 305 28,36,219,4,36,252,233,244,62,248,122,129,252,248,239,15,130,244,54,129,121,
306 36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,137,68,36,20,141,68,193, 306 253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,
307 252,240,248,1,57,200,15,134,244,123,129,120,253,4,239,15,135,244,124,221, 307 36,139,44,36,137,68,36,20,141,68,193,252,240,248,1,57,200,15,134,244,123,
308 0,216,68,36,16,221,28,36,35,44,36,131,232,8,252,233,244,1,248,125,255,129, 308 129,120,253,4,239,15,135,244,124,221,0,216,68,36,16,221,28,36,35,44,36,131,
309 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36, 309 232,8,252,233,244,1,248,125,255,129,252,248,239,15,130,244,54,129,121,253,
310 16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,137,68,36,20,141,68,193,252, 310 4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,
311 240,248,1,57,200,15,134,244,123,129,120,253,4,239,15,135,244,124,221,0,216, 311 139,44,36,137,68,36,20,141,68,193,252,240,248,1,57,200,15,134,244,123,129,
312 68,36,16,221,28,36,11,44,36,131,232,8,252,233,244,1,248,126,129,252,248,239, 312 120,253,4,239,15,135,244,124,221,0,216,68,36,16,221,28,36,11,44,36,131,232,
313 15,130,244,54,129,121,253,4,239,15,135,244,54,255,221,1,199,68,36,16,0,0, 313 8,252,233,244,1,248,126,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
314 192,89,216,68,36,16,221,28,36,139,44,36,137,68,36,20,141,68,193,252,240,248, 314 135,244,54,255,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,
315 1,57,200,15,134,244,123,129,120,253,4,239,15,135,244,124,221,0,216,68,36, 315 36,137,68,36,20,141,68,193,252,240,248,1,57,200,15,134,244,123,129,120,253,
316 16,221,28,36,51,44,36,131,232,8,252,233,244,1,248,127,129,252,248,239,15, 316 4,239,15,135,244,124,221,0,216,68,36,16,221,28,36,51,44,36,131,232,8,252,
317 130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89, 317 233,244,1,248,127,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,
318 216,68,36,16,221,28,36,139,44,36,15,205,252,233,244,123,248,128,129,252,248, 318 244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,15,
319 239,15,130,244,54,255,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16, 319 205,252,233,244,123,248,128,129,252,248,239,15,130,244,54,255,129,121,253,
320 0,0,192,89,216,68,36,16,221,28,36,139,44,36,252,247,213,248,123,137,44,36, 320 4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,
321 219,4,36,252,233,244,62,248,124,139,68,36,20,252,233,244,54,248,129,129,252, 321 139,44,36,252,247,213,248,123,137,44,36,219,4,36,252,233,244,62,248,124,139,
322 68,36,20,252,233,244,54,248,129,129,252,248,239,15,130,244,54,129,121,253,
323 4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,
324 36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
325 139,76,36,8,139,44,36,211,229,137,193,252,233,244,123,248,130,255,129,252,
326 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,
327 15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
328 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,211,252,237,137,
329 193,252,233,244,123,248,131,129,252,248,239,15,130,244,54,129,121,253,4,239,
330 15,135,244,54,129,121,253,12,239,15,135,244,54,255,221,1,221,65,8,199,68,
331 36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
332 139,76,36,8,139,44,36,211,252,253,137,193,252,233,244,123,248,132,129,252,
322 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239, 333 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,
323 15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92, 334 15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
324 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,211,229,137,193, 335 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,211,197,137,193,
325 252,233,244,123,248,130,255,129,252,248,239,15,130,244,54,129,121,253,4,239, 336 252,233,244,123,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239,15,
326 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16, 337 135,244,54,255,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,
327 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76, 338 16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,
328 36,8,139,44,36,211,252,237,137,193,252,233,244,123,248,131,129,252,248,239, 339 76,36,8,139,44,36,211,205,137,193,252,233,244,123,248,115,184,237,252,233,
329 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244, 340 244,54,248,117,184,237,248,54,139,108,36,48,41,202,137,113,252,252,137,116,
330 54,255,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216, 341 36,24,137,84,36,8,137,141,233,141,68,193,252,248,137,44,36,141,144,233,137,
331 68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,211,252,253,137,193,252, 342 133,233,139,73,252,248,59,149,233,15,135,244,251,252,255,145,233,133,192,
332 233,244,123,248,132,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135, 343 15,133,244,249,248,1,255,139,141,233,139,133,233,41,200,193,232,3,131,192,
333 244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192, 344 1,139,105,252,248,139,84,36,8,1,202,57,113,252,252,15,133,244,248,252,255,
334 89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139, 345 165,233,248,2,129,121,253,252,252,239,15,133,244,29,252,255,165,233,248,3,
335 44,36,211,197,137,193,252,233,244,123,248,133,129,252,248,239,15,130,244, 346 139,141,233,139,84,36,8,1,202,252,233,244,67,248,5,199,68,36,4,237,232,251,
336 54,129,121,253,4,239,15,135,244,54,255,129,121,253,12,239,15,135,244,54,221, 347 1,0,252,233,244,1,248,64,93,137,108,36,8,139,108,36,48,41,202,137,84,36,4,
337 1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16, 348 137,113,252,252,137,116,36,24,137,141,233,255,141,68,193,252,248,137,44,36,
338 221,28,36,137,200,139,76,36,8,139,44,36,211,205,137,193,252,233,244,123,248, 349 137,133,233,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192,
339 115,184,237,252,233,244,54,248,117,184,237,248,54,139,108,36,48,41,202,137, 350 1,139,113,252,252,139,84,36,4,1,202,139,108,36,8,85,139,105,252,248,195,248,
340 113,252,252,137,116,36,24,137,84,36,8,137,141,233,141,68,193,252,248,137, 351 134,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,
341 44,36,141,144,233,137,133,233,139,73,252,248,59,149,233,15,135,244,251,252, 352 235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,135,15,182,131,
342 255,145,233,133,192,15,133,244,249,248,1,255,139,141,233,139,133,233,41,200, 353 233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,
343 193,232,3,131,192,1,139,105,252,248,139,84,36,8,1,202,57,113,252,252,15,133, 354 244,247,168,235,15,132,244,251,248,1,139,108,36,48,139,68,36,20,137,68,36,
344 244,248,252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,29,252,255, 355 8,137,149,233,137,116,36,4,137,44,36,232,251,1,20,248,4,139,149,233,15,182,
345 165,233,248,3,139,141,233,139,84,36,8,1,202,252,233,244,67,248,5,199,68,36, 356 78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,
346 4,237,232,251,1,0,252,233,244,1,248,64,93,137,108,36,8,139,108,36,48,41,202, 357 233,248,136,255,139,108,36,48,137,149,233,141,139,233,137,116,36,4,137,12,
347 137,84,36,4,137,113,252,252,137,116,36,24,137,141,233,255,141,68,193,252, 358 36,137,171,233,137,116,36,24,232,251,1,21,252,233,244,4,255,248,137,255,139,
348 248,137,44,36,137,133,233,232,251,1,19,139,141,233,139,133,233,41,200,193, 359 108,36,48,137,149,233,141,139,233,137,116,36,4,137,12,36,137,171,233,137,
349 232,3,131,192,1,139,113,252,252,139,84,36,4,1,202,139,108,36,8,85,139,105, 360 116,36,24,232,251,1,21,139,149,233,139,6,15,182,204,15,182,232,131,198,4,
350 252,248,195,248,134,255,15,182,131,233,168,235,15,133,244,251,168,235,15, 361 193,232,16,252,255,36,171,255,248,138,255,85,141,108,36,12,85,83,82,81,80,
351 133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248, 362 15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,252,248,139,93,
352 135,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255, 363 0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,252,236,239,252,
353 139,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,139,68, 364 247,131,233,237,15,132,244,247,252,242,15,17,125,216,252,242,15,17,117,208,
354 36,20,137,68,36,8,137,149,233,137,116,36,4,137,44,36,232,251,1,20,248,4,139, 365 252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242,
355 149,233,15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252, 366 15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,248,1,139,171,233,
356 255,164,253,171,233,248,136,255,139,108,36,48,141,139,233,137,116,36,4,137, 367 139,147,233,137,171,233,141,68,36,16,137,149,233,141,139,233,137,68,36,4,
357 12,36,137,171,233,137,116,36,24,137,149,233,232,251,1,21,252,233,244,4,255, 368 137,12,36,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48,255,
358 248,137,255,139,108,36,48,141,139,233,137,116,36,4,137,12,36,137,171,233, 369 248,139,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,
359 137,116,36,24,137,149,233,232,251,1,21,139,149,233,139,6,15,182,204,15,182, 370 131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
360 232,131,198,4,193,232,16,252,255,36,171,255,248,138,255,85,141,108,36,12, 371 255,248,79,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
361 85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117, 372 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
362 252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129, 373 36,8,195,248,81,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,
363 252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,17,125,216,252, 374 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
364 242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242,15, 375 68,36,8,195,248,102,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,
365 17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160, 376 102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,248,
366 248,1,139,171,233,139,147,233,137,171,233,141,68,36,16,137,149,233,141,139, 377 140,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,
367 233,137,68,36,4,137,12,36,232,251,1,22,137,196,139,149,233,139,116,36,24, 378 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,
368 137,108,36,48,255,248,139,255,139,122,252,248,139,191,233,139,191,233,199, 379 222,252,233,195,248,86,217,252,234,222,201,248,141,217,84,36,4,129,124,36,
369 131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193, 380 4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,
370 232,16,252,255,36,171,255,248,79,217,124,36,4,137,68,36,8,102,184,0,4,102, 381 248,142,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
371 11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252, 382 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,248,105,219,84,
372 217,108,36,4,139,68,36,8,195,248,81,217,124,36,4,137,68,36,8,102,184,0,8, 383 36,4,219,68,36,4,255,223,252,233,255,80,221,252,233,223,224,158,88,255,15,
373 102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252, 384 133,244,254,15,138,244,255,221,216,248,143,80,139,68,36,8,131,252,248,1,15,
374 252,217,108,36,4,139,68,36,8,195,248,102,217,124,36,4,137,68,36,8,102,184, 385 142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209,232,252,233,244,
375 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 386 1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209,232,15,132,244,250,
376 139,68,36,8,195,248,140,217,193,216,252,241,217,124,36,4,102,184,0,4,102, 387 15,131,244,3,255,220,201,252,233,244,3,248,4,222,201,248,5,88,195,248,6,15,
377 11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252, 388 132,244,5,15,130,244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,
378 217,108,36,4,222,201,222,252,233,195,248,86,217,252,234,222,201,248,141,217, 389 132,244,5,252,233,244,1,248,7,221,216,217,232,88,195,248,8,80,217,84,36,8,
379 84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252, 390 217,201,217,84,36,12,139,68,36,8,209,224,61,0,0,0,252,255,15,132,244,248,
380 255,15,132,244,248,248,142,217,192,217,252,252,220,252,233,217,201,217,252, 391 139,68,36,12,209,224,15,132,244,250,61,0,0,0,252,255,15,132,244,250,255,88,
381 240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238, 392 217,252,241,252,233,244,142,248,9,217,232,255,223,252,234,255,80,221,252,
382 195,248,105,219,84,36,4,219,68,36,4,255,223,252,233,255,80,221,252,233,223, 393 234,223,224,158,88,255,15,132,244,247,217,201,248,1,221,216,195,248,2,217,
383 224,158,88,255,15,133,244,254,15,138,244,255,221,216,248,143,80,139,68,36, 394 225,217,232,255,221,252,233,223,224,158,255,15,132,244,249,221,216,217,225,
384 8,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209, 395 217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,8,15,137,244,249,217,
385 232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209, 396 201,248,3,221,217,217,225,88,195,248,4,131,124,36,8,0,15,141,244,3,221,216,
386 232,15,132,244,250,15,131,244,3,255,220,201,252,233,244,3,248,4,222,201,248, 397 221,216,133,192,88,15,132,244,251,217,252,238,195,248,5,199,68,36,8,0,0,128,
387 5,88,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,241,252,247,216, 398 127,217,68,36,8,195,248,144,139,68,36,12,221,68,36,4,131,252,248,1,15,130,
388 131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,232,88,195,248, 399 244,79,15,132,244,81,131,252,248,3,15,130,244,102,15,135,244,247,255,217,
389 8,80,217,84,36,8,217,201,217,84,36,12,139,68,36,8,209,224,61,0,0,0,252,255, 400 252,250,195,248,1,131,252,248,5,15,130,244,86,15,132,244,141,131,252,248,
390 15,132,244,248,139,68,36,12,209,224,15,132,244,250,61,0,0,0,252,255,15,132, 401 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,
391 244,250,255,88,217,252,241,252,233,244,142,248,9,217,232,255,223,252,234, 402 217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
392 255,80,221,252,234,223,224,158,88,255,15,132,244,247,217,201,248,1,221,216, 403 244,248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,
393 195,248,2,217,225,217,232,255,221,252,233,223,224,158,255,15,132,244,249, 404 252,248,11,15,132,244,247,15,135,244,255,255,217,252,255,195,248,1,217,252,
394 221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,8,15, 405 242,221,216,195,248,9,204,248,145,139,68,36,20,221,68,36,4,221,68,36,12,131,
395 137,244,249,217,201,248,3,221,217,217,225,88,195,248,4,131,124,36,8,0,15, 406 252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,233,195,
396 141,244,3,221,216,221,216,133,192,88,15,132,244,251,217,252,238,195,248,5, 407 248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,
397 199,68,36,8,0,0,128,127,217,68,36,8,195,248,144,139,68,36,12,221,68,36,4, 408 249,195,248,2,131,252,248,5,15,130,244,140,15,132,244,105,131,252,248,7,15,
398 131,252,248,1,15,130,244,79,15,132,244,81,131,252,248,3,15,130,244,102,15, 409 132,244,247,255,15,135,244,248,221,216,217,224,195,248,1,221,216,217,225,
399 135,244,247,255,217,252,250,195,248,1,131,252,248,5,15,130,244,86,15,132, 410 195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,195,248,
400 244,141,131,252,248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217, 411 1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,
401 252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15, 412 135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,218,209,
402 132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 413 221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,
403 252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,217,252, 414 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
404 255,195,248,1,217,252,242,221,216,195,248,9,204,248,145,139,68,36,20,221, 415 248,2,221,216,195,255,248,9,204,248,146,156,90,137,209,129,252,242,0,0,32,
405 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, 416 0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,
406 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 417 124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,129,124,253,
407 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,140,15,132, 418 202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,221,4,202,221,
408 244,105,131,252,248,7,15,132,244,247,255,15,135,244,248,221,216,217,224,195, 419 4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,
409 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, 420 134,244,248,255,15,135,244,248,255,15,131,244,248,255,248,1,15,183,70,252,
410 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 421 254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,
411 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, 422 16,252,255,36,171,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,
412 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 423 251,129,124,253,202,4,239,15,135,244,251,221,4,202,221,4,194,255,15,138,244,
413 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 424 248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,
414 244,248,217,201,248,2,221,216,195,255,248,9,204,248,146,156,90,137,209,129, 425 252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,
415 252,242,0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87, 426 134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15,131,
416 83,15,162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195, 427 244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,
417 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244, 428 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,
418 41,221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233, 429 49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131,198,4,129,
419 223,224,158,255,15,134,244,248,255,15,135,244,248,255,15,131,244,248,255, 430 124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4,129,124,
420 248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182, 431 253,202,4,239,15,135,244,248,221,4,202,221,4,199,255,252,247,208,131,198,
421 232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129,252, 432 4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244,
422 253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,221,4,202,221, 433 247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,
423 4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247, 434 70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,
424 255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70, 435 4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,137,
425 252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129, 436 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
426 252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252, 437 49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,
427 253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,
428 235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,252,
429 247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,
430 255,131,198,4,129,124,253,202,4,239,15,135,244,248,221,4,202,221,4,199,255,
431 252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,
432 239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,
433 44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,
434 182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,
435 108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
436 255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,
437 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,
438 253,194,4,239,15,135,244,48,221,4,194,217,224,221,28,202,139,6,15,182,204,
439 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239, 438 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239,
440 15,133,244,248,139,4,194,219,128,233,248,1,221,28,202,139,6,15,182,204,15, 439 15,135,244,48,221,4,194,217,224,221,28,202,139,6,15,182,204,15,182,232,131,
441 182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,15, 440 198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,133,244,248,
442 133,244,50,139,12,194,137,213,232,251,1,18,137,4,36,137,252,234,219,4,36, 441 139,4,194,219,128,233,248,1,221,28,202,139,6,15,182,204,15,182,232,131,198,
443 15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124, 442 4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,50,139,
444 253,252,234,4,239,15,135,244,46,221,4,252,234,220,4,199,255,129,124,253,252, 443 12,194,137,213,232,251,1,18,137,4,36,137,252,234,219,4,36,15,182,78,252,253,
445 234,4,239,15,135,244,47,221,4,199,220,4,252,234,255,129,124,253,252,234,4, 444 252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,
446 239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,221,4,252,234,220,4, 445 15,135,244,46,221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,
447 194,255,129,124,253,252,234,4,239,15,135,244,46,221,4,252,234,220,36,199, 446 244,47,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,
448 255,129,124,253,252,234,4,239,15,135,244,47,221,4,199,220,36,252,234,255, 447 129,124,253,194,4,239,15,135,244,49,221,4,252,234,220,4,194,255,129,124,253,
448 252,234,4,239,15,135,244,46,221,4,252,234,220,36,199,255,129,124,253,252,
449 234,4,239,15,135,244,47,221,4,199,220,36,252,234,255,129,124,253,252,234,
450 4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,221,4,252,234,220,
451 36,194,255,129,124,253,252,234,4,239,15,135,244,46,221,4,252,234,220,12,199,
452 255,129,124,253,252,234,4,239,15,135,244,47,221,4,199,220,12,252,234,255,
449 129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244, 453 129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,
450 49,221,4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,135,244,46,221, 454 49,221,4,252,234,220,12,194,255,129,124,253,252,234,4,239,15,135,244,46,221,
451 4,252,234,220,12,199,255,129,124,253,252,234,4,239,15,135,244,47,221,4,199, 455 4,252,234,220,52,199,255,129,124,253,252,234,4,239,15,135,244,47,221,4,199,
452 220,12,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194, 456 220,52,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,
453 4,239,15,135,244,49,221,4,252,234,220,12,194,255,129,124,253,252,234,4,239, 457 4,239,15,135,244,49,221,4,252,234,220,52,194,255,129,124,253,252,234,4,239,
454 15,135,244,46,221,4,252,234,220,52,199,255,129,124,253,252,234,4,239,15,135, 458 15,135,244,46,221,4,252,234,221,4,199,255,129,124,253,252,234,4,239,15,135,
455 244,47,221,4,199,220,52,252,234,255,129,124,253,252,234,4,239,15,135,244, 459 244,47,221,4,199,221,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,
456 49,129,124,253,194,4,239,15,135,244,49,221,4,252,234,220,52,194,255,129,124, 460 129,124,253,194,4,239,15,135,244,49,221,4,252,234,221,4,194,255,248,147,232,
457 253,252,234,4,239,15,135,244,46,221,4,252,234,221,4,199,255,129,124,253,252, 461 244,140,221,28,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
458 234,4,239,15,135,244,47,221,4,199,221,4,252,234,255,129,124,253,252,234,4, 462 36,171,255,252,233,244,147,255,232,244,105,221,28,202,139,6,15,182,204,15,
459 239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,221,4,252,234,221,4, 463 182,232,131,198,4,193,232,16,252,255,36,171,255,15,182,252,236,15,182,192,
460 194,255,248,147,232,244,140,221,28,202,139,6,15,182,204,15,182,232,131,198, 464 141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,
461 4,193,232,16,252,255,36,171,255,252,233,244,147,255,232,244,105,221,28,202, 465 137,116,36,24,137,149,233,232,251,1,23,139,149,233,133,192,15,133,244,42,
462 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,182, 466 15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,
463 252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,108, 467 68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
464 36,48,137,44,36,137,116,36,24,137,149,233,232,251,1,23,139,149,233,133,192, 468 255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,
465 15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44, 469 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,223,70,252,254,
466 252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193, 470 221,28,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
467 232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202, 471 255,221,4,199,221,28,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
468 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,223,70, 472 252,255,36,171,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131,
469 252,254,221,28,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 473 198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,237,137,
470 36,171,255,221,4,199,221,28,202,139,6,15,182,204,15,182,232,131,198,4,193, 474 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,
471 232,16,252,255,36,171,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182, 475 182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,
472 232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189, 476 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,
473 237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,
474 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139, 477 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,
475 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139, 478 172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,
476 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252, 479 0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,
477 248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4, 480 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,232,239,
478 137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1, 481 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,
479 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129, 482 139,233,255,232,251,1,24,137,252,234,252,233,244,1,255,252,247,208,139,106,
480 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135, 483 252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,
481 213,141,139,233,255,232,251,1,24,137,252,234,252,233,244,1,255,252,247,208, 484 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,
482 139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4, 485 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,
483 237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232, 486 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252,
484 131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244, 487 233,244,1,255,139,106,252,248,221,4,199,139,172,253,141,233,139,141,233,221,
485 1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137, 488 25,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,
486 252,234,252,233,244,1,255,139,106,252,248,221,4,199,139,172,253,141,233,139, 489 247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,
487 141,233,221,25,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 490 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,
488 171,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65, 491 233,139,108,36,48,131,189,233,0,15,132,244,247,141,12,202,137,76,36,4,137,
489 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141, 492 44,36,137,149,233,232,251,1,25,139,149,233,248,1,139,6,15,182,204,15,182,
490 180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,141,12,202,137, 493 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,
491 76,36,4,137,44,36,137,149,233,232,251,1,25,139,149,233,248,1,139,6,15,182, 494 4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,116,36,24,137,44,36,137,149,
492 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74, 495 233,232,251,1,26,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
493 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,116,36,24,137, 496 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,197,
494 44,36,137,149,233,232,251,1,26,139,149,233,15,182,78,252,253,137,4,202,199, 497 37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,148,209,137,108,36,8,
495 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 498 1,200,139,108,36,48,1,200,137,68,36,4,137,116,36,24,139,139,233,137,44,36,
496 171,255,137,197,37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,148,209, 499 59,139,233,137,149,233,15,131,244,248,248,1,232,251,1,27,139,149,233,15,182,
497 137,108,36,8,1,200,139,108,36,48,1,200,137,68,36,4,137,116,36,24,139,139, 500 78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,
498 233,137,44,36,59,139,233,137,149,233,15,131,244,248,248,1,232,251,1,27,139, 501 4,193,232,16,252,255,36,171,248,2,137,252,233,232,251,1,28,252,233,244,1,
499 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15, 502 255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,
500 182,232,131,198,4,193,232,16,252,255,36,171,248,2,137,252,233,232,251,1,28, 503 233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,29,139,149,233,
501 252,233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59, 504 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,
502 139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1, 505 131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,28,15,183,
503 29,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182, 506 70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,139,
504 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232, 507 173,233,139,4,135,252,233,244,148,255,252,247,208,139,106,252,248,139,173,
505 251,1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139, 508 233,139,4,135,252,233,244,149,255,15,182,252,236,15,182,192,129,124,253,252,
506 106,252,248,139,173,233,139,4,135,252,233,244,148,255,252,247,208,139,106, 509 234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,
507 252,248,139,173,233,139,4,135,252,233,244,149,255,15,182,252,236,15,182,192, 510 221,4,194,219,20,36,219,4,36,255,139,4,36,15,133,244,36,59,133,233,15,131,
508 129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4, 511 244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,
509 239,15,135,244,251,221,4,194,219,20,36,219,4,36,255,139,4,36,15,133,244,36, 512 139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,
510 59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244, 513 232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,
511 248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182, 514 129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,129,124,
512 232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1, 515 253,194,4,239,15,133,244,36,139,4,194,252,233,244,148,255,15,182,252,236,
513 139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244, 516 15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,
514 1,248,5,255,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,148, 517 139,44,252,234,248,148,139,141,233,35,136,233,105,201,239,3,141,233,248,1,
515 255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4, 518 129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,
516 239,15,133,244,34,139,44,252,234,248,148,139,141,233,35,136,233,105,201,239, 519 15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,
517 3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250, 520 76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
518 129,121,253,4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44, 521 248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,
519 194,248,2,255,137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232, 522 133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,
520 16,252,255,36,171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139, 523 244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
521 137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246, 524 239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,
522 129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129, 525 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,
523 124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244, 526 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
524 35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139, 527 248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,
525 64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232, 528 35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,
526 16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129, 529 139,44,252,234,129,124,253,194,4,239,15,135,244,251,221,4,194,219,20,36,219,
527 233,235,15,132,244,35,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 530 4,36,255,139,4,36,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,
528 239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,221, 531 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
529 4,194,219,20,36,219,4,36,255,139,4,36,15,133,244,39,59,133,233,15,131,244, 532 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,
530 39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133, 533 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,
531 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139, 534 139,141,233,255,252,246,129,233,235,15,132,244,39,15,182,78,252,253,252,233,
532 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189, 535 244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,194,252,233,244,149,
533 233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,39,15,182, 536 248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,
534 78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4, 537 252,233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,
535 194,252,233,244,149,248,7,128,165,233,235,139,139,233,137,171,233,137,141, 538 253,252,234,4,239,15,133,244,37,139,44,252,234,248,149,139,141,233,35,136,
536 233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,252,247, 539 233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,
537 208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248, 540 251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,
538 149,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,129, 541 252,246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4,
539 185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,15, 542 139,4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
540 132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,70, 543 252,255,36,171,248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,
541 252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,182,232, 544 246,129,233,235,15,132,244,37,139,12,36,252,233,244,2,248,5,139,137,233,133,
542 131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,2,137, 545 201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,
543 12,36,139,141,233,252,246,129,233,235,15,132,244,37,139,12,36,252,233,244, 546 15,132,244,37,248,6,137,68,36,16,199,68,36,20,237,141,68,36,16,137,108,36,
544 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244, 547 12,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,116,36,24,137,149,
545 252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,68,36,20,237, 548 233,232,251,1,30,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,
546 141,68,36,16,137,108,36,12,137,108,36,4,139,108,36,48,137,68,36,8,137,44, 549 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15,182,
547 36,137,116,36,24,137,149,233,232,251,1,30,139,149,233,139,108,36,12,137,193, 550 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,
548 252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252, 551 59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
549 233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133, 552 249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,
550 244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, 553 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
551 253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139, 554 36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
552 108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198, 555 15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
553 4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141, 556 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,
554 233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248, 557 16,221,4,199,219,92,36,12,248,1,141,12,202,139,105,252,248,252,246,133,233,
555 7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252, 558 235,15,133,244,253,248,2,139,68,36,20,139,124,36,12,131,232,1,15,132,244,
556 233,244,2,255,137,124,36,16,221,4,199,219,92,36,12,248,1,141,12,202,139,105, 559 250,1,252,248,59,133,233,15,131,244,251,41,252,248,193,231,3,3,189,233,248,
557 252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,20,139,124,36, 560 3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,
558 12,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,244,251,41,252,248, 561 244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
559 193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131, 562 252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,
560 199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182, 563 116,36,24,137,149,233,232,251,1,31,139,149,233,15,182,78,252,253,252,233,
561 232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,48, 564 244,1,248,7,255,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,
562 137,68,36,8,137,44,36,137,116,36,24,137,149,233,232,251,1,31,139,149,233, 565 244,2,255,3,68,36,20,255,141,76,202,8,139,105,252,248,129,121,253,252,252,
563 15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,137, 566 239,15,133,244,29,252,255,165,233,255,141,76,202,8,137,215,139,105,252,248,
564 171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,141,76,202,8,139,105, 567 129,121,253,252,252,239,15,133,244,29,248,51,139,114,252,252,252,247,198,
565 252,248,129,121,253,252,252,239,15,133,244,29,252,255,165,233,255,141,76, 568 237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,244,
566 202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,51, 569 249,248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232,1,
567 139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137, 570 15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1,15,135,244,251,248,
568 68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,4, 571 4,139,68,36,20,252,255,165,233,248,5,255,252,247,198,237,15,133,244,4,15,
569 131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209, 572 182,70,252,253,252,247,208,141,20,194,139,122,252,248,139,191,233,139,191,
570 128,189,233,1,15,135,244,251,248,4,139,68,36,20,252,255,165,233,248,5,255, 573 233,252,233,244,4,248,7,15,139,244,1,131,230,252,248,41,252,242,137,215,139,
571 252,247,198,237,15,133,244,4,15,182,70,252,253,252,247,208,141,20,194,139, 574 114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,
572 122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,244,1,131, 575 41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,
573 230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,141,76,202, 576 139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,3,0,0,0,15,
574 8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,244, 577 133,244,29,252,255,165,233,255,15,182,252,236,139,66,252,248,141,12,202,139,
575 137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,252, 578 128,233,15,182,128,233,137,124,36,8,141,188,253,194,233,43,122,252,252,133,
576 129,252,248,239,184,3,0,0,0,15,133,244,29,252,255,165,233,255,15,182,252, 579 252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248,
577 236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124,36,8,141, 580 1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,
578 188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233, 581 233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,
579 252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131, 582 233,15,130,244,2,248,3,139,124,36,8,139,6,15,182,204,15,182,232,131,198,4,
580 199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248, 583 193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,
581 2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,8,139,6, 584 134,244,3,255,137,197,193,252,237,3,137,108,36,4,131,197,1,137,108,36,20,
582 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36, 585 139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,139,71,252,248,137,1,
583 20,1,0,0,0,137,208,41,252,248,15,134,244,3,255,137,197,193,252,237,3,137, 586 139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,252,233,244,
584 108,36,4,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135,244, 587 3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,137,44,36,232,251,1,
585 253,248,6,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193, 588 0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,
586 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116, 589 114,252,252,137,68,36,20,252,247,198,237,15,133,244,253,255,248,17,137,215,
587 36,24,41,215,137,44,36,232,251,1,0,139,149,233,139,141,233,1,215,252,233, 590 131,232,1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,
588 244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,237, 591 111,252,252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,
589 15,133,244,253,255,248,17,137,215,131,232,1,15,132,244,249,248,2,139,44,15, 592 252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,
590 137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15,133,244, 593 44,10,137,106,252,248,255,15,182,78,252,253,252,247,209,141,20,202,139,122,
591 2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252,255,139, 594 252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,
592 108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,15,182,78,252,253, 595 232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,
593 252,247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182, 596 252,244,237,255,131,192,1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,
594 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252, 597 41,252,242,255,1,252,241,255,137,252,245,209,252,237,129,229,239,102,131,
595 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 598 172,253,43,233,1,15,132,244,136,255,141,12,202,255,129,121,253,4,239,15,135,
596 7,15,139,244,18,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245, 599 244,52,129,121,253,12,239,15,135,244,52,255,139,105,20,255,129,252,253,239,
597 209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,136,255,141,12, 600 15,135,244,52,255,221,65,8,221,1,255,220,65,16,221,17,255,221,81,24,133,252,
598 202,255,129,121,253,4,239,15,135,244,52,129,121,253,12,239,15,135,244,52, 601 237,15,136,244,247,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248,
599 255,139,105,20,255,129,252,253,239,15,135,244,52,255,221,65,8,221,1,255,220, 602 141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,
600 65,16,221,17,255,221,81,24,133,252,237,15,136,244,247,217,201,248,1,255,15, 603 255,15,130,244,248,141,180,253,134,233,255,141,12,202,139,105,4,129,252,253,
601 183,70,252,254,255,15,131,244,248,141,180,253,134,233,255,141,180,253,134, 604 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,
602 233,15,183,70,252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255, 605 255,141,180,253,134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,
603 141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139, 606 233,139,4,129,139,128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,
604 41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252, 607 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
605 252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,137, 608 252,255,36,171,255,254,0
606 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,
607 15,182,232,131,198,4,193,232,16,252,255,36,171,255,254,0
608}; 609};
609 610
610enum { 611enum {
@@ -969,127 +970,127 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
969 dasm_put(Dst, 1650, LJ_TISTRUECOND, Dt1(->base)); 970 dasm_put(Dst, 1650, LJ_TISTRUECOND, Dt1(->base));
970 dasm_put(Dst, 1742, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base)); 971 dasm_put(Dst, 1742, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base));
971 dasm_put(Dst, 1921, Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1, LJ_TISTRUECOND); 972 dasm_put(Dst, 1921, Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1, LJ_TISTRUECOND);
972 dasm_put(Dst, 2068, 1+1, ~LJ_TNUMX); 973 dasm_put(Dst, 2070, 1+1, ~LJ_TNUMX);
973 if (cmov) { 974 if (cmov) {
974 dasm_put(Dst, 2097); 975 dasm_put(Dst, 2099);
975 } else { 976 } else {
976 dasm_put(Dst, 2101); 977 dasm_put(Dst, 2103);
977 } 978 }
978 dasm_put(Dst, 2110, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 979 dasm_put(Dst, 2112, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
979 dasm_put(Dst, 2197, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 980 dasm_put(Dst, 2200, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
980 dasm_put(Dst, 2252, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 981 dasm_put(Dst, 2255, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
981 dasm_put(Dst, 2323, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 982 dasm_put(Dst, 2327, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
982 dasm_put(Dst, 2388, 2+1, LJ_TTAB, 1+1, LJ_TISNUM, 1+1); 983 dasm_put(Dst, 2392, 2+1, LJ_TTAB, 1+1, LJ_TISNUM, 1+1);
983 dasm_put(Dst, 2495, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 984 dasm_put(Dst, 2499, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
984 dasm_put(Dst, 2556, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->base), 1+2); 985 dasm_put(Dst, 2560, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->base), 1+2);
985 dasm_put(Dst, 2702, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL); 986 dasm_put(Dst, 2706, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL);
986 dasm_put(Dst, 2763, 1+3, 1+1, LJ_TTAB, LJ_TISNUM, Dt6(->asize), Dt6(->array), LJ_TNIL); 987 dasm_put(Dst, 2767, 1+3, 1+1, LJ_TTAB, LJ_TISNUM, Dt6(->asize), Dt6(->array), LJ_TNIL);
987 dasm_put(Dst, 2843, Dt6(->hmask), 1+0, 1+1, LJ_TTAB, Dt8(->upvalue[0])); 988 dasm_put(Dst, 2847, Dt6(->hmask), 1+0, 1+1, LJ_TTAB, Dt8(->upvalue[0]));
988 dasm_put(Dst, 2924, LJ_TFUNC, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 989 dasm_put(Dst, 2928, LJ_TFUNC, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
989 dasm_put(Dst, 3003, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1); 990 dasm_put(Dst, 3007, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1);
990 dasm_put(Dst, 3088, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack)); 991 dasm_put(Dst, 3092, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack));
991 dasm_put(Dst, 3159, Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top)); 992 dasm_put(Dst, 3163, Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top));
992 dasm_put(Dst, 3267, Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top)); 993 dasm_put(Dst, 3271, Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top));
993 dasm_put(Dst, 3373, Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD); 994 dasm_put(Dst, 3377, Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD);
994 dasm_put(Dst, 3465, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 995 dasm_put(Dst, 3469, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
995 dasm_put(Dst, 3573, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 996 dasm_put(Dst, 3577, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
996 dasm_put(Dst, 3665, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD); 997 dasm_put(Dst, 3669, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD);
997 dasm_put(Dst, 3764, Dt1(->status), 1+1, LJ_TISNUM, 1+1, FRAME_TYPE); 998 dasm_put(Dst, 3768, Dt1(->status), 1+1, LJ_TISNUM, 1+1, FRAME_TYPE);
998 dasm_put(Dst, 3831, LJ_TNIL, 1+1, LJ_TISNUM, 1+1); 999 dasm_put(Dst, 3835, LJ_TNIL, 1+1, LJ_TISNUM, 1+1);
999 dasm_put(Dst, 3916, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1000 dasm_put(Dst, 3920, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1000 dasm_put(Dst, 3973, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1001 dasm_put(Dst, 3977, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1001 dasm_put(Dst, 4040, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1002 dasm_put(Dst, 4044, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1002 dasm_put(Dst, 4097, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1003 dasm_put(Dst, 4101, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1003 dasm_put(Dst, 4165, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1004 dasm_put(Dst, 4169, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1004 dasm_put(Dst, 4259, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1005 dasm_put(Dst, 4263, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1005 dasm_put(Dst, 4358, LJ_TISNUM, 1+1, LJ_TISNUM, Dt8(->upvalue[0]), 2+1); 1006 dasm_put(Dst, 4362, LJ_TISNUM, 1+1, LJ_TISNUM, Dt8(->upvalue[0]), 2+1);
1006 dasm_put(Dst, 4434, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1007 dasm_put(Dst, 4438, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1007 dasm_put(Dst, 4509, 1+1, LJ_TISNUM, 1+2); 1008 dasm_put(Dst, 4513, 1+1, LJ_TISNUM, 1+2);
1008 dasm_put(Dst, 4633, 1+1, LJ_TISNUM, 1+2); 1009 dasm_put(Dst, 4639, 1+1, LJ_TISNUM, 1+2);
1009 dasm_put(Dst, 4742, 2+1, LJ_TISNUM, LJ_TISNUM); 1010 dasm_put(Dst, 4750, 2+1, LJ_TISNUM, LJ_TISNUM);
1010 dasm_put(Dst, 4821, 2+1, LJ_TISNUM, LJ_TISNUM, 1+1, LJ_TISNUM); 1011 dasm_put(Dst, 4829, 2+1, LJ_TISNUM, LJ_TISNUM, 1+1, LJ_TISNUM);
1011 dasm_put(Dst, 4879, LJ_TISNUM); 1012 dasm_put(Dst, 4887, LJ_TISNUM);
1012 if (cmov) { 1013 if (cmov) {
1013 dasm_put(Dst, 4913);
1014 } else {
1015 dasm_put(Dst, 4921); 1014 dasm_put(Dst, 4921);
1015 } else {
1016 dasm_put(Dst, 4929);
1016 } 1017 }
1017 dasm_put(Dst, 4942, 1+1, LJ_TISNUM, LJ_TISNUM); 1018 dasm_put(Dst, 4950, 1+1, LJ_TISNUM, LJ_TISNUM);
1018 if (cmov) { 1019 if (cmov) {
1019 dasm_put(Dst, 5002);
1020 } else {
1021 dasm_put(Dst, 5010); 1020 dasm_put(Dst, 5010);
1021 } else {
1022 dasm_put(Dst, 5018);
1022 } 1023 }
1023 dasm_put(Dst, 5031, 1+1, LJ_TSTR, Dt5(->len), 1+1, LJ_TSTR); 1024 dasm_put(Dst, 5039, 1+1, LJ_TSTR, Dt5(->len), 1+1, LJ_TSTR);
1024 dasm_put(Dst, 5090, Dt5(->len), Dt5([1]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1025 dasm_put(Dst, 5098, Dt5(->len), Dt5([1]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1025 dasm_put(Dst, 5149, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2); 1026 dasm_put(Dst, 5159, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2);
1026 dasm_put(Dst, 5274, LJ_TISNUM, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1027 dasm_put(Dst, 5284, LJ_TISNUM, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1027 dasm_put(Dst, 5365, sizeof(GCstr)-1); 1028 dasm_put(Dst, 5375, sizeof(GCstr)-1);
1028 dasm_put(Dst, 5439, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, LJ_TISNUM); 1029 dasm_put(Dst, 5449, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, LJ_TISNUM);
1029 dasm_put(Dst, 5512, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), 1+1, DISPATCH_GL(gc.total)); 1030 dasm_put(Dst, 5522, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), 1+1, DISPATCH_GL(gc.total));
1030 dasm_put(Dst, 5579, DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1031 dasm_put(Dst, 5589, DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1031 dasm_put(Dst, 5660, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1032 dasm_put(Dst, 5670, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1032 dasm_put(Dst, 5719, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1, DISPATCH_GL(gc.total)); 1033 dasm_put(Dst, 5729, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1, DISPATCH_GL(gc.total));
1033 dasm_put(Dst, 5804, DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1034 dasm_put(Dst, 5814, DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1034 dasm_put(Dst, 5879, 1+1, LJ_TTAB, 1+1); 1035 dasm_put(Dst, 5889, 1+1, LJ_TTAB, 1+1);
1035 dasm_put(Dst, 5972, LJ_TISNUM, 1+1, LJ_TISNUM, LJ_TISNUM); 1036 dasm_put(Dst, 5982, LJ_TISNUM, 1+1, LJ_TISNUM, LJ_TISNUM);
1036 dasm_put(Dst, 6092, 1+1, LJ_TISNUM, LJ_TISNUM, 1+1, LJ_TISNUM); 1037 dasm_put(Dst, 6102, 1+1, LJ_TISNUM, LJ_TISNUM, 1+1, LJ_TISNUM);
1037 dasm_put(Dst, 6194, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1038 dasm_put(Dst, 6204, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1038 dasm_put(Dst, 6315, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1039 dasm_put(Dst, 6325, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1039 dasm_put(Dst, 6445, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1040 dasm_put(Dst, 6455, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1040 dasm_put(Dst, 6546, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM); 1041 dasm_put(Dst, 6556, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM);
1041 dasm_put(Dst, 6685, LJ_TISNUM, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f)); 1042 dasm_put(Dst, 6695, LJ_TISNUM, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f));
1042 dasm_put(Dst, 6812, Dt1(->base), Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base)); 1043 dasm_put(Dst, 6822, Dt1(->base), Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base));
1043 dasm_put(Dst, 6923, Dt1(->top), Dt1(->base), Dt1(->top)); 1044 dasm_put(Dst, 6933, Dt1(->top), Dt1(->base), Dt1(->top));
1044#if LJ_HASJIT 1045#if LJ_HASJIT
1045 dasm_put(Dst, 6975, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1046 dasm_put(Dst, 6985, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1046#endif 1047#endif
1047 dasm_put(Dst, 7006, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base), GG_DISP_STATIC*4); 1048 dasm_put(Dst, 7016, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base), GG_DISP_STATIC*4);
1048#if LJ_HASJIT 1049#if LJ_HASJIT
1049 dasm_put(Dst, 7097, GG_DISP2J, DISPATCH_J(L), Dt1(->base)); 1050 dasm_put(Dst, 7107, Dt1(->base), GG_DISP2J, DISPATCH_J(L));
1050#endif 1051#endif
1051 dasm_put(Dst, 7130); 1052 dasm_put(Dst, 7140);
1052#if LJ_HASJIT 1053#if LJ_HASJIT
1053 dasm_put(Dst, 7133, GG_DISP2J, DISPATCH_J(L), Dt1(->base), Dt1(->base)); 1054 dasm_put(Dst, 7143, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base));
1054#endif 1055#endif
1055 dasm_put(Dst, 7183); 1056 dasm_put(Dst, 7193);
1056#if LJ_HASJIT 1057#if LJ_HASJIT
1057 dasm_put(Dst, 7186, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); 1058 dasm_put(Dst, 7196, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base));
1058#endif 1059#endif
1059 dasm_put(Dst, 7336); 1060 dasm_put(Dst, 7346);
1060#if LJ_HASJIT 1061#if LJ_HASJIT
1061 dasm_put(Dst, 7339, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1062 dasm_put(Dst, 7349, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1062#endif 1063#endif
1063 dasm_put(Dst, 7379); 1064 dasm_put(Dst, 7389);
1064 if (cmov) { 1065 if (cmov) {
1065 dasm_put(Dst, 7643); 1066 dasm_put(Dst, 7653);
1066 } else { 1067 } else {
1067 dasm_put(Dst, 7647); 1068 dasm_put(Dst, 7657);
1068 } 1069 }
1069 dasm_put(Dst, 7656); 1070 dasm_put(Dst, 7666);
1070 dasm_put(Dst, 7725); 1071 dasm_put(Dst, 7735);
1071 dasm_put(Dst, 7827); 1072 dasm_put(Dst, 7837);
1072 if (cmov) { 1073 if (cmov) {
1073 dasm_put(Dst, 7840); 1074 dasm_put(Dst, 7850);
1074 } else { 1075 } else {
1075 dasm_put(Dst, 7844); 1076 dasm_put(Dst, 7854);
1076 } 1077 }
1077 dasm_put(Dst, 7853); 1078 dasm_put(Dst, 7863);
1078 if (cmov) { 1079 if (cmov) {
1079 dasm_put(Dst, 7643); 1080 dasm_put(Dst, 7653);
1080 } else { 1081 } else {
1081 dasm_put(Dst, 7871); 1082 dasm_put(Dst, 7881);
1082 } 1083 }
1083 dasm_put(Dst, 7878); 1084 dasm_put(Dst, 7888);
1084 dasm_put(Dst, 7993); 1085 dasm_put(Dst, 8003);
1085 dasm_put(Dst, 8086); 1086 dasm_put(Dst, 8096);
1086 dasm_put(Dst, 8182); 1087 dasm_put(Dst, 8192);
1087 if (cmov) { 1088 if (cmov) {
1088 dasm_put(Dst, 8241); 1089 dasm_put(Dst, 8251);
1089 } else { 1090 } else {
1090 dasm_put(Dst, 8260); 1091 dasm_put(Dst, 8270);
1091 } 1092 }
1092 dasm_put(Dst, 8301); 1093 dasm_put(Dst, 8311);
1093} 1094}
1094 1095
1095/* Generate the code for a single instruction. */ 1096/* Generate the code for a single instruction. */
@@ -1105,403 +1106,403 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov)
1105 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1106 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1106 1107
1107 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1108 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1108 dasm_put(Dst, 8358, LJ_TISNUM, LJ_TISNUM); 1109 dasm_put(Dst, 8368, LJ_TISNUM, LJ_TISNUM);
1109 if (cmov) { 1110 if (cmov) {
1110 dasm_put(Dst, 8388); 1111 dasm_put(Dst, 8398);
1111 } else { 1112 } else {
1112 dasm_put(Dst, 8394); 1113 dasm_put(Dst, 8404);
1113 } 1114 }
1114 switch (op) { 1115 switch (op) {
1115 case BC_ISLT: 1116 case BC_ISLT:
1116 dasm_put(Dst, 8401); 1117 dasm_put(Dst, 8411);
1117 break; 1118 break;
1118 case BC_ISGE: 1119 case BC_ISGE:
1119 dasm_put(Dst, 8406); 1120 dasm_put(Dst, 8416);
1120 break; 1121 break;
1121 case BC_ISLE: 1122 case BC_ISLE:
1122 dasm_put(Dst, 5874); 1123 dasm_put(Dst, 5884);
1123 break; 1124 break;
1124 case BC_ISGT: 1125 case BC_ISGT:
1125 dasm_put(Dst, 8411); 1126 dasm_put(Dst, 8421);
1126 break; 1127 break;
1127 default: break; /* Shut up GCC. */ 1128 default: break; /* Shut up GCC. */
1128 } 1129 }
1129 dasm_put(Dst, 8416, -BCBIAS_J*4); 1130 dasm_put(Dst, 8426, -BCBIAS_J*4);
1130 break; 1131 break;
1131 1132
1132 case BC_ISEQV: case BC_ISNEV: 1133 case BC_ISEQV: case BC_ISNEV:
1133 vk = op == BC_ISEQV; 1134 vk = op == BC_ISEQV;
1134 dasm_put(Dst, 8449, LJ_TISNUM, LJ_TISNUM); 1135 dasm_put(Dst, 8459, LJ_TISNUM, LJ_TISNUM);
1135 if (cmov) { 1136 if (cmov) {
1136 dasm_put(Dst, 8388); 1137 dasm_put(Dst, 8398);
1137 } else { 1138 } else {
1138 dasm_put(Dst, 8394); 1139 dasm_put(Dst, 8404);
1139 } 1140 }
1140 iseqne_fp: 1141 iseqne_fp:
1141 if (vk) { 1142 if (vk) {
1142 dasm_put(Dst, 8481); 1143 dasm_put(Dst, 8491);
1143 } else { 1144 } else {
1144 dasm_put(Dst, 8490); 1145 dasm_put(Dst, 8500);
1145 } 1146 }
1146 iseqne_end: 1147 iseqne_end:
1147 if (vk) { 1148 if (vk) {
1148 dasm_put(Dst, 8499, -BCBIAS_J*4); 1149 dasm_put(Dst, 8509, -BCBIAS_J*4);
1149 } else { 1150 } else {
1150 dasm_put(Dst, 8514, -BCBIAS_J*4); 1151 dasm_put(Dst, 8524, -BCBIAS_J*4);
1151 } 1152 }
1152 dasm_put(Dst, 7164); 1153 dasm_put(Dst, 7174);
1153 if (op == BC_ISEQV || op == BC_ISNEV) { 1154 if (op == BC_ISEQV || op == BC_ISNEV) {
1154 dasm_put(Dst, 8529, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1155 dasm_put(Dst, 8539, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1155 if (vk) { 1156 if (vk) {
1156 dasm_put(Dst, 8587); 1157 dasm_put(Dst, 8597);
1157 } else { 1158 } else {
1158 dasm_put(Dst, 8591); 1159 dasm_put(Dst, 8601);
1159 } 1160 }
1160 dasm_put(Dst, 8597); 1161 dasm_put(Dst, 8607);
1161 } 1162 }
1162 break; 1163 break;
1163 case BC_ISEQS: case BC_ISNES: 1164 case BC_ISEQS: case BC_ISNES:
1164 vk = op == BC_ISEQS; 1165 vk = op == BC_ISEQS;
1165 dasm_put(Dst, 8602, LJ_TSTR); 1166 dasm_put(Dst, 8612, LJ_TSTR);
1166 iseqne_test: 1167 iseqne_test:
1167 if (vk) { 1168 if (vk) {
1168 dasm_put(Dst, 8485); 1169 dasm_put(Dst, 8495);
1169 } else { 1170 } else {
1170 dasm_put(Dst, 8177); 1171 dasm_put(Dst, 8187);
1171 } 1172 }
1172 goto iseqne_end; 1173 goto iseqne_end;
1173 case BC_ISEQN: case BC_ISNEN: 1174 case BC_ISEQN: case BC_ISNEN:
1174 vk = op == BC_ISEQN; 1175 vk = op == BC_ISEQN;
1175 dasm_put(Dst, 8625, LJ_TISNUM); 1176 dasm_put(Dst, 8635, LJ_TISNUM);
1176 if (cmov) { 1177 if (cmov) {
1177 dasm_put(Dst, 8388); 1178 dasm_put(Dst, 8398);
1178 } else { 1179 } else {
1179 dasm_put(Dst, 8394); 1180 dasm_put(Dst, 8404);
1180 } 1181 }
1181 goto iseqne_fp; 1182 goto iseqne_fp;
1182 case BC_ISEQP: case BC_ISNEP: 1183 case BC_ISEQP: case BC_ISNEP:
1183 vk = op == BC_ISEQP; 1184 vk = op == BC_ISEQP;
1184 dasm_put(Dst, 8645); 1185 dasm_put(Dst, 8655);
1185 goto iseqne_test; 1186 goto iseqne_test;
1186 1187
1187 /* -- Unary test and copy ops ------------------------------------------- */ 1188 /* -- Unary test and copy ops ------------------------------------------- */
1188 1189
1189 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1190 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1190 dasm_put(Dst, 8656, LJ_TISTRUECOND); 1191 dasm_put(Dst, 8666, LJ_TISTRUECOND);
1191 if (op == BC_IST || op == BC_ISTC) { 1192 if (op == BC_IST || op == BC_ISTC) {
1192 dasm_put(Dst, 8668); 1193 dasm_put(Dst, 8678);
1193 } else { 1194 } else {
1194 dasm_put(Dst, 8673); 1195 dasm_put(Dst, 8683);
1195 } 1196 }
1196 if (op == BC_ISTC || op == BC_ISFC) { 1197 if (op == BC_ISTC || op == BC_ISFC) {
1197 dasm_put(Dst, 8678); 1198 dasm_put(Dst, 8688);
1198 } 1199 }
1199 dasm_put(Dst, 8689, -BCBIAS_J*4); 1200 dasm_put(Dst, 8699, -BCBIAS_J*4);
1200 break; 1201 break;
1201 1202
1202 /* -- Unary ops --------------------------------------------------------- */ 1203 /* -- Unary ops --------------------------------------------------------- */
1203 1204
1204 case BC_MOV: 1205 case BC_MOV:
1205 dasm_put(Dst, 8720); 1206 dasm_put(Dst, 8730);
1206 break; 1207 break;
1207 case BC_NOT: 1208 case BC_NOT:
1208 dasm_put(Dst, 8753, LJ_TISTRUECOND, LJ_TTRUE); 1209 dasm_put(Dst, 8763, LJ_TISTRUECOND, LJ_TTRUE);
1209 break; 1210 break;
1210 case BC_UNM: 1211 case BC_UNM:
1211 dasm_put(Dst, 8788, LJ_TISNUM); 1212 dasm_put(Dst, 8798, LJ_TISNUM);
1212 break; 1213 break;
1213 case BC_LEN: 1214 case BC_LEN:
1214 dasm_put(Dst, 8825, LJ_TSTR, Dt5(->len), LJ_TTAB); 1215 dasm_put(Dst, 8835, LJ_TSTR, Dt5(->len), LJ_TTAB);
1215 break; 1216 break;
1216 1217
1217 /* -- Binary ops -------------------------------------------------------- */ 1218 /* -- Binary ops -------------------------------------------------------- */
1218 1219
1219 1220
1220 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1221 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1221 dasm_put(Dst, 8904); 1222 dasm_put(Dst, 8914);
1222 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1223 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1223 switch (vk) { 1224 switch (vk) {
1224 case 0: 1225 case 0:
1225 dasm_put(Dst, 8912, LJ_TISNUM); 1226 dasm_put(Dst, 8922, LJ_TISNUM);
1226 break; 1227 break;
1227 case 1: 1228 case 1:
1228 dasm_put(Dst, 8931, LJ_TISNUM); 1229 dasm_put(Dst, 8941, LJ_TISNUM);
1229 break; 1230 break;
1230 default: 1231 default:
1231 dasm_put(Dst, 8950, LJ_TISNUM, LJ_TISNUM); 1232 dasm_put(Dst, 8960, LJ_TISNUM, LJ_TISNUM);
1232 break; 1233 break;
1233 } 1234 }
1234 dasm_put(Dst, 8803); 1235 dasm_put(Dst, 8813);
1235 break; 1236 break;
1236 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1237 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1237 dasm_put(Dst, 8904); 1238 dasm_put(Dst, 8914);
1238 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1239 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1239 switch (vk) { 1240 switch (vk) {
1240 case 0: 1241 case 0:
1241 dasm_put(Dst, 8979, LJ_TISNUM); 1242 dasm_put(Dst, 8989, LJ_TISNUM);
1242 break; 1243 break;
1243 case 1: 1244 case 1:
1244 dasm_put(Dst, 8998, LJ_TISNUM); 1245 dasm_put(Dst, 9008, LJ_TISNUM);
1245 break; 1246 break;
1246 default: 1247 default:
1247 dasm_put(Dst, 9017, LJ_TISNUM, LJ_TISNUM); 1248 dasm_put(Dst, 9027, LJ_TISNUM, LJ_TISNUM);
1248 break; 1249 break;
1249 } 1250 }
1250 dasm_put(Dst, 8803); 1251 dasm_put(Dst, 8813);
1251 break; 1252 break;
1252 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1253 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1253 dasm_put(Dst, 8904); 1254 dasm_put(Dst, 8914);
1254 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1255 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1255 switch (vk) { 1256 switch (vk) {
1256 case 0: 1257 case 0:
1257 dasm_put(Dst, 9046, LJ_TISNUM); 1258 dasm_put(Dst, 9056, LJ_TISNUM);
1258 break; 1259 break;
1259 case 1: 1260 case 1:
1260 dasm_put(Dst, 9065, LJ_TISNUM); 1261 dasm_put(Dst, 9075, LJ_TISNUM);
1261 break; 1262 break;
1262 default: 1263 default:
1263 dasm_put(Dst, 9084, LJ_TISNUM, LJ_TISNUM); 1264 dasm_put(Dst, 9094, LJ_TISNUM, LJ_TISNUM);
1264 break; 1265 break;
1265 } 1266 }
1266 dasm_put(Dst, 8803); 1267 dasm_put(Dst, 8813);
1267 break; 1268 break;
1268 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1269 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1269 dasm_put(Dst, 8904); 1270 dasm_put(Dst, 8914);
1270 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1271 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1271 switch (vk) { 1272 switch (vk) {
1272 case 0: 1273 case 0:
1273 dasm_put(Dst, 9113, LJ_TISNUM); 1274 dasm_put(Dst, 9123, LJ_TISNUM);
1274 break; 1275 break;
1275 case 1: 1276 case 1:
1276 dasm_put(Dst, 9132, LJ_TISNUM); 1277 dasm_put(Dst, 9142, LJ_TISNUM);
1277 break; 1278 break;
1278 default: 1279 default:
1279 dasm_put(Dst, 9151, LJ_TISNUM, LJ_TISNUM); 1280 dasm_put(Dst, 9161, LJ_TISNUM, LJ_TISNUM);
1280 break; 1281 break;
1281 } 1282 }
1282 dasm_put(Dst, 8803); 1283 dasm_put(Dst, 8813);
1283 break; 1284 break;
1284 case BC_MODVN: 1285 case BC_MODVN:
1285 dasm_put(Dst, 8904); 1286 dasm_put(Dst, 8914);
1286 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1287 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1287 switch (vk) { 1288 switch (vk) {
1288 case 0: 1289 case 0:
1289 dasm_put(Dst, 9180, LJ_TISNUM); 1290 dasm_put(Dst, 9190, LJ_TISNUM);
1290 break; 1291 break;
1291 case 1: 1292 case 1:
1292 dasm_put(Dst, 9199, LJ_TISNUM); 1293 dasm_put(Dst, 9209, LJ_TISNUM);
1293 break; 1294 break;
1294 default: 1295 default:
1295 dasm_put(Dst, 9218, LJ_TISNUM, LJ_TISNUM); 1296 dasm_put(Dst, 9228, LJ_TISNUM, LJ_TISNUM);
1296 break; 1297 break;
1297 } 1298 }
1298 dasm_put(Dst, 9247); 1299 dasm_put(Dst, 9257);
1299 break; 1300 break;
1300 case BC_MODNV: case BC_MODVV: 1301 case BC_MODNV: case BC_MODVV:
1301 dasm_put(Dst, 8904); 1302 dasm_put(Dst, 8914);
1302 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1303 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1303 switch (vk) { 1304 switch (vk) {
1304 case 0: 1305 case 0:
1305 dasm_put(Dst, 9180, LJ_TISNUM); 1306 dasm_put(Dst, 9190, LJ_TISNUM);
1306 break; 1307 break;
1307 case 1: 1308 case 1:
1308 dasm_put(Dst, 9199, LJ_TISNUM); 1309 dasm_put(Dst, 9209, LJ_TISNUM);
1309 break; 1310 break;
1310 default: 1311 default:
1311 dasm_put(Dst, 9218, LJ_TISNUM, LJ_TISNUM); 1312 dasm_put(Dst, 9228, LJ_TISNUM, LJ_TISNUM);
1312 break; 1313 break;
1313 } 1314 }
1314 dasm_put(Dst, 9274); 1315 dasm_put(Dst, 9284);
1315 break; 1316 break;
1316 case BC_POW: 1317 case BC_POW:
1317 dasm_put(Dst, 8904); 1318 dasm_put(Dst, 8914);
1318 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1319 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1319 switch (vk) { 1320 switch (vk) {
1320 case 0: 1321 case 0:
1321 dasm_put(Dst, 9180, LJ_TISNUM); 1322 dasm_put(Dst, 9190, LJ_TISNUM);
1322 break; 1323 break;
1323 case 1: 1324 case 1:
1324 dasm_put(Dst, 9199, LJ_TISNUM); 1325 dasm_put(Dst, 9209, LJ_TISNUM);
1325 break; 1326 break;
1326 default: 1327 default:
1327 dasm_put(Dst, 9218, LJ_TISNUM, LJ_TISNUM); 1328 dasm_put(Dst, 9228, LJ_TISNUM, LJ_TISNUM);
1328 break; 1329 break;
1329 } 1330 }
1330 dasm_put(Dst, 9279); 1331 dasm_put(Dst, 9289);
1331 break; 1332 break;
1332 1333
1333 case BC_CAT: 1334 case BC_CAT:
1334 dasm_put(Dst, 9304, Dt1(->base), Dt1(->base)); 1335 dasm_put(Dst, 9314, Dt1(->base), Dt1(->base));
1335 break; 1336 break;
1336 1337
1337 /* -- Constant ops ------------------------------------------------------ */ 1338 /* -- Constant ops ------------------------------------------------------ */
1338 1339
1339 case BC_KSTR: 1340 case BC_KSTR:
1340 dasm_put(Dst, 9398, LJ_TSTR); 1341 dasm_put(Dst, 9408, LJ_TSTR);
1341 break; 1342 break;
1342 case BC_KSHORT: 1343 case BC_KSHORT:
1343 dasm_put(Dst, 9431); 1344 dasm_put(Dst, 9441);
1344 break; 1345 break;
1345 case BC_KNUM: 1346 case BC_KNUM:
1346 dasm_put(Dst, 9457); 1347 dasm_put(Dst, 9467);
1347 break; 1348 break;
1348 case BC_KPRI: 1349 case BC_KPRI:
1349 dasm_put(Dst, 9482); 1350 dasm_put(Dst, 9492);
1350 break; 1351 break;
1351 case BC_KNIL: 1352 case BC_KNIL:
1352 dasm_put(Dst, 9508, LJ_TNIL); 1353 dasm_put(Dst, 9518, LJ_TNIL);
1353 break; 1354 break;
1354 1355
1355 /* -- Upvalue and function ops ------------------------------------------ */ 1356 /* -- Upvalue and function ops ------------------------------------------ */
1356 1357
1357 case BC_UGET: 1358 case BC_UGET:
1358 dasm_put(Dst, 9554, offsetof(GCfuncL, uvptr), DtA(->v)); 1359 dasm_put(Dst, 9564, offsetof(GCfuncL, uvptr), DtA(->v));
1359 break; 1360 break;
1360 case BC_USETV: 1361 case BC_USETV:
1361#define TV2MARKOFS \ 1362#define TV2MARKOFS \
1362 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1363 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1363 dasm_put(Dst, 9598, 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); 1364 dasm_put(Dst, 9608, 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);
1364 dasm_put(Dst, 9688); 1365 dasm_put(Dst, 9698);
1365 break; 1366 break;
1366#undef TV2MARKOFS 1367#undef TV2MARKOFS
1367 case BC_USETS: 1368 case BC_USETS:
1368 dasm_put(Dst, 9700, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1369 dasm_put(Dst, 9710, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1369 break; 1370 break;
1370 case BC_USETN: 1371 case BC_USETN:
1371 dasm_put(Dst, 9791, offsetof(GCfuncL, uvptr), DtA(->v)); 1372 dasm_put(Dst, 9801, offsetof(GCfuncL, uvptr), DtA(->v));
1372 break; 1373 break;
1373 case BC_USETP: 1374 case BC_USETP:
1374 dasm_put(Dst, 9827, offsetof(GCfuncL, uvptr), DtA(->v)); 1375 dasm_put(Dst, 9837, offsetof(GCfuncL, uvptr), DtA(->v));
1375 break; 1376 break;
1376 case BC_UCLO: 1377 case BC_UCLO:
1377 dasm_put(Dst, 9864, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1378 dasm_put(Dst, 9874, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1378 break; 1379 break;
1379 1380
1380 case BC_FNEW: 1381 case BC_FNEW:
1381 dasm_put(Dst, 9922, Dt1(->base), Dt1(->base), LJ_TFUNC); 1382 dasm_put(Dst, 9932, Dt1(->base), Dt1(->base), LJ_TFUNC);
1382 break; 1383 break;
1383 1384
1384 /* -- Table ops --------------------------------------------------------- */ 1385 /* -- Table ops --------------------------------------------------------- */
1385 1386
1386 case BC_TNEW: 1387 case BC_TNEW:
1387 dasm_put(Dst, 9993, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1388 dasm_put(Dst, 10003, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1388 break; 1389 break;
1389 case BC_TDUP: 1390 case BC_TDUP:
1390 dasm_put(Dst, 10104, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1391 dasm_put(Dst, 10114, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1391 break; 1392 break;
1392 1393
1393 case BC_GGET: 1394 case BC_GGET:
1394 dasm_put(Dst, 10196, Dt7(->env)); 1395 dasm_put(Dst, 10206, Dt7(->env));
1395 break; 1396 break;
1396 case BC_GSET: 1397 case BC_GSET:
1397 dasm_put(Dst, 10214, Dt7(->env)); 1398 dasm_put(Dst, 10224, Dt7(->env));
1398 break; 1399 break;
1399 1400
1400 case BC_TGETV: 1401 case BC_TGETV:
1401 dasm_put(Dst, 10232, LJ_TTAB, LJ_TISNUM); 1402 dasm_put(Dst, 10242, LJ_TTAB, LJ_TISNUM);
1402 if (cmov) { 1403 if (cmov) {
1403 dasm_put(Dst, 8388); 1404 dasm_put(Dst, 8398);
1404 } else { 1405 } else {
1405 dasm_put(Dst, 8394); 1406 dasm_put(Dst, 8404);
1406 } 1407 }
1407 dasm_put(Dst, 10274, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1408 dasm_put(Dst, 10284, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1408 dasm_put(Dst, 10369, LJ_TSTR); 1409 dasm_put(Dst, 10379, LJ_TSTR);
1409 break; 1410 break;
1410 case BC_TGETS: 1411 case BC_TGETS:
1411 dasm_put(Dst, 10387, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1412 dasm_put(Dst, 10397, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1412 dasm_put(Dst, 10471, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1413 dasm_put(Dst, 10481, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1413 break; 1414 break;
1414 case BC_TGETB: 1415 case BC_TGETB:
1415 dasm_put(Dst, 10542, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1416 dasm_put(Dst, 10552, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1416 dasm_put(Dst, 8894); 1417 dasm_put(Dst, 8904);
1417 break; 1418 break;
1418 1419
1419 case BC_TSETV: 1420 case BC_TSETV:
1420 dasm_put(Dst, 10641, LJ_TTAB, LJ_TISNUM); 1421 dasm_put(Dst, 10651, LJ_TTAB, LJ_TISNUM);
1421 if (cmov) { 1422 if (cmov) {
1422 dasm_put(Dst, 8388); 1423 dasm_put(Dst, 8398);
1423 } else { 1424 } else {
1424 dasm_put(Dst, 8394); 1425 dasm_put(Dst, 8404);
1425 } 1426 }
1426 dasm_put(Dst, 10683, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1427 dasm_put(Dst, 10693, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1427 dasm_put(Dst, 10769, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1428 dasm_put(Dst, 10779, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1428 break; 1429 break;
1429 case BC_TSETS: 1430 case BC_TSETS:
1430 dasm_put(Dst, 10831, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1431 dasm_put(Dst, 10841, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1431 dasm_put(Dst, 10906, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1432 dasm_put(Dst, 10916, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1432 dasm_put(Dst, 10996, 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)); 1433 dasm_put(Dst, 11006, 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));
1433 break; 1434 break;
1434 case BC_TSETB: 1435 case BC_TSETB:
1435 dasm_put(Dst, 11092, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1436 dasm_put(Dst, 11102, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1436 dasm_put(Dst, 11190, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1437 dasm_put(Dst, 11200, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1437 break; 1438 break;
1438 1439
1439 case BC_TSETM: 1440 case BC_TSETM:
1440 dasm_put(Dst, 11236, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 1441 dasm_put(Dst, 11246, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
1441 dasm_put(Dst, 11393, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1442 dasm_put(Dst, 11403, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1442 break; 1443 break;
1443 1444
1444 /* -- Calls and vararg handling ----------------------------------------- */ 1445 /* -- Calls and vararg handling ----------------------------------------- */
1445 1446
1446 case BC_CALL: case BC_CALLM: 1447 case BC_CALL: case BC_CALLM:
1447 dasm_put(Dst, 8908); 1448 dasm_put(Dst, 8918);
1448 if (op == BC_CALLM) { 1449 if (op == BC_CALLM) {
1449 dasm_put(Dst, 11411); 1450 dasm_put(Dst, 11421);
1450 } 1451 }
1451 dasm_put(Dst, 11416, LJ_TFUNC, Dt7(->gate)); 1452 dasm_put(Dst, 11426, LJ_TFUNC, Dt7(->gate));
1452 break; 1453 break;
1453 1454
1454 case BC_CALLMT: 1455 case BC_CALLMT:
1455 dasm_put(Dst, 11411); 1456 dasm_put(Dst, 11421);
1456 break; 1457 break;
1457 case BC_CALLT: 1458 case BC_CALLT:
1458 dasm_put(Dst, 11439, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 1459 dasm_put(Dst, 11449, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
1459 dasm_put(Dst, 11544, FRAME_TYPE, Dt7(->pt), Dt9(->k)); 1460 dasm_put(Dst, 11554, FRAME_TYPE, Dt7(->pt), Dt9(->k));
1460 break; 1461 break;
1461 1462
1462 case BC_ITERC: 1463 case BC_ITERC:
1463 dasm_put(Dst, 11601, LJ_TFUNC, Dt7(->gate)); 1464 dasm_put(Dst, 11611, LJ_TFUNC, Dt7(->gate));
1464 break; 1465 break;
1465 1466
1466 case BC_VARG: 1467 case BC_VARG:
1467 dasm_put(Dst, 11663, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); 1468 dasm_put(Dst, 11673, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL);
1468 dasm_put(Dst, 11807, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 1469 dasm_put(Dst, 11817, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1469 break; 1470 break;
1470 1471
1471 /* -- Returns ----------------------------------------------------------- */ 1472 /* -- Returns ----------------------------------------------------------- */
1472 1473
1473 case BC_RETM: 1474 case BC_RETM:
1474 dasm_put(Dst, 11411); 1475 dasm_put(Dst, 11421);
1475 break; 1476 break;
1476 1477
1477 case BC_RET: case BC_RET0: case BC_RET1: 1478 case BC_RET: case BC_RET0: case BC_RET1:
1478 if (op != BC_RET0) { 1479 if (op != BC_RET0) {
1479 dasm_put(Dst, 11902); 1480 dasm_put(Dst, 11912);
1480 } 1481 }
1481 dasm_put(Dst, 11906, FRAME_TYPE); 1482 dasm_put(Dst, 11916, FRAME_TYPE);
1482 switch (op) { 1483 switch (op) {
1483 case BC_RET: 1484 case BC_RET:
1484 dasm_put(Dst, 11925); 1485 dasm_put(Dst, 11935);
1485 break; 1486 break;
1486 case BC_RET1: 1487 case BC_RET1:
1487 dasm_put(Dst, 11983); 1488 dasm_put(Dst, 11993);
1488 /* fallthrough */ 1489 /* fallthrough */
1489 case BC_RET0: 1490 case BC_RET0:
1490 dasm_put(Dst, 3820); 1491 dasm_put(Dst, 3824);
1491 default: 1492 default:
1492 break; 1493 break;
1493 } 1494 }
1494 dasm_put(Dst, 11999, Dt7(->pt), Dt9(->k)); 1495 dasm_put(Dst, 12009, Dt7(->pt), Dt9(->k));
1495 if (op == BC_RET) { 1496 if (op == BC_RET) {
1496 dasm_put(Dst, 12041, LJ_TNIL); 1497 dasm_put(Dst, 12051, LJ_TNIL);
1497 } else { 1498 } else {
1498 dasm_put(Dst, 12050, LJ_TNIL); 1499 dasm_put(Dst, 12060, LJ_TNIL);
1499 } 1500 }
1500 dasm_put(Dst, 12057); 1501 dasm_put(Dst, 12067);
1501 if (op != BC_RET0) { 1502 if (op != BC_RET0) {
1502 dasm_put(Dst, 12078); 1503 dasm_put(Dst, 12088);
1503 } 1504 }
1504 dasm_put(Dst, 8899); 1505 dasm_put(Dst, 8909);
1505 break; 1506 break;
1506 1507
1507 /* -- Loops and branches ------------------------------------------------ */ 1508 /* -- Loops and branches ------------------------------------------------ */
@@ -1509,7 +1510,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov)
1509 1510
1510 case BC_FORL: 1511 case BC_FORL:
1511#if LJ_HASJIT 1512#if LJ_HASJIT
1512 dasm_put(Dst, 12082, HOTCOUNT_PCMASK, GG_DISP2HOT); 1513 dasm_put(Dst, 12092, HOTCOUNT_PCMASK, GG_DISP2HOT);
1513#endif 1514#endif
1514 break; 1515 break;
1515 1516
@@ -1521,42 +1522,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov)
1521 case BC_FORI: 1522 case BC_FORI:
1522 case BC_IFORL: 1523 case BC_IFORL:
1523 vk = (op == BC_IFORL || op == BC_JFORL); 1524 vk = (op == BC_IFORL || op == BC_JFORL);
1524 dasm_put(Dst, 12103); 1525 dasm_put(Dst, 12113);
1525 if (!vk) { 1526 if (!vk) {
1526 dasm_put(Dst, 12107, LJ_TISNUM, LJ_TISNUM); 1527 dasm_put(Dst, 12117, LJ_TISNUM, LJ_TISNUM);
1527 } 1528 }
1528 dasm_put(Dst, 12126); 1529 dasm_put(Dst, 12136);
1529 if (!vk) { 1530 if (!vk) {
1530 dasm_put(Dst, 12130, LJ_TISNUM); 1531 dasm_put(Dst, 12140, LJ_TISNUM);
1531 } 1532 }
1532 dasm_put(Dst, 12139); 1533 dasm_put(Dst, 12149);
1533 if (vk) { 1534 if (vk) {
1534 dasm_put(Dst, 12145); 1535 dasm_put(Dst, 12155);
1535 } 1536 }
1536 dasm_put(Dst, 12151); 1537 dasm_put(Dst, 12161);
1537 if (cmov) { 1538 if (cmov) {
1538 dasm_put(Dst, 8388); 1539 dasm_put(Dst, 8398);
1539 } else { 1540 } else {
1540 dasm_put(Dst, 8394); 1541 dasm_put(Dst, 8404);
1541 } 1542 }
1542 if (!cmov) { 1543 if (!cmov) {
1543 dasm_put(Dst, 12166); 1544 dasm_put(Dst, 12176);
1544 } 1545 }
1545 if (op == BC_FORI) { 1546 if (op == BC_FORI) {
1546 dasm_put(Dst, 12172, -BCBIAS_J*4); 1547 dasm_put(Dst, 12182, -BCBIAS_J*4);
1547 } else if (op == BC_JFORI) { 1548 } else if (op == BC_JFORI) {
1548 dasm_put(Dst, 12182, -BCBIAS_J*4, BC_JLOOP); 1549 dasm_put(Dst, 12192, -BCBIAS_J*4, BC_JLOOP);
1549 } else if (op == BC_IFORL) { 1550 } else if (op == BC_IFORL) {
1550 dasm_put(Dst, 12196, -BCBIAS_J*4); 1551 dasm_put(Dst, 12206, -BCBIAS_J*4);
1551 } else { 1552 } else {
1552 dasm_put(Dst, 12192, BC_JLOOP); 1553 dasm_put(Dst, 12202, BC_JLOOP);
1553 } 1554 }
1554 dasm_put(Dst, 8428); 1555 dasm_put(Dst, 8438);
1555 break; 1556 break;
1556 1557
1557 case BC_ITERL: 1558 case BC_ITERL:
1558#if LJ_HASJIT 1559#if LJ_HASJIT
1559 dasm_put(Dst, 12082, HOTCOUNT_PCMASK, GG_DISP2HOT); 1560 dasm_put(Dst, 12092, HOTCOUNT_PCMASK, GG_DISP2HOT);
1560#endif 1561#endif
1561 break; 1562 break;
1562 1563
@@ -1565,33 +1566,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov)
1565 break; 1566 break;
1566#endif 1567#endif
1567 case BC_IITERL: 1568 case BC_IITERL:
1568 dasm_put(Dst, 12206, LJ_TNIL); 1569 dasm_put(Dst, 12216, LJ_TNIL);
1569 if (op == BC_JITERL) { 1570 if (op == BC_JITERL) {
1570 dasm_put(Dst, 12221, BC_JLOOP); 1571 dasm_put(Dst, 12231, BC_JLOOP);
1571 } else { 1572 } else {
1572 dasm_put(Dst, 12235, -BCBIAS_J*4); 1573 dasm_put(Dst, 12245, -BCBIAS_J*4);
1573 } 1574 }
1574 dasm_put(Dst, 8699); 1575 dasm_put(Dst, 8709);
1575 break; 1576 break;
1576 1577
1577 case BC_LOOP: 1578 case BC_LOOP:
1578#if LJ_HASJIT 1579#if LJ_HASJIT
1579 dasm_put(Dst, 12082, HOTCOUNT_PCMASK, GG_DISP2HOT); 1580 dasm_put(Dst, 12092, HOTCOUNT_PCMASK, GG_DISP2HOT);
1580#endif 1581#endif
1581 break; 1582 break;
1582 1583
1583 case BC_ILOOP: 1584 case BC_ILOOP:
1584 dasm_put(Dst, 7164); 1585 dasm_put(Dst, 7174);
1585 break; 1586 break;
1586 1587
1587 case BC_JLOOP: 1588 case BC_JLOOP:
1588#if LJ_HASJIT 1589#if LJ_HASJIT
1589 dasm_put(Dst, 12251, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 1590 dasm_put(Dst, 12261, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
1590#endif 1591#endif
1591 break; 1592 break;
1592 1593
1593 case BC_JMP: 1594 case BC_JMP:
1594 dasm_put(Dst, 12274, -BCBIAS_J*4); 1595 dasm_put(Dst, 12284, -BCBIAS_J*4);
1595 break; 1596 break;
1596 1597
1597 /* ---------------------------------------------------------------------- */ 1598 /* ---------------------------------------------------------------------- */
@@ -1615,7 +1616,7 @@ static int build_backend(BuildCtx *ctx)
1615 1616
1616 build_subroutines(ctx, cmov); 1617 build_subroutines(ctx, cmov);
1617 1618
1618 dasm_put(Dst, 12298); 1619 dasm_put(Dst, 12308);
1619 for (op = 0; op < BC__MAX; op++) 1620 for (op = 0; op < BC__MAX; op++)
1620 build_ins(ctx, (BCOp)op, op, cmov); 1621 build_ins(ctx, (BCOp)op, op, cmov);
1621 1622