From ab90b8fc2b516fa38a194844e31c70c106153cdf Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Thu, 11 Feb 2010 01:21:40 +0100 Subject: [PATCH] Switch to pre-initialized stacks. Drop frame clearing in interpreter. --- src/buildvm_x64.h | 1460 ++++++++++++------------- src/buildvm_x64win.h | 1353 +++++++++++------------ src/buildvm_x86.dasc | 60 +- src/buildvm_x86.h | 2460 +++++++++++++++++++++--------------------- src/lj_gc.c | 33 +- src/lj_gc.h | 4 +- src/lj_state.c | 33 +- 7 files changed, 2707 insertions(+), 2696 deletions(-) diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h index 9ce79dd7..ef507af1 100644 --- a/src/buildvm_x64.h +++ b/src/buildvm_x64.h @@ -12,84 +12,85 @@ #define DASM_SECTION_CODE_OP 0 #define DASM_SECTION_CODE_SUB 1 #define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[13633] = { - 254,1,248,10,137,202,139,173,233,137,90,252,252,15,182,141,233,141,157,233, - 68,139,189,233,139,108,36,16,141,12,202,141,68,194,252,252,59,141,233,15, - 135,244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130, - 244,1,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,248,12,137,89,252,252,141,28,197,237,141,148,253,25,233,137,106,252, - 248,139,173,233,137,90,252,252,15,182,157,233,68,141,60,218,139,92,36,16, - 141,66,4,68,59,187,233,15,135,244,13,15,182,157,233,133,219,15,132,244,248, - 248,1,131,193,8,57,209,15,131,244,248,68,139,121,252,248,68,137,120,252,252, - 68,139,121,252,252,68,137,56,131,192,8,199,65,252,252,237,131,252,235,1,15, - 133,244,1,248,2,15,182,141,233,141,157,233,255,68,139,189,233,141,12,202, - 252,233,244,9,248,14,137,89,252,252,76,139,189,233,139,108,36,16,141,68,193, - 252,248,137,141,233,141,136,233,137,133,233,59,141,233,76,137,252,254,137, - 252,239,15,135,244,15,65,199,134,233,237,65,252,255,150,233,65,199,134,233, - 237,139,149,233,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68, - 36,4,252,247,195,237,255,15,132,244,17,252,233,244,18,248,19,137,89,252,252, - 76,139,189,233,139,108,36,16,141,68,193,252,248,137,141,233,141,136,233,137, - 133,233,59,141,233,137,252,239,15,135,244,15,65,199,134,233,237,65,252,255, - 215,65,199,134,233,237,139,149,233,141,12,194,252,247,217,3,141,233,248,16, - 131,192,1,137,68,36,4,252,247,195,237,255,15,132,244,17,248,18,252,247,195, - 237,15,132,244,20,65,199,134,233,237,131,227,252,248,41,211,252,247,219,131, - 232,1,15,132,244,248,248,1,139,44,10,137,106,252,248,139,108,10,4,137,106, - 252,252,131,194,8,131,232,1,15,133,244,1,248,2,139,108,36,16,137,157,233, - 248,3,139,68,36,4,139,76,36,8,248,4,57,193,15,133,244,252,248,5,255,131,252, - 234,8,137,149,233,248,21,72,139,76,36,32,72,137,141,233,49,192,248,22,72, - 131,196,40,65,94,65,95,91,93,195,248,6,15,130,244,253,59,149,233,15,135,244, - 254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7,133,201,15, - 132,244,5,41,193,141,20,202,252,233,244,5,248,8,137,149,233,255,137,68,36, - 4,137,206,137,252,239,232,251,1,0,139,149,233,252,233,244,3,248,23,137,252, - 240,72,137,252,252,248,24,139,108,36,16,139,173,233,199,133,233,237,252,233, - 244,22,248,25,72,129,231,239,72,137,252,252,248,26,139,108,36,16,72,199,193, - 252,248,252,255,252,255,252,255,184,237,139,149,233,68,139,181,233,65,129, - 198,239,139,90,252,252,199,66,252,252,237,65,199,134,233,237,255,252,233, - 244,16,248,20,252,247,195,237,15,132,244,27,131,227,252,248,41,218,72,141, - 76,25,252,248,139,90,252,252,199,68,10,4,237,252,233,244,16,248,15,190,237, - 252,233,244,247,248,13,131,232,8,137,202,68,137,252,249,141,157,233,139,108, - 36,16,248,11,131,232,4,41,209,193,252,233,3,131,195,4,137,149,233,137,133, - 233,137,92,36,20,137,206,248,1,137,252,239,232,251,1,0,139,141,233,255,139, - 133,233,139,105,252,248,139,89,252,252,41,200,193,232,3,131,192,1,252,255, - 165,233,248,28,85,83,65,87,65,86,72,131,252,236,40,137,252,253,137,124,36, - 16,137,252,241,187,237,49,192,76,141,188,253,36,233,68,139,181,233,65,129, - 198,239,76,137,189,233,137,68,36,20,72,137,68,36,32,137,68,36,8,137,68,36, - 12,56,133,233,15,132,244,249,65,199,134,233,237,136,133,233,139,149,233,139, - 133,233,41,200,193,232,3,131,192,1,41,209,139,90,252,252,137,68,36,4,252, - 247,195,237,15,132,244,17,252,233,244,18,248,29,255,85,83,65,87,65,86,72, - 131,252,236,40,187,237,137,76,36,12,252,233,244,247,248,30,85,83,65,87,65, - 86,72,131,252,236,40,187,237,248,1,137,84,36,8,137,252,253,137,124,36,16, - 137,252,241,248,2,76,139,189,233,76,137,124,36,32,137,108,36,20,72,137,165, - 233,68,139,181,233,65,129,198,239,248,3,65,199,134,233,237,139,149,233,1, - 203,41,211,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121, - 253,252,252,239,15,133,244,31,252,255,165,233,248,32,255,85,83,65,87,65,86, - 72,131,252,236,40,137,252,253,137,124,36,16,137,108,36,20,68,139,189,233, - 68,43,189,233,199,68,36,12,0,0,0,0,68,137,124,36,8,76,139,189,233,76,137, - 124,36,32,72,137,165,233,252,255,209,133,192,15,132,244,21,137,193,187,237, - 252,233,244,2,248,27,1,209,131,227,252,248,137,213,41,218,199,68,193,252, - 252,237,137,200,139,93,252,244,72,99,77,252,240,76,141,61,245,76,1,252,249, - 68,139,122,252,248,69,139,191,233,69,139,191,233,252,255,225,248,33,15,182, - 75,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,34,252,247,217, - 193,252,233,3,139,124,36,16,137,151,233,137,202,139,72,4,139,0,137,77,4,137, - 69,0,137,252,238,252,233,244,35,248,36,255,137,4,36,199,68,36,4,237,72,141, - 4,36,128,123,252,252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237, - 137,205,252,233,244,248,248,37,15,182,67,252,254,255,252,242,15,42,192,252, - 242,15,17,4,36,255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141, - 4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,137,151, - 233,137,252,238,72,137,194,137,252,253,137,92,36,20,232,251,1,1,139,149,233, - 133,192,15,132,244,249,248,34,15,182,75,252,253,139,104,4,139,0,137,108,202, - 4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,248,3,139,141,233,137,89,252,244,141,153,233,41,211,139,105,252,248, - 184,3,0,0,0,252,255,165,233,248,39,137,4,36,199,68,36,4,237,72,141,4,36,128, - 123,252,252,235,15,133,244,247,65,141,142,233,255,137,41,199,65,4,237,137, - 205,252,233,244,248,248,40,15,182,67,252,254,255,72,141,4,36,252,233,244, - 247,248,41,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252, - 234,248,2,139,124,36,16,137,151,233,137,252,238,72,137,194,137,252,253,137, - 92,36,20,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,75,252,253, - 139,108,202,4,139,12,202,137,104,4,137,8,248,42,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244, - 15,182,67,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,153,233, - 41,211,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,139,108,36,16,137, +static const unsigned char build_actionlist[13650] = { + 254,1,248,10,137,202,137,90,252,252,139,157,233,15,182,139,233,68,139,187, + 233,139,108,36,16,141,12,202,59,141,233,15,135,244,11,15,182,139,233,57,200, + 15,134,244,249,248,2,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16, + 65,252,255,36,252,238,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, + 244,3,252,233,244,2,248,12,137,89,252,252,141,28,197,237,141,148,253,25,233, + 137,106,252,248,137,90,252,252,139,157,233,15,182,171,233,68,141,60,252,234, + 139,108,36,16,68,59,189,233,15,135,244,13,137,208,15,182,171,233,133,252, + 237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,68,139,121,252, + 248,68,137,56,68,139,121,252,252,68,137,120,4,131,192,8,199,65,252,252,237, + 131,252,237,1,15,133,244,1,248,2,68,139,187,233,255,139,3,15,182,204,15,182, + 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,199,64,4,237,131,192, + 8,131,252,237,1,15,133,244,3,252,233,244,2,248,14,137,89,252,252,76,139,189, + 233,139,108,36,16,141,68,193,252,248,137,141,233,141,136,233,137,133,233, + 59,141,233,76,137,252,254,137,252,239,15,135,244,15,65,199,134,233,237,65, + 252,255,150,233,65,199,134,233,237,139,149,233,255,141,12,194,252,247,217, + 3,141,233,248,16,131,192,1,137,68,36,4,252,247,195,237,15,132,244,17,252, + 233,244,18,248,19,137,89,252,252,76,139,189,233,139,108,36,16,141,68,193, + 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,252,239,15,135, + 244,15,65,199,134,233,237,65,252,255,215,65,199,134,233,237,139,149,233,255, + 141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,4,252,247,195, + 237,15,132,244,17,248,18,252,247,195,237,15,132,244,20,65,199,134,233,237, + 131,227,252,248,41,211,252,247,219,131,232,1,15,132,244,248,248,1,139,44, + 10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,1,15,133, + 244,1,248,2,139,108,36,16,137,157,233,248,3,139,68,36,4,139,76,36,8,248,4, + 255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248,21,72,139,76, + 36,32,72,137,141,233,49,192,248,22,72,131,196,40,65,94,65,95,91,93,195,248, + 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131, + 192,1,252,233,244,4,248,7,133,201,15,132,244,5,41,193,141,20,202,252,233, + 244,5,248,8,255,137,149,233,137,68,36,4,137,206,137,252,239,232,251,1,0,139, + 149,233,252,233,244,3,248,23,137,252,240,72,137,252,252,248,24,139,108,36, + 16,139,173,233,199,133,233,237,252,233,244,22,248,25,72,129,231,239,72,137, + 252,252,248,26,139,108,36,16,72,199,193,252,248,252,255,252,255,252,255,184, + 237,139,149,233,68,139,181,233,65,129,198,239,139,90,252,252,199,66,252,252, + 237,65,199,134,233,237,255,252,233,244,16,248,20,252,247,195,237,15,132,244, + 27,131,227,252,248,41,218,72,141,76,25,252,248,139,90,252,252,199,68,10,4, + 237,252,233,244,16,248,15,190,237,252,233,244,247,248,13,137,202,248,11,141, + 68,194,252,248,15,182,139,233,131,195,4,137,149,233,137,133,233,137,92,36, + 20,137,206,248,1,137,252,239,232,251,1,0,139,141,233,255,139,133,233,139, + 105,252,248,139,89,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248, + 28,85,83,65,87,65,86,72,131,252,236,40,137,252,253,137,124,36,16,137,252, + 241,187,237,49,192,76,141,188,253,36,233,68,139,181,233,65,129,198,239,76, + 137,189,233,137,68,36,20,72,137,68,36,32,137,68,36,8,137,68,36,12,56,133, + 233,15,132,244,249,65,199,134,233,237,136,133,233,139,149,233,139,133,233, + 41,200,193,232,3,131,192,1,41,209,139,90,252,252,137,68,36,4,252,247,195, + 237,15,132,244,17,252,233,244,18,248,29,255,85,83,65,87,65,86,72,131,252, + 236,40,187,237,137,76,36,12,252,233,244,247,248,30,85,83,65,87,65,86,72,131, + 252,236,40,187,237,248,1,137,84,36,8,137,252,253,137,124,36,16,137,252,241, + 248,2,76,139,189,233,76,137,124,36,32,137,108,36,20,72,137,165,233,68,139, + 181,233,65,129,198,239,248,3,65,199,134,233,237,139,149,233,1,203,41,211, + 139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252, + 239,15,133,244,31,252,255,165,233,248,32,255,85,83,65,87,65,86,72,131,252, + 236,40,137,252,253,137,124,36,16,137,108,36,20,68,139,189,233,68,43,189,233, + 199,68,36,12,0,0,0,0,68,137,124,36,8,76,139,189,233,76,137,124,36,32,72,137, + 165,233,252,255,209,133,192,15,132,244,21,137,193,187,237,252,233,244,2,248, + 27,1,209,131,227,252,248,137,213,41,218,199,68,193,252,252,237,137,200,139, + 93,252,244,72,99,77,252,240,76,141,61,245,76,1,252,249,68,139,122,252,248, + 69,139,191,233,69,139,191,233,252,255,225,248,33,15,182,75,252,255,131,252, + 237,16,141,12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,139, + 124,36,16,137,151,233,137,202,139,72,4,139,0,137,77,4,137,69,0,137,252,238, + 252,233,244,35,248,36,255,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252, + 252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137,205,252,233, + 244,248,248,37,15,182,67,252,254,255,252,242,15,42,192,252,242,15,17,4,36, + 255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141,4,194,248,1, + 15,182,107,252,255,141,44,252,234,248,2,139,124,36,16,137,151,233,137,252, + 238,72,137,194,137,252,253,137,92,36,20,232,251,1,1,139,149,233,133,192,15, + 132,244,249,248,34,15,182,75,252,253,139,104,4,139,0,137,108,202,4,137,4, + 202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, + 248,3,139,141,233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,3, + 0,0,0,252,255,165,233,248,39,137,4,36,199,68,36,4,237,72,141,4,36,128,123, + 252,252,235,15,133,244,247,65,141,142,233,255,137,41,199,65,4,237,137,205, + 252,233,244,248,248,40,15,182,67,252,254,255,72,141,4,36,252,233,244,247, + 248,41,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234, + 248,2,139,124,36,16,137,151,233,137,252,238,72,137,194,137,252,253,137,92, + 36,20,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,75,252,253,139, + 108,202,4,139,12,202,137,104,4,137,8,248,42,139,3,15,182,204,15,182,232,131, + 195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,15, + 182,67,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,153,233,41, + 211,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,139,108,36,16,137, 149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,20, 232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255,141,91, 4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3, @@ -467,210 +468,209 @@ static const unsigned char build_actionlist[13633] = { 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, - 155,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,249, - 255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,244, - 43,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4, - 194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, - 134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131, - 233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124, - 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255, - 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248, - 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255, - 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4, - 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15, - 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244, - 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252, - 233,244,47,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244, - 248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244, - 248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199, - 255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129, - 252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44, - 194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182, - 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194, - 4,139,4,194,137,108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4, - 193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129, - 213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, - 252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,50,255,252,242,15, - 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255, - 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139, - 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219, - 128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232, - 16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,52,139,60, - 194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75, - 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, - 4,239,15,135,244,48,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255, - 221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,49,255, - 252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252, - 234,255,129,124,253,252,234,4,239,15,135,244,51,129,124,253,194,4,239,15, - 135,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252, - 234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221, - 4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234, - 255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92, - 4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65, - 15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252, - 242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252, - 234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4, - 252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242, - 65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255, - 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194, - 255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65, - 221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221, - 4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255, - 221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232, - 244,108,255,15,182,252,236,15,182,192,139,124,36,16,137,151,233,141,52,194, - 137,194,41,252,234,248,35,137,252,253,137,92,36,20,232,251,1,21,139,149,233, - 133,192,15,133,244,44,15,182,107,252,255,15,182,75,252,253,139,68,252,234, - 4,139,44,252,234,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131, - 195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,199, - 68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, - 252,255,36,252,238,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255, - 223,67,252,254,221,28,202,255,252,242,65,15,16,4,199,252,242,15,17,4,202, - 255,65,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,3,15,182, - 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,76,202, - 12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15, - 134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, - 252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139, - 109,0,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232, - 16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189, - 233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247, - 252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131, - 195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239, - 15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141, - 190,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139, - 106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4, - 237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132, - 244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1, - 22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199, - 255,139,172,253,141,233,139,141,233,255,72,252,247,208,139,106,252,248,139, - 172,253,141,233,139,141,233,137,65,4,139,3,15,182,204,15,182,232,131,195, - 4,193,232,16,65,252,255,36,252,238,255,141,156,253,131,233,139,108,36,16, - 131,189,233,0,15,132,244,247,137,149,233,141,52,202,137,252,239,232,251,1, - 23,139,149,233,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, - 252,255,36,252,238,255,72,252,247,208,139,108,36,16,137,149,233,139,82,252, - 248,65,139,52,135,137,252,239,137,92,36,20,232,251,1,24,139,149,233,15,182, - 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195, - 4,193,232,16,65,252,255,36,252,238,255,139,124,36,16,137,151,233,248,1,137, - 194,37,252,255,7,0,0,193,252,234,11,61,252,255,7,0,0,15,132,244,249,248,2, - 137,198,65,139,134,233,137,252,253,65,59,134,233,137,92,36,20,15,131,244, - 251,232,251,1,25,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237, - 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248, - 3,184,1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,183,67,252,254,137,252, - 239,252,233,244,1,255,72,252,247,208,139,108,36,16,65,139,142,233,137,92, - 36,20,65,59,142,233,137,149,233,15,131,244,249,248,2,65,139,52,135,137,252, - 239,232,251,1,27,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237, - 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248, - 3,137,252,239,232,251,1,26,15,183,67,252,254,72,252,247,208,252,233,244,2, - 255,72,252,247,208,139,106,252,248,139,173,233,65,139,4,135,252,233,244,157, - 255,72,252,247,208,139,106,252,248,139,173,233,65,139,4,135,252,233,244,158, - 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139, - 44,252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, - 242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,38,59,133,233, - 15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1, - 139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,182,204,15,182,232,131,195, - 4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,244,1,139,141, - 233,252,246,129,233,235,15,132,244,38,15,182,75,252,253,252,233,244,1,248, - 5,255,129,124,253,194,4,239,15,133,244,38,139,4,194,252,233,244,157,255,15, - 182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4, - 239,15,133,244,36,139,44,252,234,248,157,139,141,233,35,136,233,105,201,239, - 3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250, - 129,121,253,4,239,15,132,244,251,15,182,67,252,253,139,41,139,73,4,137,44, - 194,248,2,255,137,76,194,4,139,3,15,182,204,15,182,232,131,195,4,193,232, - 16,65,252,255,36,252,238,248,3,15,182,67,252,253,185,237,252,233,244,2,248, - 4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3, - 252,246,129,233,235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182, - 192,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15, - 131,244,37,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,139, - 40,139,64,4,137,44,202,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4, - 193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,244,1,139,141, - 233,252,246,129,233,235,15,132,244,37,255,15,182,252,236,15,182,192,129,124, - 253,252,234,4,239,15,133,244,41,139,44,252,234,129,124,253,194,4,239,15,135, - 244,251,255,15,133,244,41,59,133,233,15,131,244,41,193,224,3,3,133,233,129, - 120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248, - 2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204,15,182,232,131, - 195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,139, - 141,233,255,252,246,129,233,235,15,132,244,41,15,182,75,252,253,252,233,244, - 1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,158,248, - 7,128,165,233,235,65,139,142,233,65,137,174,233,137,141,233,15,182,75,252, - 253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135, - 129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,248,158,139,141,233, - 35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133, - 244,251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2, - 255,252,246,133,233,235,15,133,244,253,248,3,15,182,67,252,253,139,108,194, - 4,139,4,194,137,105,4,137,1,139,3,15,182,204,15,182,232,131,195,4,193,232, - 16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137,12,36,139,141, - 233,252,246,129,233,235,15,132,244,39,139,12,36,252,233,244,2,248,5,139,137, - 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129, - 233,235,15,132,244,39,248,6,137,4,36,199,68,36,4,237,137,108,36,24,139,124, - 36,16,137,151,233,72,141,20,36,137,252,238,137,252,253,137,92,36,20,232,251, - 1,28,139,149,233,139,108,36,24,137,193,252,233,244,2,248,7,128,165,233,235, - 65,139,134,233,65,137,174,233,137,133,233,252,233,244,3,255,15,182,252,236, - 15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252,234,59,133, - 233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, - 1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, + 155,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,129, + 124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252, + 242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,194,131,195, + 4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248, + 255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2, + 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, + 139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,253,202,4, + 239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202, + 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, + 247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,2,15,183, + 67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4,15,133,244,2, + 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, + 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, + 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, + 72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244,248,139,12,202, + 65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244,248,255,252,242, + 65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199,255,72,252,247, + 208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129,252,253,239,255, + 15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202, + 255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,204,15,182,232, + 131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,139,4,194,137, + 108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, + 255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202, + 4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, + 255,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237, + 237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224, + 221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192, + 252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221, + 28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, + 252,238,248,2,129,124,253,194,4,239,15,133,244,52,139,60,194,137,213,232, + 251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252,233, + 244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135, + 244,48,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234, + 65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,65,15, + 16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255,129,124, + 253,252,234,4,239,15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252, + 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, + 242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,65,220,36,199, + 255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,4,199,220,36, + 252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234, + 220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199,255,221,4,252, + 234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255, + 65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194, + 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,65,15,94, + 4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,16,4,199,252,242, + 15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234, + 252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252, + 234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,4,199,255,252,242,65, + 15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,221,4,252,234,255,252, + 242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255, + 248,156,232,244,148,255,252,233,244,156,255,232,244,108,255,15,182,252,236, + 15,182,192,139,124,36,16,137,151,233,141,52,194,137,194,41,252,234,248,35, + 137,252,253,137,92,36,20,232,251,1,21,139,149,233,133,192,15,133,244,44,15, + 182,107,252,255,15,182,75,252,253,139,68,252,234,4,139,44,252,234,137,68, + 202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, + 255,36,252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202, + 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, + 15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28, + 202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28, + 202,255,72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4, + 193,232,16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137, + 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15, + 182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139, + 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139, + 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139, + 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139, + 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244, + 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, + 252,238,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235, + 15,132,244,1,137,252,238,137,213,65,141,190,233,255,232,251,1,22,137,252, + 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233, + 65,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244, + 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, + 252,238,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1, + 137,213,137,198,65,141,190,233,232,251,1,22,137,252,234,252,233,244,1,255, + 139,106,252,248,255,252,242,65,15,16,4,199,255,139,172,253,141,233,139,141, + 233,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137, + 65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, + 255,141,156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149, + 233,141,52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204, + 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208, + 139,108,36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92, + 36,20,232,251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237, + 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, + 139,124,36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61, + 252,255,7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65, + 59,134,233,137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75, + 252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4, + 193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232, + 251,1,26,15,183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139, + 108,36,16,65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244, + 249,248,2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252, + 253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193, + 232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252, + 254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173, + 233,65,139,4,135,252,233,244,157,255,72,252,247,208,139,106,252,248,139,173, + 233,65,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192,129,124,253, + 252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194,4,239,15,135,244, + 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46, + 193,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, + 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139, + 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2, + 131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,38, + 15,182,75,252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, + 38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192,72,252,247,208, + 65,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157, + 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, + 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, + 67,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182, + 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67, + 252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248, + 5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233, + 244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, + 37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253, + 4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3, + 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131, + 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37,255, + 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44, + 252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133,233, + 15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1, + 252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, 4,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235, - 15,132,244,40,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139, - 142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,68, - 137,60,36,255,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133, - 244,253,248,2,139,68,36,4,255,252,242,68,15,45,252,248,255,131,232,1,15,132, - 244,250,68,1,252,248,59,133,233,15,131,244,251,68,41,252,248,65,193,231,3, - 68,3,189,233,248,3,139,41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131, - 199,8,131,232,1,15,133,244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232, - 131,195,4,193,232,16,65,252,255,36,252,238,248,5,139,124,36,16,137,151,233, - 137,252,238,137,194,137,252,253,137,92,36,20,232,251,1,29,139,149,233,15, - 182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139,134,233,65,137, - 174,233,255,137,133,233,252,233,244,2,255,3,68,36,4,255,141,76,202,8,139, - 105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,233,255,141, - 76,202,8,65,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,31, - 248,53,139,90,252,252,252,247,195,237,15,133,244,253,248,1,137,106,252,248, - 137,68,36,4,131,232,1,15,132,244,249,248,2,139,41,65,137,47,139,105,4,65, - 137,111,4,65,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248, - 3,137,209,128,189,233,1,15,135,244,251,248,4,139,68,36,4,252,255,165,233, - 248,5,255,252,247,195,237,15,133,244,4,15,182,67,252,253,72,252,247,208,141, - 20,194,68,139,122,252,248,69,139,191,233,69,139,191,233,252,233,244,4,248, - 7,15,139,244,1,131,227,252,248,41,218,65,137,215,139,90,252,252,252,233,244, - 1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252, - 240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252, - 248,137,65,252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165, - 233,255,15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233, - 68,137,60,36,68,141,188,253,194,233,68,43,122,252,252,133,252,237,15,132, - 244,251,141,108,252,233,252,248,65,57,215,15,131,244,248,248,1,65,139,71, - 252,248,137,1,65,139,71,252,252,65,131,199,8,137,65,4,131,193,8,57,252,233, - 15,131,244,249,65,57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252, - 233,15,130,244,2,248,3,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4, - 193,232,16,65,252,255,36,252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41, - 252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,1,137,108,36,4,139, - 108,36,16,1,200,59,133,233,15,135,244,253,248,6,65,139,71,252,248,137,1,65, - 139,71,252,252,65,131,199,8,137,65,4,131,193,8,65,57,215,15,130,244,6,252, - 233,244,3,248,7,137,149,233,137,141,233,137,92,36,20,65,41,215,139,116,36, - 4,131,252,238,1,137,252,239,232,251,1,0,139,149,233,139,141,233,65,1,215, - 252,233,244,6,255,193,225,3,255,248,1,139,90,252,252,137,68,36,4,252,247, - 195,237,15,133,244,253,255,248,17,65,137,215,131,232,1,15,132,244,249,248, - 2,65,139,44,15,65,137,111,252,248,65,139,108,15,4,65,137,111,252,252,65,131, - 199,8,131,232,1,15,133,244,2,248,3,139,68,36,4,15,182,107,252,255,248,5,57, - 197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,252, - 248,255,248,5,56,67,252,255,15,135,244,252,255,15,182,75,252,253,72,252,247, - 209,141,20,202,68,139,122,252,248,69,139,191,233,69,139,191,233,139,3,15, - 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,255,65, - 199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,1, - 252,233,244,5,248,7,15,139,244,18,131,227,252,248,41,218,255,1,217,255,137, - 221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,141,255, - 141,12,202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135, - 244,54,255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16, - 1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237, - 15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65, - 24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244, - 247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,67,252,254, - 255,15,131,244,248,141,156,253,131,233,255,141,156,253,131,233,15,183,67, - 252,254,15,131,245,255,15,130,244,248,141,156,253,131,233,255,248,3,102,15, - 46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, - 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,156,253, - 131,233,139,1,137,105,252,252,137,65,252,248,255,65,139,142,233,139,4,129, - 72,139,128,233,139,108,36,16,65,137,150,233,65,137,174,233,252,255,224,255, - 141,156,253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, - 255,36,252,238,255,254,0 + 238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235, + 15,132,244,41,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239, + 15,133,244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,65,139,142, + 233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182, + 252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239, + 15,133,244,39,139,44,252,234,248,158,139,141,233,35,136,233,105,201,239,198, + 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133, + 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15, + 133,244,253,248,3,15,182,67,252,253,139,108,194,4,139,4,194,137,105,4,137, + 1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, + 248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235, + 15,132,244,39,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244, + 1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39, + 248,6,137,4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72, + 141,20,36,137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139, + 108,36,24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137, + 174,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253, + 252,234,4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224, + 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15, + 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204, + 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0, + 15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,75, + 252,253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233, + 137,141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141, + 12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36, + 4,255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248, + 59,133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139, + 41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133, + 244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16, + 65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194, + 137,252,253,137,92,36,20,232,251,1,29,139,149,233,15,182,75,252,253,252,233, + 244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233, + 252,233,244,2,255,3,68,36,4,255,141,76,202,8,139,105,252,248,129,121,253, + 252,252,239,15,133,244,31,252,255,165,233,255,141,76,202,8,65,137,215,139, + 105,252,248,129,121,253,252,252,239,15,133,244,31,248,53,139,90,252,252,252, + 247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15, + 132,244,249,248,2,139,41,65,137,47,139,105,4,65,137,111,4,65,131,199,8,131, + 193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1, + 15,135,244,251,248,4,139,68,36,4,252,255,165,233,248,5,255,252,247,195,237, + 15,133,244,4,15,182,67,252,253,72,252,247,208,141,20,194,68,139,122,252,248, + 69,139,191,233,69,139,191,233,252,233,244,4,248,7,15,139,244,1,131,227,252, + 248,41,218,65,137,215,139,90,252,252,252,233,244,1,255,141,76,202,8,139,105, + 232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105, + 8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252, + 248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15,182,252,236,139, + 66,252,248,141,12,202,139,128,233,15,182,128,233,68,137,60,36,68,141,188, + 253,194,233,68,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233, + 252,248,65,57,215,15,131,244,248,248,1,65,139,71,252,248,137,1,65,139,71, + 252,252,65,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,65,57,215, + 15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,68, + 139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, + 252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41,252,248,15,134,244,3,255, + 137,197,193,252,237,3,131,197,1,137,108,36,4,139,108,36,16,1,200,59,133,233, + 15,135,244,253,248,6,65,139,71,252,248,137,1,65,139,71,252,252,65,131,199, + 8,137,65,4,131,193,8,65,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233, + 137,141,233,137,92,36,20,65,41,215,139,116,36,4,131,252,238,1,137,252,239, + 232,251,1,0,139,149,233,139,141,233,65,1,215,252,233,244,6,255,193,225,3, + 255,248,1,139,90,252,252,137,68,36,4,252,247,195,237,15,133,244,253,255,248, + 17,65,137,215,131,232,1,15,132,244,249,248,2,65,139,44,15,65,137,111,252, + 248,65,139,108,15,4,65,137,111,252,252,65,131,199,8,131,232,1,15,133,244, + 2,248,3,139,68,36,4,15,182,107,252,255,248,5,57,197,15,135,244,252,255,139, + 108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,67,252,255, + 15,135,244,252,255,15,182,75,252,253,72,252,247,209,141,20,202,68,139,122, + 252,248,69,139,191,233,69,139,191,233,139,3,15,182,204,15,182,232,131,195, + 4,193,232,16,65,252,255,36,252,238,248,6,255,65,199,71,252,252,237,65,131, + 199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15,139, + 244,18,131,227,252,248,41,218,255,1,217,255,137,221,209,252,237,129,229,239, + 102,65,131,172,253,46,233,1,15,132,244,141,255,141,12,202,255,129,121,253, + 4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139,105,20,255,129, + 252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16,73,8,255,252, + 242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244, + 249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220, + 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244, + 247,255,217,201,248,1,255,15,183,67,252,254,255,15,131,244,248,141,156,253, + 131,233,255,141,156,253,131,233,15,183,67,252,254,15,131,245,255,15,130,244, + 248,141,156,253,131,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12, + 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137, + 105,252,248,252,233,245,255,141,156,253,131,233,139,1,137,105,252,252,137, + 65,252,248,255,65,139,142,233,139,4,129,72,139,128,233,139,108,36,16,65,137, + 150,233,65,137,174,233,252,255,224,255,141,156,253,131,233,139,3,15,182,204, + 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,254,0 }; enum { @@ -1026,395 +1026,399 @@ static const char *const extnames[] = { #define DtE(_V) (int)(ptrdiff_t)&(((ExitInfo *)0)_V) #define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) #define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) +#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) /* Generate subroutines used by opcodes and other parts of the VM. */ /* The .code_sub section should be last to help static branch prediction. */ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) { dasm_put(Dst, 0); - dasm_put(Dst, 2, Dt7(->pt), Dt9(->framesize), sizeof(GCproto), Dt9(->k), Dt1(->maxstack), LJ_TNIL); + dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); #if LJ_HASJIT #endif - dasm_put(Dst, 64, FRAME_VARG, -FRAME_VARG, Dt7(->pt), Dt9(->framesize), Dt1(->maxstack), Dt9(->numparams), LJ_TNIL, Dt9(->framesize), sizeof(GCproto)); - dasm_put(Dst, 198, Dt9(->k), Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 292, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 378, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); - dasm_put(Dst, 470, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top)); - dasm_put(Dst, 554, Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); - dasm_put(Dst, 655, FRAME_P, LJ_TTRUE, LUA_MINSTACK, sizeof(GCproto), Dt1(->base), Dt1(->top), Dt1(->base)); - dasm_put(Dst, 759, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 898, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); - dasm_put(Dst, 1023, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pt), Dt9(->k), Dt1(->base)); - dasm_put(Dst, 1207, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); + dasm_put(Dst, 48, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); + dasm_put(Dst, 161, LJ_TNIL, PC2PROTO(k)); +#if LJ_HASJIT +#endif + dasm_put(Dst, 201, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 303, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 389, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); + dasm_put(Dst, 495, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL); + dasm_put(Dst, 584, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); + dasm_put(Dst, 688, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base)); + dasm_put(Dst, 778, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); + dasm_put(Dst, 917, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 1042, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base)); + dasm_put(Dst, 1226, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); if (sse) { - dasm_put(Dst, 1252); + dasm_put(Dst, 1271); } else { } - dasm_put(Dst, 1264, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); - dasm_put(Dst, 1422, LJ_TTAB); + dasm_put(Dst, 1283, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); + dasm_put(Dst, 1441, LJ_TTAB); if (sse) { - dasm_put(Dst, 1252); + dasm_put(Dst, 1271); } else { } - dasm_put(Dst, 1442, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 1637, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); - dasm_put(Dst, 1745, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); - dasm_put(Dst, 1868, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*8, 1+1); - dasm_put(Dst, 2023, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); + dasm_put(Dst, 1461, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 1656, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); + dasm_put(Dst, 1764, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); + dasm_put(Dst, 1887, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*8, 1+1); + dasm_put(Dst, 2042, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); if (cmov) { - dasm_put(Dst, 2117); + dasm_put(Dst, 2136); } else { - dasm_put(Dst, 2121); + dasm_put(Dst, 2140); } - dasm_put(Dst, 2130, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); - dasm_put(Dst, 2218, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); - dasm_put(Dst, 2273, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); - dasm_put(Dst, 2345, 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)); - dasm_put(Dst, 2412, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); + dasm_put(Dst, 2149, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); + dasm_put(Dst, 2237, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); + dasm_put(Dst, 2292, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); + dasm_put(Dst, 2364, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 2431, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 2490); + dasm_put(Dst, 2509); } else { - dasm_put(Dst, 2500); + dasm_put(Dst, 2519); } - dasm_put(Dst, 2507, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2572, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); - dasm_put(Dst, 2656, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); - dasm_put(Dst, 2756, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 2526, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 2591, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); + dasm_put(Dst, 2675, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); + dasm_put(Dst, 2775, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 2811, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 2830, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); } else { } - dasm_put(Dst, 2844, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); - dasm_put(Dst, 2931, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); + dasm_put(Dst, 2863, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); + dasm_put(Dst, 2950, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); if (sse) { - dasm_put(Dst, 2961); + dasm_put(Dst, 2980); } else { - dasm_put(Dst, 2971); + dasm_put(Dst, 2990); } - dasm_put(Dst, 2978, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); - dasm_put(Dst, 3052, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); - dasm_put(Dst, 3150, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); - dasm_put(Dst, 3216, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); - dasm_put(Dst, 3320, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); - dasm_put(Dst, 3443, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); - dasm_put(Dst, 3524, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); - dasm_put(Dst, 3630, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); - dasm_put(Dst, 3730, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); + dasm_put(Dst, 2997, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 3071, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); + dasm_put(Dst, 3169, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 3235, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); + dasm_put(Dst, 3339, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); + dasm_put(Dst, 3462, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); + dasm_put(Dst, 3543, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 3649, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); + dasm_put(Dst, 3749, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); if (sse) { - dasm_put(Dst, 3817, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); + dasm_put(Dst, 3836, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); } else { - dasm_put(Dst, 3873, 1+1, LJ_TISNUM); + dasm_put(Dst, 3892, 1+1, LJ_TISNUM); } - dasm_put(Dst, 3905, 1+1, FRAME_TYPE, LJ_TNIL); + dasm_put(Dst, 3924, 1+1, FRAME_TYPE, LJ_TNIL); if (sse) { - dasm_put(Dst, 3990, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4052, 1+1, LJ_TISNUM); + dasm_put(Dst, 4009, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4071, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4082, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4141, 1+1, LJ_TISNUM); + dasm_put(Dst, 4101, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4160, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4168, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4237, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4294, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4357, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4447); + dasm_put(Dst, 4187, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4256, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4313, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4376, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4466); if (sse) { - dasm_put(Dst, 4459, 1+1, LJ_TISNUM); + dasm_put(Dst, 4478, 1+1, LJ_TISNUM); } else { } - dasm_put(Dst, 4484); + dasm_put(Dst, 4503); if (sse) { - dasm_put(Dst, 4504, 1+1, LJ_TISNUM); + dasm_put(Dst, 4523, 1+1, LJ_TISNUM); } else { } - dasm_put(Dst, 4529); + dasm_put(Dst, 4548); if (sse) { - dasm_put(Dst, 4549, 1+1, LJ_TISNUM); + dasm_put(Dst, 4568, 1+1, LJ_TISNUM); } else { } - dasm_put(Dst, 4574); + dasm_put(Dst, 4593); if (sse) { - dasm_put(Dst, 4596, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); + dasm_put(Dst, 4615, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); } else { - dasm_put(Dst, 4631, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); + dasm_put(Dst, 4650, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); } - dasm_put(Dst, 4660, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 4725, 1+1, LJ_TISNUM); + dasm_put(Dst, 4679, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 4744, 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 4820); + dasm_put(Dst, 4839); } else { - dasm_put(Dst, 4826); + dasm_put(Dst, 4845); } - dasm_put(Dst, 4833); + dasm_put(Dst, 4852); if (sse) { - dasm_put(Dst, 4858); + dasm_put(Dst, 4877); } else { - dasm_put(Dst, 4864); + dasm_put(Dst, 4883); } - dasm_put(Dst, 4867, 1+2); + dasm_put(Dst, 4886, 1+2); if (sse) { - dasm_put(Dst, 4876); + dasm_put(Dst, 4895); } else { - dasm_put(Dst, 4884); + dasm_put(Dst, 4903); } - dasm_put(Dst, 1634); + dasm_put(Dst, 492); if (sse) { - dasm_put(Dst, 4892, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); + dasm_put(Dst, 4911, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); } else { - dasm_put(Dst, 4919); + dasm_put(Dst, 4938); } - dasm_put(Dst, 4936); + dasm_put(Dst, 4955); if (sse) { - dasm_put(Dst, 4952, 1+1, LJ_TISNUM); + dasm_put(Dst, 4971, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4977, 1+1, LJ_TISNUM); + dasm_put(Dst, 4996, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4999); + dasm_put(Dst, 5018); if (sse) { - dasm_put(Dst, 5017); + dasm_put(Dst, 5036); } else { - dasm_put(Dst, 5043); + dasm_put(Dst, 5062); } - dasm_put(Dst, 5060, 1+2); + dasm_put(Dst, 5079, 1+2); if (sse) { - dasm_put(Dst, 5100); + dasm_put(Dst, 5119); } else { - dasm_put(Dst, 5108); + dasm_put(Dst, 5127); } - dasm_put(Dst, 5118, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5137, 2+1, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5170, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5189, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 5217, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5236, 2+1, LJ_TISNUM, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 5258, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5277, 1+1, LJ_TISNUM, LJ_TISNUM); } else { } if (sse) { - dasm_put(Dst, 5329, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5348, 1+1, LJ_TISNUM, LJ_TISNUM); } else { } if (!sse) { - dasm_put(Dst, 5400); + dasm_put(Dst, 5419); } - dasm_put(Dst, 5409, 1+1, LJ_TSTR); + dasm_put(Dst, 5428, 1+1, LJ_TSTR); if (sse) { - dasm_put(Dst, 5431, Dt5(->len)); + dasm_put(Dst, 5450, Dt5(->len)); } else { - dasm_put(Dst, 5442, Dt5(->len)); + dasm_put(Dst, 5461, Dt5(->len)); } - dasm_put(Dst, 5450, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); + dasm_put(Dst, 5469, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); if (sse) { - dasm_put(Dst, 5484); + dasm_put(Dst, 5503); } else { - dasm_put(Dst, 5494); + dasm_put(Dst, 5513); } - dasm_put(Dst, 5505, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); + dasm_put(Dst, 5524, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5542); + dasm_put(Dst, 5561); } else { - dasm_put(Dst, 5562); + dasm_put(Dst, 5581); } - dasm_put(Dst, 5582, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); - dasm_put(Dst, 2485); + dasm_put(Dst, 5601, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); + dasm_put(Dst, 2504); if (sse) { - dasm_put(Dst, 5696); + dasm_put(Dst, 5715); } else { - dasm_put(Dst, 5707); + dasm_put(Dst, 5726); } - dasm_put(Dst, 5715, LJ_TSTR, LJ_TISNUM, Dt5(->len)); + dasm_put(Dst, 5734, LJ_TSTR, LJ_TISNUM, Dt5(->len)); if (sse) { - dasm_put(Dst, 5745); + dasm_put(Dst, 5764); } else { } - dasm_put(Dst, 5752, sizeof(GCstr)-1); - dasm_put(Dst, 5827, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 5888, LJ_TSTR, LJ_TISNUM); + dasm_put(Dst, 5771, sizeof(GCstr)-1); + dasm_put(Dst, 5846, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 5907, LJ_TSTR, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5912); + dasm_put(Dst, 5931); } else { - dasm_put(Dst, 5919); + dasm_put(Dst, 5938); } - dasm_put(Dst, 5931, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5999, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6069, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 6145, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6230, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6307, 1+1, LJ_TTAB); + dasm_put(Dst, 5950, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 6018, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); + dasm_put(Dst, 6088, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); + dasm_put(Dst, 6164, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 6249, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); + dasm_put(Dst, 6326, 1+1, LJ_TTAB); if (sse) { - dasm_put(Dst, 6380); + dasm_put(Dst, 6399); } else { } if (sse) { - dasm_put(Dst, 6390, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6409, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } if (sse) { - dasm_put(Dst, 6442, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6461, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6485); + dasm_put(Dst, 6504); if (sse) { - dasm_put(Dst, 6495); + dasm_put(Dst, 6514); } - dasm_put(Dst, 6499, LJ_TISNUM); + dasm_put(Dst, 6518, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6517); + dasm_put(Dst, 6536); } else { } - dasm_put(Dst, 6534); + dasm_put(Dst, 6553); if (sse) { - dasm_put(Dst, 6542, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6561, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6485); + dasm_put(Dst, 6504); if (sse) { - dasm_put(Dst, 6495); + dasm_put(Dst, 6514); } - dasm_put(Dst, 6499, LJ_TISNUM); + dasm_put(Dst, 6518, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6585); + dasm_put(Dst, 6604); } else { } - dasm_put(Dst, 6534); + dasm_put(Dst, 6553); if (sse) { - dasm_put(Dst, 6602, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6621, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6485); + dasm_put(Dst, 6504); if (sse) { - dasm_put(Dst, 6495); + dasm_put(Dst, 6514); } - dasm_put(Dst, 6499, LJ_TISNUM); + dasm_put(Dst, 6518, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6645); + dasm_put(Dst, 6664); } else { } - dasm_put(Dst, 6534); + dasm_put(Dst, 6553); if (sse) { - dasm_put(Dst, 6662, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6681, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6705); + dasm_put(Dst, 6724); if (sse) { - dasm_put(Dst, 6712, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6731, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6755); + dasm_put(Dst, 6774); if (sse) { - dasm_put(Dst, 6759); + dasm_put(Dst, 6778); } else { } - dasm_put(Dst, 6785); + dasm_put(Dst, 6804); if (sse) { - dasm_put(Dst, 6376); + dasm_put(Dst, 6395); } - dasm_put(Dst, 6788); + dasm_put(Dst, 6807); if (sse) { - dasm_put(Dst, 6797, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6816, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6866); + dasm_put(Dst, 6885); if (sse) { - dasm_put(Dst, 6875, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6894, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6944); + dasm_put(Dst, 6963); if (sse) { - dasm_put(Dst, 6954, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6973, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 7023); + dasm_put(Dst, 7042); if (sse) { - dasm_put(Dst, 7033, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 7052, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 7102); + dasm_put(Dst, 7121); if (sse) { - dasm_put(Dst, 7111, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 7130, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 7180, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 7263, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); - dasm_put(Dst, 7381, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7199, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); + dasm_put(Dst, 7282, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7400, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7423, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); + dasm_put(Dst, 7442, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); #endif - dasm_put(Dst, 7456, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 7523, GG_DISP_STATIC*8); + dasm_put(Dst, 7475, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 7542, GG_DISP_STATIC*8); #if LJ_HASJIT - dasm_put(Dst, 7560); + dasm_put(Dst, 7579); #endif - dasm_put(Dst, 7562); + dasm_put(Dst, 7581); #if LJ_HASJIT - dasm_put(Dst, 7560); + dasm_put(Dst, 7579); #endif - dasm_put(Dst, 7565); + dasm_put(Dst, 7584); #if LJ_HASJIT - dasm_put(Dst, 7560); + dasm_put(Dst, 7579); #endif - dasm_put(Dst, 7568); + dasm_put(Dst, 7587); #if LJ_HASJIT - dasm_put(Dst, 7571, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); + dasm_put(Dst, 7590, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); #endif - dasm_put(Dst, 7618); + dasm_put(Dst, 7637); if (!sse) { - dasm_put(Dst, 7621); + dasm_put(Dst, 7640); } - dasm_put(Dst, 7666, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 7685, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); if (!sse) { - dasm_put(Dst, 7752); + dasm_put(Dst, 7771); } - dasm_put(Dst, 7797, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); + dasm_put(Dst, 7816, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); if (!sse) { - dasm_put(Dst, 7883); + dasm_put(Dst, 7902); } - dasm_put(Dst, 7922, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 7941, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); if (sse) { - dasm_put(Dst, 8011, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 8030, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); } else { - dasm_put(Dst, 8125); + dasm_put(Dst, 8144); } - dasm_put(Dst, 8172); + dasm_put(Dst, 8191); if (!sse) { } else { - dasm_put(Dst, 8249); + dasm_put(Dst, 8268); } - dasm_put(Dst, 8252); - dasm_put(Dst, 8337, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - dasm_put(Dst, 8438, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); - dasm_put(Dst, 8612); + dasm_put(Dst, 8271); + dasm_put(Dst, 8356, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 8457, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); + dasm_put(Dst, 8631); if (sse) { - dasm_put(Dst, 8653); - dasm_put(Dst, 8723); - dasm_put(Dst, 8795); + dasm_put(Dst, 8672); + dasm_put(Dst, 8742); + dasm_put(Dst, 8814); } else { - dasm_put(Dst, 8847); - dasm_put(Dst, 8939); + dasm_put(Dst, 8866); + dasm_put(Dst, 8958); } - dasm_put(Dst, 8985); + dasm_put(Dst, 9004); if (sse) { - dasm_put(Dst, 8991, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); - dasm_put(Dst, 9076, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); + dasm_put(Dst, 9010, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); + dasm_put(Dst, 9095, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); } else { - dasm_put(Dst, 9204); - dasm_put(Dst, 9287); + dasm_put(Dst, 9223); + dasm_put(Dst, 9306); if (cmov) { - dasm_put(Dst, 9342); - } else { dasm_put(Dst, 9361); + } else { + dasm_put(Dst, 9380); } - dasm_put(Dst, 9200); + dasm_put(Dst, 9219); } - dasm_put(Dst, 9402); + dasm_put(Dst, 9421); } /* Generate the code for a single instruction. */ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) { int vk = 0; - dasm_put(Dst, 9424, defop); + dasm_put(Dst, 159, defop); switch (op) { @@ -1423,602 +1427,602 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) /* Remember: all ops branch for a true comparison, fall through otherwise. */ case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - dasm_put(Dst, 9426, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9443, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9447); + dasm_put(Dst, 9464); } else { - dasm_put(Dst, 9462); + dasm_put(Dst, 9479); if (cmov) { - dasm_put(Dst, 9472); + dasm_put(Dst, 9489); } else { - dasm_put(Dst, 9478); + dasm_put(Dst, 9495); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 9485); + dasm_put(Dst, 9502); break; case BC_ISGE: - dasm_put(Dst, 9282); + dasm_put(Dst, 9301); break; case BC_ISLE: - dasm_put(Dst, 6302); + dasm_put(Dst, 6321); break; case BC_ISGT: - dasm_put(Dst, 9490); + dasm_put(Dst, 9507); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 9495, -BCBIAS_J*4); + dasm_put(Dst, 9512, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 9530, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9547, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9556); + dasm_put(Dst, 9573); } else { - dasm_put(Dst, 9568); + dasm_put(Dst, 9585); if (cmov) { - dasm_put(Dst, 9472); + dasm_put(Dst, 9489); } else { - dasm_put(Dst, 9478); + dasm_put(Dst, 9495); } } iseqne_fp: if (vk) { - dasm_put(Dst, 9575); + dasm_put(Dst, 9592); } else { - dasm_put(Dst, 9584); + dasm_put(Dst, 9601); } iseqne_end: if (vk) { - dasm_put(Dst, 9593, -BCBIAS_J*4); + dasm_put(Dst, 9610, -BCBIAS_J*4); } else { - dasm_put(Dst, 9608, -BCBIAS_J*4); + dasm_put(Dst, 9625, -BCBIAS_J*4); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 9623, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32)); + dasm_put(Dst, 9934, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); } else { - dasm_put(Dst, 9942); + dasm_put(Dst, 9959); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_LEN: - dasm_put(Dst, 9951, LJ_TSTR); + dasm_put(Dst, 9968, LJ_TSTR); if (sse) { - dasm_put(Dst, 9965, Dt5(->len)); + dasm_put(Dst, 9982, Dt5(->len)); } else { - dasm_put(Dst, 9983, Dt5(->len)); + dasm_put(Dst, 10000, Dt5(->len)); } - dasm_put(Dst, 9992, LJ_TTAB); + dasm_put(Dst, 10009, LJ_TTAB); if (sse) { - dasm_put(Dst, 10034); + dasm_put(Dst, 10051); } else { } - dasm_put(Dst, 10043); + dasm_put(Dst, 10060); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 10053); + dasm_put(Dst, 10070); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10061, LJ_TISNUM); + dasm_put(Dst, 10078, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10073); + dasm_put(Dst, 10090); } else { - dasm_put(Dst, 10088); + dasm_put(Dst, 10105); } break; case 1: - dasm_put(Dst, 10097, LJ_TISNUM); + dasm_put(Dst, 10114, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10109); + dasm_put(Dst, 10126); } else { - dasm_put(Dst, 10124); + dasm_put(Dst, 10141); } break; default: - dasm_put(Dst, 10133, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10155); + dasm_put(Dst, 10172); } else { - dasm_put(Dst, 10169); + dasm_put(Dst, 10186); } break; } if (sse) { - dasm_put(Dst, 9935); + dasm_put(Dst, 9952); } else { - dasm_put(Dst, 9947); + dasm_put(Dst, 9964); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 10053); + dasm_put(Dst, 10070); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10061, LJ_TISNUM); + dasm_put(Dst, 10078, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10177); + dasm_put(Dst, 10194); } else { - dasm_put(Dst, 10192); + dasm_put(Dst, 10209); } break; case 1: - dasm_put(Dst, 10097, LJ_TISNUM); + dasm_put(Dst, 10114, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10201); + dasm_put(Dst, 10218); } else { - dasm_put(Dst, 10216); + dasm_put(Dst, 10233); } break; default: - dasm_put(Dst, 10133, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10225); + dasm_put(Dst, 10242); } else { - dasm_put(Dst, 10239); + dasm_put(Dst, 10256); } break; } if (sse) { - dasm_put(Dst, 9935); + dasm_put(Dst, 9952); } else { - dasm_put(Dst, 9947); + dasm_put(Dst, 9964); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 10053); + dasm_put(Dst, 10070); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10061, LJ_TISNUM); + dasm_put(Dst, 10078, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10247); + dasm_put(Dst, 10264); } else { - dasm_put(Dst, 10262); + dasm_put(Dst, 10279); } break; case 1: - dasm_put(Dst, 10097, LJ_TISNUM); + dasm_put(Dst, 10114, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10271); + dasm_put(Dst, 10288); } else { - dasm_put(Dst, 10286); + dasm_put(Dst, 10303); } break; default: - dasm_put(Dst, 10133, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10295); + dasm_put(Dst, 10312); } else { - dasm_put(Dst, 10309); + dasm_put(Dst, 10326); } break; } if (sse) { - dasm_put(Dst, 9935); + dasm_put(Dst, 9952); } else { - dasm_put(Dst, 9947); + dasm_put(Dst, 9964); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 10053); + dasm_put(Dst, 10070); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10061, LJ_TISNUM); + dasm_put(Dst, 10078, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10317); + dasm_put(Dst, 10334); } else { - dasm_put(Dst, 10332); + dasm_put(Dst, 10349); } break; case 1: - dasm_put(Dst, 10097, LJ_TISNUM); + dasm_put(Dst, 10114, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10341); + dasm_put(Dst, 10358); } else { - dasm_put(Dst, 10356); + dasm_put(Dst, 10373); } break; default: - dasm_put(Dst, 10133, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10365); + dasm_put(Dst, 10382); } else { - dasm_put(Dst, 10379); + dasm_put(Dst, 10396); } break; } if (sse) { - dasm_put(Dst, 9935); + dasm_put(Dst, 9952); } else { - dasm_put(Dst, 9947); + dasm_put(Dst, 9964); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_MODVN: - dasm_put(Dst, 10053); + dasm_put(Dst, 10070); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10061, LJ_TISNUM); + dasm_put(Dst, 10078, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10387); + dasm_put(Dst, 10404); } else { - dasm_put(Dst, 10402); + dasm_put(Dst, 10419); } break; case 1: - dasm_put(Dst, 10097, LJ_TISNUM); + dasm_put(Dst, 10114, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10411); + dasm_put(Dst, 10428); } else { - dasm_put(Dst, 10426); + dasm_put(Dst, 10443); } break; default: - dasm_put(Dst, 10133, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10435); + dasm_put(Dst, 10452); } else { - dasm_put(Dst, 10449); + dasm_put(Dst, 10466); } break; } - dasm_put(Dst, 10457); + dasm_put(Dst, 10474); if (sse) { - dasm_put(Dst, 9935); + dasm_put(Dst, 9952); } else { - dasm_put(Dst, 9947); + dasm_put(Dst, 9964); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 10053); + dasm_put(Dst, 10070); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10061, LJ_TISNUM); + dasm_put(Dst, 10078, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10387); + dasm_put(Dst, 10404); } else { - dasm_put(Dst, 10402); + dasm_put(Dst, 10419); } break; case 1: - dasm_put(Dst, 10097, LJ_TISNUM); + dasm_put(Dst, 10114, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10411); + dasm_put(Dst, 10428); } else { - dasm_put(Dst, 10426); + dasm_put(Dst, 10443); } break; default: - dasm_put(Dst, 10133, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10435); + dasm_put(Dst, 10452); } else { - dasm_put(Dst, 10449); + dasm_put(Dst, 10466); } break; } - dasm_put(Dst, 10463); + dasm_put(Dst, 10480); break; case BC_POW: - dasm_put(Dst, 10053); + dasm_put(Dst, 10070); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10061, LJ_TISNUM); + dasm_put(Dst, 10078, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10387); + dasm_put(Dst, 10404); } else { - dasm_put(Dst, 10402); + dasm_put(Dst, 10419); } break; case 1: - dasm_put(Dst, 10097, LJ_TISNUM); + dasm_put(Dst, 10114, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10411); + dasm_put(Dst, 10428); } else { - dasm_put(Dst, 10426); + dasm_put(Dst, 10443); } break; default: - dasm_put(Dst, 10133, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10150, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10435); + dasm_put(Dst, 10452); } else { - dasm_put(Dst, 10449); + dasm_put(Dst, 10466); } break; } - dasm_put(Dst, 10468); + dasm_put(Dst, 10485); if (sse) { - dasm_put(Dst, 9935); + dasm_put(Dst, 9952); } else { - dasm_put(Dst, 9947); + dasm_put(Dst, 9964); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_CAT: - dasm_put(Dst, 10472, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 10489, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 10563, LJ_TSTR); + dasm_put(Dst, 10580, LJ_TSTR); break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 10600); + dasm_put(Dst, 10617); } else { - dasm_put(Dst, 10615); + dasm_put(Dst, 10632); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 10623); + dasm_put(Dst, 10640); } else { - dasm_put(Dst, 10637); + dasm_put(Dst, 10654); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_KPRI: - dasm_put(Dst, 10645); + dasm_put(Dst, 10662); break; case BC_KNIL: - dasm_put(Dst, 10674, LJ_TNIL); + dasm_put(Dst, 10691, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 10722, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10739, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 10768, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - dasm_put(Dst, 10864); + dasm_put(Dst, 10785, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); + dasm_put(Dst, 10881); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 10876, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); + dasm_put(Dst, 10893, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); break; case BC_USETN: - dasm_put(Dst, 10972); + dasm_put(Dst, 10989); if (sse) { - dasm_put(Dst, 10977); + dasm_put(Dst, 10994); } else { - dasm_put(Dst, 9751); + dasm_put(Dst, 9768); } - dasm_put(Dst, 10985, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11002, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 4858); + dasm_put(Dst, 4877); } else { - dasm_put(Dst, 4864); + dasm_put(Dst, 4883); } - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_USETP: - dasm_put(Dst, 10994, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11011, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 11034, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 11051, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 11090, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 11107, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 11157, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11174, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 11281, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11298, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 11380, Dt7(->env)); + dasm_put(Dst, 11397, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 11400, Dt7(->env)); + dasm_put(Dst, 11417, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 11420, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 11437, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11453); + dasm_put(Dst, 11470); } else { } - dasm_put(Dst, 11474, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 11672, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 11689, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); - dasm_put(Dst, 11964, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 11896, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 11981, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETS: - dasm_put(Dst, 12028, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 12105, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 12197, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12045, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 12122, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 12214, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETB: - dasm_put(Dst, 12289, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 12389, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12306, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 12406, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETM: - dasm_put(Dst, 12437); + dasm_put(Dst, 12454); if (sse) { - dasm_put(Dst, 10977); + dasm_put(Dst, 10994); } else { } - dasm_put(Dst, 12442, Dt6(->marked), LJ_GC_BLACK); + dasm_put(Dst, 12459, Dt6(->marked), LJ_GC_BLACK); if (sse) { - dasm_put(Dst, 12467); + dasm_put(Dst, 12484); } else { } - dasm_put(Dst, 12475, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); - dasm_put(Dst, 12611, Dt6(->gclist)); + dasm_put(Dst, 12492, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); + dasm_put(Dst, 12628, Dt6(->gclist)); break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALL: case BC_CALLM: - dasm_put(Dst, 10057); + dasm_put(Dst, 10074); if (op == BC_CALLM) { - dasm_put(Dst, 12619); + dasm_put(Dst, 12636); } - dasm_put(Dst, 12624, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 12641, LJ_TFUNC, Dt7(->gate)); break; case BC_CALLMT: - dasm_put(Dst, 12619); + dasm_put(Dst, 12636); break; case BC_CALLT: - dasm_put(Dst, 12647, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); - dasm_put(Dst, 12756, FRAME_TYPE, Dt7(->pt), Dt9(->k)); + dasm_put(Dst, 12664, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); + dasm_put(Dst, 12773, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); break; case BC_ITERC: - dasm_put(Dst, 12817, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 12834, LJ_TFUNC, Dt7(->gate)); break; case BC_VARG: - dasm_put(Dst, 12879, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); - dasm_put(Dst, 13033, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 12896, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); + dasm_put(Dst, 13050, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 12619); + dasm_put(Dst, 12636); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 13138); + dasm_put(Dst, 13155); } - dasm_put(Dst, 13142, FRAME_TYPE); + dasm_put(Dst, 13159, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 13161); + dasm_put(Dst, 13178); break; case BC_RET1: - dasm_put(Dst, 13225); + dasm_put(Dst, 13242); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 13241); + dasm_put(Dst, 13258); default: break; } - dasm_put(Dst, 13252, Dt7(->pt), Dt9(->k)); + dasm_put(Dst, 13269, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 13300, LJ_TNIL); + dasm_put(Dst, 13317, LJ_TNIL); } else { - dasm_put(Dst, 13311, LJ_TNIL); + dasm_put(Dst, 13328, LJ_TNIL); } - dasm_put(Dst, 13318); + dasm_put(Dst, 13335); if (op != BC_RET0) { - dasm_put(Dst, 13338); + dasm_put(Dst, 13355); } - dasm_put(Dst, 4947); + dasm_put(Dst, 4966); break; /* -- Loops and branches ------------------------------------------------ */ @@ -2026,7 +2030,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 13341, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2038,57 +2042,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORI: case BC_IFORL: vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 13362); + dasm_put(Dst, 13379); if (!vk) { - dasm_put(Dst, 13366, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 13383, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 13385); + dasm_put(Dst, 13402); if (!vk) { - dasm_put(Dst, 13389, LJ_TISNUM); + dasm_put(Dst, 13406, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 13398); + dasm_put(Dst, 13415); if (vk) { - dasm_put(Dst, 13410); + dasm_put(Dst, 13427); } else { - dasm_put(Dst, 13429); + dasm_put(Dst, 13446); } - dasm_put(Dst, 13434); + dasm_put(Dst, 13451); } else { - dasm_put(Dst, 13447); + dasm_put(Dst, 13464); if (vk) { - dasm_put(Dst, 13453); + dasm_put(Dst, 13470); } else { - dasm_put(Dst, 13469); + dasm_put(Dst, 13486); } - dasm_put(Dst, 13477); + dasm_put(Dst, 13494); if (cmov) { - dasm_put(Dst, 9472); + dasm_put(Dst, 9489); } else { - dasm_put(Dst, 9478); + dasm_put(Dst, 9495); } if (!cmov) { - dasm_put(Dst, 13482); + dasm_put(Dst, 13499); } } if (op == BC_FORI) { - dasm_put(Dst, 13488, -BCBIAS_J*4); + dasm_put(Dst, 13505, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 13498, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 13515, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 13512, -BCBIAS_J*4); + dasm_put(Dst, 13529, -BCBIAS_J*4); } else { - dasm_put(Dst, 13508, BC_JLOOP); + dasm_put(Dst, 13525, BC_JLOOP); } - dasm_put(Dst, 9507); + dasm_put(Dst, 9524); if (sse) { - dasm_put(Dst, 13522); + dasm_put(Dst, 13539); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 13341, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2097,33 +2101,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 13533, LJ_TNIL); + dasm_put(Dst, 13550, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 13548, BC_JLOOP); + dasm_put(Dst, 13565, BC_JLOOP); } else { - dasm_put(Dst, 13562, -BCBIAS_J*4); + dasm_put(Dst, 13579, -BCBIAS_J*4); } - dasm_put(Dst, 9811); + dasm_put(Dst, 9828); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 13341, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13358, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 7597); + dasm_put(Dst, 7616); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 13578, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); + dasm_put(Dst, 13595, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); #endif break; case BC_JMP: - dasm_put(Dst, 13605, -BCBIAS_J*4); + dasm_put(Dst, 13622, -BCBIAS_J*4); break; /* ---------------------------------------------------------------------- */ @@ -2151,7 +2155,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 13631); + dasm_put(Dst, 13648); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op, cmov, sse); diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h index 797acba3..d4db201c 100644 --- a/src/buildvm_x64win.h +++ b/src/buildvm_x64win.h @@ -12,61 +12,62 @@ #define DASM_SECTION_CODE_OP 0 #define DASM_SECTION_CODE_SUB 1 #define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[13481] = { - 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,141,181,233, - 139,189,233,139,108,36,96,141,12,202,141,68,194,252,252,59,141,233,15,135, - 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244, - 1,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137,106,252,248, - 139,173,233,137,114,252,252,15,182,181,233,141,60,252,242,139,116,36,96,141, - 66,4,59,190,233,15,135,244,13,15,182,181,233,133,252,246,15,132,244,248,248, - 1,131,193,8,57,209,15,131,244,248,139,121,252,248,137,120,252,252,139,121, - 252,252,137,56,131,192,8,199,65,252,252,237,131,252,238,1,15,133,244,1,248, - 2,15,182,141,233,141,181,233,255,139,189,233,141,12,202,252,233,244,9,248, - 14,137,113,252,252,72,139,189,233,139,108,36,96,141,68,193,252,248,137,141, - 233,141,136,233,137,133,233,59,141,233,72,137,252,250,137,252,233,15,135, - 244,15,199,131,233,237,252,255,147,233,199,131,233,237,139,149,233,141,12, - 194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,84,252,247,198,237,255, - 15,132,244,17,252,233,244,18,248,19,137,113,252,252,72,139,189,233,139,108, - 36,96,141,68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,233,137, - 252,233,15,135,244,15,199,131,233,237,252,255,215,199,131,233,237,139,149, - 233,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,84,252,247, - 198,237,255,15,132,244,17,248,18,252,247,198,237,15,132,244,20,199,131,233, - 237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,1,139, - 44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232,1,15, - 133,244,1,248,2,139,108,36,96,137,181,233,248,3,139,68,36,84,139,76,36,88, - 248,4,57,193,15,133,244,252,248,5,255,131,252,234,8,137,149,233,248,21,72, - 139,76,36,104,72,137,141,233,49,192,248,22,72,131,196,40,91,94,95,93,195, - 248,6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194, - 8,131,192,1,252,233,244,4,248,7,133,201,15,132,244,5,41,193,141,20,202,252, - 233,244,5,248,8,137,149,233,255,137,68,36,84,137,202,137,252,233,232,251, - 1,0,139,149,233,252,233,244,3,248,23,137,208,72,137,204,248,24,139,108,36, - 96,139,173,233,199,133,233,237,252,233,244,22,248,25,72,129,225,239,72,137, - 204,248,26,139,108,36,96,72,199,193,252,248,252,255,252,255,252,255,184,237, - 139,149,233,139,157,233,129,195,239,139,114,252,252,199,66,252,252,237,199, - 131,233,237,255,252,233,244,16,248,20,252,247,198,237,15,132,244,27,131,230, - 252,248,41,252,242,72,141,76,49,252,248,139,114,252,252,199,68,10,4,237,252, - 233,244,16,248,15,186,237,252,233,244,247,248,13,131,232,8,137,202,137,252, - 249,141,181,233,139,108,36,96,248,11,131,232,4,41,209,193,252,233,3,131,198, - 4,137,149,233,137,133,233,137,116,36,100,137,202,248,1,137,252,233,232,251, - 1,0,139,141,233,255,139,133,233,139,105,252,248,139,113,252,252,41,200,193, - 232,3,131,192,1,252,255,165,233,248,28,85,87,86,83,72,131,252,236,40,137, - 205,137,76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233, - 129,195,239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137, - 68,36,92,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233, - 139,133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,84, - 252,247,198,237,15,132,244,17,252,233,244,18,248,29,255,85,87,86,83,72,131, - 252,236,40,190,237,68,137,76,36,92,252,233,244,247,248,30,85,87,86,83,72, - 131,252,236,40,190,237,248,1,68,137,68,36,88,137,205,137,76,36,96,137,209, - 248,2,72,139,189,233,72,137,124,36,104,137,108,36,100,72,137,165,233,139, - 157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133, - 233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,239,15, - 133,244,31,252,255,165,233,248,32,255,85,87,86,83,72,131,252,236,40,137,205, - 137,76,36,96,137,108,36,100,139,189,233,43,189,233,199,68,36,92,0,0,0,0,137, - 124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209, - 133,192,15,132,244,21,137,193,190,237,252,233,244,2,248,27,1,209,131,230, - 252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244, - 72,99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,139,191,233,139, +static const unsigned char build_actionlist[13496] = { + 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233, + 139,108,36,96,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15, + 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,252,235,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3, + 252,233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137, + 106,252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139, + 108,36,96,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15, + 132,244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137, + 56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15, + 133,244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193, + 232,16,252,255,36,252,235,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133, + 244,3,252,233,244,2,248,14,137,113,252,252,72,139,189,233,139,108,36,96,141, + 68,193,252,248,137,141,233,141,136,233,137,133,233,59,141,233,72,137,252, + 250,137,252,233,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233, + 237,139,149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137, + 68,36,84,252,247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252, + 252,72,139,189,233,139,108,36,96,141,68,193,252,248,137,141,233,141,136,233, + 137,133,233,59,141,233,137,252,233,15,135,244,15,199,131,233,237,252,255, + 215,199,131,233,237,139,149,233,255,141,12,194,252,247,217,3,141,233,248, + 16,131,192,1,137,68,36,84,252,247,198,237,15,132,244,17,248,18,252,247,198, + 237,15,132,244,20,199,131,233,237,131,230,252,248,41,214,252,247,222,131, + 232,1,15,132,244,248,248,1,139,44,10,137,106,252,248,139,108,10,4,137,106, + 252,252,131,194,8,131,232,1,15,133,244,1,248,2,139,108,36,96,137,181,233, + 248,3,139,68,36,84,139,76,36,88,248,4,255,57,193,15,133,244,252,248,5,131, + 252,234,8,137,149,233,248,21,72,139,76,36,104,72,137,141,233,49,192,248,22, + 72,131,196,40,91,94,95,93,195,248,6,15,130,244,253,59,149,233,15,135,244, + 254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7,133,201,15, + 132,244,5,41,193,141,20,202,252,233,244,5,248,8,255,137,149,233,137,68,36, + 84,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248,23,137,208, + 72,137,204,248,24,139,108,36,96,139,173,233,199,133,233,237,252,233,244,22, + 248,25,72,129,225,239,72,137,204,248,26,139,108,36,96,72,199,193,252,248, + 252,255,252,255,252,255,184,237,139,149,233,139,157,233,129,195,239,139,114, + 252,252,199,66,252,252,237,199,131,233,237,255,252,233,244,16,248,20,252, + 247,198,237,15,132,244,27,131,230,252,248,41,252,242,72,141,76,49,252,248, + 139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233,244, + 247,248,13,137,202,248,11,141,68,194,252,248,15,182,142,233,131,198,4,137, + 149,233,137,133,233,137,116,36,100,137,202,248,1,137,252,233,232,251,1,0, + 139,141,233,255,139,133,233,139,105,252,248,139,113,252,252,41,200,193,232, + 3,131,192,1,252,255,165,233,248,28,85,87,86,83,72,131,252,236,40,137,205, + 137,76,36,96,137,209,190,237,49,192,72,141,188,253,36,233,139,157,233,129, + 195,239,72,137,189,233,137,68,36,100,72,137,68,36,104,137,68,36,88,137,68, + 36,92,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139, + 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,84,252, + 247,198,237,15,132,244,17,252,233,244,18,248,29,255,85,87,86,83,72,131,252, + 236,40,190,237,68,137,76,36,92,252,233,244,247,248,30,85,87,86,83,72,131, + 252,236,40,190,237,248,1,68,137,68,36,88,137,205,137,76,36,96,137,209,248, + 2,72,139,189,233,72,137,124,36,104,137,108,36,100,72,137,165,233,139,157, + 233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233, + 41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,239,15,133, + 244,31,252,255,165,233,248,32,255,85,87,86,83,72,131,252,236,40,137,205,137, + 76,36,96,137,108,36,100,139,189,233,43,189,233,199,68,36,92,0,0,0,0,137,124, + 36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209,133, + 192,15,132,244,21,137,193,190,237,252,233,244,2,248,27,1,209,131,230,252, + 248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,72, + 99,77,252,240,72,141,61,245,72,1,252,249,139,122,252,248,139,191,233,139, 191,233,252,255,225,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41, 252,233,15,132,244,34,252,247,217,193,252,233,3,65,137,200,139,76,36,96,137, 145,233,139,80,4,139,0,137,85,4,137,69,0,137,252,234,252,233,244,35,248,36, @@ -468,170 +469,170 @@ static const unsigned char build_actionlist[13481] = { 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 155,137,200,86,72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91, - 94,195,255,249,255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4, - 239,15,135,244,43,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221, - 4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224, - 158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141, - 180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251, - 129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4, - 202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138, - 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248, - 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108, - 202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193, - 15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132, - 244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255, - 252,233,244,47,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133, - 244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244, - 248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72, - 252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253, - 239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137, - 44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15, - 182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,139,4,194, - 137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16, - 252,255,36,252,235,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108, - 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 255,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237, - 237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224, - 221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192, - 252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221, - 28,202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, - 235,248,2,129,124,253,194,4,239,15,133,244,52,139,12,194,137,213,232,251, - 1,18,255,252,242,15,42,192,137,252,234,255,15,182,78,252,253,252,233,244, - 1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244, - 48,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220, - 4,199,255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199, - 252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234, - 4,239,15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16, - 4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15, - 16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242, - 15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252, - 242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255, - 252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199, - 255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252, - 234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220, - 12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234, - 220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199, - 220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4, - 252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221, - 4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255, - 221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194, - 255,221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255, - 232,244,108,255,15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20, - 194,65,137,192,65,41,232,248,35,137,205,137,116,36,100,232,251,1,21,139,149, - 233,133,192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68,252, - 234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199, - 68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,252,235,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223, - 70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221, - 4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,141,68,194, - 4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106, - 252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137, - 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12, - 194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15, - 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233, - 235,15,132,244,1,135,213,141,139,233,255,232,251,1,22,137,252,234,252,233, - 244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139, - 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6, - 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246, - 129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139, - 233,232,251,1,22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, - 15,16,4,199,255,139,172,253,141,233,139,141,233,255,72,252,247,208,139,106, - 252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108, - 36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232, - 251,1,23,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139, - 66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,1,24,139,149,233, - 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248, - 1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249, - 248,2,137,194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251, - 232,251,1,25,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184, - 1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252, - 233,244,1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59, - 139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1, - 27,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233, - 232,251,1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247, - 208,139,106,252,248,139,173,233,139,4,135,252,233,244,157,255,72,252,247, - 208,139,106,252,248,139,173,233,139,4,135,252,233,244,158,255,15,182,252, - 236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,129, - 124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192, - 252,242,15,42,200,102,15,46,193,255,15,133,244,38,59,133,233,15,131,244,38, - 193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64, - 4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16, - 252,255,36,252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129, - 233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253, - 194,4,239,15,133,244,38,139,4,194,252,233,244,157,255,15,182,252,236,15,182, - 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139, - 44,252,234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129, - 185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15, - 132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76, - 194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15, - 133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133, - 244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4, - 239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133, - 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137, - 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, - 235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132, - 244,37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, - 41,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41, - 59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244, - 249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202, - 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233, - 235,15,132,244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4, - 239,15,133,244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,139,139, - 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252, - 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, - 244,39,139,44,252,234,248,158,139,141,233,35,136,233,105,201,239,198,133, - 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244, - 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133, - 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131, - 189,233,0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132, - 244,39,139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1, - 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39, - 248,6,137,68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233, - 76,141,68,36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233, - 139,108,36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137, - 171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253, - 252,234,4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224, - 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15, - 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15, - 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,78,252, - 253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233, - 15,182,78,252,253,252,233,244,2,255,137,124,36,80,255,248,1,141,12,202,139, - 105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252, - 242,15,45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131, - 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131, - 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139, - 76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251, - 1,29,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, - 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,141, - 76,202,8,139,105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165, - 233,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133, - 244,31,248,53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106, - 252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105, - 4,137,111,4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248, - 3,137,209,128,189,233,1,15,135,244,251,248,4,139,68,36,84,252,255,165,233, - 248,5,255,252,247,198,237,15,133,244,4,15,182,70,252,253,72,252,247,208,141, - 20,194,139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139, - 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255, - 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139, - 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137, - 65,252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255, - 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, + 94,195,255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135, + 244,43,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221, + 4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, + 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, + 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, + 235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253, + 202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221, + 4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132, + 244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15, + 183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244, + 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, + 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, + 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, + 72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202, + 59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242, + 15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131, + 198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131, + 244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15, + 183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131, + 198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,139,4,194,137,108,202, + 4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, + 235,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6, + 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124, + 253,194,4,239,15,135,244,50,255,252,242,15,16,4,194,72,184,237,237,102,72, + 15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, + 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, + 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, + 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, + 2,129,124,253,194,4,239,15,133,244,52,139,12,194,137,213,232,251,1,18,255, + 252,242,15,42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15, + 182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48,255,252, + 242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129, + 124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242,15,88, + 4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135, + 244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252,234,252, + 242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252, + 242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252, + 242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252, + 234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4, + 252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16, + 4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15, + 16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242, + 15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252, + 242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255, + 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194, + 255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4, + 199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4, + 252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234, + 221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244,108,255, + 15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192, + 65,41,232,248,35,137,205,137,116,36,100,232,251,1,21,139,149,233,133,192, + 15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44, + 252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193, + 232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,68,202,4,237,137, + 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, + 255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221, + 28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202, + 255,72,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193, + 232,16,252,255,36,252,235,255,141,76,202,12,141,68,194,4,189,237,137,105, + 252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248,139,172,253, + 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,248, + 139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137, + 77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129, + 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135, + 213,141,139,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247, + 208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199, + 64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,129,233,235,15, + 132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251, + 1,22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199, + 255,139,172,253,141,233,139,141,233,255,72,252,247,208,139,106,252,248,139, + 172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198, + 4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131, + 189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,23, + 139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, + 36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248, + 139,20,135,137,252,233,137,116,36,100,232,251,1,24,139,149,233,15,182,78, + 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4, + 193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248,1,65,137,192, + 37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,248,2,137, + 194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,232,251, + 1,25,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0, + 252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252,233,244, + 1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233, + 137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,27,139, + 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15, + 182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251, + 1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139, + 106,252,248,139,173,233,139,4,135,252,233,244,157,255,72,252,247,208,139, + 106,252,248,139,173,233,139,4,135,252,233,244,158,255,15,182,252,236,15,182, + 192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194, + 4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15, + 42,200,102,15,46,193,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3, + 3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202, + 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235, + 15,132,244,38,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,194,4, + 239,15,133,244,38,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192, + 72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252, + 234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233, + 239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244, + 251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,15, + 182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244, + 1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3, + 252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15, + 133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129, + 120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202, + 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, + 2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,37, + 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139, + 44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,133, + 233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, + 1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, + 4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, + 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132, + 244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133, + 244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,139,139,233,137,171, + 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182, + 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139, + 44,252,234,248,158,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141, + 233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121, + 253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248, + 3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233, + 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,39, + 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, + 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137, + 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68, + 36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233,139,108, + 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, + 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, + 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133, + 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, + 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244, + 1,255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,78,252,253,252, + 233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182, + 78,252,253,252,233,244,2,255,137,124,36,80,255,248,1,141,12,202,139,105,252, + 248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,84,255,252,242,15, + 45,252,248,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,244,251, + 41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137, + 111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,204, + 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,137, + 145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,29,139,149, + 233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,131,233,137, + 171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,141,76,202,8,139, + 105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165,233,255,141, + 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,31,248, + 53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137, + 68,36,84,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,4, + 131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209, + 128,189,233,1,15,135,244,251,248,4,139,68,36,84,252,255,165,233,248,5,255, + 252,247,198,237,15,133,244,4,15,182,70,252,253,72,252,247,208,141,20,194, + 139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139,244,1, + 131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255,141, + 76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65, + 252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65, + 252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255,15, + 182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, 36,80,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, 252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130, @@ -1022,395 +1023,399 @@ static const char *const extnames[] = { #define DtE(_V) (int)(ptrdiff_t)&(((ExitInfo *)0)_V) #define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) #define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) +#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) /* Generate subroutines used by opcodes and other parts of the VM. */ /* The .code_sub section should be last to help static branch prediction. */ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) { dasm_put(Dst, 0); - dasm_put(Dst, 2, Dt7(->pt), Dt9(->framesize), sizeof(GCproto), Dt9(->k), Dt1(->maxstack), LJ_TNIL); + dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); #if LJ_HASJIT #endif - dasm_put(Dst, 63, FRAME_VARG, -FRAME_VARG, Dt7(->pt), Dt9(->framesize), Dt1(->maxstack), Dt9(->numparams), LJ_TNIL, Dt9(->framesize), sizeof(GCproto)); - dasm_put(Dst, 192, Dt9(->k), Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 282, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 365, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); - dasm_put(Dst, 456, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top)); - dasm_put(Dst, 538, Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); - dasm_put(Dst, 633, FRAME_P, LJ_TTRUE, LUA_MINSTACK, sizeof(GCproto), Dt1(->base), Dt1(->top), Dt1(->base)); - dasm_put(Dst, 737, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 869, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); - dasm_put(Dst, 987, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pt), Dt9(->k), Dt1(->base)); - dasm_put(Dst, 1165, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); + dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); + dasm_put(Dst, 157, LJ_TNIL, PC2PROTO(k)); +#if LJ_HASJIT +#endif + dasm_put(Dst, 192, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 290, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 373, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); + dasm_put(Dst, 478, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL); + dasm_put(Dst, 565, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); + dasm_put(Dst, 663, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base)); + dasm_put(Dst, 754, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); + dasm_put(Dst, 886, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 1004, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base)); + dasm_put(Dst, 1182, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); if (sse) { - dasm_put(Dst, 1211); + dasm_put(Dst, 1228); } else { } - dasm_put(Dst, 1224, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); - dasm_put(Dst, 1382, LJ_TTAB); + dasm_put(Dst, 1241, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); + dasm_put(Dst, 1399, LJ_TTAB); if (sse) { - dasm_put(Dst, 1211); + dasm_put(Dst, 1228); } else { } - dasm_put(Dst, 1402, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 1598, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); - dasm_put(Dst, 1707, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); - dasm_put(Dst, 1832, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*8, 1+1); - dasm_put(Dst, 1988, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); + dasm_put(Dst, 1419, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 1615, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); + dasm_put(Dst, 1724, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); + dasm_put(Dst, 1849, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*8, 1+1); + dasm_put(Dst, 2005, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); if (cmov) { - dasm_put(Dst, 2084); + dasm_put(Dst, 2101); } else { - dasm_put(Dst, 2088); + dasm_put(Dst, 2105); } - dasm_put(Dst, 2097, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); - dasm_put(Dst, 2185, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); - dasm_put(Dst, 2240, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); - dasm_put(Dst, 2312, 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)); - dasm_put(Dst, 2377, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); + dasm_put(Dst, 2114, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); + dasm_put(Dst, 2202, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); + dasm_put(Dst, 2257, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); + dasm_put(Dst, 2329, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 2394, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 2458); + dasm_put(Dst, 2475); } else { - dasm_put(Dst, 2468); + dasm_put(Dst, 2485); } - dasm_put(Dst, 2475, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2537, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); - dasm_put(Dst, 2624, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); - dasm_put(Dst, 2726, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 2492, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 2554, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); + dasm_put(Dst, 2641, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); + dasm_put(Dst, 2743, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 2781, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 2798, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); } else { } - dasm_put(Dst, 2814, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); - dasm_put(Dst, 2900, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); + dasm_put(Dst, 2831, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); + dasm_put(Dst, 2917, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); if (sse) { - dasm_put(Dst, 2930); + dasm_put(Dst, 2947); } else { - dasm_put(Dst, 2940); + dasm_put(Dst, 2957); } - dasm_put(Dst, 2947, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); - dasm_put(Dst, 3020, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); - dasm_put(Dst, 3119, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); - dasm_put(Dst, 3185, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); - dasm_put(Dst, 3289, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); - dasm_put(Dst, 3411, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); - dasm_put(Dst, 3494, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); - dasm_put(Dst, 3602, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); - dasm_put(Dst, 3699, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); + dasm_put(Dst, 2964, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 3037, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); + dasm_put(Dst, 3136, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 3202, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); + dasm_put(Dst, 3306, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); + dasm_put(Dst, 3428, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); + dasm_put(Dst, 3511, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 3619, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); + dasm_put(Dst, 3716, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); if (sse) { - dasm_put(Dst, 3788, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); + dasm_put(Dst, 3805, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); } else { - dasm_put(Dst, 3844, 1+1, LJ_TISNUM); + dasm_put(Dst, 3861, 1+1, LJ_TISNUM); } - dasm_put(Dst, 3876, 1+1, FRAME_TYPE, LJ_TNIL); + dasm_put(Dst, 3893, 1+1, FRAME_TYPE, LJ_TNIL); if (sse) { - dasm_put(Dst, 3960, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4022, 1+1, LJ_TISNUM); + dasm_put(Dst, 3977, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4039, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4052, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4111, 1+1, LJ_TISNUM); + dasm_put(Dst, 4069, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4128, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4138, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4207, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4264, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4327, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4417); + dasm_put(Dst, 4155, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4224, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4281, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4344, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4434); if (sse) { - dasm_put(Dst, 4429, 1+1, LJ_TISNUM); + dasm_put(Dst, 4446, 1+1, LJ_TISNUM); } else { } - dasm_put(Dst, 4454); + dasm_put(Dst, 4471); if (sse) { - dasm_put(Dst, 4476, 1+1, LJ_TISNUM); + dasm_put(Dst, 4493, 1+1, LJ_TISNUM); } else { } - dasm_put(Dst, 4501); + dasm_put(Dst, 4518); if (sse) { - dasm_put(Dst, 4523, 1+1, LJ_TISNUM); + dasm_put(Dst, 4540, 1+1, LJ_TISNUM); } else { } - dasm_put(Dst, 4548); + dasm_put(Dst, 4565); if (sse) { - dasm_put(Dst, 4572, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); + dasm_put(Dst, 4589, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); } else { - dasm_put(Dst, 4607, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); + dasm_put(Dst, 4624, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); } - dasm_put(Dst, 4636, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 4701, 1+1, LJ_TISNUM); + dasm_put(Dst, 4653, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 4718, 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 4796); + dasm_put(Dst, 4813); } else { - dasm_put(Dst, 4802); + dasm_put(Dst, 4819); } - dasm_put(Dst, 4811); + dasm_put(Dst, 4828); if (sse) { - dasm_put(Dst, 4836); + dasm_put(Dst, 4853); } else { - dasm_put(Dst, 4842); + dasm_put(Dst, 4859); } - dasm_put(Dst, 4845, 1+2); + dasm_put(Dst, 4862, 1+2); if (sse) { - dasm_put(Dst, 4854); + dasm_put(Dst, 4871); } else { - dasm_put(Dst, 4862); + dasm_put(Dst, 4879); } - dasm_put(Dst, 1595); + dasm_put(Dst, 475); if (sse) { - dasm_put(Dst, 4870, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); + dasm_put(Dst, 4887, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); } else { - dasm_put(Dst, 4897); + dasm_put(Dst, 4914); } - dasm_put(Dst, 4916); + dasm_put(Dst, 4933); if (sse) { - dasm_put(Dst, 4932, 1+1, LJ_TISNUM); + dasm_put(Dst, 4949, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4957, 1+1, LJ_TISNUM); + dasm_put(Dst, 4974, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4979); + dasm_put(Dst, 4996); if (sse) { - dasm_put(Dst, 4997); + dasm_put(Dst, 5014); } else { - dasm_put(Dst, 5023); + dasm_put(Dst, 5040); } - dasm_put(Dst, 5040, 1+2); + dasm_put(Dst, 5057, 1+2); if (sse) { - dasm_put(Dst, 5080); + dasm_put(Dst, 5097); } else { - dasm_put(Dst, 5088); + dasm_put(Dst, 5105); } - dasm_put(Dst, 5098, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5115, 2+1, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5150, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5167, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 5197, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5214, 2+1, LJ_TISNUM, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 5238, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5255, 1+1, LJ_TISNUM, LJ_TISNUM); } else { } if (sse) { - dasm_put(Dst, 5309, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5326, 1+1, LJ_TISNUM, LJ_TISNUM); } else { } if (!sse) { - dasm_put(Dst, 5380); + dasm_put(Dst, 5397); } - dasm_put(Dst, 5389, 1+1, LJ_TSTR); + dasm_put(Dst, 5406, 1+1, LJ_TSTR); if (sse) { - dasm_put(Dst, 5411, Dt5(->len)); + dasm_put(Dst, 5428, Dt5(->len)); } else { - dasm_put(Dst, 5422, Dt5(->len)); + dasm_put(Dst, 5439, Dt5(->len)); } - dasm_put(Dst, 5430, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); + dasm_put(Dst, 5447, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); if (sse) { - dasm_put(Dst, 5464); + dasm_put(Dst, 5481); } else { - dasm_put(Dst, 5474); + dasm_put(Dst, 5491); } - dasm_put(Dst, 5487, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); + dasm_put(Dst, 5504, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5522); + dasm_put(Dst, 5539); } else { - dasm_put(Dst, 5542); + dasm_put(Dst, 5559); } - dasm_put(Dst, 5562, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); - dasm_put(Dst, 2453); + dasm_put(Dst, 5579, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); + dasm_put(Dst, 2470); if (sse) { - dasm_put(Dst, 5678); + dasm_put(Dst, 5695); } else { - dasm_put(Dst, 5689); + dasm_put(Dst, 5706); } - dasm_put(Dst, 5697, LJ_TSTR, LJ_TISNUM, Dt5(->len)); + dasm_put(Dst, 5714, LJ_TSTR, LJ_TISNUM, Dt5(->len)); if (sse) { - dasm_put(Dst, 5727); + dasm_put(Dst, 5744); } else { } - dasm_put(Dst, 5734, sizeof(GCstr)-1); - dasm_put(Dst, 5809, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 5868, LJ_TSTR, LJ_TISNUM); + dasm_put(Dst, 5751, sizeof(GCstr)-1); + dasm_put(Dst, 5826, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 5885, LJ_TSTR, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5893); + dasm_put(Dst, 5910); } else { - dasm_put(Dst, 5900); + dasm_put(Dst, 5917); } - dasm_put(Dst, 5912, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5977, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6044, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 6119, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6204, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6278, 1+1, LJ_TTAB); + dasm_put(Dst, 5929, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 5994, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); + dasm_put(Dst, 6061, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); + dasm_put(Dst, 6136, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 6221, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); + dasm_put(Dst, 6295, 1+1, LJ_TTAB); if (sse) { - dasm_put(Dst, 6354); + dasm_put(Dst, 6371); } else { } if (sse) { - dasm_put(Dst, 6364, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6381, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } if (sse) { - dasm_put(Dst, 6416, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6433, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6459); + dasm_put(Dst, 6476); if (sse) { - dasm_put(Dst, 6469); + dasm_put(Dst, 6486); } - dasm_put(Dst, 6474, LJ_TISNUM); + dasm_put(Dst, 6491, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6492); - } else { - } dasm_put(Dst, 6509); - if (sse) { - dasm_put(Dst, 6517, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6459); + dasm_put(Dst, 6526); if (sse) { - dasm_put(Dst, 6469); - } - dasm_put(Dst, 6474, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 6560); + dasm_put(Dst, 6534, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6509); + dasm_put(Dst, 6476); if (sse) { - dasm_put(Dst, 6577, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6486); + } + dasm_put(Dst, 6491, LJ_TISNUM); + if (sse) { + dasm_put(Dst, 6577); } else { } - dasm_put(Dst, 6459); + dasm_put(Dst, 6526); if (sse) { - dasm_put(Dst, 6469); - } - dasm_put(Dst, 6474, LJ_TISNUM); - if (sse) { - dasm_put(Dst, 6620); + dasm_put(Dst, 6594, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6509); + dasm_put(Dst, 6476); if (sse) { - dasm_put(Dst, 6637, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6486); + } + dasm_put(Dst, 6491, LJ_TISNUM); + if (sse) { + dasm_put(Dst, 6637); } else { } - dasm_put(Dst, 6680); + dasm_put(Dst, 6526); if (sse) { - dasm_put(Dst, 6687, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6654, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6730); + dasm_put(Dst, 6697); if (sse) { - dasm_put(Dst, 6734); + dasm_put(Dst, 6704, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6761); + dasm_put(Dst, 6747); if (sse) { - dasm_put(Dst, 6349); - } - dasm_put(Dst, 6764); - if (sse) { - dasm_put(Dst, 6773, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6751); } else { } - dasm_put(Dst, 6842); + dasm_put(Dst, 6778); if (sse) { - dasm_put(Dst, 6851, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6366); + } + dasm_put(Dst, 6781); + if (sse) { + dasm_put(Dst, 6790, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6920); + dasm_put(Dst, 6859); if (sse) { - dasm_put(Dst, 6930, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6868, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6999); + dasm_put(Dst, 6937); if (sse) { - dasm_put(Dst, 7009, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6947, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 7078); + dasm_put(Dst, 7016); if (sse) { - dasm_put(Dst, 7087, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 7026, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 7156, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 7240, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); - dasm_put(Dst, 7360, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7095); + if (sse) { + dasm_put(Dst, 7104, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + } else { + } + dasm_put(Dst, 7173, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); + dasm_put(Dst, 7257, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7377, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7402, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); + dasm_put(Dst, 7419, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); #endif - dasm_put(Dst, 7433, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 7499, GG_DISP_STATIC*8); + dasm_put(Dst, 7450, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 7516, GG_DISP_STATIC*8); #if LJ_HASJIT - dasm_put(Dst, 7535); + dasm_put(Dst, 7552); #endif - dasm_put(Dst, 7537); + dasm_put(Dst, 7554); #if LJ_HASJIT - dasm_put(Dst, 7535); + dasm_put(Dst, 7552); #endif - dasm_put(Dst, 7540); + dasm_put(Dst, 7557); #if LJ_HASJIT - dasm_put(Dst, 7535); + dasm_put(Dst, 7552); #endif - dasm_put(Dst, 7543); + dasm_put(Dst, 7560); #if LJ_HASJIT - dasm_put(Dst, 7546, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); + dasm_put(Dst, 7563, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); #endif - dasm_put(Dst, 7587); + dasm_put(Dst, 7604); if (!sse) { - dasm_put(Dst, 7590); + dasm_put(Dst, 7607); } - dasm_put(Dst, 7635, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 7652, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); if (!sse) { - dasm_put(Dst, 7721); + dasm_put(Dst, 7738); } - dasm_put(Dst, 7766, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); + dasm_put(Dst, 7783, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32)); if (!sse) { - dasm_put(Dst, 7852); + dasm_put(Dst, 7869); } - dasm_put(Dst, 7891, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 7908, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); if (sse) { - dasm_put(Dst, 7980, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 7997, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); } else { - dasm_put(Dst, 8094); + dasm_put(Dst, 8111); } - dasm_put(Dst, 8141); + dasm_put(Dst, 8158); if (!sse) { } else { - dasm_put(Dst, 8215); + dasm_put(Dst, 8232); } - dasm_put(Dst, 8218); - dasm_put(Dst, 8303, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); - dasm_put(Dst, 8404, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); - dasm_put(Dst, 8572); + dasm_put(Dst, 8235); + dasm_put(Dst, 8320, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); + dasm_put(Dst, 8421, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); + dasm_put(Dst, 8589); if (sse) { - dasm_put(Dst, 8613); - dasm_put(Dst, 8683); - dasm_put(Dst, 8756); + dasm_put(Dst, 8630); + dasm_put(Dst, 8700); + dasm_put(Dst, 8773); } else { - dasm_put(Dst, 8806); - dasm_put(Dst, 8898); + dasm_put(Dst, 8823); + dasm_put(Dst, 8915); } - dasm_put(Dst, 8944); + dasm_put(Dst, 8961); if (sse) { - dasm_put(Dst, 8950, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); - dasm_put(Dst, 9039, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); + dasm_put(Dst, 8967, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); + dasm_put(Dst, 9056, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); } else { - dasm_put(Dst, 9163); - dasm_put(Dst, 9246); + dasm_put(Dst, 9180); + dasm_put(Dst, 9263); if (cmov) { - dasm_put(Dst, 9301); + dasm_put(Dst, 9318); } else { - dasm_put(Dst, 9320); + dasm_put(Dst, 9337); } - dasm_put(Dst, 9159); + dasm_put(Dst, 9176); } - dasm_put(Dst, 9361); + dasm_put(Dst, 9378); } /* Generate the code for a single instruction. */ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) { int vk = 0; - dasm_put(Dst, 9387, defop); + dasm_put(Dst, 155, defop); switch (op) { @@ -1419,602 +1424,602 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) /* Remember: all ops branch for a true comparison, fall through otherwise. */ case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - dasm_put(Dst, 9389, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9404, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9410); - } else { dasm_put(Dst, 9425); + } else { + dasm_put(Dst, 9440); if (cmov) { - dasm_put(Dst, 9435); + dasm_put(Dst, 9450); } else { - dasm_put(Dst, 9441); + dasm_put(Dst, 9456); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 9448); + dasm_put(Dst, 9463); break; case BC_ISGE: - dasm_put(Dst, 9241); + dasm_put(Dst, 9258); break; case BC_ISLE: - dasm_put(Dst, 6273); + dasm_put(Dst, 6290); break; case BC_ISGT: - dasm_put(Dst, 9453); + dasm_put(Dst, 9468); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 9458, -BCBIAS_J*4); + dasm_put(Dst, 9473, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 9492, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9507, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9518); + dasm_put(Dst, 9533); } else { - dasm_put(Dst, 9530); + dasm_put(Dst, 9545); if (cmov) { - dasm_put(Dst, 9435); + dasm_put(Dst, 9450); } else { - dasm_put(Dst, 9441); + dasm_put(Dst, 9456); } } iseqne_fp: if (vk) { - dasm_put(Dst, 9537); + dasm_put(Dst, 9552); } else { - dasm_put(Dst, 9546); + dasm_put(Dst, 9561); } iseqne_end: if (vk) { - dasm_put(Dst, 9555, -BCBIAS_J*4); - } else { dasm_put(Dst, 9570, -BCBIAS_J*4); + } else { + dasm_put(Dst, 9585, -BCBIAS_J*4); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 9585, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32)); + dasm_put(Dst, 9888, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); } else { - dasm_put(Dst, 9898); + dasm_put(Dst, 9913); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_LEN: - dasm_put(Dst, 9907, LJ_TSTR); + dasm_put(Dst, 9922, LJ_TSTR); if (sse) { - dasm_put(Dst, 9921, Dt5(->len)); + dasm_put(Dst, 9936, Dt5(->len)); } else { - dasm_put(Dst, 9939, Dt5(->len)); + dasm_put(Dst, 9954, Dt5(->len)); } - dasm_put(Dst, 9948, LJ_TTAB); + dasm_put(Dst, 9963, LJ_TTAB); if (sse) { - dasm_put(Dst, 9989); + dasm_put(Dst, 10004); } else { } - dasm_put(Dst, 9998); + dasm_put(Dst, 10013); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 10008); + dasm_put(Dst, 10023); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10016, LJ_TISNUM); + dasm_put(Dst, 10031, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10028); + dasm_put(Dst, 10043); } else { - dasm_put(Dst, 10042); + dasm_put(Dst, 10057); } break; case 1: - dasm_put(Dst, 10050, LJ_TISNUM); + dasm_put(Dst, 10065, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10062); + dasm_put(Dst, 10077); } else { - dasm_put(Dst, 10076); + dasm_put(Dst, 10091); } break; default: - dasm_put(Dst, 10084, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10106); + dasm_put(Dst, 10121); } else { - dasm_put(Dst, 10120); + dasm_put(Dst, 10135); } break; } if (sse) { - dasm_put(Dst, 9891); + dasm_put(Dst, 9906); } else { - dasm_put(Dst, 9903); + dasm_put(Dst, 9918); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 10008); + dasm_put(Dst, 10023); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10016, LJ_TISNUM); + dasm_put(Dst, 10031, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10128); + dasm_put(Dst, 10143); } else { - dasm_put(Dst, 10142); + dasm_put(Dst, 10157); } break; case 1: - dasm_put(Dst, 10050, LJ_TISNUM); + dasm_put(Dst, 10065, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10150); + dasm_put(Dst, 10165); } else { - dasm_put(Dst, 10164); + dasm_put(Dst, 10179); } break; default: - dasm_put(Dst, 10084, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10172); + dasm_put(Dst, 10187); } else { - dasm_put(Dst, 10186); + dasm_put(Dst, 10201); } break; } if (sse) { - dasm_put(Dst, 9891); + dasm_put(Dst, 9906); } else { - dasm_put(Dst, 9903); + dasm_put(Dst, 9918); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 10008); + dasm_put(Dst, 10023); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10016, LJ_TISNUM); + dasm_put(Dst, 10031, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10194); + dasm_put(Dst, 10209); } else { - dasm_put(Dst, 10208); + dasm_put(Dst, 10223); } break; case 1: - dasm_put(Dst, 10050, LJ_TISNUM); + dasm_put(Dst, 10065, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10216); + dasm_put(Dst, 10231); } else { - dasm_put(Dst, 10230); + dasm_put(Dst, 10245); } break; default: - dasm_put(Dst, 10084, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10238); + dasm_put(Dst, 10253); } else { - dasm_put(Dst, 10252); + dasm_put(Dst, 10267); } break; } if (sse) { - dasm_put(Dst, 9891); + dasm_put(Dst, 9906); } else { - dasm_put(Dst, 9903); + dasm_put(Dst, 9918); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 10008); + dasm_put(Dst, 10023); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10016, LJ_TISNUM); + dasm_put(Dst, 10031, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10260); + dasm_put(Dst, 10275); } else { - dasm_put(Dst, 10274); + dasm_put(Dst, 10289); } break; case 1: - dasm_put(Dst, 10050, LJ_TISNUM); + dasm_put(Dst, 10065, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10282); + dasm_put(Dst, 10297); } else { - dasm_put(Dst, 10296); + dasm_put(Dst, 10311); } break; default: - dasm_put(Dst, 10084, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10304); + dasm_put(Dst, 10319); } else { - dasm_put(Dst, 10318); + dasm_put(Dst, 10333); } break; } if (sse) { - dasm_put(Dst, 9891); + dasm_put(Dst, 9906); } else { - dasm_put(Dst, 9903); + dasm_put(Dst, 9918); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_MODVN: - dasm_put(Dst, 10008); + dasm_put(Dst, 10023); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10016, LJ_TISNUM); + dasm_put(Dst, 10031, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10326); + dasm_put(Dst, 10341); } else { - dasm_put(Dst, 10340); + dasm_put(Dst, 10355); } break; case 1: - dasm_put(Dst, 10050, LJ_TISNUM); + dasm_put(Dst, 10065, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10348); + dasm_put(Dst, 10363); } else { - dasm_put(Dst, 10362); + dasm_put(Dst, 10377); } break; default: - dasm_put(Dst, 10084, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10370); + dasm_put(Dst, 10385); } else { - dasm_put(Dst, 10384); + dasm_put(Dst, 10399); } break; } - dasm_put(Dst, 10392); + dasm_put(Dst, 10407); if (sse) { - dasm_put(Dst, 9891); + dasm_put(Dst, 9906); } else { - dasm_put(Dst, 9903); + dasm_put(Dst, 9918); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 10008); + dasm_put(Dst, 10023); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10016, LJ_TISNUM); + dasm_put(Dst, 10031, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10326); + dasm_put(Dst, 10341); } else { - dasm_put(Dst, 10340); + dasm_put(Dst, 10355); } break; case 1: - dasm_put(Dst, 10050, LJ_TISNUM); + dasm_put(Dst, 10065, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10348); + dasm_put(Dst, 10363); } else { - dasm_put(Dst, 10362); + dasm_put(Dst, 10377); } break; default: - dasm_put(Dst, 10084, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10370); + dasm_put(Dst, 10385); } else { - dasm_put(Dst, 10384); + dasm_put(Dst, 10399); } break; } - dasm_put(Dst, 10398); + dasm_put(Dst, 10413); break; case BC_POW: - dasm_put(Dst, 10008); + dasm_put(Dst, 10023); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10016, LJ_TISNUM); + dasm_put(Dst, 10031, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10326); + dasm_put(Dst, 10341); } else { - dasm_put(Dst, 10340); + dasm_put(Dst, 10355); } break; case 1: - dasm_put(Dst, 10050, LJ_TISNUM); + dasm_put(Dst, 10065, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10348); + dasm_put(Dst, 10363); } else { - dasm_put(Dst, 10362); + dasm_put(Dst, 10377); } break; default: - dasm_put(Dst, 10084, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10099, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10370); + dasm_put(Dst, 10385); } else { - dasm_put(Dst, 10384); + dasm_put(Dst, 10399); } break; } - dasm_put(Dst, 10403); + dasm_put(Dst, 10418); if (sse) { - dasm_put(Dst, 9891); + dasm_put(Dst, 9906); } else { - dasm_put(Dst, 9903); + dasm_put(Dst, 9918); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_CAT: - dasm_put(Dst, 10407, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 10422, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 10497, LJ_TSTR); + dasm_put(Dst, 10512, LJ_TSTR); break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 10532); - } else { dasm_put(Dst, 10547); + } else { + dasm_put(Dst, 10562); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 10555); + dasm_put(Dst, 10570); } else { - dasm_put(Dst, 10568); + dasm_put(Dst, 10583); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_KPRI: - dasm_put(Dst, 10575); + dasm_put(Dst, 10590); break; case BC_KNIL: - dasm_put(Dst, 10603, LJ_TNIL); + dasm_put(Dst, 10618, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 10650, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10665, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 10695, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - dasm_put(Dst, 10786); + dasm_put(Dst, 10710, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); + dasm_put(Dst, 10801); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 10798, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); + dasm_put(Dst, 10813, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); break; case BC_USETN: - dasm_put(Dst, 10891); + dasm_put(Dst, 10906); if (sse) { - dasm_put(Dst, 10896); + dasm_put(Dst, 10911); } else { - dasm_put(Dst, 9711); + dasm_put(Dst, 9726); } - dasm_put(Dst, 10903, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10918, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 4836); + dasm_put(Dst, 4853); } else { - dasm_put(Dst, 4842); + dasm_put(Dst, 4859); } - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_USETP: - dasm_put(Dst, 10912, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10927, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 10951, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 10966, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 11006, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 11021, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 11072, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11087, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 11193, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11208, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 11288, Dt7(->env)); + dasm_put(Dst, 11303, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 11307, Dt7(->env)); + dasm_put(Dst, 11322, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 11326, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 11341, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11359); + dasm_put(Dst, 11374); } else { } - dasm_put(Dst, 11380, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 11576, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 11591, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); - dasm_put(Dst, 11865, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 11796, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 11880, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETS: - dasm_put(Dst, 11927, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 12003, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 12096, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 11942, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 12018, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 12111, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETB: - dasm_put(Dst, 12187, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 12286, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12202, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 12301, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETM: - dasm_put(Dst, 12332); + dasm_put(Dst, 12347); if (sse) { - dasm_put(Dst, 10896); + dasm_put(Dst, 10911); } else { } - dasm_put(Dst, 12337, Dt6(->marked), LJ_GC_BLACK); + dasm_put(Dst, 12352, Dt6(->marked), LJ_GC_BLACK); if (sse) { - dasm_put(Dst, 12362); + dasm_put(Dst, 12377); } else { } - dasm_put(Dst, 12369, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); - dasm_put(Dst, 12495, Dt6(->gclist)); + dasm_put(Dst, 12384, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); + dasm_put(Dst, 12510, Dt6(->gclist)); break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALL: case BC_CALLM: - dasm_put(Dst, 10012); + dasm_put(Dst, 10027); if (op == BC_CALLM) { - dasm_put(Dst, 12503); + dasm_put(Dst, 12518); } - dasm_put(Dst, 12508, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 12523, LJ_TFUNC, Dt7(->gate)); break; case BC_CALLMT: - dasm_put(Dst, 12503); + dasm_put(Dst, 12518); break; case BC_CALLT: - dasm_put(Dst, 12531, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); - dasm_put(Dst, 12636, FRAME_TYPE, Dt7(->pt), Dt9(->k)); + dasm_put(Dst, 12546, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); + dasm_put(Dst, 12651, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); break; case BC_ITERC: - dasm_put(Dst, 12694, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 12709, LJ_TFUNC, Dt7(->gate)); break; case BC_VARG: - dasm_put(Dst, 12756, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); - dasm_put(Dst, 12901, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 12771, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); + dasm_put(Dst, 12916, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 12503); + dasm_put(Dst, 12518); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 13000); + dasm_put(Dst, 13015); } - dasm_put(Dst, 13004, FRAME_TYPE); + dasm_put(Dst, 13019, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 13023); + dasm_put(Dst, 13038); break; case BC_RET1: - dasm_put(Dst, 13081); + dasm_put(Dst, 13096); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 13097); + dasm_put(Dst, 13112); default: break; } - dasm_put(Dst, 13108, Dt7(->pt), Dt9(->k)); + dasm_put(Dst, 13123, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 13152, LJ_TNIL); + dasm_put(Dst, 13167, LJ_TNIL); } else { - dasm_put(Dst, 13161, LJ_TNIL); + dasm_put(Dst, 13176, LJ_TNIL); } - dasm_put(Dst, 13168); + dasm_put(Dst, 13183); if (op != BC_RET0) { - dasm_put(Dst, 13189); + dasm_put(Dst, 13204); } - dasm_put(Dst, 4927); + dasm_put(Dst, 4944); break; /* -- Loops and branches ------------------------------------------------ */ @@ -2022,7 +2027,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 13193, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2034,57 +2039,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORI: case BC_IFORL: vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 13214); + dasm_put(Dst, 13229); if (!vk) { - dasm_put(Dst, 13218, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 13233, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 13237); + dasm_put(Dst, 13252); if (!vk) { - dasm_put(Dst, 13241, LJ_TISNUM); + dasm_put(Dst, 13256, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 13250); + dasm_put(Dst, 13265); if (vk) { - dasm_put(Dst, 13262); + dasm_put(Dst, 13277); } else { - dasm_put(Dst, 13281); + dasm_put(Dst, 13296); } - dasm_put(Dst, 13286); + dasm_put(Dst, 13301); } else { - dasm_put(Dst, 13299); + dasm_put(Dst, 13314); if (vk) { - dasm_put(Dst, 13305); + dasm_put(Dst, 13320); } else { - dasm_put(Dst, 13321); + dasm_put(Dst, 13336); } - dasm_put(Dst, 13329); + dasm_put(Dst, 13344); if (cmov) { - dasm_put(Dst, 9435); + dasm_put(Dst, 9450); } else { - dasm_put(Dst, 9441); + dasm_put(Dst, 9456); } if (!cmov) { - dasm_put(Dst, 13334); + dasm_put(Dst, 13349); } } if (op == BC_FORI) { - dasm_put(Dst, 13340, -BCBIAS_J*4); + dasm_put(Dst, 13355, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 13350, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 13365, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 13364, -BCBIAS_J*4); + dasm_put(Dst, 13379, -BCBIAS_J*4); } else { - dasm_put(Dst, 13360, BC_JLOOP); + dasm_put(Dst, 13375, BC_JLOOP); } - dasm_put(Dst, 9470); + dasm_put(Dst, 9485); if (sse) { - dasm_put(Dst, 13374); + dasm_put(Dst, 13389); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 13193, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2093,33 +2098,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 13385, LJ_TNIL); + dasm_put(Dst, 13400, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 13400, BC_JLOOP); + dasm_put(Dst, 13415, BC_JLOOP); } else { - dasm_put(Dst, 13414, -BCBIAS_J*4); + dasm_put(Dst, 13429, -BCBIAS_J*4); } - dasm_put(Dst, 9770); + dasm_put(Dst, 9785); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 13193, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13208, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 7567); + dasm_put(Dst, 7584); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 13430, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); + dasm_put(Dst, 13445, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); #endif break; case BC_JMP: - dasm_put(Dst, 13454, -BCBIAS_J*4); + dasm_put(Dst, 13469, -BCBIAS_J*4); break; /* ---------------------------------------------------------------------- */ @@ -2147,7 +2152,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 13479); + dasm_put(Dst, 13494); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op, cmov, sse); diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc index 90d80dbf..10899e70 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc @@ -414,23 +414,25 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | mov KBASE, [PC+PC2PROTO(k)] | mov L:RB, SAVE_L | lea RA, [BASE+RA*8] // Top of frame. - | lea RC, [BASE+NARGS:RC*8-4] // Points to tag of 1st free slot. | cmp RA, L:RB->maxstack | ja ->gate_lf_growstack - |9: // Entry point from vararg setup below. - | mov RB, LJ_TNIL - |1: // Clear free slots until top of frame. - | mov [RC], RB - | mov [RC+8], RB - | add RC, 16 - | cmp RC, RA - | jb <1 + | movzx RA, byte [PC+PC2PROTO(numparams)] + | cmp NARGS:RC, RA // Check for missing parameters. + | jbe >3 + |2: #if LJ_HASJIT | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves. | // hotcall RB #endif | ins_next | + |3: // Clear missing parameters. + | mov dword [BASE+NARGS:RC*8-4], LJ_TNIL + | add NARGS:RC, 1 + | cmp NARGS:RC, RA // Check for missing parameters. + | jbe <3 + | jmp <2 + | |->gate_lv: // Call gate for vararg Lua functions. | // RA = new base, RB = LFUNC, RC = nargs+1, (BASE = old base), PC = return | // DISPATCH initialized @@ -443,29 +445,38 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | movzx RB, byte [PC+PC2PROTO(framesize)] | lea KBASE, [BASE+RB*8] | mov L:RB, SAVE_L - | lea RC, [BASE+4] | cmp KBASE, L:RB->maxstack | ja ->gate_lv_growstack // Need to grow stack. + | mov RC, BASE | movzx RB, byte [PC+PC2PROTO(numparams)] | test RB, RB | jz >2 - |1: // Copy fixarg slots up. + |1: // Copy fixarg slots up to new frame. | add RA, 8 | cmp RA, BASE - | jnb >2 + | jnb >3 // Less args than parameters? | mov KBASE, [RA-8] - | mov [RC-4], KBASE - | mov KBASE, [RA-4] | mov [RC], KBASE + | mov KBASE, [RA-4] + | mov [RC+4], KBASE | add RC, 8 | mov dword [RA-4], LJ_TNIL // Clear old fixarg slot (help the GC). | sub RB, 1 | jnz <1 |2: - | movzx RA, byte [PC+PC2PROTO(framesize)] | mov KBASE, [PC+PC2PROTO(k)] - | lea RA, [BASE+RA*8] - | jmp <9 +#if LJ_HASJIT + | // NYI: Disabled, until the tracer supports recursion/upcalls/leaves. + | // hotcall RB +#endif + | ins_next + | + |3: // Clear missing parameters. + | mov dword [RC+4], LJ_TNIL + | add RC, 8 + | sub RB, 1 + | jnz <3 + | jmp <2 | |->gate_cwrap: // Call gate for wrapped C functions. | // RA = new base, RB = CFUNC, RC = nargs+1, (BASE = old base), PC = return @@ -663,19 +674,12 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | jmp >1 | |->gate_lv_growstack: // Grow stack for vararg Lua function. - //XXX - | sub RC, 8 - | mov BASE, RA - | mov RA, KBASE - | lea PC, [PROTO:RB+sizeof(GCproto)] - | mov L:RB, SAVE_L + | mov BASE, RA // Drop vararg frame again. | |->gate_lf_growstack: // Grow stack for fixarg Lua function. - | // BASE = new base, RA = requested top, RC = top (offset +4 bytes) - | // RB = L, PC = first PC of called function (or anything if C function) - | sub RC, 4 // Adjust top. - | sub RA, BASE - | shr RA, 3 // n = pt->framesize - L->top + | // BASE = new base, RC = nargs+1, RB = L, PC = first PC + | lea RC, [BASE+NARGS:RC*8-8] + | movzx RA, byte [PC+PC2PROTO(framesize)] | add PC, 4 // Must point after first instruction. | mov L:RB->base, BASE | mov L:RB->top, RC diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h index a562361c..3741b60b 100644 --- a/src/buildvm_x86.h +++ b/src/buildvm_x86.h @@ -12,738 +12,738 @@ #define DASM_SECTION_CODE_OP 0 #define DASM_SECTION_CODE_SUB 1 #define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[15185] = { - 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,141,181,233, - 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135, - 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244, - 1,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, - 12,137,113,252,252,141,52,197,237,141,148,253,49,233,137,106,252,248,139, - 173,233,137,114,252,252,15,182,181,233,141,60,252,242,139,116,36,48,141,66, - 4,59,190,233,15,135,244,13,15,182,181,233,133,252,246,15,132,244,248,248, - 1,131,193,8,57,209,15,131,244,248,139,121,252,248,137,120,252,252,139,121, - 252,252,137,56,131,192,8,199,65,252,252,237,131,252,238,1,15,133,244,1,248, - 2,15,182,141,233,141,181,233,255,139,189,233,141,12,202,252,233,244,9,248, - 14,137,113,252,252,139,189,233,139,108,36,48,141,68,193,252,248,137,141,233, - 141,136,233,137,133,233,59,141,233,137,124,36,4,137,44,36,15,135,244,15,199, - 131,233,237,252,255,147,233,199,131,233,237,139,149,233,141,12,194,252,247, - 217,3,141,233,248,16,131,192,1,137,68,36,20,252,247,198,237,255,15,132,244, - 17,252,233,244,18,248,19,137,113,252,252,139,189,233,139,108,36,48,141,68, - 193,252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,44,36,15,135, - 244,15,199,131,233,237,252,255,215,199,131,233,237,139,149,233,141,12,194, - 252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,252,247,198,237,255,15, - 132,244,17,248,18,252,247,198,237,15,132,244,20,199,131,233,237,131,230,252, - 248,41,214,252,247,222,131,232,1,15,132,244,248,248,1,139,44,10,137,106,252, - 248,139,108,10,4,137,106,252,252,131,194,8,131,232,1,15,133,244,1,248,2,139, - 108,36,48,137,181,233,248,3,139,68,36,20,139,76,36,56,248,4,57,193,15,133, - 244,252,248,5,255,131,252,234,8,137,149,233,248,21,139,76,36,52,137,141,233, - 49,192,248,22,131,196,28,91,94,95,93,195,248,6,15,130,244,253,59,149,233, - 15,135,244,254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7, - 133,201,15,132,244,5,41,193,141,20,202,252,233,244,5,248,8,137,149,233,255, - 137,68,36,20,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248, - 23,137,208,137,204,248,24,139,108,36,48,139,173,233,199,133,233,237,252,233, - 244,22,248,25,129,225,239,137,204,248,26,139,108,36,48,185,252,248,252,255, - 252,255,252,255,184,237,139,149,233,139,157,233,129,195,239,139,114,252,252, - 199,66,252,252,237,199,131,233,237,255,252,233,244,16,248,20,252,247,198, - 237,15,132,244,27,131,230,252,248,41,252,242,141,76,49,252,248,139,114,252, - 252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233,244,247,248,13, - 131,232,8,137,202,137,252,249,141,181,233,139,108,36,48,248,11,131,232,4, - 41,209,193,252,233,3,131,198,4,137,149,233,137,133,233,137,116,36,24,137, - 202,248,1,137,252,233,232,251,1,0,139,141,233,255,139,133,233,139,105,252, - 248,139,113,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248,28,85, - 87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192,141,188, - 253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68,36,52, - 56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,133, - 233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252,247, - 198,237,15,132,244,17,252,233,244,18,248,29,255,85,87,86,83,131,252,236,28, - 190,237,252,233,244,247,248,30,85,87,86,83,131,252,236,28,190,237,248,1,139, - 108,36,48,139,76,36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,137, - 165,233,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41, - 214,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252, - 252,239,15,133,244,31,252,255,165,233,248,32,255,85,87,86,83,131,252,236, - 28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,36,60,137,108,36,24,139, - 189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137,76, - 36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,252,255,210,133,192, - 15,132,244,21,137,193,190,237,252,233,244,2,248,27,1,209,131,230,252,248, - 137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,139,77, - 252,240,139,122,252,248,139,191,233,139,191,233,252,255,225,248,33,15,182, - 78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,34,252,247,217, - 193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252, - 233,244,35,248,36,137,68,36,16,199,68,36,20,237,255,141,68,36,16,128,126, - 252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233, - 244,248,248,37,15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36, - 16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244, - 247,248,38,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252, - 234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137, - 116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,249,248,34,15,182,78, - 252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141, - 177,233,41,214,139,105,252,248,184,3,0,0,0,252,255,165,233,248,39,137,68, - 36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,141, - 139,233,255,137,41,199,65,4,237,137,205,252,233,244,248,248,40,15,182,70, - 252,254,255,141,68,36,16,252,233,244,247,248,41,15,182,70,252,254,141,4,194, - 248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48, - 137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133, - 192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137, - 8,248,42,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, - 248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194, - 137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,184,4,0,0,0,252,255, - 165,233,248,43,15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139, - 108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232, - 251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255,141,118,4, - 15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,45,131,198,4,129, - 120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233, - 244,4,248,47,131,252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76, - 36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,4,252,233,244,3,248,48, - 255,141,4,199,252,233,244,247,248,49,141,4,199,141,44,252,234,149,252,233, - 244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141,4,194,248,1,141, - 44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182, - 70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232, - 251,1,5,139,149,233,133,192,15,132,244,42,248,44,137,193,41,208,137,113,252, - 244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133, - 244,31,255,252,255,165,233,248,52,139,108,36,48,137,149,233,141,20,194,137, - 252,233,137,116,36,24,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76, - 36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137, - 68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76, - 36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,53,252,255, - 165,233,248,54,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24, - 232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252, - 255,164,253,171,233,248,55,129,252,248,239,15,130,244,56,255,139,105,4,129, - 252,253,239,15,131,244,56,137,68,36,20,137,105,252,252,139,41,137,105,252, - 248,131,232,2,15,132,244,248,137,76,36,16,248,1,131,193,8,139,105,4,137,105, - 252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,139,76,36,16,248,2, - 139,68,36,20,252,233,244,57,248,58,129,252,248,239,15,130,244,56,139,105, - 4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248, - 1,255,139,105,252,248,139,132,253,197,233,199,65,252,252,237,137,65,252,248, - 252,233,244,59,248,60,129,252,248,239,15,130,244,56,139,105,4,129,252,253, - 239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,252,237,199,65,252, - 252,237,15,132,244,59,139,65,252,248,139,131,233,199,65,252,252,237,137,105, - 252,248,137,76,36,16,139,141,233,255,35,136,233,105,201,239,3,141,233,248, - 3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137, - 233,133,201,15,133,244,3,252,233,244,59,248,5,139,105,4,129,252,253,239,15, - 132,244,59,255,139,1,139,76,36,16,137,105,252,252,137,65,252,248,252,233, - 244,59,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253, - 189,237,248,7,252,247,213,139,172,253,171,233,252,233,244,2,248,61,129,252, - 248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,255,139,41,131,189, - 233,0,15,133,244,56,129,121,253,12,239,15,133,244,56,139,65,8,137,133,233, - 199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,132,244,247,128, - 165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,244,59,248, - 62,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,139, - 1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36,16,131,193,8,137, - 76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139,64,4,137,105,252, - 248,137,65,252,252,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129, - 121,253,4,239,15,135,244,56,255,252,242,15,16,1,252,233,244,64,255,221,1, - 252,233,244,65,255,248,66,129,252,248,239,15,130,244,56,129,121,253,4,239, - 15,133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244, - 59,248,3,129,121,253,4,239,15,135,244,56,131,187,233,0,15,133,244,56,139, - 171,233,59,171,233,255,15,130,244,247,232,244,67,248,1,139,108,36,48,137, - 141,233,137,113,252,252,137,116,36,24,137,84,36,16,137,202,137,252,233,232, - 251,1,10,139,141,233,139,84,36,16,252,233,244,2,248,68,129,252,248,239,15, - 130,244,56,15,132,244,248,248,1,129,121,253,4,239,15,133,244,56,139,41,137, - 108,36,4,139,108,36,48,137,44,36,137,141,233,255,137,113,252,252,137,84,36, - 16,131,193,8,137,76,36,8,137,116,36,24,232,251,1,11,139,141,233,139,84,36, - 16,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252,248,137,65,252, - 252,139,105,16,139,65,20,137,41,137,65,4,248,69,184,237,252,233,244,70,248, - 2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,233,244,59,248, - 71,129,252,248,239,15,130,244,56,129,121,253,4,239,255,15,133,244,56,139, - 133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,237,252,233,244, - 70,248,72,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,129, - 121,253,12,239,15,135,244,56,255,252,242,15,16,65,8,189,0,0,252,240,63,102, - 15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242, - 15,17,65,252,248,255,221,65,8,217,232,222,193,219,20,36,221,89,252,248,139, - 4,36,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120, - 253,4,239,15,132,244,73,139,40,139,64,4,137,41,137,65,4,252,233,244,69,248, - 2,131,189,233,0,15,132,244,73,137,84,36,16,135,205,137,194,232,251,1,12,137, - 252,233,139,84,36,16,133,192,15,133,244,1,248,73,184,237,252,233,244,70,248, - 74,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,139, - 133,233,199,65,252,252,237,137,65,252,248,255,15,87,192,252,242,15,17,65, - 8,255,217,252,238,221,89,8,255,184,237,252,233,244,70,248,75,129,252,248, - 239,15,130,244,56,137,113,252,252,190,237,137,202,131,193,8,131,232,1,139, - 105,252,248,248,1,252,246,131,233,235,15,133,244,249,248,2,129,121,253,252, - 252,239,15,133,244,31,252,255,165,233,248,3,131,198,1,252,233,244,2,248,76, - 255,129,252,248,239,15,130,244,56,129,121,253,12,239,15,133,244,56,137,113, - 252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113,8,137,105,8,137, - 49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248,9,139,116,36,24, - 252,233,244,56,248,77,129,252,248,239,15,130,244,56,139,41,137,113,252,252, - 137,116,36,24,137,44,36,129,121,253,4,239,15,133,244,9,255,131,189,233,0, - 15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,15,132, - 244,247,59,181,233,15,132,244,9,248,1,141,116,198,252,240,59,181,233,15,135, - 244,9,137,181,233,139,108,36,48,137,141,233,131,193,8,137,141,233,255,139, - 108,36,4,141,76,193,232,41,252,241,57,252,238,15,132,244,249,248,2,139,68, - 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133, - 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,28,199,131,233,237,139, - 108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139, - 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,255,141, - 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137, - 4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70, - 2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255, - 252,255,252,255,252,247,198,237,15,132,244,17,252,233,244,18,248,8,199,66, - 252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137, - 66,4,184,237,252,233,244,7,248,9,255,139,12,36,137,185,233,137,252,242,137, - 252,233,232,251,1,0,139,149,233,252,233,244,4,248,9,139,116,36,24,252,233, - 244,56,248,78,139,173,233,137,113,252,252,137,116,36,24,137,44,36,131,189, - 233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4, - 15,132,244,247,59,181,233,255,15,132,244,9,248,1,141,116,198,252,248,59,181, - 233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,137,141,233,139,108, - 36,4,141,76,193,252,240,41,252,241,57,252,238,15,132,244,249,248,2,139,68, - 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133, - 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,28,199,131,233,237,139, - 108,36,48,139,52,36,139,149,233,255,129,252,248,239,15,135,244,254,248,4, - 139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141, - 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137, - 4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70, - 1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,17,255, - 252,233,244,18,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,12,36, - 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4, - 248,79,139,108,36,48,137,113,252,252,252,247,133,233,237,15,132,244,56,137, - 141,233,141,68,193,252,248,137,133,233,49,192,137,133,233,176,235,136,133, - 233,252,233,244,22,255,248,65,221,89,252,248,252,233,244,59,248,80,129,252, - 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,102, - 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,64,252,242,15, - 17,65,252,248,255,248,80,129,252,248,239,15,130,244,56,129,121,253,4,239, - 15,135,244,56,221,1,217,225,248,64,248,65,221,89,252,248,255,248,59,184,237, - 248,70,137,68,36,20,248,57,252,247,198,237,15,133,244,253,248,5,56,70,252, - 255,15,135,244,252,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,171,248,6,199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202, - 185,252,248,252,255,252,255,252,255,252,233,244,18,255,248,81,129,252,248, - 239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,81,1,252,233, - 244,64,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, - 56,252,242,15,16,1,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15, - 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,85,252, - 233,244,64,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15, - 135,244,56,221,1,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130, - 244,56,129,121,253,4,239,15,135,244,56,221,1,232,244,83,252,233,244,65,248, - 84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, - 1,232,244,85,252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129, - 121,253,4,239,15,135,244,56,217,252,237,221,1,217,252,241,252,233,244,65, - 248,87,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217, - 252,236,221,1,217,252,241,252,233,244,65,248,88,129,252,248,239,255,15,130, - 244,56,129,121,253,4,239,15,135,244,56,221,1,232,244,89,252,233,244,65,248, - 90,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217, - 252,254,252,233,244,65,248,91,129,252,248,239,255,15,130,244,56,129,121,253, - 4,239,15,135,244,56,221,1,217,252,255,252,233,244,65,248,92,129,252,248,239, - 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,242,221,216,252, - 233,244,65,248,93,129,252,248,239,15,130,244,56,255,129,121,253,4,239,15, - 135,244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243, - 252,233,244,65,248,94,129,252,248,239,15,130,244,56,129,121,253,4,239,15, - 135,244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217, - 252,243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,121,253,4, - 239,15,135,244,56,255,221,1,217,232,217,252,243,252,233,244,65,255,248,96, - 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15, - 16,1,252,242,15,17,4,36,255,248,96,129,252,248,239,15,130,244,56,129,121, - 253,4,239,15,135,244,56,221,1,221,28,36,255,137,76,36,16,137,213,232,251, - 1,14,139,76,36,16,137,252,234,252,233,244,65,255,248,97,129,252,248,239,15, - 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,17, - 4,36,255,248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, - 56,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,15,139,76,36,16,137, - 252,234,252,233,244,65,255,248,98,129,252,248,239,15,130,244,56,129,121,253, - 4,239,15,135,244,56,252,242,15,16,1,252,242,15,17,4,36,255,248,98,129,252, - 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,221,28,36,255, - 137,76,36,16,137,213,232,251,1,16,139,76,36,16,137,252,234,252,233,244,65, - 248,99,255,248,100,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, - 244,56,252,242,15,16,1,252,242,15,89,133,233,252,233,244,64,255,248,100,129, - 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,220,141,233, - 252,233,244,65,255,248,101,129,252,248,239,15,130,244,56,129,121,253,4,239, - 15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,217,252,243, - 252,233,244,65,248,102,129,252,248,239,15,130,244,56,129,121,253,4,239,15, - 135,244,56,129,121,253,12,239,255,15,135,244,56,221,65,8,221,1,217,252,253, - 221,217,252,233,244,65,248,103,129,252,248,239,15,130,244,56,139,105,4,129, - 252,253,239,15,135,244,56,139,1,137,105,252,252,137,65,252,248,209,229,129, - 252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,3, - 0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252, - 242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,105,252,252,129,229, - 252,255,252,255,15,128,129,205,0,0,224,63,137,105,252,252,248,2,255,252,242, - 15,17,1,255,221,25,255,184,237,252,233,244,70,248,3,255,15,87,192,252,233, - 244,2,255,217,252,238,252,233,244,2,255,252,242,15,16,1,189,0,0,80,67,102, - 15,110,205,102,15,112,201,81,252,242,15,89,193,252,242,15,17,65,252,248,255, - 221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,252,248,255,139,105,252, - 252,184,52,4,0,0,209,229,252,233,244,1,255,248,104,129,252,248,239,15,130, - 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,248,104,129,252, - 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,255,139,105,4, - 209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244, - 105,252,242,15,92,224,248,1,252,242,15,17,65,252,248,252,242,15,17,33,255, - 217,192,232,244,105,220,252,233,248,1,221,89,252,248,221,25,255,139,65,252, - 252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248,3,129, - 252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,255,15,87,228,252,233,244, - 1,255,217,252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15,130, - 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221, - 65,8,221,1,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244, - 65,255,248,107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, - 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,232, - 244,108,252,233,244,64,255,248,107,129,252,248,239,15,130,244,56,129,121, - 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,232, - 244,108,252,233,244,65,255,248,109,129,252,248,239,15,130,244,56,129,121, - 253,4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244, - 64,129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233, - 252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,109,129,252,248, - 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,189,2,0,0,0,248,1, - 57,197,15,131,244,65,129,124,253,252,233,252,252,239,15,135,244,251,221,68, - 252,233,252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252, - 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,110,129,252,248, - 239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,2,0, - 0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252,239,15,135,244, - 56,252,242,15,16,76,252,233,252,248,252,242,15,95,193,131,197,1,252,233,244, - 1,255,248,110,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, - 56,221,1,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124,253,252,233,252,252, - 239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,218,209,221,217, - 255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216, - 88,255,248,5,221,216,252,233,244,56,255,248,111,129,252,248,239,15,130,244, - 56,129,121,253,4,239,15,133,244,56,139,41,255,252,242,15,42,133,233,252,233, - 244,64,255,219,133,233,252,233,244,65,255,248,112,129,252,248,239,15,133, - 244,56,129,121,253,4,239,15,133,244,56,139,41,131,189,233,1,15,130,244,73, - 15,182,173,233,255,252,242,15,42,197,252,233,244,64,255,137,108,36,16,219, - 68,36,16,252,233,244,65,255,248,113,139,171,233,59,171,233,15,130,244,247, - 232,244,67,248,1,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244, - 56,255,252,242,15,45,1,61,252,255,0,0,0,15,135,244,56,137,68,36,20,255,221, - 1,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,56,255,199,68,36,8, - 1,0,0,0,141,68,36,20,137,76,36,16,248,114,139,108,36,48,137,149,233,137,68, - 36,4,137,44,36,137,116,36,24,232,251,1,17,139,76,36,16,139,149,233,199,65, - 252,252,237,137,65,252,248,252,233,244,59,248,115,139,171,233,59,171,233, - 15,130,244,247,232,244,67,248,1,137,76,36,16,199,68,36,20,252,255,252,255, - 252,255,252,255,129,252,248,239,15,130,244,56,15,134,244,247,129,121,253, - 20,239,255,252,242,15,45,105,16,137,108,36,20,255,221,65,16,219,92,36,20, - 255,248,1,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56, - 139,41,137,108,36,12,139,173,233,255,252,242,15,45,73,8,255,221,65,8,219, - 92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201, - 15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,116,141,172,253,13,233, - 131,192,1,248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252, - 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244, - 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248, - 116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,139,171,233, - 59,171,233,15,130,244,247,232,244,67,248,1,255,137,76,36,16,129,121,253,4, - 239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255,252,242,15, - 45,65,8,255,221,65,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,116, - 131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130,244,118,15, - 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15, - 133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239,255,15,130, - 244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,36,16, - 129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15,132,244,116, - 57,131,233,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233, - 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240, - 139,116,36,20,252,233,244,114,248,121,129,252,248,239,15,130,244,56,139,171, - 233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,36,16,129,121,253,4, - 239,15,133,244,56,139,41,139,133,233,57,131,233,255,15,130,244,120,129,197, - 239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76, - 5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241, - 32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20, - 252,233,244,114,248,122,129,252,248,239,15,130,244,56,255,139,171,233,59, - 171,233,15,130,244,247,232,244,67,248,1,137,76,36,16,129,121,253,4,239,15, - 133,244,56,139,41,139,133,233,57,131,233,15,130,244,120,129,197,239,137,116, - 36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252, - 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248, - 2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233, - 244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, - 56,137,84,36,16,137,205,139,9,232,251,1,18,137,252,233,139,84,36,16,255,252, - 242,15,42,192,252,233,244,64,255,137,4,36,219,4,36,252,233,244,65,255,248, - 124,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, - 15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193, - 102,15,126,197,252,242,15,42,197,252,233,244,64,255,248,124,129,252,248,239, +static const unsigned char build_actionlist[15199] = { + 254,1,248,10,137,202,137,114,252,252,139,181,233,15,182,142,233,139,190,233, + 139,108,36,48,141,12,202,59,141,233,15,135,244,11,15,182,142,233,57,200,15, + 134,244,249,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,171,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252, + 233,244,2,248,12,137,113,252,252,141,52,197,237,141,148,253,49,233,137,106, + 252,248,137,114,252,252,139,181,233,15,182,174,233,141,60,252,234,139,108, + 36,48,59,189,233,15,135,244,13,137,208,15,182,174,233,133,252,237,15,132, + 244,248,248,1,131,193,8,57,209,15,131,244,249,255,139,121,252,248,137,56, + 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133, + 244,1,248,2,139,190,233,255,139,6,15,182,204,15,182,232,131,198,4,193,232, + 16,252,255,36,171,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3, + 252,233,244,2,248,14,137,113,252,252,139,189,233,139,108,36,48,141,68,193, + 252,248,137,141,233,141,136,233,137,133,233,59,141,233,137,124,36,4,137,44, + 36,15,135,244,15,199,131,233,237,252,255,147,233,199,131,233,237,139,149, + 233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20,252, + 247,198,237,15,132,244,17,252,233,244,18,248,19,137,113,252,252,139,189,233, + 139,108,36,48,141,68,193,252,248,137,141,233,141,136,233,137,133,233,59,141, + 233,137,44,36,15,135,244,15,199,131,233,237,252,255,215,199,131,233,237,139, + 149,233,255,141,12,194,252,247,217,3,141,233,248,16,131,192,1,137,68,36,20, + 252,247,198,237,15,132,244,17,248,18,252,247,198,237,15,132,244,20,199,131, + 233,237,131,230,252,248,41,214,252,247,222,131,232,1,15,132,244,248,248,1, + 139,44,10,137,106,252,248,139,108,10,4,137,106,252,252,131,194,8,131,232, + 1,15,133,244,1,248,2,139,108,36,48,137,181,233,248,3,139,68,36,20,139,76, + 36,56,248,4,255,57,193,15,133,244,252,248,5,131,252,234,8,137,149,233,248, + 21,139,76,36,52,137,141,233,49,192,248,22,131,196,28,91,94,95,93,195,248, + 6,15,130,244,253,59,149,233,15,135,244,254,199,66,252,252,237,131,194,8,131, + 192,1,252,233,244,4,248,7,133,201,15,132,244,5,41,193,141,20,202,252,233, + 244,5,248,8,255,137,149,233,137,68,36,20,137,202,137,252,233,232,251,1,0, + 139,149,233,252,233,244,3,248,23,137,208,137,204,248,24,139,108,36,48,139, + 173,233,199,133,233,237,252,233,244,22,248,25,129,225,239,137,204,248,26, + 139,108,36,48,185,252,248,252,255,252,255,252,255,184,237,139,149,233,139, + 157,233,129,195,239,139,114,252,252,199,66,252,252,237,199,131,233,237,255, + 252,233,244,16,248,20,252,247,198,237,15,132,244,27,131,230,252,248,41,252, + 242,141,76,49,252,248,139,114,252,252,199,68,10,4,237,252,233,244,16,248, + 15,186,237,252,233,244,247,248,13,137,202,248,11,141,68,194,252,248,15,182, + 142,233,131,198,4,137,149,233,137,133,233,137,116,36,24,137,202,248,1,137, + 252,233,232,251,1,0,139,141,233,255,139,133,233,139,105,252,248,139,113,252, + 252,41,200,193,232,3,131,192,1,252,255,165,233,248,28,85,87,86,83,131,252, + 236,28,139,108,36,48,139,76,36,52,190,237,49,192,141,188,253,36,233,139,157, + 233,129,195,239,137,189,233,137,68,36,24,137,68,36,52,56,133,233,15,132,244, + 249,199,131,233,237,136,133,233,139,149,233,139,133,233,41,200,193,232,3, + 131,192,1,41,209,139,114,252,252,137,68,36,20,252,247,198,237,15,132,244, + 17,252,233,244,18,248,29,255,85,87,86,83,131,252,236,28,190,237,252,233,244, + 247,248,30,85,87,86,83,131,252,236,28,190,237,248,1,139,108,36,48,139,76, + 36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,137,165,233,139,157,233, + 129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,41, + 200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,252,239,15,133,244, + 31,252,255,165,233,248,32,255,85,87,86,83,131,252,236,28,139,108,36,48,139, + 68,36,56,139,76,36,52,139,84,36,60,137,108,36,24,139,189,233,43,189,233,199, + 68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137,76,36,4,137,44,36,139,189, + 233,137,124,36,52,137,165,233,252,255,210,133,192,15,132,244,21,137,193,190, + 237,252,233,244,2,248,27,1,209,131,230,252,248,137,213,41,252,242,199,68, + 193,252,252,237,137,200,139,117,252,244,139,77,252,240,139,122,252,248,139, + 191,233,139,191,233,252,255,225,248,33,15,182,78,252,255,131,252,237,16,141, + 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,137,76,36,8,139, + 72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,233,244,35,248,36,137,68,36, + 16,199,68,36,20,237,255,141,68,36,16,128,126,252,252,235,15,133,244,247,141, + 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,37,15,182,70,252, + 254,255,252,242,15,42,192,252,242,15,17,68,36,16,255,137,68,36,12,219,68, + 36,12,221,92,36,16,255,141,68,36,16,252,233,244,247,248,38,15,182,70,252, + 254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4, + 139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,1, + 139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,139,104,4,139, + 0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16, + 252,255,36,171,248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105, + 252,248,184,3,0,0,0,252,255,165,233,248,39,137,68,36,16,199,68,36,20,237, + 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,255,137,41,199, + 65,4,237,137,205,252,233,244,248,248,40,15,182,70,252,254,255,141,68,36,16, + 252,233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255, + 141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137, + 149,233,137,116,36,24,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182, + 78,252,253,139,108,202,4,139,12,202,137,104,4,137,8,248,42,139,6,15,182,204, + 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113, + 252,244,15,182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141, + 177,233,41,214,139,105,252,248,184,4,0,0,0,252,255,165,233,248,43,15,182, + 110,252,252,141,4,194,141,12,202,137,108,36,12,139,108,36,48,137,68,36,8, + 137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139,149, + 233,131,252,248,1,15,135,244,44,248,4,255,141,118,4,15,130,244,252,248,5, + 15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131, + 198,4,193,232,16,252,255,36,171,248,45,131,198,4,129,120,253,4,239,15,130, + 244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131,252, + 238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149, + 233,137,116,36,24,232,251,1,4,252,233,244,3,248,48,255,141,4,199,252,233, + 244,247,248,49,141,4,199,141,44,252,234,149,252,233,244,248,248,50,141,4, + 194,137,197,252,233,244,248,248,51,141,4,194,248,1,141,44,252,234,248,2,141, + 12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36, + 4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,251,1,5,139,149,233, + 133,192,15,132,244,42,248,44,137,193,41,208,137,113,252,244,141,176,233,139, + 105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,244,31,255,252,255, + 165,233,248,52,139,108,36,48,137,149,233,141,20,194,137,252,233,137,116,36, + 24,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76,36,20,137,68,36,16, + 131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137, + 149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139,68,36,16,139, + 105,252,248,131,192,1,57,215,15,132,244,53,252,255,165,233,248,54,139,108, + 36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,1,8,139,149,233, + 139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248, + 55,129,252,248,239,15,130,244,56,255,139,105,4,129,252,253,239,15,131,244, + 56,137,68,36,20,137,105,252,252,139,41,137,105,252,248,131,232,2,15,132,244, + 248,137,76,36,16,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,105, + 252,248,131,232,1,15,133,244,1,139,76,36,16,248,2,139,68,36,20,252,233,244, + 57,248,58,129,252,248,239,15,130,244,56,139,105,4,184,237,252,247,213,57, + 232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,105,252,248,139, + 132,253,197,233,199,65,252,252,237,137,65,252,248,252,233,244,59,248,60,129, + 252,248,239,15,130,244,56,139,105,4,129,252,253,239,15,133,244,252,248,1, + 139,41,139,173,233,248,2,133,252,237,199,65,252,252,237,15,132,244,59,139, + 65,252,248,139,131,233,199,65,252,252,237,137,105,252,248,137,76,36,16,139, + 141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133, + 244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3, + 252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,255,139,1,139, + 76,36,16,137,105,252,252,137,65,252,248,252,233,244,59,248,6,129,252,253, + 239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213, + 139,172,253,171,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,129, + 121,253,4,239,15,133,244,56,255,139,41,131,189,233,0,15,133,244,56,129,121, + 253,12,239,15,133,244,56,139,65,8,137,133,233,199,65,252,252,237,137,105, + 252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,137, + 171,233,137,133,233,248,1,252,233,244,59,248,62,255,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,133,244,56,139,1,139,108,36,48,137,68,36,4,137, + 44,36,137,205,137,84,36,16,131,193,8,137,76,36,8,232,251,1,9,137,252,233, + 139,84,36,16,139,40,139,64,4,137,105,252,248,137,65,252,252,252,233,244,59, + 248,63,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,56,255, + 252,242,15,16,1,252,233,244,64,255,221,1,252,233,244,65,255,248,66,129,252, + 248,239,15,130,244,56,129,121,253,4,239,15,133,244,249,139,1,248,2,199,65, + 252,252,237,137,65,252,248,252,233,244,59,248,3,129,121,253,4,239,15,135, + 244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,15,130,244, + 247,232,244,67,248,1,139,108,36,48,137,141,233,137,113,252,252,137,116,36, + 24,137,84,36,16,137,202,137,252,233,232,251,1,10,139,141,233,139,84,36,16, + 252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129, + 121,253,4,239,15,133,244,56,139,41,137,108,36,4,139,108,36,48,137,44,36,137, + 141,233,255,137,113,252,252,137,84,36,16,131,193,8,137,76,36,8,137,116,36, + 24,232,251,1,11,139,141,233,139,84,36,16,133,192,15,132,244,249,139,105,8, + 139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,20,137,41,137, + 65,4,248,69,184,237,252,233,244,70,248,2,199,65,12,237,252,233,244,1,248, + 3,199,65,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56, + 129,121,253,4,239,255,15,133,244,56,139,133,233,199,65,252,252,237,137,65, + 252,248,199,65,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,255, + 252,242,15,16,65,8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252, + 242,15,88,193,252,242,15,45,192,252,242,15,17,65,252,248,255,221,65,8,217, + 232,222,193,219,20,36,221,89,252,248,139,4,36,255,139,41,59,133,233,15,131, + 244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,139,40, + 139,64,4,137,41,137,65,4,252,233,244,69,248,2,131,189,233,0,15,132,244,73, + 137,84,36,16,135,205,137,194,232,251,1,12,137,252,233,139,84,36,16,133,192, + 15,133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15, + 130,244,56,129,121,253,4,239,15,133,244,56,139,133,233,199,65,252,252,237, + 137,65,252,248,255,15,87,192,252,242,15,17,65,8,255,217,252,238,221,89,8, + 255,184,237,252,233,244,70,248,75,129,252,248,239,15,130,244,56,137,113,252, + 252,190,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,252,246,131, + 233,235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,31,252,255, + 165,233,248,3,131,198,1,252,233,244,2,248,76,255,129,252,248,239,15,130,244, + 56,129,121,253,12,239,15,133,244,56,137,113,252,252,139,105,4,137,105,12, + 199,65,4,237,139,41,139,113,8,137,105,8,137,49,190,237,137,202,129,193,239, + 131,232,2,252,233,244,1,248,9,139,116,36,24,252,233,244,56,248,77,129,252, + 248,239,15,130,244,56,139,41,137,113,252,252,137,116,36,24,137,44,36,129, + 121,253,4,239,15,133,244,9,255,131,189,233,0,15,133,244,9,128,189,233,235, + 15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132,244, + 9,248,1,141,116,198,252,240,59,181,233,15,135,244,9,137,181,233,139,108,36, + 48,137,141,233,131,193,8,137,141,233,255,139,108,36,4,141,76,193,232,41,252, + 241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137, + 70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12, + 137,76,36,8,232,244,28,199,131,233,237,139,108,36,48,139,52,36,139,149,233, + 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233, + 137,252,254,41,206,15,132,244,252,255,141,4,50,193,252,238,3,59,133,233,15, + 135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131, + 193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139, + 116,36,24,137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237, + 15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233,131,252, + 233,8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248, + 9,255,139,12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233, + 252,233,244,4,248,9,139,116,36,24,252,233,244,56,248,78,139,173,233,137,113, + 252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,9,128,189,233,235, + 15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,255,15,132, + 244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137,181,233,139,108, + 36,48,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,41,252,241, + 57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70, + 252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137, + 76,36,8,232,244,28,199,131,233,237,139,108,36,48,139,52,36,139,149,233,255, + 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233, + 137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135, + 244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193, + 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137,68,36,20, + 49,201,252,247,198,237,15,132,244,17,255,252,233,244,18,248,8,137,252,242, + 137,252,233,232,251,1,13,248,9,139,12,36,137,185,233,137,252,242,137,252, + 233,232,251,1,0,139,149,233,252,233,244,4,248,79,139,108,36,48,137,113,252, + 252,252,247,133,233,237,15,132,244,56,137,141,233,141,68,193,252,248,137, + 133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,22,255,248,65, + 221,89,252,248,252,233,244,59,248,80,129,252,248,239,15,130,244,56,129,121, + 253,4,239,15,135,244,56,252,242,15,16,1,102,15,252,239,201,102,15,118,201, + 102,15,115,209,1,15,84,193,248,64,252,242,15,17,65,252,248,255,248,80,129, + 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,225,248, + 64,248,65,221,89,252,248,255,248,59,184,237,248,70,137,68,36,20,248,57,252, + 247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,193,252,244, + 237,131,192,1,252,233,244,5,248,7,137,202,185,252,248,252,255,252,255,252, + 255,252,233,244,18,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4, + 239,15,135,244,56,252,242,15,81,1,252,233,244,64,248,82,129,252,248,239,15, + 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,83,252, + 233,244,64,248,84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15, + 135,244,56,252,242,15,16,1,232,244,85,252,233,244,64,255,248,81,129,252,248, + 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,250,252,233, + 244,65,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, + 56,221,1,232,244,83,252,233,244,65,248,84,255,129,252,248,239,15,130,244, + 56,129,121,253,4,239,15,135,244,56,221,1,232,244,85,252,233,244,65,255,248, + 86,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,252, + 237,221,1,217,252,241,252,233,244,65,248,87,129,252,248,239,15,130,244,56, + 129,121,253,4,239,15,135,244,56,217,252,236,221,1,217,252,241,252,233,244, + 65,248,88,129,252,248,239,255,15,130,244,56,129,121,253,4,239,15,135,244, + 56,221,1,232,244,89,252,233,244,65,248,90,129,252,248,239,15,130,244,56,129, + 121,253,4,239,15,135,244,56,221,1,217,252,254,252,233,244,65,248,91,129,252, + 248,239,255,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,255, + 252,233,244,65,248,92,129,252,248,239,15,130,244,56,129,121,253,4,239,15, + 135,244,56,221,1,217,252,242,221,216,252,233,244,65,248,93,129,252,248,239, + 15,130,244,56,255,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217, + 232,222,225,217,252,250,217,252,243,252,233,244,65,248,94,129,252,248,239, + 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,192,216,200,217,232, + 222,225,217,252,250,217,201,217,252,243,252,233,244,65,248,95,129,252,248, + 239,15,130,244,56,129,121,253,4,239,15,135,244,56,255,221,1,217,232,217,252, + 243,252,233,244,65,255,248,96,129,252,248,239,15,130,244,56,129,121,253,4, + 239,15,135,244,56,252,242,15,16,1,252,242,15,17,4,36,255,248,96,129,252,248, + 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,221,28,36,255,137, + 76,36,16,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233,244,65,255, + 248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252, + 242,15,16,1,252,242,15,17,4,36,255,248,97,129,252,248,239,15,130,244,56,129, + 121,253,4,239,15,135,244,56,221,1,221,28,36,255,137,76,36,16,137,213,232, + 251,1,15,139,76,36,16,137,252,234,252,233,244,65,255,248,98,129,252,248,239, + 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15, + 17,4,36,255,248,98,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135, + 244,56,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,16,139,76,36,16, + 137,252,234,252,233,244,65,248,99,255,248,100,129,252,248,239,15,130,244, + 56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,89,133,233, + 252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,121,253,4,239, + 15,135,244,56,221,1,220,141,233,252,233,244,65,255,248,101,129,252,248,239, + 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, + 56,221,1,221,65,8,217,252,243,252,233,244,65,248,102,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,255,15,135,244, + 56,221,65,8,221,1,217,252,253,221,217,252,233,244,65,248,103,129,252,248, + 239,15,130,244,56,139,105,4,129,252,253,239,15,135,244,56,139,1,137,105,252, + 252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232, + 15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248, + 1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,36, + 16,255,139,105,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63, + 137,105,252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237,252,233, + 244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255, + 252,242,15,16,1,189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15, + 89,193,252,242,15,17,65,252,248,255,221,1,199,68,36,16,0,0,128,90,216,76, + 36,16,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244, + 1,255,248,104,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, + 56,252,242,15,16,1,255,248,104,129,252,248,239,15,130,244,56,129,121,253, + 4,239,15,135,244,56,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255, + 15,132,244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242, + 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,105,220,252,233,248, + 1,221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, + 248,2,184,237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,105,4,252,233, + 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, + 1,255,248,106,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, + 56,129,121,253,12,239,15,135,244,56,221,65,8,221,1,248,1,217,252,248,223, + 224,158,15,138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15, + 130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, + 56,252,242,15,16,1,252,242,15,16,73,8,232,244,108,252,233,244,64,255,248, + 107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, + 253,12,239,15,135,244,56,221,1,221,65,8,232,244,108,252,233,244,65,255,248, + 109,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242, + 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252, + 239,15,135,244,56,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, + 197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,56,129,121,253, + 4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124, + 253,252,233,252,252,239,15,135,244,251,221,68,252,233,252,248,255,219,252, + 233,219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217, + 201,248,2,221,216,88,255,248,110,129,252,248,239,15,130,244,56,129,121,253, + 4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,64, + 129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,252, + 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,110,129,252,248,239, + 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,57, + 197,15,131,244,65,129,124,253,252,233,252,252,239,15,135,244,251,221,68,252, + 233,252,248,255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246, + 196,1,15,133,244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244, + 56,255,248,111,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244, + 56,139,41,255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233, + 244,65,255,248,112,129,252,248,239,15,133,244,56,129,121,253,4,239,15,133, + 244,56,139,41,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42, + 197,252,233,244,64,255,137,108,36,16,219,68,36,16,252,233,244,65,255,248, + 113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,239, + 15,133,244,56,129,121,253,4,239,15,135,244,56,255,252,242,15,45,1,61,252, + 255,0,0,0,15,135,244,56,137,68,36,20,255,221,1,219,92,36,20,129,124,36,20, + 252,255,0,0,0,15,135,244,56,255,199,68,36,8,1,0,0,0,141,68,36,20,137,76,36, + 16,248,114,139,108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36,24, + 232,251,1,17,139,76,36,16,139,149,233,199,65,252,252,237,137,65,252,248,252, + 233,244,59,248,115,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1, + 137,76,36,16,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239, + 15,130,244,56,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105,16, + 137,108,36,20,255,221,65,16,219,92,36,20,255,248,1,129,121,253,4,239,15,133, + 244,56,129,121,253,12,239,15,135,244,56,139,41,137,108,36,12,139,173,233, + 255,252,242,15,45,73,8,255,221,65,8,219,92,36,8,139,76,36,8,255,139,68,36, + 20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,12, + 41,200,15,140,244,116,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137, + 232,252,233,244,114,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6, + 137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143, + 244,3,248,8,185,1,0,0,0,252,233,244,3,248,116,49,192,252,233,244,4,248,117, + 129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,244, + 67,248,1,255,137,76,36,16,129,121,253,4,239,15,133,244,56,129,121,253,12, + 239,15,135,244,56,139,41,255,252,242,15,45,65,8,255,221,65,8,219,92,36,20, + 139,68,36,20,255,133,192,15,142,244,116,131,189,233,1,15,130,244,116,15,133, + 244,118,57,131,233,15,130,244,118,15,182,141,233,139,171,233,137,68,36,8, + 248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,114, + 248,119,129,252,248,239,255,15,130,244,56,139,171,233,59,171,233,15,130,244, + 247,232,244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41, + 139,133,233,133,192,15,132,244,116,57,131,233,15,130,244,120,129,197,239, + 137,116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131, + 232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,114,248, + 121,129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232, + 244,67,248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133, + 233,57,131,233,255,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139, + 179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248, + 131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232, + 1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,114,248,122,129,252, + 248,239,15,130,244,56,255,139,171,233,59,171,233,15,130,244,247,232,244,67, + 248,1,137,76,36,16,129,121,253,4,239,15,133,244,56,139,41,139,133,233,57, + 131,233,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233, + 252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131, + 252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1, + 15,137,244,1,137,252,240,139,116,36,20,252,233,244,114,248,123,129,252,248, + 239,15,130,244,56,129,121,253,4,239,15,133,244,56,137,84,36,16,137,205,139, + 9,232,251,1,18,137,252,233,139,84,36,16,255,252,242,15,42,192,252,233,244, + 64,255,137,4,36,219,4,36,252,233,244,65,255,248,124,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102, + 15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,252,242,15, + 42,197,252,233,244,64,255,248,124,129,252,248,239,15,130,244,56,129,121,253, + 4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36, + 219,4,36,252,233,244,65,255,248,125,129,252,248,239,15,130,244,56,129,121, + 253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102, + 15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,125,129,252,248,239, 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192, - 89,216,68,36,16,221,28,36,219,4,36,252,233,244,65,255,248,125,129,252,248, - 239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0, - 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, - 248,125,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, - 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36, - 20,141,68,193,252,240,255,137,84,36,16,255,248,1,57,200,15,134,244,126,129, - 120,253,4,239,15,135,244,127,255,252,242,15,16,0,252,242,15,88,193,102,15, - 126,194,33,213,255,221,0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252, - 233,244,1,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15, - 135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81, - 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,56, - 129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16, - 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194, - 9,213,255,221,0,216,68,36,16,221,28,36,11,44,36,255,248,129,129,252,248,239, - 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56, - 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, - 248,129,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, - 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15, - 16,0,252,242,15,88,193,102,15,126,194,49,213,255,221,0,216,68,36,16,221,28, - 36,51,44,36,255,248,130,129,252,248,239,15,130,244,56,129,121,253,4,239,15, - 135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81, - 252,242,15,88,193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,56, - 129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16, - 221,28,36,139,44,36,255,15,205,252,233,244,131,255,248,132,129,252,248,239, - 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56, - 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, - 248,132,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221, - 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,247,213, - 255,248,131,252,242,15,42,197,252,233,244,64,248,126,252,242,15,42,197,139, - 84,36,16,252,233,244,64,255,248,131,248,126,137,44,36,219,4,36,252,233,244, - 65,255,248,127,255,139,68,36,20,252,233,244,56,255,248,133,129,252,248,239, - 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, - 56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15, - 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, - 15,126,201,255,248,133,129,252,248,239,15,130,244,56,129,121,253,4,239,15, - 135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0, - 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36, - 8,139,44,36,255,211,229,137,193,252,233,244,131,255,248,134,129,252,248,239, - 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244, - 56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15, - 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, - 15,126,201,255,248,134,129,252,248,239,15,130,244,56,129,121,253,4,239,15, - 135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0, - 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36, - 8,139,44,36,255,211,252,237,137,193,252,233,244,131,255,248,135,129,252,248, - 239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135, - 244,56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102, - 15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197, - 102,15,126,201,255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239, - 15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16, - 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76, - 36,8,139,44,36,255,211,252,253,137,193,252,233,244,131,255,248,136,129,252, - 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239, - 15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110, - 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15, - 126,197,102,15,126,201,255,248,136,129,252,248,239,15,130,244,56,129,121, - 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199, - 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, - 139,76,36,8,139,44,36,255,211,197,137,193,252,233,244,131,255,248,137,129, - 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12, - 239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15, - 110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102, - 15,126,197,102,15,126,201,255,248,137,129,252,248,239,15,130,244,56,129,121, - 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199, - 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, - 139,76,36,8,139,44,36,255,211,205,137,193,252,233,244,131,248,118,184,237, - 252,233,244,56,248,120,184,237,248,56,139,108,36,48,41,202,137,113,252,252, - 137,116,36,24,137,84,36,16,137,141,233,141,68,193,252,248,141,144,233,137, - 133,233,139,65,252,248,59,149,233,15,135,244,251,137,44,36,252,255,144,233, - 133,192,15,133,244,249,248,1,139,141,233,255,139,133,233,41,200,193,232,3, - 131,192,1,139,105,252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248, - 252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233, - 248,3,139,141,233,139,84,36,16,1,202,252,233,244,70,248,5,186,237,137,252, - 233,232,251,1,0,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,41,202, - 137,84,36,20,137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248, - 137,252,233,137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193, - 232,3,131,192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105, - 252,248,195,248,138,255,15,182,131,233,168,235,15,133,244,251,168,235,15, - 133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248, - 139,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255, - 139,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149, - 233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78, - 252,253,248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171, - 233,248,140,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,141,255,139, - 108,36,48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232, - 251,1,21,252,233,244,3,255,248,142,255,139,108,36,48,137,149,233,137,252, - 242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6, - 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,143,255, - 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125, - 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233, - 137,139,233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15, - 17,125,216,252,242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101, - 192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242, - 15,17,69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84, - 36,16,141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108, - 36,48,255,248,144,255,139,122,252,248,139,191,233,139,191,233,199,131,233, - 0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16, - 252,255,36,171,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11, - 68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217, - 108,36,4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102, - 15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102, - 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252, - 242,15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112, - 210,81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248, - 1,195,248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102, - 37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, - 139,68,36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,115, + 89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,193,252,240,255, + 137,84,36,16,255,248,1,57,200,15,134,244,126,129,120,253,4,239,15,135,244, + 127,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255,221,0, + 216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,128,129, + 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1, + 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126, + 197,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, + 56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252, + 242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,255,221,0,216,68,36,16, + 221,28,36,11,44,36,255,248,129,129,252,248,239,15,130,244,56,129,121,253, + 4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112, + 201,81,252,242,15,88,193,102,15,126,197,255,248,129,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216, + 68,36,16,221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15, + 126,194,49,213,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,130,129, + 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1, + 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126, + 197,255,248,130,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, + 56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15, + 205,252,233,244,131,255,248,132,129,252,248,239,15,130,244,56,129,121,253, + 4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112, + 201,81,252,242,15,88,193,102,15,126,197,255,248,132,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216, + 68,36,16,221,28,36,139,44,36,255,252,247,213,255,248,131,252,242,15,42,197, + 252,233,244,64,248,126,252,242,15,42,197,139,84,36,16,252,233,244,64,255, + 248,131,248,126,137,44,36,219,4,36,252,233,244,65,255,248,127,255,139,68, + 36,20,252,233,244,56,255,248,133,129,252,248,239,15,130,244,56,129,121,253, + 4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252, + 242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15, + 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133, + 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253, + 12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16, + 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, + 229,137,193,252,233,244,131,255,248,134,129,252,248,239,15,130,244,56,129, + 121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242,15,16, + 1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, + 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248, + 134,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121, + 253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36, + 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, + 252,237,137,193,252,233,244,131,255,248,135,129,252,248,239,15,130,244,56, + 129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252,242, + 15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81, + 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201, + 255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56, + 129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89,216, + 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36, + 255,211,252,253,137,193,252,233,244,131,255,248,136,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252, + 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, + 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, + 201,255,248,136,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, + 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89, + 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, + 36,255,211,197,137,193,252,233,244,131,255,248,137,129,252,248,239,15,130, + 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,252, + 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, + 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, + 201,255,248,137,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244, + 56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,0,192,89, + 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, + 36,255,211,205,137,193,252,233,244,131,248,118,184,237,252,233,244,56,248, + 120,184,237,248,56,139,108,36,48,41,202,137,113,252,252,137,116,36,24,137, + 84,36,16,137,141,233,141,68,193,252,248,141,144,233,137,133,233,139,65,252, + 248,59,149,233,15,135,244,251,137,44,36,252,255,144,233,133,192,15,133,244, + 249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139,105, + 252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248,252,255,165,233, + 248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,248,3,139,141, + 233,139,84,36,16,1,202,252,233,244,70,248,5,186,237,137,252,233,232,251,1, + 0,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,41,202,137,84,36,20, + 137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248,137,252,233, + 137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131, + 192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105,252,248, + 195,248,138,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244, + 247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,139,15, + 182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233, + 15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149,233,137, + 252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253, + 248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,233,248, + 140,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,141,255,139,108,36, + 48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,251, + 1,21,252,233,244,3,255,248,142,255,139,108,36,48,137,149,233,137,252,242, + 141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,143,255,85,141, + 108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252, + 137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139, + 233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,17,125, + 216,252,242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252, + 242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17, + 69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,36,16, + 141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48, + 255,248,144,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0, + 0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, + 36,171,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4, + 102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36, + 4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102,15,115, 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84, 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, - 15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210, - 81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195, - 248,105,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137, - 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,147, - 102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110, - 216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247, - 102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240, - 63,102,15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252, - 242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252, - 242,15,94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0, - 48,67,102,15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46, - 220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102, - 15,86,226,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15, - 194,196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252, - 242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195, - 255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252, - 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201, - 222,252,233,195,255,248,89,217,252,234,222,201,248,149,217,84,36,4,129,124, - 36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248, - 248,150,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, - 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219, - 84,36,4,219,68,36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133, - 244,254,15,138,244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248, - 1,169,1,0,0,0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232, - 15,132,244,251,217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3, - 220,201,252,233,244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130, - 244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233, - 244,1,248,7,221,216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139, - 68,36,4,209,224,61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132, - 244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,150,248,9, - 255,217,232,255,223,252,234,255,221,252,234,223,224,158,255,15,132,244,247, - 217,201,248,1,221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216, - 217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244, - 249,217,201,248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221, - 216,221,216,133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0, - 128,127,217,68,36,4,195,255,248,108,255,248,151,252,242,15,45,193,252,242, - 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248, - 1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232, - 252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89, - 192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244, - 3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80, - 184,0,0,252,240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88, - 15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184, - 0,0,252,240,63,102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76, - 36,12,252,242,15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209, - 224,61,0,0,224,252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244, - 247,139,68,36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251, - 248,1,221,68,36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233, - 217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242, - 15,16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210, - 81,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239, - 210,102,15,118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102, - 15,110,208,102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15, - 87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102, - 15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3, - 255,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195, - 248,153,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247, - 15,135,244,248,232,244,83,252,233,244,253,248,1,232,244,85,252,233,244,253, - 248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,105,255,252,233, - 244,253,248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195, - 248,2,221,68,36,4,131,252,248,5,15,130,244,89,15,132,244,149,248,2,131,252, - 248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248, - 1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135, - 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248, - 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217, - 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244, - 83,15,132,244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250, - 195,248,2,131,252,248,5,15,130,244,89,15,132,244,149,131,252,248,7,15,132, - 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232, - 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244, - 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252, - 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221, - 216,195,255,248,9,204,248,154,255,139,68,36,20,252,242,15,16,68,36,4,252, - 242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15, - 88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193, - 252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15, - 89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252, - 248,5,15,132,244,247,255,15,135,244,248,232,244,148,252,233,244,7,248,1,90, - 232,244,108,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244, - 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244, - 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252, - 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12, - 15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248, - 2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,252,233, - 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221, - 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, - 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, - 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132, - 244,108,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195, - 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, + 15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210, + 81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195, + 248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252, + 255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68, + 36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184, + 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15, + 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, + 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15, + 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,105,255, + 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217, + 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,147,102,15,252, + 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102, + 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, + 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102, + 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15, + 92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15, + 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102, + 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134, + 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184, + 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102, + 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193, + 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216, + 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, + 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195, + 255,248,89,217,252,234,222,201,248,149,217,84,36,4,129,124,36,4,0,0,128,127, + 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,150,217,192, + 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, + 217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219,84,36,4,219,68, + 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138, + 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0, + 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251, + 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233, + 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232, + 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221, + 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224, + 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0, + 0,252,255,15,132,244,250,217,252,241,252,233,244,150,248,9,255,217,232,255, + 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1, + 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217, + 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201, + 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216, + 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217, + 68,36,4,195,255,248,108,255,248,151,252,242,15,45,193,252,242,15,42,208,102, + 15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,1,15,142,244, + 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244, + 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232, + 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252, + 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252, + 240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252, + 247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63, + 102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242, + 15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0, + 224,252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68, + 36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68, + 36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217, + 252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68, + 36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15, + 46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15, + 118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208, + 102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136, + 196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192, + 102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87, + 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,153,255, + 139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244, + 248,232,244,83,252,233,244,253,248,1,232,244,85,252,233,244,253,248,2,131, + 252,248,3,15,132,244,247,15,135,244,248,232,244,105,255,252,233,244,253,248, + 1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221, + 68,36,4,131,252,248,5,15,130,244,89,15,132,244,149,248,2,131,252,248,7,15, + 132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217, + 232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244, + 248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131, + 252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242, + 221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,83,15,132, + 244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2, + 131,252,248,5,15,130,244,89,15,132,244,149,131,252,248,7,15,132,244,247,15, + 135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217, + 252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252, + 236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15, + 132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195, + 255,248,9,204,248,154,255,139,68,36,20,252,242,15,16,68,36,4,252,242,15,16, + 76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,248, + 7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,233,244, + 7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,252, + 233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,5,15,132, + 244,247,255,15,135,244,248,232,244,148,252,233,244,7,248,1,90,232,244,108, + 82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,184,0, + 0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,1,102, + 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,7,248, + 2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247, 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, - 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, - 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, - 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, - 244,248,217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242, - 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15, - 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249, - 255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,244, - 43,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4, - 194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, - 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, - 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, - 255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202, - 4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202, - 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, - 247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183, - 70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2, - 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, - 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, - 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255, - 252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59, - 12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15, - 16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,131,198, - 4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244, - 247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183, - 70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198, - 4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,137, - 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, - 49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239, - 15,135,244,50,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15, - 112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, - 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, - 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, - 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2, - 129,124,253,194,4,239,15,133,244,52,139,12,194,137,213,232,251,1,18,255,252, - 242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,78, - 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, - 4,239,15,135,244,48,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221, - 4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,49,255,252,242, - 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, - 253,252,234,4,239,15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252, - 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, - 242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255, - 252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234, - 255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36, - 194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220, - 12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220, - 12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252, - 234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4, - 252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221, - 4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255, - 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199, - 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252, - 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, - 12,194,255,221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244, - 156,255,232,244,108,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76, - 36,4,137,68,36,8,248,35,139,108,36,48,137,44,36,137,149,233,137,116,36,24, - 232,251,1,23,139,149,233,133,192,15,133,244,44,15,182,110,252,255,15,182, - 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, - 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, - 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198, - 4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17, - 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17, - 4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141, - 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244, - 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139, - 106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202, - 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139, - 12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235, - 15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233, - 235,15,132,244,1,135,213,141,139,233,255,232,251,1,24,137,252,234,252,233, - 244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139, - 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6, - 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129, - 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233, - 232,251,1,24,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15, - 16,4,199,255,139,172,253,141,233,139,141,233,255,252,247,208,139,106,252, - 248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48, - 131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1, - 25,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76, - 36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,26,139,149, + 15,132,244,247,15,135,244,255,252,242,15,93,193,252,233,244,7,248,1,252,242, + 15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36, + 12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252, + 233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248, + 1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132,244,108,131,252, + 248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216, + 217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243, + 195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244, + 247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233, + 218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217, + 201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248, + 217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242,0,0,32,0, + 82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,124, + 36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,129,124,253,202, + 4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,43,255,252,242,15,16, + 4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223, + 252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131, + 244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131, + 198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251, + 255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138, + 244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183, + 70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180, + 253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15, + 131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135, + 244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244, + 2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,252,247,208,131,198, + 4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4, + 129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4, + 202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139, + 108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247, + 255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253, + 134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204, + 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253, + 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4, + 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,50,255,252, + 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193, + 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194, + 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1, + 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204, + 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239, + 15,133,244,52,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252, + 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1, + 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,48, + 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199, + 255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,15,16,4,199,252,242, + 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239, + 15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252,242,15,16,4,252, + 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252, + 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4, + 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16, + 4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15, + 16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242, + 15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252, + 242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255, + 252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199, + 255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252, + 234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220, + 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234, + 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199, + 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4, + 252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244, + 108,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36, + 8,248,35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,23,139, + 149,233,133,192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68, + 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68, + 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70, + 252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4, + 199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131, + 198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,237,137, + 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15, + 182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253, + 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139, + 172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77, + 0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6, + 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,232,239, + 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141, + 139,233,255,232,251,1,24,137,252,234,252,233,244,1,255,252,247,208,139,106, + 252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252, + 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198, + 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189, + 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252, + 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141, + 233,139,141,233,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141, + 233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137, + 149,233,141,20,202,137,252,233,232,251,1,25,139,149,233,248,1,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74, + 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149, + 233,137,116,36,24,232,251,1,26,139,149,233,15,182,78,252,253,137,4,202,199, + 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 171,255,137,197,37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,132,244, + 249,248,2,137,108,36,8,139,108,36,48,137,68,36,4,137,116,36,24,139,131,233, + 137,44,36,59,131,233,137,149,233,15,131,244,251,248,1,232,251,1,27,139,149, 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,171,255,137,197,37,252,255,7,0,0,193, - 252,237,11,61,252,255,7,0,0,15,132,244,249,248,2,137,108,36,8,139,108,36, - 48,137,68,36,4,137,116,36,24,139,131,233,137,44,36,59,131,233,137,149,233, - 15,131,244,251,248,1,232,251,1,27,139,149,233,15,182,78,252,253,137,4,202, - 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,28,252, - 233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139, - 233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,29, - 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251, - 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106, - 252,248,139,173,233,139,4,135,252,233,244,157,255,252,247,208,139,106,252, - 248,139,173,233,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192,129, - 124,253,252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194,4,239, - 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200, - 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,38,59,133,233, - 15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1, - 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198, - 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233, - 252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,5,255, - 129,124,253,194,4,239,15,133,244,38,139,4,194,252,233,244,157,255,15,182, - 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, - 244,36,139,44,252,234,248,157,139,141,233,35,136,233,105,201,239,3,141,233, - 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253, - 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255, - 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201, - 15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15, - 133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,252,234, - 4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133, - 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137, - 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, - 248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244, - 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41, - 139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59, - 133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249, - 248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137, - 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, - 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132, - 244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133, - 244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,139,139,233,137,171, - 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182, - 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139,44, - 252,234,248,158,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233, - 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253, - 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15, - 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15, - 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244, - 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,39,139,76,36,16, - 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133, - 201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137,68,36,16,199, - 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68, - 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,30,139,149,233,139,108, - 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, - 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, - 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133, + 232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248, + 5,137,252,233,232,251,1,28,252,233,244,1,255,252,247,208,139,108,36,48,139, + 139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20, + 135,137,252,233,232,251,1,29,139,149,233,15,182,78,252,253,137,4,202,199, + 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 171,248,3,137,252,233,232,251,1,28,15,183,70,252,254,252,247,208,252,233, + 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,157, + 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158,255, + 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44, + 252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, + 242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219, + 4,36,255,15,133,244,38,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, + 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189, + 233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78, + 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,38,139,4, + 194,252,233,244,157,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129, + 124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,157,139,141,233,35, + 136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129, + 233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,139, + 41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,185,237,252,233, + 244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15, + 132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,36,255,15,182,252, + 236,15,182,192,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,59, + 133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248, + 248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139, + 141,233,252,246,129,233,235,15,132,244,37,255,15,182,252,236,15,182,192,129, + 124,253,252,234,4,239,15,133,244,41,139,44,252,234,129,124,253,194,4,239, + 15,135,244,251,255,15,133,244,41,59,133,233,15,131,244,41,193,224,3,3,133, 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, - 255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,78,252,253,252,233, - 244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78, - 252,253,252,233,244,2,255,137,124,36,16,255,221,4,199,219,92,36,12,255,248, - 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139, - 68,36,20,255,252,242,15,45,252,248,255,139,124,36,12,255,131,232,1,15,132, - 244,250,1,252,248,59,133,233,15,131,244,251,41,252,248,193,231,3,3,189,233, - 248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15, - 133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,149,233,137,68,36, - 8,137,44,36,137,116,36,24,232,251,1,31,139,149,233,15,182,78,252,253,252, - 233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133,233,252, - 233,244,2,255,3,68,36,20,255,141,76,202,8,139,105,252,248,129,121,253,252, - 252,239,15,133,244,31,252,255,165,233,255,141,76,202,8,137,215,139,105,252, - 248,129,121,253,252,252,239,15,133,244,31,248,53,139,114,252,252,252,247, - 198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132, - 244,249,248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232, - 1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1,15,135,244,251, - 248,4,139,68,36,20,252,255,165,233,248,5,255,252,247,198,237,15,133,244,4, - 15,182,70,252,253,252,247,208,141,20,194,139,122,252,248,139,191,233,139, - 191,233,252,233,244,4,248,7,15,139,244,1,131,230,252,248,41,252,242,137,215, - 139,114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236, - 137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105, - 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,3,0,0,0, - 15,133,244,31,252,255,165,233,255,15,182,252,236,139,66,252,248,141,12,202, - 139,128,233,15,182,128,233,137,124,36,16,141,188,253,194,233,43,122,252,252, - 133,252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248, - 248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57, - 252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57, - 252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182,204,15,182,232,131, - 198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252, - 248,15,134,244,3,255,137,197,193,252,237,3,131,197,1,137,108,36,20,139,108, - 36,48,1,200,59,133,233,15,135,244,253,248,6,139,71,252,248,137,1,139,71,252, - 252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7, - 137,149,233,137,141,233,137,116,36,24,41,215,139,84,36,20,131,252,234,1,137, - 252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225, - 3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,237,15,133,244,253,255, - 248,17,137,215,131,232,1,15,132,244,249,248,2,139,44,15,137,111,252,248,139, - 108,15,4,137,111,252,252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36, - 20,15,182,110,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106, - 252,252,139,44,10,137,106,252,248,255,248,5,56,70,252,255,15,135,244,252, - 255,15,182,78,252,253,252,247,209,141,20,202,139,122,252,248,139,191,233, - 139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, - 248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131, - 192,1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1, - 252,241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1, - 15,132,244,141,255,141,12,202,255,129,121,253,4,239,15,135,244,54,129,121, - 253,12,239,15,135,244,54,255,139,105,20,255,129,252,253,239,15,135,244,54, - 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15, - 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248, - 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133, - 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255, - 15,183,70,252,254,255,15,131,244,248,141,180,253,134,233,255,141,180,253, - 134,233,15,183,70,252,254,15,131,245,255,15,130,244,248,141,180,253,134,233, - 255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253, - 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245, - 255,141,180,253,134,233,139,1,137,105,252,252,137,65,252,248,255,139,139, - 233,139,4,129,139,128,233,139,108,36,48,137,147,233,137,171,233,252,255,224, - 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16, - 252,255,36,171,255,254,0 + 139,141,233,255,252,246,129,233,235,15,132,244,41,15,182,78,252,253,252,233, + 244,1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,158, + 248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253, + 252,233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124, + 253,252,234,4,239,15,133,244,39,139,44,252,234,248,158,139,141,233,35,136, + 233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244, + 251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255, + 252,246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4, + 139,4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16, + 252,255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233, + 252,246,129,233,235,15,132,244,39,139,76,36,16,252,233,244,2,248,5,139,137, + 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129, + 233,235,15,132,244,39,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141, + 68,36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137, + 116,36,24,232,251,1,30,139,149,233,139,108,36,12,137,193,252,233,244,2,248, + 7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15, + 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252, + 234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132, + 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139, + 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233, + 235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, + 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124, + 36,16,255,221,4,199,219,92,36,12,255,248,1,141,12,202,139,105,252,248,252, + 246,133,233,235,15,133,244,253,248,2,139,68,36,20,255,252,242,15,45,252,248, + 255,139,124,36,12,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131, + 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131, + 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108, + 36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251, + 1,31,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, + 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,20,255,141, + 76,202,8,139,105,252,248,129,121,253,252,252,239,15,133,244,31,252,255,165, + 233,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133, + 244,31,248,53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106, + 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105, + 4,137,111,4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248, + 3,137,209,128,189,233,1,15,135,244,251,248,4,139,68,36,20,252,255,165,233, + 248,5,255,252,247,198,237,15,133,244,4,15,182,70,252,253,252,247,208,141, + 20,194,139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139, + 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255, + 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139, + 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137, + 65,252,252,129,252,248,239,184,3,0,0,0,15,133,244,31,252,255,165,233,255, + 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, + 36,16,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, + 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, + 252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130, + 244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124, + 36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, + 5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,255,137,197,193,252, + 237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135,244,253, + 248,6,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57, + 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24, + 41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139, + 141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68, + 36,20,252,247,198,237,15,133,244,253,255,248,17,137,215,131,232,1,15,132, + 244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131, + 199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5, + 57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106, + 252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,252, + 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204, + 15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,237, + 131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15, + 139,244,18,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252, + 237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,255,141,12,202,255, + 129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139, + 105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16, + 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255, + 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221, + 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24, + 15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248, + 141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245, + 255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244, + 1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252, + 252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137, + 105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108, + 36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15, + 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,254,0 }; enum { @@ -1101,454 +1101,458 @@ static const char *const extnames[] = { #define DtE(_V) (int)(ptrdiff_t)&(((ExitInfo *)0)_V) #define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field)) #define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field)) +#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) /* Generate subroutines used by opcodes and other parts of the VM. */ /* The .code_sub section should be last to help static branch prediction. */ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) { dasm_put(Dst, 0); - dasm_put(Dst, 2, Dt7(->pt), Dt9(->framesize), sizeof(GCproto), Dt9(->k), Dt1(->maxstack), LJ_TNIL); + dasm_put(Dst, 2, Dt7(->pc), PC2PROTO(framesize), PC2PROTO(k), Dt1(->maxstack), PC2PROTO(numparams)); #if LJ_HASJIT #endif - dasm_put(Dst, 63, FRAME_VARG, -FRAME_VARG, Dt7(->pt), Dt9(->framesize), Dt1(->maxstack), Dt9(->numparams), LJ_TNIL, Dt9(->framesize), sizeof(GCproto)); - dasm_put(Dst, 191, Dt9(->k), Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 280, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 362, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); - dasm_put(Dst, 453, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top)); - dasm_put(Dst, 532, Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); - dasm_put(Dst, 622, FRAME_P, LJ_TTRUE, LUA_MINSTACK, sizeof(GCproto), Dt1(->base), Dt1(->top), Dt1(->base)); - dasm_put(Dst, 725, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); - dasm_put(Dst, 845, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); - dasm_put(Dst, 948, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR); - dasm_put(Dst, 1137, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); + dasm_put(Dst, 47, LJ_TNIL, FRAME_VARG, -FRAME_VARG, Dt7(->pc), PC2PROTO(framesize), Dt1(->maxstack), PC2PROTO(numparams)); + dasm_put(Dst, 156, LJ_TNIL, PC2PROTO(k)); +#if LJ_HASJIT +#endif + dasm_put(Dst, 191, LJ_TNIL, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(wrapf), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 287, Dt1(->top), FRAME_TYPE, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), DISPATCH_GL(vmstate), ~LJ_VMST_C, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 369, Dt1(->top), FRAME_TYPE, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); + dasm_put(Dst, 474, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL); + dasm_put(Dst, 558, Dt1(->top), Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); + dasm_put(Dst, 651, FRAME_P, LJ_TTRUE, LUA_MINSTACK, PC2PROTO(framesize), Dt1(->base), Dt1(->top), Dt1(->base)); + dasm_put(Dst, 741, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE); + dasm_put(Dst, 861, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 964, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k), LJ_TSTR); + dasm_put(Dst, 1153, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); if (sse) { - dasm_put(Dst, 1173); + dasm_put(Dst, 1189); } else { - dasm_put(Dst, 1186); + dasm_put(Dst, 1202); } - dasm_put(Dst, 1199, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); - dasm_put(Dst, 1357, LJ_TTAB); + dasm_put(Dst, 1215, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); + dasm_put(Dst, 1373, LJ_TTAB); if (sse) { - dasm_put(Dst, 1173); + dasm_put(Dst, 1189); } else { - dasm_put(Dst, 1186); + dasm_put(Dst, 1202); } - dasm_put(Dst, 1377, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 1584, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); - dasm_put(Dst, 1695, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); - dasm_put(Dst, 1824, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1); - dasm_put(Dst, 1984, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); + dasm_put(Dst, 1393, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 1600, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); + dasm_put(Dst, 1711, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); + dasm_put(Dst, 1840, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1); + dasm_put(Dst, 2000, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); if (cmov) { - dasm_put(Dst, 2080); + dasm_put(Dst, 2096); } else { - dasm_put(Dst, 2084); + dasm_put(Dst, 2100); } - dasm_put(Dst, 2093, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); - dasm_put(Dst, 2181, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); - dasm_put(Dst, 2236, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); - dasm_put(Dst, 2308, 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)); - dasm_put(Dst, 2373, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); + dasm_put(Dst, 2109, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); + dasm_put(Dst, 2197, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); + dasm_put(Dst, 2252, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); + dasm_put(Dst, 2324, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 2389, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 2464); + dasm_put(Dst, 2480); } else { - dasm_put(Dst, 2474); + dasm_put(Dst, 2490); } - dasm_put(Dst, 2481, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 2543, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); - dasm_put(Dst, 2633, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); - dasm_put(Dst, 2739, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 2497, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 2559, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); + dasm_put(Dst, 2649, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); + dasm_put(Dst, 2755, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 2794); + dasm_put(Dst, 2810); } else { - dasm_put(Dst, 2833); + dasm_put(Dst, 2849); } - dasm_put(Dst, 2851, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); - dasm_put(Dst, 2937, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); + dasm_put(Dst, 2867, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); + dasm_put(Dst, 2953, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); if (sse) { - dasm_put(Dst, 2967); + dasm_put(Dst, 2983); } else { - dasm_put(Dst, 2977); + dasm_put(Dst, 2993); } - dasm_put(Dst, 2984, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); - dasm_put(Dst, 3057, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); - dasm_put(Dst, 3155, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); - dasm_put(Dst, 3220, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); - dasm_put(Dst, 3324, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); - dasm_put(Dst, 3443, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); - dasm_put(Dst, 3523, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); - dasm_put(Dst, 3631, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); - dasm_put(Dst, 3727, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); + dasm_put(Dst, 3000, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 3073, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); + dasm_put(Dst, 3171, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 3236, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); + dasm_put(Dst, 3340, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); + dasm_put(Dst, 3459, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); + dasm_put(Dst, 3539, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); + dasm_put(Dst, 3647, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); + dasm_put(Dst, 3743, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); if (sse) { - dasm_put(Dst, 3813, 1+1, LJ_TISNUM); + dasm_put(Dst, 3829, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 3874, 1+1, LJ_TISNUM); + dasm_put(Dst, 3890, 1+1, LJ_TISNUM); } - dasm_put(Dst, 3906, 1+1, FRAME_TYPE, LJ_TNIL); + dasm_put(Dst, 3922, 1+1, FRAME_TYPE, LJ_TNIL); if (sse) { - dasm_put(Dst, 3987, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4049, 1+1, LJ_TISNUM); + dasm_put(Dst, 4003, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4065, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4079, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4138, 1+1, LJ_TISNUM); + dasm_put(Dst, 4095, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4154, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4165, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4234, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4291, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); - dasm_put(Dst, 4354, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); - dasm_put(Dst, 4444); + dasm_put(Dst, 4181, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4250, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4307, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); + dasm_put(Dst, 4370, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); + dasm_put(Dst, 4460); if (sse) { - dasm_put(Dst, 4456, 1+1, LJ_TISNUM); + dasm_put(Dst, 4472, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4487, 1+1, LJ_TISNUM); + dasm_put(Dst, 4503, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4512); + dasm_put(Dst, 4528); if (sse) { - dasm_put(Dst, 4534, 1+1, LJ_TISNUM); + dasm_put(Dst, 4550, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4565, 1+1, LJ_TISNUM); + dasm_put(Dst, 4581, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4590); + dasm_put(Dst, 4606); if (sse) { - dasm_put(Dst, 4612, 1+1, LJ_TISNUM); + dasm_put(Dst, 4628, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 4643, 1+1, LJ_TISNUM); + dasm_put(Dst, 4659, 1+1, LJ_TISNUM); } - dasm_put(Dst, 4668); + dasm_put(Dst, 4684); if (sse) { - dasm_put(Dst, 4692, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); + dasm_put(Dst, 4708, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); } else { - dasm_put(Dst, 4727, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); + dasm_put(Dst, 4743, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); } - dasm_put(Dst, 4756, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); - dasm_put(Dst, 4821, 1+1, LJ_TISNUM); + dasm_put(Dst, 4772, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 4837, 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 4916); + dasm_put(Dst, 4932); } else { - dasm_put(Dst, 4922); + dasm_put(Dst, 4938); } - dasm_put(Dst, 4931); + dasm_put(Dst, 4947); if (sse) { - dasm_put(Dst, 4956); + dasm_put(Dst, 4972); } else { - dasm_put(Dst, 4962); + dasm_put(Dst, 4978); } - dasm_put(Dst, 4965, 1+2); - if (sse) { - dasm_put(Dst, 4974); - } else { - dasm_put(Dst, 4982); - } - dasm_put(Dst, 1581); + dasm_put(Dst, 4981, 1+2); if (sse) { dasm_put(Dst, 4990); } else { - dasm_put(Dst, 5022); + dasm_put(Dst, 4998); } - dasm_put(Dst, 5041); + dasm_put(Dst, 471); if (sse) { - dasm_put(Dst, 5057, 1+1, LJ_TISNUM); + dasm_put(Dst, 5006); } else { - dasm_put(Dst, 5082, 1+1, LJ_TISNUM); + dasm_put(Dst, 5038); } - dasm_put(Dst, 5104); + dasm_put(Dst, 5057); if (sse) { - dasm_put(Dst, 5122); + dasm_put(Dst, 5073, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 5148); + dasm_put(Dst, 5098, 1+1, LJ_TISNUM); } - dasm_put(Dst, 5165, 1+2); + dasm_put(Dst, 5120); if (sse) { - dasm_put(Dst, 5205); + dasm_put(Dst, 5138); } else { - dasm_put(Dst, 5213); + dasm_put(Dst, 5164); } - dasm_put(Dst, 5223, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5181, 1+2); if (sse) { - dasm_put(Dst, 5275, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5221); } else { - dasm_put(Dst, 5322, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5229); + } + dasm_put(Dst, 5239, 2+1, LJ_TISNUM, LJ_TISNUM); + if (sse) { + dasm_put(Dst, 5291, 1+1, LJ_TISNUM, LJ_TISNUM); + } else { + dasm_put(Dst, 5338, 2+1, LJ_TISNUM, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 5363, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5379, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 5434, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5450, 1+1, LJ_TISNUM, LJ_TISNUM); if (cmov) { - dasm_put(Dst, 5487); + dasm_put(Dst, 5503); } else { - dasm_put(Dst, 5495); + dasm_put(Dst, 5511); } - dasm_put(Dst, 5426); + dasm_put(Dst, 5442); } if (sse) { - dasm_put(Dst, 5516, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5532, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 5587, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 5603, 1+1, LJ_TISNUM, LJ_TISNUM); if (cmov) { - dasm_put(Dst, 5640); + dasm_put(Dst, 5656); } else { - dasm_put(Dst, 5648); + dasm_put(Dst, 5664); } - dasm_put(Dst, 5426); + dasm_put(Dst, 5442); } if (!sse) { - dasm_put(Dst, 5669); + dasm_put(Dst, 5685); } - dasm_put(Dst, 5678, 1+1, LJ_TSTR); + dasm_put(Dst, 5694, 1+1, LJ_TSTR); if (sse) { - dasm_put(Dst, 5700, Dt5(->len)); + dasm_put(Dst, 5716, Dt5(->len)); } else { - dasm_put(Dst, 5711, Dt5(->len)); + dasm_put(Dst, 5727, Dt5(->len)); } - dasm_put(Dst, 5719, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); + dasm_put(Dst, 5735, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); if (sse) { - dasm_put(Dst, 5753); + dasm_put(Dst, 5769); } else { - dasm_put(Dst, 5763); + dasm_put(Dst, 5779); } - dasm_put(Dst, 5776, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); + dasm_put(Dst, 5792, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5811); + dasm_put(Dst, 5827); } else { - dasm_put(Dst, 5831); + dasm_put(Dst, 5847); } - dasm_put(Dst, 5851, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); - dasm_put(Dst, 2459); + dasm_put(Dst, 5867, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); + dasm_put(Dst, 2475); if (sse) { - dasm_put(Dst, 5962); + dasm_put(Dst, 5978); } else { - dasm_put(Dst, 5973); + dasm_put(Dst, 5989); } - dasm_put(Dst, 5981, LJ_TSTR, LJ_TISNUM, Dt5(->len)); + dasm_put(Dst, 5997, LJ_TSTR, LJ_TISNUM, Dt5(->len)); if (sse) { - dasm_put(Dst, 6011); + dasm_put(Dst, 6027); } else { - dasm_put(Dst, 6018); + dasm_put(Dst, 6034); } - dasm_put(Dst, 6030, sizeof(GCstr)-1); - dasm_put(Dst, 6105, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 6164, LJ_TSTR, LJ_TISNUM); + dasm_put(Dst, 6046, sizeof(GCstr)-1); + dasm_put(Dst, 6121, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 6180, LJ_TSTR, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6189); + dasm_put(Dst, 6205); } else { - dasm_put(Dst, 6196); + dasm_put(Dst, 6212); } - dasm_put(Dst, 6208, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6273, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6340, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 6415, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6500, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 6574, 1+1, LJ_TTAB); + dasm_put(Dst, 6224, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 6289, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); + dasm_put(Dst, 6356, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); + dasm_put(Dst, 6431, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 6516, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); + dasm_put(Dst, 6590, 1+1, LJ_TTAB); if (sse) { - dasm_put(Dst, 6650); + dasm_put(Dst, 6666); } else { - dasm_put(Dst, 6660); + dasm_put(Dst, 6676); } if (sse) { - dasm_put(Dst, 6671, 1+1, LJ_TISNUM); + dasm_put(Dst, 6687, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6728, 1+1, LJ_TISNUM); + dasm_put(Dst, 6744, 1+1, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 6772, 1+1, LJ_TISNUM); + dasm_put(Dst, 6788, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6820, 1+1, LJ_TISNUM); + dasm_put(Dst, 6836, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6860); + dasm_put(Dst, 6876); if (sse) { - dasm_put(Dst, 6870); + dasm_put(Dst, 6886); } - dasm_put(Dst, 6875, LJ_TISNUM); + dasm_put(Dst, 6891, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6893); + dasm_put(Dst, 6909); } else { - dasm_put(Dst, 6910); + dasm_put(Dst, 6926); } - dasm_put(Dst, 6923); + dasm_put(Dst, 6939); if (sse) { - dasm_put(Dst, 6931, 1+1, LJ_TISNUM); + dasm_put(Dst, 6947, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6979, 1+1, LJ_TISNUM); + dasm_put(Dst, 6995, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6860); + dasm_put(Dst, 6876); if (sse) { - dasm_put(Dst, 6870); + dasm_put(Dst, 6886); } - dasm_put(Dst, 6875, LJ_TISNUM); + dasm_put(Dst, 6891, LJ_TISNUM); if (sse) { - dasm_put(Dst, 7019); + dasm_put(Dst, 7035); } else { - dasm_put(Dst, 7036); + dasm_put(Dst, 7052); } - dasm_put(Dst, 6923); + dasm_put(Dst, 6939); if (sse) { - dasm_put(Dst, 7049, 1+1, LJ_TISNUM); + dasm_put(Dst, 7065, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 7097, 1+1, LJ_TISNUM); + dasm_put(Dst, 7113, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6860); + dasm_put(Dst, 6876); if (sse) { - dasm_put(Dst, 6870); + dasm_put(Dst, 6886); } - dasm_put(Dst, 6875, LJ_TISNUM); + dasm_put(Dst, 6891, LJ_TISNUM); if (sse) { - dasm_put(Dst, 7137); + dasm_put(Dst, 7153); } else { - dasm_put(Dst, 7154); + dasm_put(Dst, 7170); } - dasm_put(Dst, 6923); + dasm_put(Dst, 6939); if (sse) { - dasm_put(Dst, 7167, 1+1, LJ_TISNUM); + dasm_put(Dst, 7183, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 7215, 1+1, LJ_TISNUM); + dasm_put(Dst, 7231, 1+1, LJ_TISNUM); } - dasm_put(Dst, 7255); + dasm_put(Dst, 7271); if (sse) { - dasm_put(Dst, 7262, 1+1, LJ_TISNUM); + dasm_put(Dst, 7278, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 7310, 1+1, LJ_TISNUM); + dasm_put(Dst, 7326, 1+1, LJ_TISNUM); } - dasm_put(Dst, 7350); + dasm_put(Dst, 7366); if (sse) { - dasm_put(Dst, 7354); + dasm_put(Dst, 7370); } else { - dasm_put(Dst, 7381); + dasm_put(Dst, 7397); } - dasm_put(Dst, 7396); + dasm_put(Dst, 7412); if (sse) { - dasm_put(Dst, 6645); + dasm_put(Dst, 6661); } - dasm_put(Dst, 7399); + dasm_put(Dst, 7415); if (sse) { - dasm_put(Dst, 7408, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7424, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7482, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7498, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7548); + dasm_put(Dst, 7564); if (sse) { - dasm_put(Dst, 7557, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7573, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7631, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7647, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7697); + dasm_put(Dst, 7713); if (sse) { - dasm_put(Dst, 7707, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7723, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7781, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7797, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7847); + dasm_put(Dst, 7863); if (sse) { - dasm_put(Dst, 7857, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7873, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7931, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7947, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7997); + dasm_put(Dst, 8013); if (sse) { - dasm_put(Dst, 8006, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 8022, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 8080, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 8096, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 8146, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 8230, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); - dasm_put(Dst, 8349, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 8162, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); + dasm_put(Dst, 8246, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 8365, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 8390, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); + dasm_put(Dst, 8406, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); #endif - dasm_put(Dst, 8421, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 8487, GG_DISP_STATIC*4); + dasm_put(Dst, 8437, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 8503, GG_DISP_STATIC*4); #if LJ_HASJIT - dasm_put(Dst, 8522, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); + dasm_put(Dst, 8538, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); #endif - dasm_put(Dst, 8551); + dasm_put(Dst, 8567); #if LJ_HASJIT - dasm_put(Dst, 8554, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); + dasm_put(Dst, 8570, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); #endif - dasm_put(Dst, 8600); + dasm_put(Dst, 8616); #if LJ_HASJIT - dasm_put(Dst, 8603, 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)); + dasm_put(Dst, 8619, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); #endif - dasm_put(Dst, 8746); + dasm_put(Dst, 8762); #if LJ_HASJIT - dasm_put(Dst, 8749, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); + dasm_put(Dst, 8765, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); #endif - dasm_put(Dst, 8789); + dasm_put(Dst, 8805); if (!sse) { - dasm_put(Dst, 8792); + dasm_put(Dst, 8808); } - dasm_put(Dst, 8837); + dasm_put(Dst, 8853); if (!sse) { - dasm_put(Dst, 8939); + dasm_put(Dst, 8955); } - dasm_put(Dst, 8984); + dasm_put(Dst, 9000); if (!sse) { - dasm_put(Dst, 9086); + dasm_put(Dst, 9102); } - dasm_put(Dst, 9125); + dasm_put(Dst, 9141); if (sse) { - dasm_put(Dst, 9230); + dasm_put(Dst, 9246); } else { - dasm_put(Dst, 9360); + dasm_put(Dst, 9376); } - dasm_put(Dst, 9407); + dasm_put(Dst, 9423); if (!sse) { - dasm_put(Dst, 9481); + dasm_put(Dst, 9497); if (cmov) { - dasm_put(Dst, 9492); + dasm_put(Dst, 9508); } else { - dasm_put(Dst, 9496); + dasm_put(Dst, 9512); } - dasm_put(Dst, 9503); - dasm_put(Dst, 9577); - dasm_put(Dst, 9677); + dasm_put(Dst, 9519); + dasm_put(Dst, 9593); + dasm_put(Dst, 9693); if (cmov) { - dasm_put(Dst, 9680); + dasm_put(Dst, 9696); } else { - dasm_put(Dst, 9684); + dasm_put(Dst, 9700); } - dasm_put(Dst, 9691); + dasm_put(Dst, 9707); if (cmov) { - dasm_put(Dst, 9492); + dasm_put(Dst, 9508); } else { - dasm_put(Dst, 9496); + dasm_put(Dst, 9512); } - dasm_put(Dst, 9709); + dasm_put(Dst, 9725); } else { - dasm_put(Dst, 9788); + dasm_put(Dst, 9804); } - dasm_put(Dst, 9791); - dasm_put(Dst, 9876); - dasm_put(Dst, 10007); - dasm_put(Dst, 10206); + dasm_put(Dst, 9807); + dasm_put(Dst, 9892); + dasm_put(Dst, 10023); + dasm_put(Dst, 10222); if (sse) { - dasm_put(Dst, 10229); - dasm_put(Dst, 10286); - dasm_put(Dst, 10377); + dasm_put(Dst, 10245); + dasm_put(Dst, 10302); + dasm_put(Dst, 10393); } else { - dasm_put(Dst, 10419); - dasm_put(Dst, 10511); + dasm_put(Dst, 10435); + dasm_put(Dst, 10527); } - dasm_put(Dst, 10557); + dasm_put(Dst, 10573); if (sse) { - dasm_put(Dst, 10563); - dasm_put(Dst, 10668); - dasm_put(Dst, 10751); + dasm_put(Dst, 10579); + dasm_put(Dst, 10684); + dasm_put(Dst, 10767); } else { - dasm_put(Dst, 10823); - dasm_put(Dst, 10906); + dasm_put(Dst, 10839); + dasm_put(Dst, 10922); if (cmov) { - dasm_put(Dst, 10961); + dasm_put(Dst, 10977); } else { - dasm_put(Dst, 10980); + dasm_put(Dst, 10996); } - dasm_put(Dst, 10819); + dasm_put(Dst, 10835); } - dasm_put(Dst, 11021); + dasm_put(Dst, 11037); } /* Generate the code for a single instruction. */ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) { int vk = 0; - dasm_put(Dst, 11075, defop); + dasm_put(Dst, 154, defop); switch (op) { @@ -1557,619 +1561,619 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) /* Remember: all ops branch for a true comparison, fall through otherwise. */ case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: - dasm_put(Dst, 11077, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11091, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11098); + dasm_put(Dst, 11112); } else { - dasm_put(Dst, 11113); + dasm_put(Dst, 11127); if (cmov) { - dasm_put(Dst, 11123); + dasm_put(Dst, 11137); } else { - dasm_put(Dst, 11129); + dasm_put(Dst, 11143); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 11136); + dasm_put(Dst, 11150); break; case BC_ISGE: - dasm_put(Dst, 10372); + dasm_put(Dst, 10388); break; case BC_ISLE: - dasm_put(Dst, 6569); + dasm_put(Dst, 6585); break; case BC_ISGT: - dasm_put(Dst, 11141); + dasm_put(Dst, 11155); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 11146, -BCBIAS_J*4); + dasm_put(Dst, 11160, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 11179, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11193, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11205); + dasm_put(Dst, 11219); } else { - dasm_put(Dst, 11217); + dasm_put(Dst, 11231); if (cmov) { - dasm_put(Dst, 11123); + dasm_put(Dst, 11137); } else { - dasm_put(Dst, 11129); + dasm_put(Dst, 11143); } } iseqne_fp: if (vk) { - dasm_put(Dst, 11224); + dasm_put(Dst, 11238); } else { - dasm_put(Dst, 11233); + dasm_put(Dst, 11247); } iseqne_end: if (vk) { - dasm_put(Dst, 11242, -BCBIAS_J*4); + dasm_put(Dst, 11256, -BCBIAS_J*4); } else { - dasm_put(Dst, 11257, -BCBIAS_J*4); + dasm_put(Dst, 11271, -BCBIAS_J*4); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 11272, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<len)); + dasm_put(Dst, 11622, Dt5(->len)); } else { - dasm_put(Dst, 11626, Dt5(->len)); + dasm_put(Dst, 11640, Dt5(->len)); } - dasm_put(Dst, 11635, LJ_TTAB); + dasm_put(Dst, 11649, LJ_TTAB); if (sse) { - dasm_put(Dst, 11675); + dasm_put(Dst, 11689); } else { - dasm_put(Dst, 11684); + dasm_put(Dst, 11698); } - dasm_put(Dst, 11694); + dasm_put(Dst, 11708); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 11704); + dasm_put(Dst, 11718); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11712, LJ_TISNUM); + dasm_put(Dst, 11726, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11724); - } else { dasm_put(Dst, 11738); + } else { + dasm_put(Dst, 11752); } break; case 1: - dasm_put(Dst, 11746, LJ_TISNUM); + dasm_put(Dst, 11760, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11758); - } else { dasm_put(Dst, 11772); + } else { + dasm_put(Dst, 11786); } break; default: - dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11802); - } else { dasm_put(Dst, 11816); + } else { + dasm_put(Dst, 11830); } break; } if (sse) { - dasm_put(Dst, 11578); + dasm_put(Dst, 11592); } else { - dasm_put(Dst, 11590); + dasm_put(Dst, 11604); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 11704); + dasm_put(Dst, 11718); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11712, LJ_TISNUM); + dasm_put(Dst, 11726, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11824); - } else { dasm_put(Dst, 11838); + } else { + dasm_put(Dst, 11852); } break; case 1: - dasm_put(Dst, 11746, LJ_TISNUM); + dasm_put(Dst, 11760, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11846); - } else { dasm_put(Dst, 11860); + } else { + dasm_put(Dst, 11874); } break; default: - dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11868); - } else { dasm_put(Dst, 11882); + } else { + dasm_put(Dst, 11896); } break; } if (sse) { - dasm_put(Dst, 11578); + dasm_put(Dst, 11592); } else { - dasm_put(Dst, 11590); + dasm_put(Dst, 11604); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 11704); + dasm_put(Dst, 11718); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11712, LJ_TISNUM); + dasm_put(Dst, 11726, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11890); - } else { dasm_put(Dst, 11904); + } else { + dasm_put(Dst, 11918); } break; case 1: - dasm_put(Dst, 11746, LJ_TISNUM); + dasm_put(Dst, 11760, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11912); - } else { dasm_put(Dst, 11926); + } else { + dasm_put(Dst, 11940); } break; default: - dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11934); - } else { dasm_put(Dst, 11948); + } else { + dasm_put(Dst, 11962); } break; } if (sse) { - dasm_put(Dst, 11578); + dasm_put(Dst, 11592); } else { - dasm_put(Dst, 11590); + dasm_put(Dst, 11604); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 11704); + dasm_put(Dst, 11718); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11712, LJ_TISNUM); + dasm_put(Dst, 11726, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11956); - } else { dasm_put(Dst, 11970); + } else { + dasm_put(Dst, 11984); } break; case 1: - dasm_put(Dst, 11746, LJ_TISNUM); + dasm_put(Dst, 11760, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11978); - } else { dasm_put(Dst, 11992); + } else { + dasm_put(Dst, 12006); } break; default: - dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12000); - } else { dasm_put(Dst, 12014); + } else { + dasm_put(Dst, 12028); } break; } if (sse) { - dasm_put(Dst, 11578); + dasm_put(Dst, 11592); } else { - dasm_put(Dst, 11590); + dasm_put(Dst, 11604); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_MODVN: - dasm_put(Dst, 11704); + dasm_put(Dst, 11718); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11712, LJ_TISNUM); + dasm_put(Dst, 11726, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12022); - } else { dasm_put(Dst, 12036); + } else { + dasm_put(Dst, 12050); } break; case 1: - dasm_put(Dst, 11746, LJ_TISNUM); + dasm_put(Dst, 11760, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12044); - } else { dasm_put(Dst, 12058); + } else { + dasm_put(Dst, 12072); } break; default: - dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12066); - } else { dasm_put(Dst, 12080); + } else { + dasm_put(Dst, 12094); } break; } - dasm_put(Dst, 12088); + dasm_put(Dst, 12102); if (sse) { - dasm_put(Dst, 11578); + dasm_put(Dst, 11592); } else { - dasm_put(Dst, 11590); + dasm_put(Dst, 11604); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 11704); + dasm_put(Dst, 11718); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11712, LJ_TISNUM); + dasm_put(Dst, 11726, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12022); - } else { dasm_put(Dst, 12036); + } else { + dasm_put(Dst, 12050); } break; case 1: - dasm_put(Dst, 11746, LJ_TISNUM); + dasm_put(Dst, 11760, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12044); - } else { dasm_put(Dst, 12058); + } else { + dasm_put(Dst, 12072); } break; default: - dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12066); - } else { dasm_put(Dst, 12080); + } else { + dasm_put(Dst, 12094); } break; } - dasm_put(Dst, 12094); + dasm_put(Dst, 12108); break; case BC_POW: - dasm_put(Dst, 11704); + dasm_put(Dst, 11718); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11712, LJ_TISNUM); + dasm_put(Dst, 11726, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12022); - } else { dasm_put(Dst, 12036); + } else { + dasm_put(Dst, 12050); } break; case 1: - dasm_put(Dst, 11746, LJ_TISNUM); + dasm_put(Dst, 11760, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12044); - } else { dasm_put(Dst, 12058); + } else { + dasm_put(Dst, 12072); } break; default: - dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11794, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12066); - } else { dasm_put(Dst, 12080); + } else { + dasm_put(Dst, 12094); } break; } - dasm_put(Dst, 12099); + dasm_put(Dst, 12113); if (sse) { - dasm_put(Dst, 11578); + dasm_put(Dst, 11592); } else { - dasm_put(Dst, 11590); + dasm_put(Dst, 11604); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_CAT: - dasm_put(Dst, 12103, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12117, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 12197, LJ_TSTR); + dasm_put(Dst, 12211, LJ_TSTR); break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 12230); + dasm_put(Dst, 12244); } else { - dasm_put(Dst, 12245); + dasm_put(Dst, 12259); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 12253); + dasm_put(Dst, 12267); } else { - dasm_put(Dst, 12266); + dasm_put(Dst, 12280); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_KPRI: - dasm_put(Dst, 12273); + dasm_put(Dst, 12287); break; case BC_KNIL: - dasm_put(Dst, 12299, LJ_TNIL); + dasm_put(Dst, 12313, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 12345, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12359, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 12389, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); - dasm_put(Dst, 12479); + dasm_put(Dst, 12403, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); + dasm_put(Dst, 12493); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 12491, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); + dasm_put(Dst, 12505, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); break; case BC_USETN: - dasm_put(Dst, 12582); + dasm_put(Dst, 12596); if (sse) { - dasm_put(Dst, 12587); + dasm_put(Dst, 12601); } else { - dasm_put(Dst, 11397); + dasm_put(Dst, 11411); } - dasm_put(Dst, 12594, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12608, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 4956); + dasm_put(Dst, 4972); } else { - dasm_put(Dst, 4962); + dasm_put(Dst, 4978); } - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_USETP: - dasm_put(Dst, 12603, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12617, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 12640, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12654, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 12694, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 12708, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 12765, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 12779, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 12886, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 12900, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 12978, Dt7(->env)); + dasm_put(Dst, 12992, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 12996, Dt7(->env)); + dasm_put(Dst, 13010, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 13014, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 13028, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 13047); + dasm_put(Dst, 13061); } else { - dasm_put(Dst, 13068); + dasm_put(Dst, 13082); if (cmov) { - dasm_put(Dst, 11123); + dasm_put(Dst, 11137); } else { - dasm_put(Dst, 11129); + dasm_put(Dst, 11143); } - dasm_put(Dst, 2847); + dasm_put(Dst, 2863); } - dasm_put(Dst, 13078, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 13272, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 13286, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); - dasm_put(Dst, 13558, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13489, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 13572, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETS: - dasm_put(Dst, 13620, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 13695, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 13787, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13634, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 13709, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 13801, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETB: - dasm_put(Dst, 13883, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 13981, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13897, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 13995, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETM: - dasm_put(Dst, 14027); + dasm_put(Dst, 14041); if (sse) { - dasm_put(Dst, 12587); + dasm_put(Dst, 12601); } else { - dasm_put(Dst, 14032); + dasm_put(Dst, 14046); } - dasm_put(Dst, 14040, Dt6(->marked), LJ_GC_BLACK); + dasm_put(Dst, 14054, Dt6(->marked), LJ_GC_BLACK); if (sse) { - dasm_put(Dst, 14065); + dasm_put(Dst, 14079); } else { - dasm_put(Dst, 14072); + dasm_put(Dst, 14086); } - dasm_put(Dst, 14077, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); - dasm_put(Dst, 14205, Dt6(->gclist)); + dasm_put(Dst, 14091, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); + dasm_put(Dst, 14219, Dt6(->gclist)); break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALL: case BC_CALLM: - dasm_put(Dst, 11708); + dasm_put(Dst, 11722); if (op == BC_CALLM) { - dasm_put(Dst, 14213); + dasm_put(Dst, 14227); } - dasm_put(Dst, 14218, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 14232, LJ_TFUNC, Dt7(->gate)); break; case BC_CALLMT: - dasm_put(Dst, 14213); + dasm_put(Dst, 14227); break; case BC_CALLT: - dasm_put(Dst, 14241, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); - dasm_put(Dst, 14346, FRAME_TYPE, Dt7(->pt), Dt9(->k)); + dasm_put(Dst, 14255, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); + dasm_put(Dst, 14360, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); break; case BC_ITERC: - dasm_put(Dst, 14403, LJ_TFUNC, Dt7(->gate)); + dasm_put(Dst, 14417, LJ_TFUNC, Dt7(->gate)); break; case BC_VARG: - dasm_put(Dst, 14465, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); - dasm_put(Dst, 14609, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 14479, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); + dasm_put(Dst, 14623, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 14213); + dasm_put(Dst, 14227); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 14708); + dasm_put(Dst, 14722); } - dasm_put(Dst, 14712, FRAME_TYPE); + dasm_put(Dst, 14726, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 14731); + dasm_put(Dst, 14745); break; case BC_RET1: - dasm_put(Dst, 14789); + dasm_put(Dst, 14803); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 14805); + dasm_put(Dst, 14819); default: break; } - dasm_put(Dst, 14816, Dt7(->pt), Dt9(->k)); + dasm_put(Dst, 14830, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 14858, LJ_TNIL); + dasm_put(Dst, 14872, LJ_TNIL); } else { - dasm_put(Dst, 14867, LJ_TNIL); + dasm_put(Dst, 14881, LJ_TNIL); } - dasm_put(Dst, 14874); + dasm_put(Dst, 14888); if (op != BC_RET0) { - dasm_put(Dst, 14895); + dasm_put(Dst, 14909); } - dasm_put(Dst, 5052); + dasm_put(Dst, 5068); break; /* -- Loops and branches ------------------------------------------------ */ @@ -2177,7 +2181,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 14899, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2189,57 +2193,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORI: case BC_IFORL: vk = (op == BC_IFORL || op == BC_JFORL); - dasm_put(Dst, 14920); + dasm_put(Dst, 14934); if (!vk) { - dasm_put(Dst, 14924, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 14938, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 14943); + dasm_put(Dst, 14957); if (!vk) { - dasm_put(Dst, 14947, LJ_TISNUM); + dasm_put(Dst, 14961, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 14956); + dasm_put(Dst, 14970); if (vk) { - dasm_put(Dst, 14968); + dasm_put(Dst, 14982); } else { - dasm_put(Dst, 14987); + dasm_put(Dst, 15001); } - dasm_put(Dst, 14992); + dasm_put(Dst, 15006); } else { - dasm_put(Dst, 15005); + dasm_put(Dst, 15019); if (vk) { - dasm_put(Dst, 15011); + dasm_put(Dst, 15025); } else { - dasm_put(Dst, 15027); + dasm_put(Dst, 15041); } - dasm_put(Dst, 15035); + dasm_put(Dst, 15049); if (cmov) { - dasm_put(Dst, 11123); + dasm_put(Dst, 11137); } else { - dasm_put(Dst, 11129); + dasm_put(Dst, 11143); } if (!cmov) { - dasm_put(Dst, 15040); + dasm_put(Dst, 15054); } } if (op == BC_FORI) { - dasm_put(Dst, 15046, -BCBIAS_J*4); + dasm_put(Dst, 15060, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 15056, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 15070, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 15070, -BCBIAS_J*4); + dasm_put(Dst, 15084, -BCBIAS_J*4); } else { - dasm_put(Dst, 15066, BC_JLOOP); + dasm_put(Dst, 15080, BC_JLOOP); } - dasm_put(Dst, 11158); + dasm_put(Dst, 11172); if (sse) { - dasm_put(Dst, 15080); + dasm_put(Dst, 15094); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 14899, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2248,33 +2252,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 15091, LJ_TNIL); + dasm_put(Dst, 15105, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 15106, BC_JLOOP); + dasm_put(Dst, 15120, BC_JLOOP); } else { - dasm_put(Dst, 15120, -BCBIAS_J*4); + dasm_put(Dst, 15134, -BCBIAS_J*4); } - dasm_put(Dst, 11455); + dasm_put(Dst, 11469); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 14899, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14913, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 8581); + dasm_put(Dst, 8597); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 15136, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); + dasm_put(Dst, 15150, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); #endif break; case BC_JMP: - dasm_put(Dst, 15159, -BCBIAS_J*4); + dasm_put(Dst, 15173, -BCBIAS_J*4); break; /* ---------------------------------------------------------------------- */ @@ -2302,7 +2306,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 15183); + dasm_put(Dst, 15197); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op, cmov, sse); diff --git a/src/lj_gc.c b/src/lj_gc.c index d8221740..d769c0c8 100644 --- a/src/lj_gc.c +++ b/src/lj_gc.c @@ -261,7 +261,7 @@ static void gc_traverse_proto(global_State *g, GCproto *pt) } /* Traverse the frame structure of a stack. */ -static TValue *gc_traverse_frames(global_State *g, lua_State *th) +static MSize gc_traverse_frames(global_State *g, lua_State *th) { TValue *frame, *top = th->top-1; /* Note: extra vararg frame not skipped, marks function twice (harmless). */ @@ -274,32 +274,22 @@ static TValue *gc_traverse_frames(global_State *g, lua_State *th) } top++; /* Correct bias of -1 (frame == base-1). */ if (top > th->maxstack) top = th->maxstack; - return top; + return (MSize)(top - th->stack); /* Return minimum needed stack size. */ } /* Traverse a thread object. */ static void gc_traverse_thread(global_State *g, lua_State *th) { - TValue *o, *lim; - gc_markobj(g, tabref(th->env)); - for (o = th->stack+1; o < th->top; o++) + TValue *o, *top = th->top; + for (o = th->stack+1; o < top; o++) gc_marktv(g, o); - lim = gc_traverse_frames(g, th); - /* Extra cleanup required to avoid this marking problem: - ** - ** [aa[bb.X| X created. - ** [aa[cc| GC called from (small) inner frame, X destroyed. - ** [aa....X.| GC called again in (larger) outer frame, X resurrected (ouch). - ** - ** During GC in step 2 the stack must be cleaned up to the max. frame extent: - ** - ** ***| Slots cleaned - ** [cc| from top of last frame - ** [aa......| to max. frame extent. - */ - for (; o <= lim; o++) - setnilV(o); - lj_state_shrinkstack(th, (MSize)(lim - th->stack)); + if (g->gc.state == GCSatomic) { + top = th->stack + th->stacksize; + for (; o < top; o++) /* Clear unmarked slots. */ + setnilV(o); + } + gc_markobj(g, tabref(th->env)); + lj_state_shrinkstack(th, gc_traverse_frames(g, th)); } /* Propagate one gray object. Traverse it and turn it black. */ @@ -524,6 +514,7 @@ static void atomic(global_State *g, lua_State *L) { size_t udsize; + g->gc.state = GCSatomic; gc_mark_uv(g); /* Need to remark open upvalues (the thread may be dead). */ gc_propagate_gray(g); /* Propagate any left-overs. */ diff --git a/src/lj_gc.h b/src/lj_gc.h index d1774141..49545c2e 100644 --- a/src/lj_gc.h +++ b/src/lj_gc.h @@ -9,7 +9,9 @@ #include "lj_obj.h" /* Garbage collector states. Order matters. */ -enum { GCSpause, GCSpropagate, GCSsweepstring, GCSsweep, GCSfinalize }; +enum { + GCSpause, GCSpropagate, GCSatomic, GCSsweepstring, GCSsweep, GCSfinalize +}; /* Bitmasks for marked field of GCobj. */ #define LJ_GC_WHITE0 0x01 diff --git a/src/lj_state.c b/src/lj_state.c index 87043dd5..7c8e9c96 100644 --- a/src/lj_state.c +++ b/src/lj_state.c @@ -49,14 +49,18 @@ /* Resize stack slots and adjust pointers in state. */ static void resizestack(lua_State *L, MSize n) { - TValue *oldst = L->stack; + TValue *st, *oldst = L->stack; ptrdiff_t delta; + MSize oldsize = L->stacksize; MSize realsize = n + 1 + LJ_STACK_EXTRA; GCobj *up; lua_assert((MSize)(L->maxstack-L->stack) == L->stacksize-LJ_STACK_EXTRA-1); lj_mem_reallocvec(L, L->stack, L->stacksize, realsize, TValue); - delta = (char *)L->stack - (char *)oldst; - L->maxstack = L->stack + n; + st = L->stack; + delta = (char *)st - (char *)oldst; + L->maxstack = st + n; + while (oldsize < realsize) /* Clear new slots. */ + setnilV(st + oldsize++); L->stacksize = realsize; L->base = (TValue *)((char *)L->base + delta); L->top = (TValue *)((char *)L->top + delta); @@ -90,13 +94,8 @@ void LJ_FASTCALL lj_state_growstack(lua_State *L, MSize need) if (L->stacksize > LJ_STACK_MAXEX) /* overflow while handling overflow? */ lj_err_throw(L, LUA_ERRERR); resizestack(L, L->stacksize + (need > L->stacksize ? need : L->stacksize)); - if (L->stacksize > LJ_STACK_MAXEX) { - if (curr_funcisL(L)) { /* Clear slots of incomplete Lua frame. */ - TValue *top = curr_topL(L); - while (--top >= L->top) setnilV(top); - } - lj_err_msg(L, LJ_ERR_STKOV); /* ... to allow L->top = curr_topL(L). */ - } + if (L->stacksize > LJ_STACK_MAXEX) + lj_err_msg(L, LJ_ERR_STKOV); } void LJ_FASTCALL lj_state_growstack1(lua_State *L) @@ -107,13 +106,15 @@ void LJ_FASTCALL lj_state_growstack1(lua_State *L) /* Allocate basic stack for new state. */ static void stack_init(lua_State *L1, lua_State *L) { - L1->stack = lj_mem_newvec(L, LJ_STACK_START + LJ_STACK_EXTRA, TValue); + TValue *st, *stend; + L1->stack = st = lj_mem_newvec(L, LJ_STACK_START + LJ_STACK_EXTRA, TValue); L1->stacksize = LJ_STACK_START + LJ_STACK_EXTRA; - L1->top = L1->stack; - L1->maxstack = L1->stack+(L1->stacksize - LJ_STACK_EXTRA)-1; - setthreadV(L1, L1->top, L1); /* needed for curr_funcisL() on empty stack */ - setnilV(L1->top); /* but clear its type */ - L1->base = ++L1->top; + stend = st + L1->stacksize; + L1->maxstack = stend - LJ_STACK_EXTRA - 1; + L1->base = L1->top = st+1; + setthreadV(L1, st, L1); /* Needed for curr_funcisL() on empty stack. */ + while (st < stend) /* Clear new slots. */ + setnilV(st++); } /* -- State handling ------------------------------------------------------ */