diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h index 24505e99..b71d9b53 100644 --- a/src/buildvm_x64.h +++ b/src/buildvm_x64.h @@ -12,7 +12,7 @@ #define DASM_SECTION_CODE_OP 0 #define DASM_SECTION_CODE_SUB 1 #define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[14075] = { +static const unsigned char build_actionlist[14077] = { 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141, 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4, 252,247,195,237,15,132,244,13,248,14,252,247,195,237,15,132,244,10,65,199, @@ -265,131 +265,131 @@ static const unsigned char build_actionlist[14075] = { 15,182,173,233,255,252,242,15,42,197,252,233,244,63,255,137,44,36,219,4,36, 252,233,244,64,255,248,112,65,139,174,233,65,59,174,233,15,130,244,247,232, 244,66,248,1,129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55, - 255,252,242,15,45,2,61,252,255,0,0,0,15,135,244,55,137,68,36,4,255,221,2, - 219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,244,55,255,199,68,36,8,1,0, - 0,0,72,141,68,36,4,248,113,139,108,36,24,137,149,233,139,84,36,8,72,137,198, - 137,252,239,137,92,36,28,232,251,1,17,139,149,233,139,90,252,252,199,66,252, - 252,237,137,66,252,248,252,233,244,58,248,114,65,139,174,233,65,59,174,233, - 15,130,244,247,232,244,66,248,1,199,68,36,4,252,255,252,255,252,255,252,255, - 129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,255,252,242, - 15,45,106,16,137,108,36,4,255,221,66,16,219,92,36,4,255,248,1,129,122,253, - 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,8, - 139,173,233,255,252,242,15,45,74,8,255,139,68,36,4,57,197,15,130,244,251, - 248,2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244,115,141, - 172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,113,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,115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244, - 55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,255,129,122, - 253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255,252,242, - 15,45,66,8,255,221,66,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,115, - 131,189,233,1,15,130,244,115,15,133,244,117,65,57,134,233,15,130,244,117, - 15,182,141,233,65,139,174,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232, - 1,15,133,244,1,65,139,134,233,252,233,244,113,248,118,129,252,248,239,255, - 15,130,244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248, - 1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,133,192,15,132,244,115, - 65,57,134,233,15,130,244,119,129,197,239,137,92,36,4,137,68,36,8,65,139,158, - 233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133,244,1,137,216, - 139,92,36,4,252,233,244,113,248,120,129,252,248,239,15,130,244,55,65,139, - 174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15, - 133,244,55,139,42,139,133,233,65,57,134,233,255,15,130,244,119,129,197,239, - 137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5, - 0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241, - 32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233, - 244,113,248,121,129,252,248,239,15,130,244,55,255,65,139,174,233,65,59,174, - 233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42, - 139,133,233,65,57,134,233,15,130,244,119,129,197,239,137,92,36,4,137,68,36, - 8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130, - 244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,3, - 248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,113,248,122, - 129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,137,213,139, - 58,232,251,1,18,137,252,234,255,252,242,15,42,192,252,233,244,63,255,248, - 123,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242, - 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197, - 252,242,15,42,197,252,233,244,63,255,248,124,129,252,248,239,15,130,244,55, - 129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15, - 110,205,252,242,15,88,193,102,15,126,197,255,137,68,36,4,141,68,194,252,240, - 248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255,252,242, - 15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244, - 1,255,248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, + 255,252,242,15,45,42,129,252,253,252,255,0,0,0,15,135,244,55,137,108,36,4, + 255,221,2,219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,244,55,255,199,68, + 36,8,1,0,0,0,72,141,68,36,4,248,113,139,108,36,24,137,149,233,139,84,36,8, + 72,137,198,137,252,239,137,92,36,28,232,251,1,17,139,149,233,139,90,252,252, + 199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,65,139,174,233,65, + 59,174,233,15,130,244,247,232,244,66,248,1,199,68,36,4,252,255,252,255,252, + 255,252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239, + 255,252,242,15,45,106,16,137,108,36,4,255,221,66,16,219,92,36,4,255,248,1, + 129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137, + 108,36,8,139,173,233,255,252,242,15,45,74,8,255,139,68,36,4,57,197,15,130, + 244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244, + 115,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,113, + 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,115,49,192,252,233,244,4,248,116,129,252,248,239,15, + 130,244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,255, + 129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255, + 252,242,15,45,66,8,255,221,66,8,219,92,36,4,139,68,36,4,255,133,192,15,142, + 244,115,131,189,233,1,15,130,244,115,15,133,244,117,65,57,134,233,15,130, + 244,117,15,182,141,233,65,139,174,233,137,68,36,8,248,1,136,77,0,131,197, + 1,131,232,1,15,133,244,1,65,139,134,233,252,233,244,113,248,118,129,252,248, + 239,255,15,130,244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244, + 66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,133,192,15,132, + 244,115,65,57,134,233,15,130,244,119,129,197,239,137,92,36,4,137,68,36,8, + 65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133, + 244,1,137,216,139,92,36,4,252,233,244,113,248,120,129,252,248,239,15,130, + 244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,129,122, + 253,4,239,15,133,244,55,139,42,139,133,233,65,57,134,233,255,15,130,244,119, + 129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1, + 15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248, + 131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92, + 36,4,252,233,244,113,248,121,129,252,248,239,15,130,244,55,255,65,139,174, + 233,65,59,174,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133, + 244,55,139,42,139,133,233,65,57,134,233,15,130,244,119,129,197,239,137,92, + 36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252, + 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248, + 2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,113, + 248,122,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,137, + 213,139,58,232,251,1,18,137,252,234,255,252,242,15,42,192,252,233,244,63, + 255,248,123,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, + 252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15, + 126,197,252,242,15,42,197,252,233,244,63,255,248,124,129,252,248,239,15,130, + 244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102, + 72,15,110,205,252,242,15,88,193,102,15,126,197,255,137,68,36,4,141,68,194, + 252,240,248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255, + 252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252, + 233,244,1,255,248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15, + 135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88, + 193,102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9, + 205,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102, - 15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255, - 248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252, + 15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255, + 248,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252, 242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126, - 197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,248,129, - 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15, - 16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255, - 15,205,252,233,244,125,255,248,130,129,252,248,239,15,130,244,55,129,122, - 253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205, - 252,242,15,88,193,102,15,126,197,255,252,247,213,255,248,125,252,242,15,42, - 197,252,233,244,63,255,248,126,139,68,36,4,252,233,244,55,255,248,131,129, - 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12, - 239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72, - 15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, - 15,126,201,255,211,229,137,193,252,233,244,125,255,248,132,129,252,248,239, + 197,255,15,205,252,233,244,125,255,248,130,129,252,248,239,15,130,244,55, + 129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15, + 110,205,252,242,15,88,193,102,15,126,197,255,252,247,213,255,248,125,252, + 242,15,42,197,252,233,244,63,255,248,126,139,68,36,4,252,233,244,55,255,248, + 131,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122, + 253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237, + 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126, + 197,102,15,126,201,255,211,229,137,193,252,233,244,125,255,248,132,129,252, + 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239, + 15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15, + 110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15, + 126,201,255,211,252,237,137,193,252,233,244,125,255,248,133,129,252,248,239, 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244, 55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252, 242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255, - 211,252,237,137,193,252,233,244,125,255,248,133,129,252,248,239,15,130,244, + 211,252,253,137,193,252,233,244,125,255,248,134,129,252,248,239,15,130,244, 55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242, 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88, - 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,253, - 137,193,252,233,244,125,255,248,134,129,252,248,239,15,130,244,55,129,122, - 253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2, - 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252, - 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,193,252, - 233,244,125,255,248,135,129,252,248,239,15,130,244,55,129,122,253,4,239,15, - 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16, - 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202, - 137,200,102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,244,125, - 248,117,184,237,252,233,244,55,248,119,184,237,248,55,139,108,36,24,139,90, - 252,252,137,92,36,28,137,149,233,141,68,194,252,248,141,136,233,137,133,233, - 139,66,252,248,59,141,233,15,135,244,251,137,252,239,252,255,144,233,139, - 149,233,133,192,15,133,244,69,248,1,255,139,133,233,41,208,193,232,3,131, - 192,1,139,106,252,248,57,90,252,252,15,133,244,248,139,157,233,139,11,15, - 182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209,252, - 247,195,237,15,133,244,249,15,182,107,252,253,72,252,247,213,141,20,252,234, - 252,233,244,27,248,3,137,221,131,229,252,248,41,252,234,252,233,244,27,248, - 5,190,237,137,252,239,232,251,1,0,139,149,233,252,233,244,1,248,66,93,72, - 137,108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194,252,248, - 137,252,239,137,133,233,232,251,1,19,139,149,233,139,133,233,41,208,193,232, - 3,131,192,1,72,139,108,36,8,85,195,248,136,255,65,15,182,134,233,168,235, - 15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,65,252,255,142, - 233,252,233,244,247,255,248,137,65,15,182,134,233,168,235,15,133,244,251, - 252,233,244,247,248,138,65,15,182,134,233,168,235,15,133,244,251,168,235, - 15,132,244,251,65,252,255,142,233,15,132,244,247,168,235,15,132,244,251,248, - 1,255,139,108,36,24,137,149,233,137,222,137,252,239,232,251,1,20,248,3,139, - 149,233,248,4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,67,252,254, - 65,252,255,164,253,252,238,233,248,139,131,195,4,139,77,232,137,76,36,4,252, - 233,244,4,248,140,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194, - 139,108,36,24,137,149,233,137,133,233,137,222,65,141,190,233,73,137,174,233, - 137,92,36,28,232,251,1,21,252,233,244,3,255,248,141,137,92,36,28,255,248, - 142,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24, - 137,149,233,137,133,233,137,222,137,252,239,232,251,1,22,199,68,36,28,0,0, - 0,0,255,131,227,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72, - 137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,143,255,65, - 85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80, - 15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,68, - 139,117,0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,142,233, - 72,129,252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68, - 15,17,117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242, - 68,15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68, - 15,17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109, - 168,252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242, - 15,17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,137,174, - 233,65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251, - 1,23,72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,233,139, - 153,233,252,233,244,247,255,248,144,255,72,131,196,16,248,1,76,139,108,36, - 8,76,139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139, - 191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15, - 182,204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,139, - 68,36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,198, - 232,251,1,24,255,248,82,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,72,184,237,237,102,72,15,110,208,72, - 184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134, - 244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72, - 184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242, + 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,197,137, + 193,252,233,244,125,255,248,135,129,252,248,239,15,130,244,55,129,122,253, + 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252, + 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242, + 15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,205,137,193,252,233, + 244,125,248,117,184,237,252,233,244,55,248,119,184,237,248,55,139,108,36, + 24,139,90,252,252,137,92,36,28,137,149,233,141,68,194,252,248,141,136,233, + 137,133,233,139,66,252,248,59,141,233,15,135,244,251,137,252,239,252,255, + 144,233,139,149,233,133,192,15,133,244,69,248,1,255,139,133,233,41,208,193, + 232,3,131,192,1,139,106,252,248,57,90,252,252,15,133,244,248,139,157,233, + 139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,2,137, + 209,252,247,195,237,15,133,244,249,15,182,107,252,253,72,252,247,213,141, + 20,252,234,252,233,244,27,248,3,137,221,131,229,252,248,41,252,234,252,233, + 244,27,248,5,190,237,137,252,239,232,251,1,0,139,149,233,252,233,244,1,248, + 66,93,72,137,108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194, + 252,248,137,252,239,137,133,233,232,251,1,19,139,149,233,139,133,233,41,208, + 193,232,3,131,192,1,72,139,108,36,8,85,195,248,136,255,65,15,182,134,233, + 168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,65,252, + 255,142,233,252,233,244,247,255,248,137,65,15,182,134,233,168,235,15,133, + 244,251,252,233,244,247,248,138,65,15,182,134,233,168,235,15,133,244,251, + 168,235,15,132,244,251,65,252,255,142,233,15,132,244,247,168,235,15,132,244, + 251,248,1,255,139,108,36,24,137,149,233,137,222,137,252,239,232,251,1,20, + 248,3,139,149,233,248,4,15,182,75,252,253,248,5,15,182,107,252,252,15,183, + 67,252,254,65,252,255,164,253,252,238,233,248,139,131,195,4,139,77,232,137, + 76,36,4,252,233,244,4,248,140,255,139,106,252,248,139,173,233,15,182,133, + 233,141,4,194,139,108,36,24,137,149,233,137,133,233,137,222,65,141,190,233, + 73,137,174,233,137,92,36,28,232,251,1,21,252,233,244,3,255,248,141,137,92, + 36,28,255,248,142,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248, + 139,108,36,24,137,149,233,137,133,233,137,222,137,252,239,232,251,1,22,199, + 68,36,28,0,0,0,0,255,131,227,252,254,255,139,149,233,72,137,193,139,133,233, + 41,208,72,137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,143, + 255,65,85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82, + 81,80,15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,252, + 240,68,139,117,0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137, + 142,233,72,129,252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252, + 242,68,15,17,117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224, + 252,242,68,15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252, + 242,68,15,17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15, + 17,109,168,252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144, + 252,242,15,17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73, + 137,174,233,65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233, + 232,251,1,23,72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149, + 233,139,153,233,252,233,244,247,255,248,144,255,72,131,196,16,248,1,76,139, + 108,36,8,76,139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248, + 69,139,191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139, + 3,15,182,204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248, + 139,68,36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137, + 198,232,251,1,24,255,248,82,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,72,184,237,237,102,72,15,110,208, + 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, + 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, + 72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242, 15,92,200,15,40,193,248,1,195,248,84,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,72,184,237,237,102,72,15, @@ -1237,192 +1237,192 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) if (sse) { dasm_put(Dst, 5199); } else { - dasm_put(Dst, 5219); + dasm_put(Dst, 5221); } - dasm_put(Dst, 5239, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); + dasm_put(Dst, 5241, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); dasm_put(Dst, 2189); if (sse) { - dasm_put(Dst, 5348); + dasm_put(Dst, 5350); } else { - dasm_put(Dst, 5359); + dasm_put(Dst, 5361); } - dasm_put(Dst, 5367, LJ_TSTR, LJ_TISNUM, Dt5(->len)); + dasm_put(Dst, 5369, LJ_TSTR, LJ_TISNUM, Dt5(->len)); if (sse) { - dasm_put(Dst, 5397); + dasm_put(Dst, 5399); } else { } - dasm_put(Dst, 5404, sizeof(GCstr)-1); - dasm_put(Dst, 5479, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 5540, LJ_TSTR, LJ_TISNUM); + dasm_put(Dst, 5406, sizeof(GCstr)-1); + dasm_put(Dst, 5481, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 5542, LJ_TSTR, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5561); + dasm_put(Dst, 5563); } else { - dasm_put(Dst, 5568); + dasm_put(Dst, 5570); } - dasm_put(Dst, 5580, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5648, 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, 5715, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 5788, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5873, 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, 5947, 1+1, LJ_TTAB); + dasm_put(Dst, 5582, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 5650, 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, 5717, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); + dasm_put(Dst, 5790, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 5875, 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, 5949, 1+1, LJ_TTAB); if (sse) { - dasm_put(Dst, 6014); + dasm_put(Dst, 6016); } else { } if (sse) { - dasm_put(Dst, 6024, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6026, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } if (sse) { - dasm_put(Dst, 6076, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6078, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6119, LJ_TISNUM); + dasm_put(Dst, 6121, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6146); + dasm_put(Dst, 6148); } else { } - dasm_put(Dst, 6163); + dasm_put(Dst, 6165); if (sse) { - dasm_put(Dst, 6171, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6173, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6119, LJ_TISNUM); + dasm_put(Dst, 6121, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6214); + dasm_put(Dst, 6216); } else { } - dasm_put(Dst, 6163); + dasm_put(Dst, 6165); if (sse) { - dasm_put(Dst, 6231, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6233, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6119, LJ_TISNUM); + dasm_put(Dst, 6121, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6274); + dasm_put(Dst, 6276); } else { } - dasm_put(Dst, 6163); + dasm_put(Dst, 6165); if (sse) { - dasm_put(Dst, 6291, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6293, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6334); + dasm_put(Dst, 6336); if (sse) { - dasm_put(Dst, 6341, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6343, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6384); + dasm_put(Dst, 6386); if (sse) { - dasm_put(Dst, 6388); + dasm_put(Dst, 6390); } else { } - dasm_put(Dst, 6400); + dasm_put(Dst, 6402); if (sse) { - dasm_put(Dst, 6411, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6413, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6480); + dasm_put(Dst, 6482); if (sse) { - dasm_put(Dst, 6489, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6491, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6558); + dasm_put(Dst, 6560); if (sse) { - dasm_put(Dst, 6568, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6570, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6637); + dasm_put(Dst, 6639); if (sse) { - dasm_put(Dst, 6647, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6649, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6716); + dasm_put(Dst, 6718); if (sse) { - dasm_put(Dst, 6725, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6727, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6794, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 6872, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 6998, Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 6796, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); + dasm_put(Dst, 6874, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 7000, Dt1(->top), Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7037, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); + dasm_put(Dst, 7039, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); #endif - dasm_put(Dst, 7070, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); - dasm_put(Dst, 7124, Dt1(->base), Dt1(->base), GG_DISP2STATIC); + dasm_put(Dst, 7072, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); + dasm_put(Dst, 7126, Dt1(->base), Dt1(->base), GG_DISP2STATIC); #if LJ_HASJIT - dasm_put(Dst, 7191, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); + dasm_put(Dst, 7193, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); #endif - dasm_put(Dst, 7238); + dasm_put(Dst, 7240); #if LJ_HASJIT - dasm_put(Dst, 7065); + dasm_put(Dst, 7067); #endif - dasm_put(Dst, 7245); + dasm_put(Dst, 7247); #if LJ_HASJIT - dasm_put(Dst, 7248); + dasm_put(Dst, 7250); #endif - dasm_put(Dst, 7258, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7260, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7291); + dasm_put(Dst, 7293); #endif - dasm_put(Dst, 7296, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7298, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7327, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); + dasm_put(Dst, 7329, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); #endif - dasm_put(Dst, 7566); + dasm_put(Dst, 7568); #if LJ_HASJIT - dasm_put(Dst, 7569, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); + dasm_put(Dst, 7571, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); #endif - dasm_put(Dst, 7669); + dasm_put(Dst, 7671); if (!sse) { - dasm_put(Dst, 7672); + dasm_put(Dst, 7674); } - dasm_put(Dst, 7717, (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, 7719, (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, 7803); + dasm_put(Dst, 7805); } - dasm_put(Dst, 7848, (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, 7850, (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, 7934); + dasm_put(Dst, 7936); } - dasm_put(Dst, 7973, (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, 7975, (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, 8062, (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, 8064, (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, 8176); + dasm_put(Dst, 8178); } - dasm_put(Dst, 8223); + dasm_put(Dst, 8225); if (!sse) { } else { - dasm_put(Dst, 8300); + dasm_put(Dst, 8302); } - dasm_put(Dst, 8303); - dasm_put(Dst, 8388, (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, 8489, (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, 8663); + dasm_put(Dst, 8305); + dasm_put(Dst, 8390, (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, 8491, (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, 8665); if (sse) { - dasm_put(Dst, 8704); - dasm_put(Dst, 8774); - dasm_put(Dst, 8846); + dasm_put(Dst, 8706); + dasm_put(Dst, 8776); + dasm_put(Dst, 8848); } else { - dasm_put(Dst, 8898); - dasm_put(Dst, 8990); + dasm_put(Dst, 8900); + dasm_put(Dst, 8992); } - dasm_put(Dst, 9036); + dasm_put(Dst, 9038); if (sse) { - dasm_put(Dst, 9042, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); - dasm_put(Dst, 9127, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); + dasm_put(Dst, 9044, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); + dasm_put(Dst, 9129, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); } else { - dasm_put(Dst, 9255); - dasm_put(Dst, 9338); + dasm_put(Dst, 9257); + dasm_put(Dst, 9340); if (cmov) { - dasm_put(Dst, 9393); + dasm_put(Dst, 9395); } else { - dasm_put(Dst, 9412); + dasm_put(Dst, 9414); } - dasm_put(Dst, 9251); + dasm_put(Dst, 9253); } - dasm_put(Dst, 9453); + dasm_put(Dst, 9455); } /* Generate the code for a single instruction. */ @@ -1438,595 +1438,595 @@ 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, 9475, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9477, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9496); + dasm_put(Dst, 9498); } else { - dasm_put(Dst, 9511); + dasm_put(Dst, 9513); if (cmov) { - dasm_put(Dst, 9521); + dasm_put(Dst, 9523); } else { - dasm_put(Dst, 9527); + dasm_put(Dst, 9529); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 9534); + dasm_put(Dst, 9536); break; case BC_ISGE: - dasm_put(Dst, 9333); + dasm_put(Dst, 9335); break; case BC_ISLE: - dasm_put(Dst, 5942); + dasm_put(Dst, 5944); break; case BC_ISGT: - dasm_put(Dst, 9539); + dasm_put(Dst, 9541); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 9544, -BCBIAS_J*4); + dasm_put(Dst, 9546, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 9579, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9581, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9605); + dasm_put(Dst, 9607); } else { - dasm_put(Dst, 9617); + dasm_put(Dst, 9619); if (cmov) { - dasm_put(Dst, 9521); + dasm_put(Dst, 9523); } else { - dasm_put(Dst, 9527); + dasm_put(Dst, 9529); } } iseqne_fp: if (vk) { - dasm_put(Dst, 9624); + dasm_put(Dst, 9626); } else { - dasm_put(Dst, 9633); + dasm_put(Dst, 9635); } iseqne_end: if (vk) { - dasm_put(Dst, 9642, -BCBIAS_J*4); + dasm_put(Dst, 9644, -BCBIAS_J*4); } else { - dasm_put(Dst, 9657, -BCBIAS_J*4); + dasm_put(Dst, 9659, -BCBIAS_J*4); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 9672, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32)); + dasm_put(Dst, 9968, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); } else { - dasm_put(Dst, 9991); + dasm_put(Dst, 9993); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_LEN: - dasm_put(Dst, 10000, LJ_TSTR); + dasm_put(Dst, 10002, LJ_TSTR); if (sse) { - dasm_put(Dst, 10014, Dt5(->len)); + dasm_put(Dst, 10016, Dt5(->len)); } else { - dasm_put(Dst, 10032, Dt5(->len)); + dasm_put(Dst, 10034, Dt5(->len)); } - dasm_put(Dst, 10041, LJ_TTAB); + dasm_put(Dst, 10043, LJ_TTAB); if (sse) { - dasm_put(Dst, 10083); + dasm_put(Dst, 10085); } else { } - dasm_put(Dst, 10092); + dasm_put(Dst, 10094); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10122); + dasm_put(Dst, 10124); } else { - dasm_put(Dst, 10137); + dasm_put(Dst, 10139); } break; case 1: - dasm_put(Dst, 10146, LJ_TISNUM); + dasm_put(Dst, 10148, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10158); + dasm_put(Dst, 10160); } else { - dasm_put(Dst, 10173); + dasm_put(Dst, 10175); } break; default: - dasm_put(Dst, 10182, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10204); + dasm_put(Dst, 10206); } else { - dasm_put(Dst, 10218); + dasm_put(Dst, 10220); } break; } if (sse) { - dasm_put(Dst, 9984); + dasm_put(Dst, 9986); } else { - dasm_put(Dst, 9996); + dasm_put(Dst, 9998); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10226); + dasm_put(Dst, 10228); } else { - dasm_put(Dst, 10241); + dasm_put(Dst, 10243); } break; case 1: - dasm_put(Dst, 10146, LJ_TISNUM); + dasm_put(Dst, 10148, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10250); + dasm_put(Dst, 10252); } else { - dasm_put(Dst, 10265); + dasm_put(Dst, 10267); } break; default: - dasm_put(Dst, 10182, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10274); + dasm_put(Dst, 10276); } else { - dasm_put(Dst, 10288); + dasm_put(Dst, 10290); } break; } if (sse) { - dasm_put(Dst, 9984); + dasm_put(Dst, 9986); } else { - dasm_put(Dst, 9996); + dasm_put(Dst, 9998); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10296); + dasm_put(Dst, 10298); } else { - dasm_put(Dst, 10311); + dasm_put(Dst, 10313); } break; case 1: - dasm_put(Dst, 10146, LJ_TISNUM); + dasm_put(Dst, 10148, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10320); + dasm_put(Dst, 10322); } else { - dasm_put(Dst, 10335); + dasm_put(Dst, 10337); } break; default: - dasm_put(Dst, 10182, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10344); + dasm_put(Dst, 10346); } else { - dasm_put(Dst, 10358); + dasm_put(Dst, 10360); } break; } if (sse) { - dasm_put(Dst, 9984); + dasm_put(Dst, 9986); } else { - dasm_put(Dst, 9996); + dasm_put(Dst, 9998); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10366); + dasm_put(Dst, 10368); } else { - dasm_put(Dst, 10381); + dasm_put(Dst, 10383); } break; case 1: - dasm_put(Dst, 10146, LJ_TISNUM); + dasm_put(Dst, 10148, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10390); + dasm_put(Dst, 10392); } else { - dasm_put(Dst, 10405); + dasm_put(Dst, 10407); } break; default: - dasm_put(Dst, 10182, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10414); + dasm_put(Dst, 10416); } else { - dasm_put(Dst, 10428); + dasm_put(Dst, 10430); } break; } if (sse) { - dasm_put(Dst, 9984); + dasm_put(Dst, 9986); } else { - dasm_put(Dst, 9996); + dasm_put(Dst, 9998); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_MODVN: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10436); + dasm_put(Dst, 10438); } else { - dasm_put(Dst, 10451); + dasm_put(Dst, 10453); } break; case 1: - dasm_put(Dst, 10146, LJ_TISNUM); + dasm_put(Dst, 10148, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10460); + dasm_put(Dst, 10462); } else { - dasm_put(Dst, 10475); + dasm_put(Dst, 10477); } break; default: - dasm_put(Dst, 10182, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10484); + dasm_put(Dst, 10486); } else { - dasm_put(Dst, 10498); + dasm_put(Dst, 10500); } break; } - dasm_put(Dst, 10506); + dasm_put(Dst, 10508); if (sse) { - dasm_put(Dst, 9984); + dasm_put(Dst, 9986); } else { - dasm_put(Dst, 9996); + dasm_put(Dst, 9998); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10436); + dasm_put(Dst, 10438); } else { - dasm_put(Dst, 10451); + dasm_put(Dst, 10453); } break; case 1: - dasm_put(Dst, 10146, LJ_TISNUM); + dasm_put(Dst, 10148, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10460); + dasm_put(Dst, 10462); } else { - dasm_put(Dst, 10475); + dasm_put(Dst, 10477); } break; default: - dasm_put(Dst, 10182, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10484); + dasm_put(Dst, 10486); } else { - dasm_put(Dst, 10498); + dasm_put(Dst, 10500); } break; } - dasm_put(Dst, 10512); + dasm_put(Dst, 10514); break; case BC_POW: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10436); + dasm_put(Dst, 10438); } else { - dasm_put(Dst, 10451); + dasm_put(Dst, 10453); } break; case 1: - dasm_put(Dst, 10146, LJ_TISNUM); + dasm_put(Dst, 10148, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10460); + dasm_put(Dst, 10462); } else { - dasm_put(Dst, 10475); + dasm_put(Dst, 10477); } break; default: - dasm_put(Dst, 10182, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10484); + dasm_put(Dst, 10486); } else { - dasm_put(Dst, 10498); + dasm_put(Dst, 10500); } break; } - dasm_put(Dst, 10517); + dasm_put(Dst, 10519); if (sse) { - dasm_put(Dst, 9984); + dasm_put(Dst, 9986); } else { - dasm_put(Dst, 9996); + dasm_put(Dst, 9998); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_CAT: - dasm_put(Dst, 10521, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 10523, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 10612, LJ_TSTR); + dasm_put(Dst, 10614, LJ_TSTR); break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 10649); + dasm_put(Dst, 10651); } else { - dasm_put(Dst, 10664); + dasm_put(Dst, 10666); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 10672); + dasm_put(Dst, 10674); } else { - dasm_put(Dst, 10686); + dasm_put(Dst, 10688); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_KPRI: - dasm_put(Dst, 10694); + dasm_put(Dst, 10696); break; case BC_KNIL: - dasm_put(Dst, 10723, LJ_TNIL); + dasm_put(Dst, 10725, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 10771, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10773, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 10817, 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, 10913); + dasm_put(Dst, 10819, 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, 10915); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 10925, 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, 10927, 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, 11021); + dasm_put(Dst, 11023); if (sse) { - dasm_put(Dst, 11026); + dasm_put(Dst, 11028); } else { - dasm_put(Dst, 9800); + dasm_put(Dst, 9802); } - dasm_put(Dst, 11034, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11036, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 11043); + dasm_put(Dst, 11045); } else { - dasm_put(Dst, 11049); + dasm_put(Dst, 11051); } - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_USETP: - dasm_put(Dst, 11052, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11054, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 11092, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 11094, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 11148, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 11150, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 11215, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11217, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 11339, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11341, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 11438, Dt7(->env)); + dasm_put(Dst, 11440, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 11458, Dt7(->env)); + dasm_put(Dst, 11460, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 11478, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 11480, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11511); + dasm_put(Dst, 11513); } else { } - dasm_put(Dst, 11532, 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, 11730, 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, 11732, 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, 12022, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 11939, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 12024, 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, 12086, 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, 12163, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 12255, 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, 12088, 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, 12165, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 12257, 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, 12347, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 12447, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12349, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 12449, 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, 12495); + dasm_put(Dst, 12497); if (sse) { - dasm_put(Dst, 12500); + dasm_put(Dst, 12502); } else { } - dasm_put(Dst, 12508, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 12656, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12510, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12658, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALL: case BC_CALLM: - dasm_put(Dst, 10106); + dasm_put(Dst, 10108); if (op == BC_CALLM) { - dasm_put(Dst, 12676); + dasm_put(Dst, 12678); } - dasm_put(Dst, 12681, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 12683, LJ_TFUNC, Dt7(->pc)); break; case BC_CALLMT: - dasm_put(Dst, 12676); + dasm_put(Dst, 12678); break; case BC_CALLT: - dasm_put(Dst, 12724, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 12848, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 12726, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); + dasm_put(Dst, 12850, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); break; case BC_ITERC: - dasm_put(Dst, 12909, LJ_TFUNC, 2+1, Dt7(->pc)); + dasm_put(Dst, 12911, LJ_TFUNC, 2+1, Dt7(->pc)); break; case BC_VARG: - dasm_put(Dst, 12991, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); - dasm_put(Dst, 13145, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 12993, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); + dasm_put(Dst, 13147, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 12676); + dasm_put(Dst, 12678); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 13250); + dasm_put(Dst, 13252); } - dasm_put(Dst, 13254, FRAME_TYPE); + dasm_put(Dst, 13256, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 13273); + dasm_put(Dst, 13275); break; case BC_RET1: - dasm_put(Dst, 13337); + dasm_put(Dst, 13339); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 13353); + dasm_put(Dst, 13355); default: break; } - dasm_put(Dst, 13364, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 13366, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 13412, LJ_TNIL); + dasm_put(Dst, 13414, LJ_TNIL); } else { - dasm_put(Dst, 13423, LJ_TNIL); + dasm_put(Dst, 13425, LJ_TNIL); } - dasm_put(Dst, 13430); + dasm_put(Dst, 13432); if (op != BC_RET0) { - dasm_put(Dst, 13450); + dasm_put(Dst, 13452); } dasm_put(Dst, 4596); break; @@ -2036,7 +2036,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 13453, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13455, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2048,57 +2048,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, 13474); + dasm_put(Dst, 13476); if (!vk) { - dasm_put(Dst, 13478, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 13480, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 13497); + dasm_put(Dst, 13499); if (!vk) { - dasm_put(Dst, 13501, LJ_TISNUM); + dasm_put(Dst, 13503, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 13510); + dasm_put(Dst, 13512); if (vk) { - dasm_put(Dst, 13522); + dasm_put(Dst, 13524); } else { - dasm_put(Dst, 13541); + dasm_put(Dst, 13543); } - dasm_put(Dst, 13546); + dasm_put(Dst, 13548); } else { - dasm_put(Dst, 13559); + dasm_put(Dst, 13561); if (vk) { - dasm_put(Dst, 13565); + dasm_put(Dst, 13567); } else { - dasm_put(Dst, 13581); + dasm_put(Dst, 13583); } - dasm_put(Dst, 13589); + dasm_put(Dst, 13591); if (cmov) { - dasm_put(Dst, 9521); + dasm_put(Dst, 9523); } else { - dasm_put(Dst, 9527); + dasm_put(Dst, 9529); } if (!cmov) { - dasm_put(Dst, 13594); + dasm_put(Dst, 13596); } } if (op == BC_FORI) { - dasm_put(Dst, 13600, -BCBIAS_J*4); + dasm_put(Dst, 13602, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 13610, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 13612, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 13624, -BCBIAS_J*4); + dasm_put(Dst, 13626, -BCBIAS_J*4); } else { - dasm_put(Dst, 13620, BC_JLOOP); + dasm_put(Dst, 13622, BC_JLOOP); } - dasm_put(Dst, 9556); + dasm_put(Dst, 9558); if (sse) { - dasm_put(Dst, 13634); + dasm_put(Dst, 13636); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 13453, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13455, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2107,33 +2107,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 13645, LJ_TNIL); + dasm_put(Dst, 13647, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 13660, BC_JLOOP); + dasm_put(Dst, 13662, BC_JLOOP); } else { - dasm_put(Dst, 13674, -BCBIAS_J*4); + dasm_put(Dst, 13676, -BCBIAS_J*4); } - dasm_put(Dst, 9860); + dasm_put(Dst, 9862); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 13453, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13455, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 13690, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); + dasm_put(Dst, 13692, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); #endif break; case BC_JMP: - dasm_put(Dst, 13731, -BCBIAS_J*4); + dasm_put(Dst, 13733, -BCBIAS_J*4); break; /* -- Function headers -------------------------------------------------- */ @@ -2147,7 +2147,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FUNCF: #if LJ_HASJIT - dasm_put(Dst, 13757, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13759, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif case BC_FUNCV: /* NYI: compiled vararg functions. */ break; @@ -2157,47 +2157,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IFUNCF: - dasm_put(Dst, 13778, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); + dasm_put(Dst, 13780, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); if (op == BC_JFUNCF) { - dasm_put(Dst, 13809, BC_JLOOP); + dasm_put(Dst, 13811, BC_JLOOP); } else { - dasm_put(Dst, 9558); + dasm_put(Dst, 9560); } - dasm_put(Dst, 13818, LJ_TNIL); + dasm_put(Dst, 13820, LJ_TNIL); break; case BC_JFUNCV: #if !LJ_HASJIT break; #endif - dasm_put(Dst, 9253); + dasm_put(Dst, 9255); break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: - dasm_put(Dst, 13840, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); + dasm_put(Dst, 13842, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); if (op == BC_JFUNCV) { - dasm_put(Dst, 13809, BC_JLOOP); + dasm_put(Dst, 13811, BC_JLOOP); } else { - dasm_put(Dst, 13937, -4+PC2PROTO(k)); + dasm_put(Dst, 13939, -4+PC2PROTO(k)); } - dasm_put(Dst, 13962, LJ_TNIL); + dasm_put(Dst, 13964, LJ_TNIL); break; case BC_FUNCC: case BC_FUNCCW: - dasm_put(Dst, 13984, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); + dasm_put(Dst, 13986, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); if (op == BC_FUNCC) { - dasm_put(Dst, 14014); + dasm_put(Dst, 14016); } else { - dasm_put(Dst, 14018); + dasm_put(Dst, 14020); } - dasm_put(Dst, 14026, DISPATCH_GL(vmstate), ~LJ_VMST_C); + dasm_put(Dst, 14028, DISPATCH_GL(vmstate), ~LJ_VMST_C); if (op == BC_FUNCC) { - dasm_put(Dst, 14036); + dasm_put(Dst, 14038); } else { - dasm_put(Dst, 14041, DISPATCH_GL(wrapf)); + dasm_put(Dst, 14043, DISPATCH_GL(wrapf)); } - dasm_put(Dst, 14047, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 14049, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); break; /* ---------------------------------------------------------------------- */ @@ -2225,7 +2225,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 14073); + dasm_put(Dst, 14075); 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 656b6590..0f07de67 100644 --- a/src/buildvm_x64win.h +++ b/src/buildvm_x64win.h @@ -12,7 +12,7 @@ #define DASM_SECTION_CODE_OP 0 #define DASM_SECTION_CODE_SUB 1 #define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[14024] = { +static const unsigned char build_actionlist[14026] = { 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72, 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68, 36,84,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10, @@ -264,435 +264,436 @@ static const unsigned char build_actionlist[14024] = { 42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233,255,252,242, 15,42,197,252,233,244,63,255,137,108,36,80,219,68,36,80,252,233,244,64,255, 248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,252,248, - 239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61, - 252,255,0,0,0,15,135,244,55,137,68,36,84,255,221,2,219,92,36,84,129,124,36, - 84,252,255,0,0,0,15,135,244,55,255,199,68,36,32,1,0,0,0,72,141,68,36,84,248, - 113,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233,137, - 116,36,100,232,251,1,17,139,149,233,139,114,252,252,199,66,252,252,237,137, - 66,252,248,252,233,244,58,248,114,139,171,233,59,171,233,15,130,244,247,232, - 244,66,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,239, - 15,130,244,55,15,134,244,247,129,122,253,20,239,255,252,242,15,45,106,16, - 137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133, - 244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,32,139,173,233, - 255,252,242,15,45,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133,201, - 15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,115,141,172,253,13,233, - 131,192,1,248,4,137,68,36,32,137,232,252,233,244,113,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, - 115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244,55,139,171,233, - 59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133,244, - 55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255,221, - 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,115,131,189,233,1,15, - 130,244,115,15,133,244,117,57,131,233,15,130,244,117,15,182,141,233,139,171, - 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131, - 233,252,233,244,113,248,118,129,252,248,239,255,15,130,244,55,139,171,233, - 59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55, - 139,42,139,133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,129,197, - 239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,15,182,77,0,131,197, - 1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,84,252,233,244,113, - 248,120,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247, - 232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131, - 233,255,15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233, - 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252, - 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137, - 244,1,137,252,240,139,116,36,84,252,233,244,113,248,121,129,252,248,239,15, - 130,244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129, - 122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119, - 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1, - 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244, - 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240, - 139,116,36,84,252,233,244,113,248,122,129,252,248,239,15,130,244,55,129,122, - 253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242, - 15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,244,55,129,122, - 253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205, - 252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,255,248, - 124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242, - 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197, - 255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244,125,129,120,253, - 4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193, - 33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,130,244, + 239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,15,45,42,129, + 252,253,252,255,0,0,0,15,135,244,55,137,108,36,84,255,221,2,219,92,36,84, + 129,124,36,84,252,255,0,0,0,15,135,244,55,255,199,68,36,32,1,0,0,0,72,141, + 68,36,84,248,113,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137, + 252,233,137,116,36,100,232,251,1,17,139,149,233,139,114,252,252,199,66,252, + 252,237,137,66,252,248,252,233,244,58,248,114,139,171,233,59,171,233,15,130, + 244,247,232,244,66,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129, + 252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,255,252,242,15, + 45,106,16,137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253, + 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,32, + 139,173,233,255,252,242,15,45,74,8,255,139,68,36,84,57,197,15,130,244,251, + 248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,115,141, + 172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,113,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,115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244, + 55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253, + 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15, + 45,66,8,255,221,66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,115, + 131,189,233,1,15,130,244,115,15,133,244,117,57,131,233,15,130,244,117,15, + 182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15, + 133,244,1,139,131,233,252,233,244,113,248,118,129,252,248,239,255,15,130, + 244,55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,253, + 4,239,15,133,244,55,139,42,139,133,233,133,192,15,132,244,115,57,131,233, + 15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,248,1,255, + 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116, + 36,84,252,233,244,113,248,120,129,252,248,239,15,130,244,55,139,171,233,59, + 171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139, + 42,139,133,233,57,131,233,255,15,130,244,119,129,197,239,137,116,36,84,137, + 68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15, + 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248, + 3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,113,248,121, + 129,252,248,239,15,130,244,55,255,139,171,233,59,171,233,15,130,244,247,232, + 244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233, + 15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233, + 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249, + 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244, + 1,137,252,240,139,116,36,84,252,233,244,113,248,122,129,252,248,239,15,130, + 244,55,129,122,253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252, + 234,255,252,242,15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130, + 244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102, + 72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233, + 244,63,255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, + 244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193, + 102,15,126,197,255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244, + 125,129,120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193, + 102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248, + 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189, + 237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15, + 16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15, + 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237, + 102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252, + 242,15,88,193,102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244, 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72, - 15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15, - 88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,130,244,55,129, - 122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110, - 205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,242,15,88,193, - 102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,55,129,122,253, - 4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252, - 242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,248,130,129,252, - 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72, - 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,247, - 213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,126,139,68,36,84, - 252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,239, - 15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15, - 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88, - 202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,193,252,233,244, - 125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, + 15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255, + 248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252, + 242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126, + 197,255,252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255,248, + 126,139,68,36,84,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55, + 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242, + 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88, + 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137, + 193,252,233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253, + 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252, + 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242, + 15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252, + 233,244,125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15, + 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16, + 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202, + 137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244, + 125,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72, 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, - 102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,233,244,125,255, - 248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129, - 122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237, - 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15, - 126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,125,255,248,134, - 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253, - 12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102, - 72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197, - 102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248, - 239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135, - 244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213, - 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201, - 255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,119, - 184,237,248,55,139,108,36,96,139,114,252,252,137,116,36,100,137,149,233,141, - 68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244, - 251,137,252,233,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,255, - 139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,15, - 133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255, - 36,252,235,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253, - 72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252, - 248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149, - 233,252,233,244,1,248,66,93,72,137,108,36,32,139,108,36,96,137,116,36,100, - 137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139, - 149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,32,85,195,248, - 136,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,137,15,182,131, - 233,168,235,15,133,244,251,252,233,244,247,248,138,15,182,131,233,168,235, - 15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168, - 235,15,132,244,251,248,1,255,139,108,36,96,137,149,233,137,252,242,137,252, - 233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110, - 252,252,15,183,70,252,254,252,255,164,253,252,235,233,248,139,131,198,4,139, - 77,232,137,76,36,84,252,233,244,4,248,140,255,139,106,252,248,139,173,233, - 15,182,133,233,141,4,194,139,108,36,96,137,149,233,137,133,233,137,252,242, - 141,139,233,72,137,171,233,137,116,36,100,232,251,1,21,252,233,244,3,255, - 248,141,137,116,36,100,255,248,142,255,137,116,36,100,131,206,1,248,1,255, - 141,68,194,252,248,139,108,36,96,137,149,233,137,133,233,137,252,242,137, - 252,233,232,251,1,22,199,68,36,100,0,0,0,0,255,131,230,252,254,255,139,149, - 233,72,137,193,139,133,233,41,208,72,137,205,15,182,78,252,253,193,232,3, - 131,192,1,252,255,229,248,143,255,65,85,65,84,65,83,65,82,65,81,65,80,87, - 86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,252,240,76, - 137,125,252,248,76,137,117,252,240,139,93,0,139,139,233,199,131,233,237,137, - 131,233,137,139,233,72,129,252,236,239,72,131,197,128,252,242,68,15,17,125, - 252,248,252,242,68,15,17,117,252,240,252,242,68,15,17,109,232,252,242,68, - 15,17,101,224,252,242,68,15,17,93,216,252,242,68,15,17,85,208,252,242,68, - 15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,125,184,252,242,15,17, - 117,176,252,242,15,17,109,168,252,242,15,17,101,160,252,242,15,17,93,152, - 252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,17,69,128,139,171,233, - 139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,149,233,72,141,148,253, - 36,233,141,139,233,232,251,1,23,72,139,141,233,72,129,225,239,137,169,233, - 139,149,233,139,177,233,252,233,244,247,255,248,144,255,72,141,140,253,36, - 233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,102,68,15,111,169,233, - 102,68,15,111,161,233,102,68,15,111,153,233,102,68,15,111,145,233,102,68, - 15,111,137,233,102,68,15,111,129,233,102,15,111,185,233,72,137,204,102,15, - 111,49,76,139,124,36,16,76,139,116,36,24,76,139,108,36,32,76,139,100,36,80, - 133,192,15,136,244,249,137,68,36,84,139,122,252,248,139,191,233,139,191,233, - 199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4, - 193,232,16,129,252,253,239,15,130,244,248,255,139,68,36,84,248,2,252,255, - 36,252,235,248,3,252,247,216,137,252,233,137,194,232,251,1,24,255,248,82, - 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,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, - 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252, - 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110, - 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1, - 195,248,84,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,72,184,237,237,102,72,15,110,208,72,184,237,237,102, - 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, - 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102, - 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40, - 193,248,1,195,248,104,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,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, - 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15, - 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216, - 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40, - 193,248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184,237,237,102, - 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102, - 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227, - 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15, - 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195, - 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252, - 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137, - 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255, - 248,88,217,252,234,222,201,248,149,217,84,36,8,129,124,36,8,0,0,128,127,15, - 132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,248,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,107,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,72,184,237,237,102,72,15,110,200,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,72,184,237, - 237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12, - 72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192,72,209,224,15,132, - 244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76, - 36,16,252,242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192, - 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, - 217,221,92,36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15, - 110,208,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237, - 237,102,72,15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102, - 15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224, - 15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15, - 80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15, - 132,244,3,15,87,192,195,248,153,255,131,252,250,1,15,130,244,82,15,132,244, - 84,131,252,250,3,15,130,244,104,15,135,244,248,252,242,15,81,192,195,248, - 2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132, - 244,247,232,244,88,80,252,233,244,253,248,1,232,244,149,255,80,252,233,244, - 253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201, - 217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,252,233,244, - 253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252,236,217,201, - 217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,253,248,2,131, - 252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233,244,253,248, - 1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139, - 84,36,12,221,68,36,4,131,252,250,1,15,130,244,82,15,132,244,84,131,252,250, - 3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130, - 244,88,15,132,244,149,131,252,250,7,15,132,244,247,15,135,244,248,217,252, - 237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131, - 252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241, - 195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244, - 255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,154,255, - 65,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248, - 1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244, - 248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248, - 5,15,130,244,148,15,132,244,107,65,131,252,248,7,15,132,244,247,15,135,244, - 248,72,184,237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237, - 102,72,15,110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252, - 242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132, - 244,247,217,252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217, - 201,217,252,253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244, - 247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248, - 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, - 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, - 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, - 252,248,5,15,130,244,148,15,132,244,107,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,137,200,86,72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91, - 94,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135, - 244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221, - 4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, - 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, - 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, - 235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253, - 202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221, - 4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132, - 244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15, - 183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244, - 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, - 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, - 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255, - 72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202, - 59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242, - 15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,247,208,131, - 198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131, - 244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15, - 183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131, - 198,4,193,232,16,252,255,36,252,235,255,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,48,255,252,242,15,16,4,194,72,184,237,237,102,72, - 15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, - 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, - 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, - 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, - 2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255, - 252,242,15,42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15, - 182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,255,252, - 242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129, - 124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88, - 4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135, - 244,49,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252, - 242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252, - 242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252, - 242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252, - 234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4, - 252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16, - 4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15, - 16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242, - 15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252, - 242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255, - 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194, - 255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4, - 199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4, - 252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234, - 221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244,107,255, - 15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192, - 65,41,232,248,33,137,205,137,116,36,100,232,251,1,25,139,149,233,133,192, - 15,133,244,42,15,182,110,252,255,15,182,78,252,253,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,26,137,252,234,252,233,244,1,255,72,252,247, - 208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199, - 64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,129,233,235,15, - 132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251, - 1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199, - 255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72, - 252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,180, - 253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149,233,141,20, - 202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,108,36,96, - 137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36,100,232,251, - 1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,36,96, - 137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251,248,1,65, - 137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,248, - 2,137,252,233,137,194,232,251,1,29,139,149,233,15,182,78,252,253,137,4,202, + 102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,125,255,248, + 135,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122, + 253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237, + 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126, + 197,102,15,126,201,255,211,205,137,193,252,233,244,125,248,117,184,237,252, + 233,244,55,248,119,184,237,248,55,139,108,36,96,139,114,252,252,137,116,36, + 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248, + 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192, + 15,133,244,69,248,1,255,139,133,233,41,208,193,232,3,131,192,1,139,106,252, + 248,57,114,252,252,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182, + 205,131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,237,15,133,244, + 249,15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3, + 137,252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252, + 233,232,251,1,0,139,149,233,252,233,244,1,248,66,93,72,137,108,36,32,139, + 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137, + 133,233,232,251,1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72, + 139,108,36,32,85,195,248,136,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,137,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,138, + 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139, + 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149, + 233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78, + 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235, + 233,248,139,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,140,255,139, + 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233, + 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251, + 1,21,252,233,244,3,255,248,141,137,116,36,100,255,248,142,255,137,116,36, + 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137, + 133,233,137,252,242,137,252,233,232,251,1,22,199,68,36,100,0,0,0,0,255,131, + 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182, + 78,252,253,193,232,3,131,192,1,252,255,229,248,143,255,65,85,65,84,65,83, + 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252, + 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139, + 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197, + 128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68, + 15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68, + 15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17, + 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160, + 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15, + 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137, + 149,233,72,141,148,253,36,233,141,139,233,232,251,1,23,72,139,141,233,72, + 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,144, + 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233, + 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68, + 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185, + 233,72,137,204,102,15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108, + 36,32,76,139,100,36,80,133,192,15,136,244,249,137,68,36,84,139,122,252,248, + 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139, + 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232, + 251,1,24,255,248,82,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,72,184,237,237,102,72,15,110,208,72,184, + 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244, + 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184, + 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92, + 200,15,40,193,248,1,195,248,84,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,72,184,237,237,102,72,15,110,208, + 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, + 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, + 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242, + 15,92,200,15,40,193,248,1,195,248,104,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,72,184,237,237,102,72,15,110,208,72,184,237,237, + 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, + 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102, + 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, + 86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184, + 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102, + 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252, + 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194, + 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242, + 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255, + 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255, + 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222, + 252,233,195,255,248,88,217,252,234,222,201,248,149,217,84,36,8,129,124,36, + 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248, + 248,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,107,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,72,184,237,237,102,72,15,110,200,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,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209, + 224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192, + 72,209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251, + 252,242,15,17,76,36,16,252,242,15,17,68,36,8,221,68,36,16,221,68,36,8,217, + 252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, + 217,252,253,221,217,221,92,36,8,252,242,15,16,68,36,8,195,248,9,72,184,237, + 237,102,72,15,110,208,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248, + 2,72,184,237,237,102,72,15,110,208,102,15,84,194,72,184,237,237,102,72,15, + 110,208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146, + 208,48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248, + 4,102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133, + 192,15,132,244,3,15,87,192,195,248,153,255,131,252,250,1,15,130,244,82,15, + 132,244,84,131,252,250,3,15,130,244,104,15,135,244,248,252,242,15,81,192, + 195,248,2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248, + 88,15,132,244,247,232,244,88,80,252,233,244,253,248,1,232,244,149,255,80, + 252,233,244,253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252, + 237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241, + 252,233,244,253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252, + 236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244, + 253,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233, + 244,253,248,1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8, + 195,255,139,84,36,12,221,68,36,4,131,252,250,1,15,130,244,82,15,132,244,84, + 131,252,250,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252, + 250,5,15,130,244,88,15,132,244,149,131,252,250,7,15,132,244,247,15,135,244, + 248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241, + 195,248,2,131,252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217, + 201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244, + 247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248, + 9,204,248,154,255,65,131,252,248,1,15,132,244,247,15,135,244,248,252,242, + 15,88,193,195,248,1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,244, + 247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,248, + 2,65,131,252,248,5,15,130,244,148,15,132,244,107,65,131,252,248,7,15,132, + 244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193,195, + 248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,65,131,252,248, + 9,15,135,244,248,252,242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,36,8, + 221,68,36,16,15,132,244,247,217,252,243,248,7,221,92,36,8,252,242,15,16,68, + 36,8,195,248,1,217,201,217,252,253,221,217,252,233,244,7,248,2,65,131,252, + 248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,195,248,1,252,242, + 15,95,193,195,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252, + 248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,233,195,248, + 2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249, + 195,248,2,131,252,248,5,15,130,244,148,15,132,244,107,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,137,200,86,72,137,214,83,15,162,137,6,137,94,4,137,78, + 8,137,86,12,91,94,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253, + 194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202, + 255,221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233, + 223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252, + 254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232, + 16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,135, + 244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102, + 15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255, + 15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134, + 233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5, + 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, + 57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237, + 15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0, + 0,0,255,252,233,244,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239, + 15,133,244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15, + 135,244,248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199, + 255,72,252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129, + 252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44, + 194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,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,48,255,252,242,15,16,4,194,72, + 184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194, + 217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255, + 15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233, + 248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,252,235,248,2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,213, + 232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,78,252,253,252, + 233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15, + 135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252, + 234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,15, + 16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, + 253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252, + 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, + 242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255, + 252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234, + 255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36, + 194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220, + 12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220, + 12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252, + 234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4, + 252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221, + 4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255, + 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199, + 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252, + 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, + 12,194,255,221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244, + 156,255,232,244,107,255,15,182,252,236,15,182,192,139,76,36,96,137,145,233, + 141,20,194,65,137,192,65,41,232,248,33,137,205,137,116,36,100,232,251,1,25, + 139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,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,26,137,252, + 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233, + 139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244, + 248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, + 235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137, + 213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139,106, + 252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252, + 242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,253,141, + 233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16, + 252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,0,15, + 132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248, + 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, + 72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,135,137, + 252,233,137,116,36,100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202, 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,30, - 15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96,139,139, - 233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135, - 137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199,68,202, - 4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 248,3,137,252,233,232,251,1,30,15,183,70,252,254,72,252,247,208,252,233,244, - 2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,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,36,139, - 44,252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, - 242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233, - 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,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,36,15,182,78,252,253,252,233,244,1,248, - 5,255,129,124,253,194,4,239,15,133,244,36,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,34,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,34,255,15,182,252,236,15,182,192,129,124, - 253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193, - 224,3,3,133,233,129,120,253,4,239,15,132,244,248,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,35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239, - 15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15, - 133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239, + 36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,137,116,36, + 100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252, + 255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,29,139,149,233, + 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248, + 5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247, + 208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,149,233,15,131, + 244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252, + 253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193, + 232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,30,15,183,70,252,254, + 72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233, + 139,4,135,252,233,244,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,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255, + 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, + 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4, + 239,15,132,244,248,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,36,15,182,78, + 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,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,34,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,34,255,15,182, + 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234, + 59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244, + 248,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,35,255,15,182,252,236,15,182, + 192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194, + 4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3, + 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133, + 244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15, + 182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,233,0,15,132, + 244,1,139,141,233,255,252,246,129,233,235,15,132,244,39,15,182,78,252,253, + 252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,194,252,233, + 244,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,37,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,37,139,76,36,80,252,233,244, + 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244, + 252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,80,199,68,36,84,237, + 137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205, + 137,116,36,100,232,251,1,32,139,149,233,139,108,36,32,137,193,252,233,244, + 2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3, + 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139, + 44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239, 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,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,39,15,182,78,252,253,252,233,244,1,248,5,129,124, - 253,194,4,239,15,133,244,39,139,4,194,252,233,244,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,37,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,37,139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133, - 244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244, - 37,248,6,137,68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145, - 233,76,141,68,36,80,137,252,234,137,205,137,116,36,100,232,251,1,32,139,149, - 233,139,108,36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233, - 137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124, - 253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193, - 224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235, - 15,133,244,253,248,2,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,38,15,182,78, - 252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141, - 233,15,182,78,252,253,252,233,244,2,255,137,124,36,80,255,252,242,15,45,60, - 199,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,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,33, - 139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139, - 131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124, - 253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,181, - 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141, - 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248, - 52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137, - 68,36,84,131,232,1,15,132,244,249,248,2,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,139,68,36, - 84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15, - 182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244, - 4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139,191,233, - 139,191,233,252,233,244,4,248,7,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,237, - 15,133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15, - 182,205,131,198,4,252,255,36,252,235,255,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,244,1,248,2,199,65,4,237,131, - 193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137, - 208,41,252,248,15,134,244,3,255,137,197,193,252,237,3,131,197,1,137,108,36, - 84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,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,100,41,215,139,84,36,84,131, - 252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244, - 6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15, - 133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,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,84,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,72,252,247,209,141,20,202,139,122,252, - 248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194, - 252,244,237,255,131,192,1,252,233,244,5,248,7,15,139,244,14,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,140,255,141,12,202,255,129,121,253,4,239,15,135, - 244,53,129,121,253,12,239,15,135,244,53,255,139,105,20,255,129,252,253,239, - 15,135,244,53,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65, - 16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102, - 15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221, - 17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,247,255, - 217,201,248,1,255,15,183,70,252,254,255,15,131,244,248,141,180,253,134,233, - 255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,248,141, - 180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139, - 105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137,105,252, - 248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,137,65,252, - 248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,147,233,137, - 171,233,76,137,100,36,80,76,137,108,36,32,76,137,116,36,24,76,137,124,36, - 16,72,137,225,72,129,252,236,239,102,15,127,49,102,15,127,185,233,102,68, - 15,127,129,233,102,68,15,127,137,233,102,68,15,127,145,233,102,68,15,127, - 153,233,102,68,15,127,161,233,102,68,15,127,169,233,102,68,15,127,177,233, - 102,68,15,127,185,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,137,252,245,209,252, - 237,129,229,239,102,131,172,253,43,233,1,15,132,244,142,255,139,190,233,139, - 108,36,96,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134, - 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252, - 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141, - 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,96,141,12, - 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15, - 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56, - 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133, - 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133, - 244,3,252,233,244,2,255,139,106,252,248,72,139,189,233,139,108,36,96,141, - 68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,252, - 233,255,72,137,252,250,137,252,233,255,15,135,244,21,199,131,233,237,255, - 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194, - 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0 + 16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252, + 246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165, + 233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244, + 2,255,137,124,36,80,255,252,242,15,45,60,199,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,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,33,139,149,233,15,182,78,252,253,252, + 233,244,1,248,7,255,128,165,233,235,139,131,233,137,171,233,137,133,233,252, + 233,244,2,255,3,68,36,84,255,129,124,253,202,4,239,139,44,202,15,133,244, + 51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182, + 205,131,198,4,252,255,36,252,235,255,141,76,202,8,137,215,139,105,252,248, + 129,121,253,252,252,239,15,133,244,28,248,52,139,114,252,252,252,247,198, + 237,15,133,244,253,248,1,137,106,252,248,137,68,36,84,131,232,1,15,132,244, + 249,248,2,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,139,68,36,84,128,189,233,1,15,135,244, + 251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255, + 36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,72,252, + 247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,4, + 248,7,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,237,15,133,244,28,137,202, + 137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252, + 255,36,252,235,255,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,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130, + 244,2,248,3,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16, + 252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244, + 3,255,137,197,193,252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59, + 133,233,15,135,244,253,248,6,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,100,41,215,139,84,36,84,131,252,234,1,137,252,233, + 232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255, + 248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255,248, + 13,137,215,131,232,1,15,132,244,249,248,2,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,84, + 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,72,252,247,209,141,20,202,139,122,252,248,139,191,233,139, + 191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, + 248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131, + 192,1,252,233,244,5,248,7,15,139,244,14,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,140,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121, + 253,12,239,15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53, + 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15, + 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248, + 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133, + 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255, + 15,183,70,252,254,255,15,131,244,248,141,180,253,134,233,255,141,180,253, + 134,233,15,183,70,252,254,15,131,245,255,15,130,244,248,141,180,253,134,233, + 255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253, + 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245, + 255,141,180,253,134,233,139,1,137,105,252,252,137,65,252,248,255,139,139, + 233,139,4,129,72,139,128,233,139,108,36,96,137,147,233,137,171,233,76,137, + 100,36,80,76,137,108,36,32,76,137,116,36,24,76,137,124,36,16,72,137,225,72, + 129,252,236,239,102,15,127,49,102,15,127,185,233,102,68,15,127,129,233,102, + 68,15,127,137,233,102,68,15,127,145,233,102,68,15,127,153,233,102,68,15,127, + 161,233,102,68,15,127,169,233,102,68,15,127,177,233,102,68,15,127,185,233, + 252,255,224,255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4, + 193,232,16,252,255,36,252,235,255,137,252,245,209,252,237,129,229,239,102, + 131,172,253,43,233,1,15,132,244,142,255,139,190,233,139,108,36,96,141,12, + 202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255, + 15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1, + 57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252, + 248,137,104,252,252,137,120,252,248,139,108,36,96,141,12,200,59,141,233,15, + 135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248, + 1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252, + 137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255, + 139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, + 235,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244, + 2,255,139,106,252,248,72,139,189,233,139,108,36,96,141,68,194,252,248,137, + 149,233,141,136,233,59,141,233,137,133,233,255,137,252,233,255,72,137,252, + 250,137,252,233,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252, + 255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141, + 233,139,114,252,252,252,233,244,12,255,254,0 }; enum { @@ -1237,193 +1238,193 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) if (sse) { dasm_put(Dst, 5173); } else { - dasm_put(Dst, 5193); + dasm_put(Dst, 5195); } - dasm_put(Dst, 5213, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); + dasm_put(Dst, 5215, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); dasm_put(Dst, 2162); if (sse) { - dasm_put(Dst, 5321); + dasm_put(Dst, 5323); } else { - dasm_put(Dst, 5332); + dasm_put(Dst, 5334); } - dasm_put(Dst, 5340, LJ_TSTR, LJ_TISNUM, Dt5(->len)); + dasm_put(Dst, 5342, LJ_TSTR, LJ_TISNUM, Dt5(->len)); if (sse) { - dasm_put(Dst, 5370); + dasm_put(Dst, 5372); } else { } - dasm_put(Dst, 5377, sizeof(GCstr)-1); - dasm_put(Dst, 5452, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 5511, LJ_TSTR, LJ_TISNUM); + dasm_put(Dst, 5379, sizeof(GCstr)-1); + dasm_put(Dst, 5454, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 5513, LJ_TSTR, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5532); + dasm_put(Dst, 5534); } else { - dasm_put(Dst, 5539); + dasm_put(Dst, 5541); } - dasm_put(Dst, 5551, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5616, 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, 5679, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 5750, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5835, 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, 5905, 1+1, LJ_TTAB); + dasm_put(Dst, 5553, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 5618, 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, 5681, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); + dasm_put(Dst, 5752, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 5837, 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, 5907, 1+1, LJ_TTAB); if (sse) { - dasm_put(Dst, 5973); + dasm_put(Dst, 5975); } else { } if (sse) { - dasm_put(Dst, 5983, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 5985, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } if (sse) { - dasm_put(Dst, 6035, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6037, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6078, LJ_TISNUM); + dasm_put(Dst, 6080, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6105); + dasm_put(Dst, 6107); } else { } - dasm_put(Dst, 6122); + dasm_put(Dst, 6124); if (sse) { - dasm_put(Dst, 6130, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6132, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6078, LJ_TISNUM); + dasm_put(Dst, 6080, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6173); + dasm_put(Dst, 6175); } else { } - dasm_put(Dst, 6122); + dasm_put(Dst, 6124); if (sse) { - dasm_put(Dst, 6190, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6192, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6078, LJ_TISNUM); + dasm_put(Dst, 6080, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6233); + dasm_put(Dst, 6235); } else { } - dasm_put(Dst, 6122); + dasm_put(Dst, 6124); if (sse) { - dasm_put(Dst, 6250, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6252, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6293); + dasm_put(Dst, 6295); if (sse) { - dasm_put(Dst, 6300, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6302, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6343); + dasm_put(Dst, 6345); if (sse) { - dasm_put(Dst, 6347); + dasm_put(Dst, 6349); } else { } - dasm_put(Dst, 6359); + dasm_put(Dst, 6361); if (sse) { - dasm_put(Dst, 6370, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6372, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6439); + dasm_put(Dst, 6441); if (sse) { - dasm_put(Dst, 6448, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6450, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6517); + dasm_put(Dst, 6519); if (sse) { - dasm_put(Dst, 6527, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6529, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6596); + dasm_put(Dst, 6598); if (sse) { - dasm_put(Dst, 6606, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6608, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6675); + dasm_put(Dst, 6677); if (sse) { - dasm_put(Dst, 6684, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); + dasm_put(Dst, 6686, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); } else { } - dasm_put(Dst, 6753, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 6831, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 6957, Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 6755, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); + dasm_put(Dst, 6833, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 6959, Dt1(->top), Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 6996, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); + dasm_put(Dst, 6998, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); #endif - dasm_put(Dst, 7027, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); - dasm_put(Dst, 7078, Dt1(->base), Dt1(->base), GG_DISP2STATIC); + dasm_put(Dst, 7029, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); + dasm_put(Dst, 7080, Dt1(->base), Dt1(->base), GG_DISP2STATIC); #if LJ_HASJIT - dasm_put(Dst, 7145, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); + dasm_put(Dst, 7147, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); #endif - dasm_put(Dst, 7192); + dasm_put(Dst, 7194); #if LJ_HASJIT - dasm_put(Dst, 7022); + dasm_put(Dst, 7024); #endif - dasm_put(Dst, 7199); + dasm_put(Dst, 7201); #if LJ_HASJIT - dasm_put(Dst, 7202); + dasm_put(Dst, 7204); #endif - dasm_put(Dst, 7212, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7214, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7246); + dasm_put(Dst, 7248); #endif - dasm_put(Dst, 7251, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7253, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7282, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); + dasm_put(Dst, 7284, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); #endif - dasm_put(Dst, 7512); + dasm_put(Dst, 7514); #if LJ_HASJIT - dasm_put(Dst, 7515, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); - dasm_put(Dst, 7657); + dasm_put(Dst, 7517, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); + dasm_put(Dst, 7659); #endif - dasm_put(Dst, 7683); + dasm_put(Dst, 7685); if (!sse) { - dasm_put(Dst, 7686); + dasm_put(Dst, 7688); } - dasm_put(Dst, 7731, (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, 7733, (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, 7817); + dasm_put(Dst, 7819); } - dasm_put(Dst, 7862, (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, 7864, (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, 7948); + dasm_put(Dst, 7950); } - dasm_put(Dst, 7987, (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, 7989, (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, 8076, (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, 8078, (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, 8190); + dasm_put(Dst, 8192); } - dasm_put(Dst, 8237); + dasm_put(Dst, 8239); if (!sse) { } else { - dasm_put(Dst, 8311); + dasm_put(Dst, 8313); } - dasm_put(Dst, 8314); - dasm_put(Dst, 8399, (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, 8500, (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, 8668); + dasm_put(Dst, 8316); + dasm_put(Dst, 8401, (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, 8502, (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, 8670); if (sse) { - dasm_put(Dst, 8709); - dasm_put(Dst, 8779); - dasm_put(Dst, 8852); + dasm_put(Dst, 8711); + dasm_put(Dst, 8781); + dasm_put(Dst, 8854); } else { - dasm_put(Dst, 8902); - dasm_put(Dst, 8994); + dasm_put(Dst, 8904); + dasm_put(Dst, 8996); } - dasm_put(Dst, 9040); + dasm_put(Dst, 9042); if (sse) { - dasm_put(Dst, 9046, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); - dasm_put(Dst, 9135, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); + dasm_put(Dst, 9048, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); + dasm_put(Dst, 9137, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); } else { - dasm_put(Dst, 9259); - dasm_put(Dst, 9342); + dasm_put(Dst, 9261); + dasm_put(Dst, 9344); if (cmov) { - dasm_put(Dst, 9397); + dasm_put(Dst, 9399); } else { - dasm_put(Dst, 9416); + dasm_put(Dst, 9418); } - dasm_put(Dst, 9255); + dasm_put(Dst, 9257); } - dasm_put(Dst, 9457); + dasm_put(Dst, 9459); } /* Generate the code for a single instruction. */ @@ -1439,595 +1440,595 @@ 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, 9483, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9485, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9504); + dasm_put(Dst, 9506); } else { - dasm_put(Dst, 9519); + dasm_put(Dst, 9521); if (cmov) { - dasm_put(Dst, 9529); + dasm_put(Dst, 9531); } else { - dasm_put(Dst, 9535); + dasm_put(Dst, 9537); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 9542); + dasm_put(Dst, 9544); break; case BC_ISGE: - dasm_put(Dst, 9337); + dasm_put(Dst, 9339); break; case BC_ISLE: - dasm_put(Dst, 5900); + dasm_put(Dst, 5902); break; case BC_ISGT: - dasm_put(Dst, 9547); + dasm_put(Dst, 9549); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 9552, -BCBIAS_J*4); + dasm_put(Dst, 9554, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 9586, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9588, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9612); + dasm_put(Dst, 9614); } else { - dasm_put(Dst, 9624); + dasm_put(Dst, 9626); if (cmov) { - dasm_put(Dst, 9529); + dasm_put(Dst, 9531); } else { - dasm_put(Dst, 9535); + dasm_put(Dst, 9537); } } iseqne_fp: if (vk) { - dasm_put(Dst, 9631); + dasm_put(Dst, 9633); } else { - dasm_put(Dst, 9640); + dasm_put(Dst, 9642); } iseqne_end: if (vk) { - dasm_put(Dst, 9649, -BCBIAS_J*4); + dasm_put(Dst, 9651, -BCBIAS_J*4); } else { - dasm_put(Dst, 9664, -BCBIAS_J*4); + dasm_put(Dst, 9666, -BCBIAS_J*4); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 9679, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32)); + dasm_put(Dst, 9969, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); } else { - dasm_put(Dst, 9992); + dasm_put(Dst, 9994); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_LEN: - dasm_put(Dst, 10001, LJ_TSTR); + dasm_put(Dst, 10003, LJ_TSTR); if (sse) { - dasm_put(Dst, 10015, Dt5(->len)); + dasm_put(Dst, 10017, Dt5(->len)); } else { - dasm_put(Dst, 10033, Dt5(->len)); + dasm_put(Dst, 10035, Dt5(->len)); } - dasm_put(Dst, 10042, LJ_TTAB); + dasm_put(Dst, 10044, LJ_TTAB); if (sse) { - dasm_put(Dst, 10083); + dasm_put(Dst, 10085); } else { } - dasm_put(Dst, 10092); + dasm_put(Dst, 10094); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10122); + dasm_put(Dst, 10124); } else { - dasm_put(Dst, 10136); + dasm_put(Dst, 10138); } break; case 1: - dasm_put(Dst, 10144, LJ_TISNUM); + dasm_put(Dst, 10146, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10156); + dasm_put(Dst, 10158); } else { - dasm_put(Dst, 10170); + dasm_put(Dst, 10172); } break; default: - dasm_put(Dst, 10178, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10180, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10200); + dasm_put(Dst, 10202); } else { - dasm_put(Dst, 10214); + dasm_put(Dst, 10216); } break; } if (sse) { - dasm_put(Dst, 9985); + dasm_put(Dst, 9987); } else { - dasm_put(Dst, 9997); + dasm_put(Dst, 9999); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10222); + dasm_put(Dst, 10224); } else { - dasm_put(Dst, 10236); + dasm_put(Dst, 10238); } break; case 1: - dasm_put(Dst, 10144, LJ_TISNUM); + dasm_put(Dst, 10146, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10244); + dasm_put(Dst, 10246); } else { - dasm_put(Dst, 10258); + dasm_put(Dst, 10260); } break; default: - dasm_put(Dst, 10178, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10180, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10266); + dasm_put(Dst, 10268); } else { - dasm_put(Dst, 10280); + dasm_put(Dst, 10282); } break; } if (sse) { - dasm_put(Dst, 9985); + dasm_put(Dst, 9987); } else { - dasm_put(Dst, 9997); + dasm_put(Dst, 9999); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10288); + dasm_put(Dst, 10290); } else { - dasm_put(Dst, 10302); + dasm_put(Dst, 10304); } break; case 1: - dasm_put(Dst, 10144, LJ_TISNUM); + dasm_put(Dst, 10146, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10310); + dasm_put(Dst, 10312); } else { - dasm_put(Dst, 10324); + dasm_put(Dst, 10326); } break; default: - dasm_put(Dst, 10178, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10180, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10332); + dasm_put(Dst, 10334); } else { - dasm_put(Dst, 10346); + dasm_put(Dst, 10348); } break; } if (sse) { - dasm_put(Dst, 9985); + dasm_put(Dst, 9987); } else { - dasm_put(Dst, 9997); + dasm_put(Dst, 9999); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10354); + dasm_put(Dst, 10356); } else { - dasm_put(Dst, 10368); + dasm_put(Dst, 10370); } break; case 1: - dasm_put(Dst, 10144, LJ_TISNUM); + dasm_put(Dst, 10146, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10376); + dasm_put(Dst, 10378); } else { - dasm_put(Dst, 10390); + dasm_put(Dst, 10392); } break; default: - dasm_put(Dst, 10178, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10180, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10398); + dasm_put(Dst, 10400); } else { - dasm_put(Dst, 10412); + dasm_put(Dst, 10414); } break; } if (sse) { - dasm_put(Dst, 9985); + dasm_put(Dst, 9987); } else { - dasm_put(Dst, 9997); + dasm_put(Dst, 9999); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_MODVN: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10420); + dasm_put(Dst, 10422); } else { - dasm_put(Dst, 10434); + dasm_put(Dst, 10436); } break; case 1: - dasm_put(Dst, 10144, LJ_TISNUM); + dasm_put(Dst, 10146, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10442); + dasm_put(Dst, 10444); } else { - dasm_put(Dst, 10456); + dasm_put(Dst, 10458); } break; default: - dasm_put(Dst, 10178, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10180, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10464); + dasm_put(Dst, 10466); } else { - dasm_put(Dst, 10478); + dasm_put(Dst, 10480); } break; } - dasm_put(Dst, 10486); + dasm_put(Dst, 10488); if (sse) { - dasm_put(Dst, 9985); + dasm_put(Dst, 9987); } else { - dasm_put(Dst, 9997); + dasm_put(Dst, 9999); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10420); + dasm_put(Dst, 10422); } else { - dasm_put(Dst, 10434); + dasm_put(Dst, 10436); } break; case 1: - dasm_put(Dst, 10144, LJ_TISNUM); + dasm_put(Dst, 10146, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10442); + dasm_put(Dst, 10444); } else { - dasm_put(Dst, 10456); + dasm_put(Dst, 10458); } break; default: - dasm_put(Dst, 10178, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10180, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10464); + dasm_put(Dst, 10466); } else { - dasm_put(Dst, 10478); + dasm_put(Dst, 10480); } break; } - dasm_put(Dst, 10492); + dasm_put(Dst, 10494); break; case BC_POW: - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10110, LJ_TISNUM); + dasm_put(Dst, 10112, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10420); + dasm_put(Dst, 10422); } else { - dasm_put(Dst, 10434); + dasm_put(Dst, 10436); } break; case 1: - dasm_put(Dst, 10144, LJ_TISNUM); + dasm_put(Dst, 10146, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10442); + dasm_put(Dst, 10444); } else { - dasm_put(Dst, 10456); + dasm_put(Dst, 10458); } break; default: - dasm_put(Dst, 10178, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10180, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10464); + dasm_put(Dst, 10466); } else { - dasm_put(Dst, 10478); + dasm_put(Dst, 10480); } break; } - dasm_put(Dst, 10497); + dasm_put(Dst, 10499); if (sse) { - dasm_put(Dst, 9985); + dasm_put(Dst, 9987); } else { - dasm_put(Dst, 9997); + dasm_put(Dst, 9999); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_CAT: - dasm_put(Dst, 10501, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 10503, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 10591, LJ_TSTR); + dasm_put(Dst, 10593, LJ_TSTR); break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 10626); + dasm_put(Dst, 10628); } else { - dasm_put(Dst, 10641); + dasm_put(Dst, 10643); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 10649); + dasm_put(Dst, 10651); } else { - dasm_put(Dst, 10662); + dasm_put(Dst, 10664); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_KPRI: - dasm_put(Dst, 10669); + dasm_put(Dst, 10671); break; case BC_KNIL: - dasm_put(Dst, 10697, LJ_TNIL); + dasm_put(Dst, 10699, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 10744, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10746, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 10789, 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, 10880); + dasm_put(Dst, 10791, 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, 10882); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 10892, 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, 10894, 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, 10985); + dasm_put(Dst, 10987); if (sse) { - dasm_put(Dst, 10990); + dasm_put(Dst, 10992); } else { - dasm_put(Dst, 9805); + dasm_put(Dst, 9807); } - dasm_put(Dst, 10997, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10999, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 11006); + dasm_put(Dst, 11008); } else { - dasm_put(Dst, 11012); + dasm_put(Dst, 11014); } - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_USETP: - dasm_put(Dst, 11015, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11017, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 11054, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 11056, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 11109, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 11111, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 11175, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11177, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 11297, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11299, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 11392, Dt7(->env)); + dasm_put(Dst, 11394, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 11411, Dt7(->env)); + dasm_put(Dst, 11413, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 11430, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 11432, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11463); + dasm_put(Dst, 11465); } else { } - dasm_put(Dst, 11484, 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, 11680, 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, 11682, 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, 11969, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 11887, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 11971, 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, 12031, 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, 12107, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 12200, 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, 12033, 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, 12109, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 12202, 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, 12291, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 12390, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12293, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 12392, 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, 12436); + dasm_put(Dst, 12438); if (sse) { - dasm_put(Dst, 12441); + dasm_put(Dst, 12443); } else { } - dasm_put(Dst, 12448, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 12588, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12450, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12590, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALL: case BC_CALLM: - dasm_put(Dst, 10106); + dasm_put(Dst, 10108); if (op == BC_CALLM) { - dasm_put(Dst, 12606); + dasm_put(Dst, 12608); } - dasm_put(Dst, 12611, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 12613, LJ_TFUNC, Dt7(->pc)); break; case BC_CALLMT: - dasm_put(Dst, 12606); + dasm_put(Dst, 12608); break; case BC_CALLT: - dasm_put(Dst, 12653, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 12772, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 12655, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); + dasm_put(Dst, 12774, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); break; case BC_ITERC: - dasm_put(Dst, 12830, LJ_TFUNC, 2+1, Dt7(->pc)); + dasm_put(Dst, 12832, LJ_TFUNC, 2+1, Dt7(->pc)); break; case BC_VARG: - dasm_put(Dst, 12911, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); - dasm_put(Dst, 13056, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 12913, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); + dasm_put(Dst, 13058, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 12606); + dasm_put(Dst, 12608); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 13155); + dasm_put(Dst, 13157); } - dasm_put(Dst, 13159, FRAME_TYPE); + dasm_put(Dst, 13161, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 13178); + dasm_put(Dst, 13180); break; case BC_RET1: - dasm_put(Dst, 13236); + dasm_put(Dst, 13238); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 13252); + dasm_put(Dst, 13254); default: break; } - dasm_put(Dst, 13263, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 13265, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 13307, LJ_TNIL); + dasm_put(Dst, 13309, LJ_TNIL); } else { - dasm_put(Dst, 13316, LJ_TNIL); + dasm_put(Dst, 13318, LJ_TNIL); } - dasm_put(Dst, 13323); + dasm_put(Dst, 13325); if (op != BC_RET0) { - dasm_put(Dst, 13344); + dasm_put(Dst, 13346); } dasm_put(Dst, 4570); break; @@ -2037,7 +2038,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 13348, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13350, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2049,57 +2050,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, 13369); + dasm_put(Dst, 13371); if (!vk) { - dasm_put(Dst, 13373, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 13375, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 13392); + dasm_put(Dst, 13394); if (!vk) { - dasm_put(Dst, 13396, LJ_TISNUM); + dasm_put(Dst, 13398, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 13405); + dasm_put(Dst, 13407); if (vk) { - dasm_put(Dst, 13417); + dasm_put(Dst, 13419); } else { - dasm_put(Dst, 13436); + dasm_put(Dst, 13438); } - dasm_put(Dst, 13441); + dasm_put(Dst, 13443); } else { - dasm_put(Dst, 13454); + dasm_put(Dst, 13456); if (vk) { - dasm_put(Dst, 13460); + dasm_put(Dst, 13462); } else { - dasm_put(Dst, 13476); + dasm_put(Dst, 13478); } - dasm_put(Dst, 13484); + dasm_put(Dst, 13486); if (cmov) { - dasm_put(Dst, 9529); + dasm_put(Dst, 9531); } else { - dasm_put(Dst, 9535); + dasm_put(Dst, 9537); } if (!cmov) { - dasm_put(Dst, 13489); + dasm_put(Dst, 13491); } } if (op == BC_FORI) { - dasm_put(Dst, 13495, -BCBIAS_J*4); + dasm_put(Dst, 13497, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 13505, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 13507, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 13519, -BCBIAS_J*4); + dasm_put(Dst, 13521, -BCBIAS_J*4); } else { - dasm_put(Dst, 13515, BC_JLOOP); + dasm_put(Dst, 13517, BC_JLOOP); } - dasm_put(Dst, 9564); + dasm_put(Dst, 9566); if (sse) { - dasm_put(Dst, 13529); + dasm_put(Dst, 13531); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 13348, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13350, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2108,33 +2109,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 13540, LJ_TNIL); + dasm_put(Dst, 13542, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 13555, BC_JLOOP); + dasm_put(Dst, 13557, BC_JLOOP); } else { - dasm_put(Dst, 13569, -BCBIAS_J*4); + dasm_put(Dst, 13571, -BCBIAS_J*4); } - dasm_put(Dst, 9864); + dasm_put(Dst, 9866); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 13348, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13350, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 13585, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16); + dasm_put(Dst, 13587, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16); #endif break; case BC_JMP: - dasm_put(Dst, 13694, -BCBIAS_J*4); + dasm_put(Dst, 13696, -BCBIAS_J*4); break; /* -- Function headers -------------------------------------------------- */ @@ -2148,7 +2149,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FUNCF: #if LJ_HASJIT - dasm_put(Dst, 13719, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13721, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif case BC_FUNCV: /* NYI: compiled vararg functions. */ break; @@ -2158,47 +2159,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IFUNCF: - dasm_put(Dst, 13740, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); + dasm_put(Dst, 13742, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); if (op == BC_JFUNCF) { - dasm_put(Dst, 13770, BC_JLOOP); + dasm_put(Dst, 13772, BC_JLOOP); } else { - dasm_put(Dst, 9566); + dasm_put(Dst, 9568); } - dasm_put(Dst, 13779, LJ_TNIL); + dasm_put(Dst, 13781, LJ_TNIL); break; case BC_JFUNCV: #if !LJ_HASJIT break; #endif - dasm_put(Dst, 9257); + dasm_put(Dst, 9259); break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: - dasm_put(Dst, 13801, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); + dasm_put(Dst, 13803, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); if (op == BC_JFUNCV) { - dasm_put(Dst, 13770, BC_JLOOP); + dasm_put(Dst, 13772, BC_JLOOP); } else { - dasm_put(Dst, 13892, -4+PC2PROTO(k)); + dasm_put(Dst, 13894, -4+PC2PROTO(k)); } - dasm_put(Dst, 13915, LJ_TNIL); + dasm_put(Dst, 13917, LJ_TNIL); break; case BC_FUNCC: case BC_FUNCCW: - dasm_put(Dst, 13937, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); + dasm_put(Dst, 13939, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); if (op == BC_FUNCC) { - dasm_put(Dst, 13967); + dasm_put(Dst, 13969); } else { - dasm_put(Dst, 13971); + dasm_put(Dst, 13973); } - dasm_put(Dst, 13979, DISPATCH_GL(vmstate), ~LJ_VMST_C); + dasm_put(Dst, 13981, DISPATCH_GL(vmstate), ~LJ_VMST_C); if (op == BC_FUNCC) { - dasm_put(Dst, 13988); + dasm_put(Dst, 13990); } else { - dasm_put(Dst, 13992, DISPATCH_GL(wrapf)); + dasm_put(Dst, 13994, DISPATCH_GL(wrapf)); } - dasm_put(Dst, 13997, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 13999, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); break; /* ---------------------------------------------------------------------- */ @@ -2226,7 +2227,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 14022); + dasm_put(Dst, 14024); 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 7b4c13a9..d5d73de5 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc @@ -2027,9 +2027,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | cmp NARGS:RD, 1+1; jne ->fff_fallback // *Exactly* 1 arg. | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback if (sse) { - | cvtsd2si RC, qword [BASE] - | cmp RC, 255; ja ->fff_fallback - | mov TMP2, RC + | cvtsd2si RB, qword [BASE] + | cmp RB, 255; ja ->fff_fallback + | mov TMP2, RB } else { | fld qword [BASE] | fistp TMP2 diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h index a139f494..7279fa76 100644 --- a/src/buildvm_x86.h +++ b/src/buildvm_x86.h @@ -12,7 +12,7 @@ #define DASM_SECTION_CODE_OP 0 #define DASM_SECTION_CODE_SUB 1 #define DASM_MAXSECTION 2 -static const unsigned char build_actionlist[15229] = { +static const unsigned char build_actionlist[15231] = { 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141, 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36, 20,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,199, @@ -277,468 +277,468 @@ static const unsigned char build_actionlist[15229] = { 131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,15,42,197,252,233, 244,63,255,137,108,36,16,219,68,36,16,252,233,244,64,255,248,112,139,171, 233,59,171,233,15,130,244,247,232,244,66,248,1,129,252,248,239,15,133,244, - 55,129,122,253,4,239,15,135,244,55,255,252,242,15,45,2,61,252,255,0,0,0,15, - 135,244,55,137,68,36,20,255,221,2,219,92,36,20,129,124,36,20,252,255,0,0, - 0,15,135,244,55,255,199,68,36,8,1,0,0,0,141,68,36,20,248,113,139,108,36,48, - 137,149,233,137,68,36,4,137,44,36,137,116,36,24,232,251,1,17,139,149,233, - 139,114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,58,248,114, - 139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,199,68,36,20,252,255, - 252,255,252,255,252,255,129,252,248,239,15,130,244,55,15,134,244,247,129, - 122,253,20,239,255,252,242,15,45,106,16,137,108,36,20,255,221,66,16,219,92, - 36,20,255,248,1,129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135, - 244,55,139,42,137,108,36,12,139,173,233,255,252,242,15,45,74,8,255,221,66, - 8,219,92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133, - 201,15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,115,141,172,253, - 13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,113,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,115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244,55,139,171, - 233,59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253,4,239,15,133, - 244,55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15,45,66,8,255, - 221,66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,115,131,189,233, - 1,15,130,244,115,15,133,244,117,57,131,233,15,130,244,117,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,113,248,118,129,252,248,239,255,15,130,244,55,139,171, - 233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244, - 55,139,42,139,133,233,133,192,15,132,244,115,57,131,233,15,130,244,119,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,113, - 248,120,129,252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247, - 232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131, - 233,255,15,130,244,119,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,113,248,121,129,252,248,239,15, - 130,244,55,255,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129, - 122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,15,130,244,119, - 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,113,248,122,129,252,248,239,15,130,244,55,129,122,253, - 4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,234,255,252,242,15, - 42,192,252,233,244,63,255,137,4,36,219,4,36,252,233,244,64,255,248,123,129, - 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2, - 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126, - 197,252,242,15,42,197,252,233,244,63,255,248,123,129,252,248,239,15,130,244, - 55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36, - 16,221,28,36,219,4,36,252,233,244,64,255,248,124,129,252,248,239,15,130,244, - 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110, - 205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,124,129,252, - 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,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,194,252, - 240,248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255,252, - 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16, - 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,127,129,252,248,239, - 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56, - 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, - 248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221, - 2,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,193,9,205,255,221,0,216,68,36,16,221,28, - 36,11,44,36,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15, - 135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81, - 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,55, - 129,122,253,4,239,15,135,244,55,221,2,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,193, - 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,129,129,252,248, - 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0, - 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, - 248,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221, - 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252, - 233,244,125,255,248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15, - 135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81, - 252,242,15,88,193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,55, - 129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16, - 221,28,36,139,44,36,255,252,247,213,255,248,125,252,242,15,42,197,252,233, - 244,63,255,248,125,137,44,36,219,4,36,252,233,244,64,255,248,126,139,68,36, - 20,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4, - 239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242, - 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194, - 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,131,129,252, + 55,129,122,253,4,239,15,135,244,55,255,252,242,15,45,42,129,252,253,252,255, + 0,0,0,15,135,244,55,137,108,36,20,255,221,2,219,92,36,20,129,124,36,20,252, + 255,0,0,0,15,135,244,55,255,199,68,36,8,1,0,0,0,141,68,36,20,248,113,139, + 108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36,24,232,251,1,17,139, + 149,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,58, + 248,114,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,199,68,36, + 20,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,55,15,134,244, + 247,129,122,253,20,239,255,252,242,15,45,106,16,137,108,36,20,255,221,66, + 16,219,92,36,20,255,248,1,129,122,253,4,239,15,133,244,55,129,122,253,12, + 239,15,135,244,55,139,42,137,108,36,12,139,173,233,255,252,242,15,45,74,8, + 255,221,66,8,219,92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251, + 248,2,133,201,15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,115,141, + 172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,113,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,115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244, + 55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253, + 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15, + 45,66,8,255,221,66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,115, + 131,189,233,1,15,130,244,115,15,133,244,117,57,131,233,15,130,244,117,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,113,248,118,129,252,248,239,255,15,130, + 244,55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,253, + 4,239,15,133,244,55,139,42,139,133,233,133,192,15,132,244,115,57,131,233, + 15,130,244,119,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,113,248,120,129,252,248,239,15,130,244,55,139,171,233,59, + 171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139, + 42,139,133,233,57,131,233,255,15,130,244,119,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,113,248,121, + 129,252,248,239,15,130,244,55,255,139,171,233,59,171,233,15,130,244,247,232, + 244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233, + 15,130,244,119,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,113,248,122,129,252,248,239,15,130, + 244,55,129,122,253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252, + 234,255,252,242,15,42,192,252,233,244,63,255,137,4,36,219,4,36,252,233,244, + 64,255,248,123,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, + 55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242, + 15,88,193,102,15,126,197,252,242,15,42,197,252,233,244,63,255,248,123,129, + 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,68,36, + 16,0,0,192,89,216,68,36,16,221,28,36,219,4,36,252,233,244,64,255,248,124, + 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15, + 16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102, + 15,126,197,255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,15, + 135,244,55,221,2,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,194,252,240,248,1,57,208,15,134,244,125,129,120,253, + 4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193, + 33,205,255,221,0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,233,244, + 1,255,248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, + 55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242, + 15,88,193,102,15,126,197,255,248,127,129,252,248,239,15,130,244,55,129,122, + 253,4,239,15,135,244,55,221,2,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,193,9,205,255, + 221,0,216,68,36,16,221,28,36,11,44,36,255,248,128,129,252,248,239,15,130, + 244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102, + 15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,128, + 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,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,193,49,205,255,221,0,216,68,36,16,221,28,36,51,44, + 36,255,248,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, + 55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242, + 15,88,193,102,15,126,197,255,248,129,129,252,248,239,15,130,244,55,129,122, + 253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28, + 36,139,44,36,255,15,205,252,233,244,125,255,248,130,129,252,248,239,15,130, + 244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102, + 15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,130, + 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,68, + 36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,247,213,255,248, + 125,252,242,15,42,197,252,233,244,63,255,248,125,137,44,36,219,4,36,252,233, + 244,64,255,248,126,139,68,36,20,252,233,244,55,255,248,131,129,252,248,239, + 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244, + 55,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15, + 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, + 15,126,201,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,239,15, + 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0, + 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36, + 8,139,44,36,255,211,229,137,193,252,233,244,125,255,248,132,129,252,248,239, + 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244, + 55,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15, + 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, + 15,126,201,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15, + 135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0, + 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36, + 8,139,44,36,255,211,252,237,137,193,252,233,244,125,255,248,133,129,252,248, + 239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135, + 244,55,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102, + 15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197, + 102,15,126,201,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239, + 15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16, + 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76, + 36,8,139,44,36,255,211,252,253,137,193,252,233,244,125,255,248,134,129,252, 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239, - 15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92, - 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137, - 193,252,233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253, - 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252, - 242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15, - 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132, - 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253, - 12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16, - 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, - 252,237,137,193,252,233,244,125,255,248,133,129,252,248,239,15,130,244,55, - 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242, - 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81, - 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201, - 255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, - 129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216, - 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36, - 255,211,252,253,137,193,252,233,244,125,255,248,134,129,252,248,239,15,130, - 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252, - 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210, - 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, - 201,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, - 55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89, - 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, - 36,255,211,197,137,193,252,233,244,125,255,248,135,129,252,248,239,15,130, - 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252, - 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210, - 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, - 201,255,248,135,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, - 55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89, - 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, - 36,255,211,205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248, - 119,184,237,248,55,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233, - 141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135, - 244,251,137,44,36,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1, - 255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252, - 15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252, - 255,36,171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253, - 252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248, - 41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233, - 252,233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149, - 233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,149,233, - 139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,136,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,137,15,182,131,233,168,235, - 15,133,244,251,252,233,244,247,248,138,15,182,131,233,168,235,15,133,244, - 251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132, - 244,251,248,1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,232,251, - 1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,252,15, - 183,70,252,254,252,255,164,253,171,233,248,139,131,198,4,139,77,232,137,76, - 36,20,252,233,244,4,248,140,255,139,106,252,248,139,173,233,15,182,133,233, - 141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,233,137, - 171,233,137,116,36,24,232,251,1,21,252,233,244,3,255,248,141,137,116,36,24, - 255,248,142,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,248,139, - 108,36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,1,22,199, - 68,36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,133,233, - 41,208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,248,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,242,15,17,125,216,252,242,15,17,117,208, - 252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242, - 15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,139,147, - 233,137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,139,233, - 232,251,1,23,139,141,233,129,225,239,137,204,137,169,233,139,149,233,139, - 177,233,255,248,144,255,133,192,15,136,244,249,137,68,36,20,139,122,252,248, - 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,139,68, - 36,20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,251, - 1,24,255,248,82,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, + 15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110, + 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15, + 126,197,102,15,126,201,255,248,134,129,252,248,239,15,130,244,55,129,122, + 253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199, + 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, + 139,76,36,8,139,44,36,255,211,197,137,193,252,233,244,125,255,248,135,129, + 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12, + 239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15, + 110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102, + 15,126,197,102,15,126,201,255,248,135,129,252,248,239,15,130,244,55,129,122, + 253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,199, + 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, + 139,76,36,8,139,44,36,255,211,205,137,193,252,233,244,125,248,117,184,237, + 252,233,244,55,248,119,184,237,248,55,139,108,36,48,139,114,252,252,137,116, + 36,24,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248, + 59,141,233,15,135,244,251,137,44,36,252,255,144,233,139,149,233,133,192,15, + 133,244,69,248,1,255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,248, + 57,114,252,252,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205, + 131,198,4,252,255,36,171,248,2,137,209,252,247,198,237,15,133,244,249,15, + 182,110,252,253,252,247,213,141,20,252,234,252,233,244,27,248,3,137,252,245, + 131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,232,251, + 1,0,139,149,233,252,233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116, + 36,24,137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251, + 1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85, + 195,248,136,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,137,15, + 182,131,233,168,235,15,133,244,251,252,233,244,247,248,138,15,182,131,233, + 168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244, + 247,168,235,15,132,244,251,248,1,255,139,108,36,48,137,149,233,137,252,242, + 137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5, + 15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,233,248,139,131, + 198,4,139,77,232,137,76,36,20,252,233,244,4,248,140,255,139,106,252,248,139, + 173,233,15,182,133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137, + 252,242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,252,233,244,3, + 255,248,141,137,116,36,24,255,248,142,255,137,116,36,24,131,206,1,248,1,255, + 141,68,194,252,248,139,108,36,48,137,149,233,137,133,233,137,252,242,137, + 252,233,232,251,1,22,199,68,36,24,0,0,0,0,255,131,230,252,254,255,139,149, + 233,137,193,139,133,233,41,208,137,205,15,182,78,252,253,193,232,3,131,192, + 1,252,255,229,248,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,242,15,17,125,216, + 252,242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242, + 15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160, + 139,171,233,139,147,233,137,171,233,199,131,233,0,0,0,0,137,149,233,141,84, + 36,16,141,139,233,232,251,1,23,139,141,233,129,225,239,137,204,137,169,233, + 139,149,233,139,177,233,255,248,144,255,133,192,15,136,244,249,137,68,36, + 20,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233, + 237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130, + 244,248,139,68,36,20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137, + 194,232,251,1,24,255,248,82,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,84,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,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,84,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,104,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,88,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,107,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,107,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,82,252,233,244,253,248,1,232,244,84,252,233,244,253,248,2,131, - 252,248,3,15,132,244,247,15,135,244,248,232,244,104,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,88,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,82,15,132, - 244,84,131,252,248,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2, - 131,252,248,5,15,130,244,88,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,107, - 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, + 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,104,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,88,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,107,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,107,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,82,252,233,244,253,248,1,232,244,84,252,233,244,253, + 248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,104,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,88,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, + 82,15,132,244,84,131,252,248,3,15,130,244,104,15,135,244,248,217,252,250, + 195,248,2,131,252,248,5,15,130,244,88,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,107,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,107,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,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,107,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,249,255,129,124, - 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242, - 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255, - 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15, - 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4, - 131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244, - 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15, - 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15, - 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141, - 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239, - 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15, - 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133, - 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131, - 198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198, - 4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46, - 4,202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139, - 108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247, - 255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253, - 134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253, - 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4, - 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,48,255,252, - 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193, - 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194, - 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1, - 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239, - 15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252, - 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1, - 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,46, - 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199, - 255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242, - 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239, - 15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252, - 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252, - 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4, - 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16, - 4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15, - 16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242, - 15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252, - 242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255, - 252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199, - 255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252, - 234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220, - 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234, - 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199, - 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4, - 252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244, - 107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36, - 8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,25,139, - 149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68, - 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68, - 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70, - 252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4, - 199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131, - 198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,237,137, - 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15, - 182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253, - 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139, - 172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77, - 0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6, - 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,232,239, - 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141, - 139,233,255,232,251,1,26,137,252,234,252,233,244,1,255,252,247,208,139,106, - 252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252, - 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198, - 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189, - 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,26,137,252,234,252, - 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141, - 233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252, - 248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48, - 131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1, - 27,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76, - 36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,28,139,149, - 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,171,255,139,108,36,48,137,149,233,139, - 139,233,59,139,233,137,116,36,24,15,131,244,251,248,1,137,193,37,252,255, - 7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,132,244,249,248,2,137, - 44,36,137,68,36,4,232,251,1,29,139,149,233,15,182,78,252,253,137,4,202,199, + 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,41,129,124,253,194,4,239,15,135,244, + 41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4, + 194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, + 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, + 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, + 255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202, + 4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202, + 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, + 247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183, + 70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2, + 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, + 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, + 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255, + 252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59, + 12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15, + 16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,131,198, + 4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244, + 247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183, + 70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198, + 4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,137, + 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, + 49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204, + 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239, + 15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15, + 112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, + 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, + 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, + 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2, + 129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252, + 242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,78, + 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, + 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221, + 4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242, + 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, + 253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252, + 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, + 242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255, + 252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234, + 255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36, + 194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220, + 12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220, + 12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252, + 234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4, + 252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221, + 4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255, + 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199, + 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252, + 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, + 12,194,255,221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244, + 156,255,232,244,107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76, + 36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24, + 232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182, + 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, + 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, + 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198, + 4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17, + 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17, + 4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141, + 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244, + 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139, + 106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202, + 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139, + 12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235, + 15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233, + 235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233, + 244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139, + 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6, + 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129, + 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233, + 232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15, + 16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, + 25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65, + 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141, + 180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141, + 20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139, + 4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116, + 36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237, + 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108, + 36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248, + 1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15, + 132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,139,149,233,15,182,78, + 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4, + 193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233, + 232,251,1,30,15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48, + 139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139, + 20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199, 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,30,15,183, - 70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116, - 36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233, - 232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252, - 233,232,251,1,30,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247, - 208,139,106,252,248,139,173,233,139,4,135,252,233,244,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,36,139,44,252,234,129,124, - 253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252, - 242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244, - 36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132, - 244,248,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,36,15,182,78,252,253,252,233, - 244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,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,34,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,34,255,15,182,252,236,15,182,192,129, - 124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244, - 35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,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,35,255,15,182,252,236,15,182,192,129,124,253,252,234,4, - 239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255, - 15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4, - 239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108, - 202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193, - 232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252, - 246,129,233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124, - 253,194,4,239,15,133,244,39,139,4,194,252,233,244,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,37,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,37,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1, - 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37, - 248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36, - 4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1, - 32,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235, - 139,131,233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182, - 192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15, - 131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252, - 246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137, - 8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131, - 189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38, - 15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171, - 233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,255,252, - 242,15,45,60,199,255,221,4,199,219,92,36,12,139,124,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, - 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,33,139,149,233,15,182, - 78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,137,171,233, - 137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,139,44, - 202,15,133,244,51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182, - 252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,139, - 105,252,248,129,121,253,252,252,239,15,133,244,28,248,52,139,114,252,252, - 252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,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,139,68,36,20,128,189,233,1, - 15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198, - 4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253, - 252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,233,244, - 4,248,7,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,237,15,133,244,28,137,202, - 137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252, - 255,36,171,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,13,137,215, - 131,232,1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137, - 111,252,252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110, - 252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139, - 44,10,137,106,252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78, - 252,253,252,247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199, - 71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233, - 244,5,248,7,15,139,244,14,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,140,255, - 141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135, - 244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,16, - 1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237, - 15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65, - 24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244, - 247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254, - 255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70, - 252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15, - 46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, - 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253, - 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,139, - 128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141,180,253, - 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, - 137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,142, - 255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,244,23,15,182, - 142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255, - 248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2, - 255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252, - 248,139,108,36,48,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15, - 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244, + 171,248,3,137,252,233,232,251,1,30,15,183,70,252,254,252,247,208,252,233, + 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,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,36,139,44, + 252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, + 242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219, + 4,36,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120, + 253,4,239,15,132,244,248,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,36,15,182,78, + 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,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,34,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,34,255,15,182,252, + 236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59, + 133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248, + 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,35,255,15,182,252,236,15,182,192,129, + 124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239, + 15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133, + 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, + 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, + 139,141,233,255,252,246,129,233,235,15,132,244,39,15,182,78,252,253,252,233, + 244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,194,252,233,244,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,37,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,37,139,76,36,16,252,233,244,2,248,5,139,137, + 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129, + 233,235,15,132,244,37,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141, + 68,36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137, + 116,36,24,232,251,1,32,139,149,233,139,108,36,12,137,193,252,233,244,2,248, + 7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15, + 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44,252, + 234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132, + 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139, + 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233, + 235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, + 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124, + 36,16,255,252,242,15,45,60,199,255,221,4,199,219,92,36,12,139,124,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,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,33,139,149, + 233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233, + 137,171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202, + 4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,181,233,139, + 14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137, + 215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,52,139,114, + 252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,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,139,68,36,20,128, + 189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205, + 131,198,4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78, + 252,253,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252, + 233,244,4,248,7,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,237,15,133,244,28, + 137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131, + 198,4,252,255,36,171,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,13, + 137,215,131,232,1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108, + 15,4,137,111,252,252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20, + 15,182,110,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252, + 252,139,44,10,137,106,252,248,255,248,5,56,70,252,255,15,135,244,252,255, + 15,182,78,252,253,252,247,209,141,20,202,139,122,252,248,139,191,233,139, + 191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, + 6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,192, + 1,252,233,244,5,248,7,15,139,244,14,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,140,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12, + 239,15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252, + 242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133, + 252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242, + 15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237, + 15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183, + 70,252,254,255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233, + 15,183,70,252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248, + 3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15, + 132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141, + 180,253,134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139, + 4,129,139,128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141, + 180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, + 36,171,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15, + 132,244,142,255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,244, + 23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233, + 245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233, + 244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120, + 252,248,139,108,36,48,141,12,200,59,141,233,15,135,244,22,137,209,137,194, + 15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244, 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252, 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204, 15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3,199,64,4,237,131, @@ -1309,238 +1309,238 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) if (sse) { dasm_put(Dst, 5447); } else { - dasm_put(Dst, 5467); + dasm_put(Dst, 5469); } - dasm_put(Dst, 5487, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); + dasm_put(Dst, 5489, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); dasm_put(Dst, 2142); if (sse) { - dasm_put(Dst, 5590); + dasm_put(Dst, 5592); } else { - dasm_put(Dst, 5601); + dasm_put(Dst, 5603); } - dasm_put(Dst, 5609, LJ_TSTR, LJ_TISNUM, Dt5(->len)); + dasm_put(Dst, 5611, LJ_TSTR, LJ_TISNUM, Dt5(->len)); if (sse) { - dasm_put(Dst, 5639); + dasm_put(Dst, 5641); } else { - dasm_put(Dst, 5646); + dasm_put(Dst, 5648); } - dasm_put(Dst, 5658, sizeof(GCstr)-1); - dasm_put(Dst, 5733, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - dasm_put(Dst, 5792, LJ_TSTR, LJ_TISNUM); + dasm_put(Dst, 5660, sizeof(GCstr)-1); + dasm_put(Dst, 5735, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 5794, LJ_TSTR, LJ_TISNUM); if (sse) { - dasm_put(Dst, 5813); + dasm_put(Dst, 5815); } else { - dasm_put(Dst, 5820); + dasm_put(Dst, 5822); } - dasm_put(Dst, 5832, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 5897, 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, 5960, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 6031, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); - dasm_put(Dst, 6116, 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, 6186, 1+1, LJ_TTAB); + dasm_put(Dst, 5834, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 5899, 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, 5962, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); + dasm_put(Dst, 6033, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); + dasm_put(Dst, 6118, 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, 6188, 1+1, LJ_TTAB); if (sse) { - dasm_put(Dst, 6254); + dasm_put(Dst, 6256); } else { - dasm_put(Dst, 6264); + dasm_put(Dst, 6266); } if (sse) { - dasm_put(Dst, 6275, 1+1, LJ_TISNUM); + dasm_put(Dst, 6277, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6332, 1+1, LJ_TISNUM); + dasm_put(Dst, 6334, 1+1, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 6376, 1+1, LJ_TISNUM); + dasm_put(Dst, 6378, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6424, 1+1, LJ_TISNUM); + dasm_put(Dst, 6426, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6464, LJ_TISNUM); + dasm_put(Dst, 6466, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6491); + dasm_put(Dst, 6493); } else { - dasm_put(Dst, 6508); + dasm_put(Dst, 6510); } - dasm_put(Dst, 6521); + dasm_put(Dst, 6523); if (sse) { - dasm_put(Dst, 6529, 1+1, LJ_TISNUM); + dasm_put(Dst, 6531, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6577, 1+1, LJ_TISNUM); + dasm_put(Dst, 6579, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6464, LJ_TISNUM); + dasm_put(Dst, 6466, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6617); + dasm_put(Dst, 6619); } else { - dasm_put(Dst, 6634); + dasm_put(Dst, 6636); } - dasm_put(Dst, 6521); + dasm_put(Dst, 6523); if (sse) { - dasm_put(Dst, 6647, 1+1, LJ_TISNUM); + dasm_put(Dst, 6649, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6695, 1+1, LJ_TISNUM); + dasm_put(Dst, 6697, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6464, LJ_TISNUM); + dasm_put(Dst, 6466, LJ_TISNUM); if (sse) { - dasm_put(Dst, 6735); + dasm_put(Dst, 6737); } else { - dasm_put(Dst, 6752); + dasm_put(Dst, 6754); } - dasm_put(Dst, 6521); + dasm_put(Dst, 6523); if (sse) { - dasm_put(Dst, 6765, 1+1, LJ_TISNUM); + dasm_put(Dst, 6767, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6813, 1+1, LJ_TISNUM); + dasm_put(Dst, 6815, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6853); + dasm_put(Dst, 6855); if (sse) { - dasm_put(Dst, 6860, 1+1, LJ_TISNUM); + dasm_put(Dst, 6862, 1+1, LJ_TISNUM); } else { - dasm_put(Dst, 6908, 1+1, LJ_TISNUM); + dasm_put(Dst, 6910, 1+1, LJ_TISNUM); } - dasm_put(Dst, 6948); + dasm_put(Dst, 6950); if (sse) { - dasm_put(Dst, 6952); + dasm_put(Dst, 6954); } else { - dasm_put(Dst, 6964); + dasm_put(Dst, 6966); } - dasm_put(Dst, 6977); + dasm_put(Dst, 6979); if (sse) { - dasm_put(Dst, 6988, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 6990, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7062, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7064, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7128); + dasm_put(Dst, 7130); if (sse) { - dasm_put(Dst, 7137, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7139, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7211, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7213, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7277); + dasm_put(Dst, 7279); if (sse) { - dasm_put(Dst, 7287, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7289, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7361, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7363, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7427); + dasm_put(Dst, 7429); if (sse) { - dasm_put(Dst, 7437, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7439, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7511, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7513, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7577); + dasm_put(Dst, 7579); if (sse) { - dasm_put(Dst, 7586, 1+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7588, 1+1, LJ_TISNUM, LJ_TISNUM); } else { - dasm_put(Dst, 7660, 2+1, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 7662, 2+1, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 7726, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); - dasm_put(Dst, 7804, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); - dasm_put(Dst, 7927, Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 7728, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); + dasm_put(Dst, 7806, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 7929, Dt1(->top), Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 7965, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); + dasm_put(Dst, 7967, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); #endif - dasm_put(Dst, 7996, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); - dasm_put(Dst, 8047, Dt1(->base), Dt1(->base), GG_DISP2STATIC); + dasm_put(Dst, 7998, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); + dasm_put(Dst, 8049, Dt1(->base), Dt1(->base), GG_DISP2STATIC); #if LJ_HASJIT - dasm_put(Dst, 8113, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); + dasm_put(Dst, 8115, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); #endif - dasm_put(Dst, 8159); + dasm_put(Dst, 8161); #if LJ_HASJIT - dasm_put(Dst, 7991); + dasm_put(Dst, 7993); #endif - dasm_put(Dst, 8166); + dasm_put(Dst, 8168); #if LJ_HASJIT - dasm_put(Dst, 8169); + dasm_put(Dst, 8171); #endif - dasm_put(Dst, 8179, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 8181, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 8213); + dasm_put(Dst, 8215); #endif - dasm_put(Dst, 8218, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 8220, Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 8247, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); + dasm_put(Dst, 8249, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); #endif - dasm_put(Dst, 8390); + dasm_put(Dst, 8392); #if LJ_HASJIT - dasm_put(Dst, 8393, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); + dasm_put(Dst, 8395, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); #endif - dasm_put(Dst, 8471); + dasm_put(Dst, 8473); if (!sse) { - dasm_put(Dst, 8474); + dasm_put(Dst, 8476); } - dasm_put(Dst, 8519); + dasm_put(Dst, 8521); if (!sse) { - dasm_put(Dst, 8621); + dasm_put(Dst, 8623); } - dasm_put(Dst, 8666); + dasm_put(Dst, 8668); if (!sse) { - dasm_put(Dst, 8768); + dasm_put(Dst, 8770); } - dasm_put(Dst, 8807); + dasm_put(Dst, 8809); if (sse) { - dasm_put(Dst, 8912); + dasm_put(Dst, 8914); } else { - dasm_put(Dst, 9042); + dasm_put(Dst, 9044); } - dasm_put(Dst, 9089); + dasm_put(Dst, 9091); if (!sse) { - dasm_put(Dst, 9163); + dasm_put(Dst, 9165); if (cmov) { - dasm_put(Dst, 9174); + dasm_put(Dst, 9176); } else { - dasm_put(Dst, 9178); + dasm_put(Dst, 9180); } - dasm_put(Dst, 9185); - dasm_put(Dst, 9259); - dasm_put(Dst, 9359); + dasm_put(Dst, 9187); + dasm_put(Dst, 9261); + dasm_put(Dst, 9361); if (cmov) { - dasm_put(Dst, 9362); + dasm_put(Dst, 9364); } else { - dasm_put(Dst, 9366); + dasm_put(Dst, 9368); } - dasm_put(Dst, 9373); + dasm_put(Dst, 9375); if (cmov) { - dasm_put(Dst, 9174); + dasm_put(Dst, 9176); } else { - dasm_put(Dst, 9178); + dasm_put(Dst, 9180); } - dasm_put(Dst, 9391); + dasm_put(Dst, 9393); } else { - dasm_put(Dst, 9470); + dasm_put(Dst, 9472); } - dasm_put(Dst, 9473); - dasm_put(Dst, 9558); - dasm_put(Dst, 9689); - dasm_put(Dst, 9888); + dasm_put(Dst, 9475); + dasm_put(Dst, 9560); + dasm_put(Dst, 9691); + dasm_put(Dst, 9890); if (sse) { - dasm_put(Dst, 9911); - dasm_put(Dst, 9968); - dasm_put(Dst, 10059); + dasm_put(Dst, 9913); + dasm_put(Dst, 9970); + dasm_put(Dst, 10061); } else { - dasm_put(Dst, 10101); - dasm_put(Dst, 10193); + dasm_put(Dst, 10103); + dasm_put(Dst, 10195); } - dasm_put(Dst, 10239); + dasm_put(Dst, 10241); if (sse) { - dasm_put(Dst, 10245); - dasm_put(Dst, 10350); - dasm_put(Dst, 10433); + dasm_put(Dst, 10247); + dasm_put(Dst, 10352); + dasm_put(Dst, 10435); } else { - dasm_put(Dst, 10505); - dasm_put(Dst, 10588); + dasm_put(Dst, 10507); + dasm_put(Dst, 10590); if (cmov) { - dasm_put(Dst, 10643); + dasm_put(Dst, 10645); } else { - dasm_put(Dst, 10662); + dasm_put(Dst, 10664); } - dasm_put(Dst, 10501); + dasm_put(Dst, 10503); } - dasm_put(Dst, 10703); + dasm_put(Dst, 10705); } /* 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, 10757, defop); + dasm_put(Dst, 10759, defop); switch (op) { @@ -1549,611 +1549,611 @@ 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, 10759, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10761, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10780); + dasm_put(Dst, 10782); } else { - dasm_put(Dst, 10795); + dasm_put(Dst, 10797); if (cmov) { - dasm_put(Dst, 10805); + dasm_put(Dst, 10807); } else { - dasm_put(Dst, 10811); + dasm_put(Dst, 10813); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 10818); + dasm_put(Dst, 10820); break; case BC_ISGE: - dasm_put(Dst, 10054); + dasm_put(Dst, 10056); break; case BC_ISLE: - dasm_put(Dst, 6181); + dasm_put(Dst, 6183); break; case BC_ISGT: - dasm_put(Dst, 10823); + dasm_put(Dst, 10825); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 10828, -BCBIAS_J*4); + dasm_put(Dst, 10830, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 10861, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10863, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10887); + dasm_put(Dst, 10889); } else { - dasm_put(Dst, 10899); + dasm_put(Dst, 10901); if (cmov) { - dasm_put(Dst, 10805); + dasm_put(Dst, 10807); } else { - dasm_put(Dst, 10811); + dasm_put(Dst, 10813); } } iseqne_fp: if (vk) { - dasm_put(Dst, 10906); + dasm_put(Dst, 10908); } else { - dasm_put(Dst, 10915); + dasm_put(Dst, 10917); } iseqne_end: if (vk) { - dasm_put(Dst, 10924, -BCBIAS_J*4); + dasm_put(Dst, 10926, -BCBIAS_J*4); } else { - dasm_put(Dst, 10939, -BCBIAS_J*4); + dasm_put(Dst, 10941, -BCBIAS_J*4); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 10954, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<len)); + dasm_put(Dst, 11292, Dt5(->len)); } else { - dasm_put(Dst, 11308, Dt5(->len)); + dasm_put(Dst, 11310, Dt5(->len)); } - dasm_put(Dst, 11317, LJ_TTAB); + dasm_put(Dst, 11319, LJ_TTAB); if (sse) { - dasm_put(Dst, 11357); + dasm_put(Dst, 11359); } else { - dasm_put(Dst, 11366); + dasm_put(Dst, 11368); } - dasm_put(Dst, 11376); + dasm_put(Dst, 11378); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 11386); + dasm_put(Dst, 11388); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11394, LJ_TISNUM); + dasm_put(Dst, 11396, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11406); + dasm_put(Dst, 11408); } else { - dasm_put(Dst, 11420); + dasm_put(Dst, 11422); } break; case 1: - dasm_put(Dst, 11428, LJ_TISNUM); + dasm_put(Dst, 11430, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11440); + dasm_put(Dst, 11442); } else { - dasm_put(Dst, 11454); + dasm_put(Dst, 11456); } break; default: - dasm_put(Dst, 11462, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11484); + dasm_put(Dst, 11486); } else { - dasm_put(Dst, 11498); + dasm_put(Dst, 11500); } break; } if (sse) { - dasm_put(Dst, 11260); + dasm_put(Dst, 11262); } else { - dasm_put(Dst, 11272); + dasm_put(Dst, 11274); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 11386); + dasm_put(Dst, 11388); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11394, LJ_TISNUM); + dasm_put(Dst, 11396, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11506); + dasm_put(Dst, 11508); } else { - dasm_put(Dst, 11520); + dasm_put(Dst, 11522); } break; case 1: - dasm_put(Dst, 11428, LJ_TISNUM); + dasm_put(Dst, 11430, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11528); + dasm_put(Dst, 11530); } else { - dasm_put(Dst, 11542); + dasm_put(Dst, 11544); } break; default: - dasm_put(Dst, 11462, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11550); + dasm_put(Dst, 11552); } else { - dasm_put(Dst, 11564); + dasm_put(Dst, 11566); } break; } if (sse) { - dasm_put(Dst, 11260); + dasm_put(Dst, 11262); } else { - dasm_put(Dst, 11272); + dasm_put(Dst, 11274); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 11386); + dasm_put(Dst, 11388); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11394, LJ_TISNUM); + dasm_put(Dst, 11396, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11572); + dasm_put(Dst, 11574); } else { - dasm_put(Dst, 11586); + dasm_put(Dst, 11588); } break; case 1: - dasm_put(Dst, 11428, LJ_TISNUM); + dasm_put(Dst, 11430, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11594); + dasm_put(Dst, 11596); } else { - dasm_put(Dst, 11608); + dasm_put(Dst, 11610); } break; default: - dasm_put(Dst, 11462, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11616); + dasm_put(Dst, 11618); } else { - dasm_put(Dst, 11630); + dasm_put(Dst, 11632); } break; } if (sse) { - dasm_put(Dst, 11260); + dasm_put(Dst, 11262); } else { - dasm_put(Dst, 11272); + dasm_put(Dst, 11274); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 11386); + dasm_put(Dst, 11388); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11394, LJ_TISNUM); + dasm_put(Dst, 11396, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11638); + dasm_put(Dst, 11640); } else { - dasm_put(Dst, 11652); + dasm_put(Dst, 11654); } break; case 1: - dasm_put(Dst, 11428, LJ_TISNUM); + dasm_put(Dst, 11430, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11660); + dasm_put(Dst, 11662); } else { - dasm_put(Dst, 11674); + dasm_put(Dst, 11676); } break; default: - dasm_put(Dst, 11462, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11682); + dasm_put(Dst, 11684); } else { - dasm_put(Dst, 11696); + dasm_put(Dst, 11698); } break; } if (sse) { - dasm_put(Dst, 11260); + dasm_put(Dst, 11262); } else { - dasm_put(Dst, 11272); + dasm_put(Dst, 11274); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_MODVN: - dasm_put(Dst, 11386); + dasm_put(Dst, 11388); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11394, LJ_TISNUM); + dasm_put(Dst, 11396, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11704); + dasm_put(Dst, 11706); } else { - dasm_put(Dst, 11718); + dasm_put(Dst, 11720); } break; case 1: - dasm_put(Dst, 11428, LJ_TISNUM); + dasm_put(Dst, 11430, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11726); + dasm_put(Dst, 11728); } else { - dasm_put(Dst, 11740); + dasm_put(Dst, 11742); } break; default: - dasm_put(Dst, 11462, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11748); + dasm_put(Dst, 11750); } else { - dasm_put(Dst, 11762); + dasm_put(Dst, 11764); } break; } - dasm_put(Dst, 11770); + dasm_put(Dst, 11772); if (sse) { - dasm_put(Dst, 11260); + dasm_put(Dst, 11262); } else { - dasm_put(Dst, 11272); + dasm_put(Dst, 11274); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 11386); + dasm_put(Dst, 11388); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11394, LJ_TISNUM); + dasm_put(Dst, 11396, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11704); + dasm_put(Dst, 11706); } else { - dasm_put(Dst, 11718); + dasm_put(Dst, 11720); } break; case 1: - dasm_put(Dst, 11428, LJ_TISNUM); + dasm_put(Dst, 11430, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11726); + dasm_put(Dst, 11728); } else { - dasm_put(Dst, 11740); + dasm_put(Dst, 11742); } break; default: - dasm_put(Dst, 11462, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11748); + dasm_put(Dst, 11750); } else { - dasm_put(Dst, 11762); + dasm_put(Dst, 11764); } break; } - dasm_put(Dst, 11776); + dasm_put(Dst, 11778); break; case BC_POW: - dasm_put(Dst, 11386); + dasm_put(Dst, 11388); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11394, LJ_TISNUM); + dasm_put(Dst, 11396, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11704); + dasm_put(Dst, 11706); } else { - dasm_put(Dst, 11718); + dasm_put(Dst, 11720); } break; case 1: - dasm_put(Dst, 11428, LJ_TISNUM); + dasm_put(Dst, 11430, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11726); + dasm_put(Dst, 11728); } else { - dasm_put(Dst, 11740); + dasm_put(Dst, 11742); } break; default: - dasm_put(Dst, 11462, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11464, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11748); + dasm_put(Dst, 11750); } else { - dasm_put(Dst, 11762); + dasm_put(Dst, 11764); } break; } - dasm_put(Dst, 11781); + dasm_put(Dst, 11783); if (sse) { - dasm_put(Dst, 11260); + dasm_put(Dst, 11262); } else { - dasm_put(Dst, 11272); + dasm_put(Dst, 11274); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_CAT: - dasm_put(Dst, 11785, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 11787, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 11879, LJ_TSTR); + dasm_put(Dst, 11881, LJ_TSTR); break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 11912); + dasm_put(Dst, 11914); } else { - dasm_put(Dst, 11927); + dasm_put(Dst, 11929); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 11935); + dasm_put(Dst, 11937); } else { - dasm_put(Dst, 11948); + dasm_put(Dst, 11950); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_KPRI: - dasm_put(Dst, 11955); + dasm_put(Dst, 11957); break; case BC_KNIL: - dasm_put(Dst, 11981, LJ_TNIL); + dasm_put(Dst, 11983, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 12027, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12029, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 12071, 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, 12161); + dasm_put(Dst, 12073, 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, 12163); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 12173, 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, 12175, 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, 12264); + dasm_put(Dst, 12266); if (sse) { - dasm_put(Dst, 12269); + dasm_put(Dst, 12271); } else { - dasm_put(Dst, 11079); + dasm_put(Dst, 11081); } - dasm_put(Dst, 12276, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12278, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 12285); + dasm_put(Dst, 12287); } else { - dasm_put(Dst, 12291); + dasm_put(Dst, 12293); } - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_USETP: - dasm_put(Dst, 12294, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12296, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 12331, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12333, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 12385, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 12387, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 12456, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 12458, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 12582, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 12584, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 12674, Dt7(->env)); + dasm_put(Dst, 12676, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 12692, Dt7(->env)); + dasm_put(Dst, 12694, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 12710, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 12712, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12743); + dasm_put(Dst, 12745); } else { - dasm_put(Dst, 12764); + dasm_put(Dst, 12766); if (cmov) { - dasm_put(Dst, 10805); + dasm_put(Dst, 10807); } else { - dasm_put(Dst, 10811); + dasm_put(Dst, 10813); } dasm_put(Dst, 2524); } - dasm_put(Dst, 12774, 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, 12968, 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, 12970, 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, 13254, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13173, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 13256, 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, 13316, 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, 13391, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 13483, 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, 13318, 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, 13393, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 13485, 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, 13579, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 13677, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13581, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 13679, 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, 13723); + dasm_put(Dst, 13725); if (sse) { - dasm_put(Dst, 13728); + dasm_put(Dst, 13730); } else { - dasm_put(Dst, 13735); + dasm_put(Dst, 13737); } - dasm_put(Dst, 13747, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 13889, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13749, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 13891, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALL: case BC_CALLM: - dasm_put(Dst, 11390); + dasm_put(Dst, 11392); if (op == BC_CALLM) { - dasm_put(Dst, 13907); + dasm_put(Dst, 13909); } - dasm_put(Dst, 13912, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 13914, LJ_TFUNC, Dt7(->pc)); break; case BC_CALLMT: - dasm_put(Dst, 13907); + dasm_put(Dst, 13909); break; case BC_CALLT: - dasm_put(Dst, 13953, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 14071, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 13955, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); + dasm_put(Dst, 14073, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); break; case BC_ITERC: - dasm_put(Dst, 14128, LJ_TFUNC, 2+1, Dt7(->pc)); + dasm_put(Dst, 14130, LJ_TFUNC, 2+1, Dt7(->pc)); break; case BC_VARG: - dasm_put(Dst, 14208, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); - dasm_put(Dst, 14352, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 14210, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); + dasm_put(Dst, 14354, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 13907); + dasm_put(Dst, 13909); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 14451); + dasm_put(Dst, 14453); } - dasm_put(Dst, 14455, FRAME_TYPE); + dasm_put(Dst, 14457, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 14474); + dasm_put(Dst, 14476); break; case BC_RET1: - dasm_put(Dst, 14532); + dasm_put(Dst, 14534); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 14548); + dasm_put(Dst, 14550); default: break; } - dasm_put(Dst, 14559, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 14561, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 14601, LJ_TNIL); + dasm_put(Dst, 14603, LJ_TNIL); } else { - dasm_put(Dst, 14610, LJ_TNIL); + dasm_put(Dst, 14612, LJ_TNIL); } - dasm_put(Dst, 14617); + dasm_put(Dst, 14619); if (op != BC_RET0) { - dasm_put(Dst, 14638); + dasm_put(Dst, 14640); } dasm_put(Dst, 4680); break; @@ -2163,7 +2163,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 14642, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14644, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2175,57 +2175,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, 14663); + dasm_put(Dst, 14665); if (!vk) { - dasm_put(Dst, 14667, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 14669, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 14686); + dasm_put(Dst, 14688); if (!vk) { - dasm_put(Dst, 14690, LJ_TISNUM); + dasm_put(Dst, 14692, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 14699); + dasm_put(Dst, 14701); if (vk) { - dasm_put(Dst, 14711); + dasm_put(Dst, 14713); } else { - dasm_put(Dst, 14730); + dasm_put(Dst, 14732); } - dasm_put(Dst, 14735); + dasm_put(Dst, 14737); } else { - dasm_put(Dst, 14748); + dasm_put(Dst, 14750); if (vk) { - dasm_put(Dst, 14754); + dasm_put(Dst, 14756); } else { - dasm_put(Dst, 14770); + dasm_put(Dst, 14772); } - dasm_put(Dst, 14778); + dasm_put(Dst, 14780); if (cmov) { - dasm_put(Dst, 10805); + dasm_put(Dst, 10807); } else { - dasm_put(Dst, 10811); + dasm_put(Dst, 10813); } if (!cmov) { - dasm_put(Dst, 14783); + dasm_put(Dst, 14785); } } if (op == BC_FORI) { - dasm_put(Dst, 14789, -BCBIAS_J*4); + dasm_put(Dst, 14791, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 14799, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 14801, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 14813, -BCBIAS_J*4); + dasm_put(Dst, 14815, -BCBIAS_J*4); } else { - dasm_put(Dst, 14809, BC_JLOOP); + dasm_put(Dst, 14811, BC_JLOOP); } - dasm_put(Dst, 10840); + dasm_put(Dst, 10842); if (sse) { - dasm_put(Dst, 14823); + dasm_put(Dst, 14825); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 14642, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14644, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2234,33 +2234,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 14834, LJ_TNIL); + dasm_put(Dst, 14836, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 14849, BC_JLOOP); + dasm_put(Dst, 14851, BC_JLOOP); } else { - dasm_put(Dst, 14863, -BCBIAS_J*4); + dasm_put(Dst, 14865, -BCBIAS_J*4); } - dasm_put(Dst, 11137); + dasm_put(Dst, 11139); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 14642, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14644, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 14879, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); + dasm_put(Dst, 14881, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); #endif break; case BC_JMP: - dasm_put(Dst, 14902, -BCBIAS_J*4); + dasm_put(Dst, 14904, -BCBIAS_J*4); break; /* -- Function headers -------------------------------------------------- */ @@ -2274,7 +2274,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FUNCF: #if LJ_HASJIT - dasm_put(Dst, 14926, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14928, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif case BC_FUNCV: /* NYI: compiled vararg functions. */ break; @@ -2284,47 +2284,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IFUNCF: - dasm_put(Dst, 14947, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); + dasm_put(Dst, 14949, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); if (op == BC_JFUNCF) { - dasm_put(Dst, 14977, BC_JLOOP); + dasm_put(Dst, 14979, BC_JLOOP); } else { - dasm_put(Dst, 10842); + dasm_put(Dst, 10844); } - dasm_put(Dst, 14986, LJ_TNIL); + dasm_put(Dst, 14988, LJ_TNIL); break; case BC_JFUNCV: #if !LJ_HASJIT break; #endif - dasm_put(Dst, 10503); + dasm_put(Dst, 10505); break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: - dasm_put(Dst, 15008, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); + dasm_put(Dst, 15010, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); if (op == BC_JFUNCV) { - dasm_put(Dst, 14977, BC_JLOOP); + dasm_put(Dst, 14979, BC_JLOOP); } else { - dasm_put(Dst, 15099, -4+PC2PROTO(k)); + dasm_put(Dst, 15101, -4+PC2PROTO(k)); } - dasm_put(Dst, 15121, LJ_TNIL); + dasm_put(Dst, 15123, LJ_TNIL); break; case BC_FUNCC: case BC_FUNCCW: - dasm_put(Dst, 15143, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); + dasm_put(Dst, 15145, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); if (op == BC_FUNCC) { - dasm_put(Dst, 15172); + dasm_put(Dst, 15174); } else { - dasm_put(Dst, 15176); + dasm_put(Dst, 15178); } - dasm_put(Dst, 15184, DISPATCH_GL(vmstate), ~LJ_VMST_C); + dasm_put(Dst, 15186, DISPATCH_GL(vmstate), ~LJ_VMST_C); if (op == BC_FUNCC) { - dasm_put(Dst, 15193); + dasm_put(Dst, 15195); } else { - dasm_put(Dst, 15197, DISPATCH_GL(wrapf)); + dasm_put(Dst, 15199, DISPATCH_GL(wrapf)); } - dasm_put(Dst, 15202, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 15204, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); break; /* ---------------------------------------------------------------------- */ @@ -2352,7 +2352,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 15227); + dasm_put(Dst, 15229); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op, cmov, sse);