aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-02-27 01:36:59 +0100
committerMike Pall <mike>2011-02-27 01:36:59 +0100
commitcead25f928ac606fc1a13882b818913aab3635a9 (patch)
tree92121b401f76f4b2891ebac0f710b0a921ce13b1 /src
parentc031d4b6a06eab94e8d9b837ec6dc257899a4ae1 (diff)
downloadluajit-cead25f928ac606fc1a13882b818913aab3635a9.tar.gz
luajit-cead25f928ac606fc1a13882b818913aab3635a9.tar.bz2
luajit-cead25f928ac606fc1a13882b818913aab3635a9.zip
DUALNUM: Handle integer type in x86/x64 interpreter and libraries.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_x64.h2932
-rw-r--r--src/buildvm_x64win.h2918
-rw-r--r--src/buildvm_x86.dasc963
-rw-r--r--src/buildvm_x86.h3201
-rw-r--r--src/lib_base.c14
-rw-r--r--src/lib_bit.c12
-rw-r--r--src/lib_io.c9
-rw-r--r--src/lib_math.c40
-rw-r--r--src/lib_package.c2
-rw-r--r--src/lib_string.c36
-rw-r--r--src/lj_lib.c41
-rw-r--r--src/lj_lib.h6
-rw-r--r--src/lj_meta.c19
-rw-r--r--src/lj_parse.c1
-rw-r--r--src/lj_str.c7
-rw-r--r--src/lj_str.h2
16 files changed, 6439 insertions, 3764 deletions
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index cdf67093..87115fe3 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[14600] = { 15static const unsigned char build_actionlist[15908] = {
16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141, 16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4, 17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133, 18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133,
@@ -57,420 +57,430 @@ static const unsigned char build_actionlist[14600] = {
57 24,137,151,233,137,202,72,139,8,72,137,77,0,137,252,238,252,233,244,33,248, 57 24,137,151,233,137,202,72,139,8,72,137,77,0,137,252,238,252,233,244,33,248,
58 34,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244,247, 58 34,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244,247,
59 65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,35,15,182, 59 65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,35,15,182,
60 67,252,254,255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,4,36,252,233, 60 67,252,254,255,199,68,36,4,237,137,4,36,255,252,242,15,42,192,252,242,15,
61 244,247,248,36,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44, 61 17,4,36,255,72,141,4,36,252,233,244,247,248,36,15,182,67,252,254,141,4,194,
62 252,234,248,2,139,124,36,24,137,151,233,137,252,238,72,137,194,137,252,253, 62 248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,
63 137,92,36,28,232,251,1,1,139,149,233,133,192,15,132,244,249,248,32,15,182, 63 252,238,72,137,194,137,252,253,137,92,36,28,232,251,1,1,139,149,233,133,192,
64 75,252,253,72,139,40,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4, 64 15,132,244,249,248,32,15,182,75,252,253,72,139,40,72,137,44,202,139,3,15,
65 193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,141,153, 65 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,
66 233,41,211,139,105,252,248,184,237,252,233,244,29,248,37,137,4,36,199,68, 66 233,137,89,252,244,141,153,233,41,211,139,105,252,248,184,237,252,233,244,
67 36,4,237,72,141,4,36,128,123,252,252,235,15,133,244,247,255,65,141,142,233, 67 29,248,37,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,
68 137,41,199,65,4,237,137,205,252,233,244,248,248,38,15,182,67,252,254,255, 68 244,247,255,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,
69 72,141,4,36,252,233,244,247,248,39,15,182,67,252,254,141,4,194,248,1,15,182, 69 38,15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,39,15,182,67,252,
70 107,252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252,238,72, 70 254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,
71 137,194,137,252,253,137,92,36,28,232,251,1,2,139,149,233,133,192,15,132,244, 71 137,151,233,137,252,238,72,137,194,137,252,253,137,92,36,28,232,251,1,2,139,
72 249,15,182,75,252,253,72,139,44,202,72,137,40,248,40,139,3,15,182,204,15, 72 149,233,133,192,15,132,244,249,15,182,75,252,253,72,139,44,202,72,137,40,
73 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137, 73 248,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
74 89,252,244,15,182,67,252,253,72,139,44,194,72,137,105,16,141,153,233,41,211, 74 238,248,3,139,141,233,137,89,252,244,15,182,67,252,253,72,139,44,194,72,137,
75 139,105,252,248,184,237,252,233,244,29,248,41,139,108,36,24,137,149,233,141, 75 105,16,141,153,233,41,211,139,105,252,248,184,237,252,233,244,29,248,41,139,
76 52,202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,28,232,251,1,3, 76 108,36,24,137,149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,
77 248,3,139,149,233,255,131,252,248,1,15,135,244,42,248,4,141,91,4,15,130,244, 77 137,92,36,28,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,42,
78 252,248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15, 78 248,4,141,91,4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,
79 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,43,131,195,4,129,120, 79 248,6,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
80 253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,244, 80 238,248,43,131,195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,
81 4,248,45,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255, 81 129,120,253,4,239,252,233,244,4,248,45,131,252,235,4,137,206,137,252,233,
82 137,194,137,252,239,137,92,36,28,232,251,1,4,252,233,244,3,248,46,255,131, 82 139,108,36,24,137,149,233,255,137,194,137,252,239,137,92,36,28,232,251,1,
83 252,235,4,139,108,36,24,137,149,233,137,252,239,139,115,252,252,137,92,36, 83 4,252,233,244,3,248,46,255,131,252,235,4,139,108,36,24,137,149,233,137,252,
84 28,232,251,1,5,252,233,244,3,255,248,47,65,141,4,199,252,233,244,247,248, 84 239,139,115,252,252,137,92,36,28,232,251,1,5,252,233,244,3,255,248,47,255,
85 48,65,141,4,199,141,44,252,234,149,252,233,244,248,248,49,141,4,194,137,197, 85 15,182,107,252,255,255,248,48,65,141,4,199,252,233,244,247,248,49,255,248,
86 252,233,244,248,248,50,141,4,194,248,1,141,44,252,234,248,2,141,12,202,68, 86 50,65,141,4,199,141,44,252,234,149,252,233,244,248,248,51,141,4,194,137,197,
87 15,182,67,252,252,137,206,137,193,139,124,36,24,137,151,233,137,252,234,137, 87 252,233,244,248,248,52,255,248,53,141,4,194,248,1,141,44,252,234,248,2,141,
88 252,253,137,92,36,28,232,251,1,6,139,149,233,133,192,15,132,244,40,248,42, 88 12,202,68,15,182,67,252,252,137,206,137,193,139,124,36,24,137,151,233,137,
89 137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,27,248,51,255, 89 252,234,137,252,253,137,92,36,28,232,251,1,6,139,149,233,133,192,15,132,244,
90 139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232,251,1,7, 90 40,248,42,137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,27,
91 139,149,233,252,233,244,42,248,52,141,76,202,8,248,28,137,76,36,4,137,4,36, 91 248,54,139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232,
92 131,252,233,8,139,108,36,24,137,149,233,137,206,141,20,193,137,252,239,137, 92 251,1,7,139,149,233,252,233,244,42,248,55,141,76,202,8,248,28,137,76,36,4,
93 92,36,28,232,251,1,8,139,149,233,139,76,36,4,139,4,36,139,105,252,248,131, 93 137,4,36,131,252,233,8,139,108,36,24,137,149,233,255,137,206,141,20,193,137,
94 192,1,65,57,215,15,132,244,53,137,202,137,90,252,252,139,157,233,139,11,15, 94 252,239,137,92,36,28,232,251,1,8,139,149,233,139,76,36,4,139,4,36,139,105,
95 182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,54,139,108,36, 95 252,248,131,192,1,65,57,215,15,132,244,56,137,202,137,90,252,252,139,157,
96 24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,9,139,149,233,139, 96 233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,
97 67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,164,253,252,238,233, 97 57,139,108,36,24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,9,
98 248,55,129,252,248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131, 98 139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,164,
99 244,56,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106,252,248, 99 253,252,238,233,248,58,129,252,248,239,15,130,244,59,139,106,4,129,252,253,
100 131,232,2,15,132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,252, 100 239,15,131,244,59,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106,
101 248,131,232,1,15,133,244,1,248,2,139,68,36,4,252,233,244,57,248,58,129,252, 101 252,248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,
102 248,239,15,130,244,56,139,106,4,137,252,233,193,252,249,15,131,252,249,252, 102 105,252,248,131,232,1,15,133,244,1,248,2,255,139,68,36,4,252,233,244,60,248,
103 254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244, 103 61,129,252,248,239,15,130,244,59,139,106,4,137,252,233,193,252,249,15,131,
104 247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,90,252, 104 252,249,252,254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,
105 252,199,66,252,252,237,137,66,252,248,252,233,244,59,248,3,184,237,252,233, 105 15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,
106 244,2,248,60,129,252,248,239,15,130,244,56,139,106,4,139,90,252,252,129,252, 106 139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,62,248,3,184,
107 253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,66, 107 237,252,233,244,2,248,63,129,252,248,239,15,130,244,59,139,106,4,139,90,252,
108 252,252,237,255,15,132,244,59,65,139,134,233,199,66,252,252,237,137,106,252, 108 252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,
109 248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15, 109 237,199,66,252,252,237,255,15,132,244,62,65,139,134,233,199,66,252,252,237,
110 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244, 110 137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,
111 3,255,252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,139,1, 111 233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,
112 137,106,252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132, 112 15,133,244,3,255,252,233,244,62,248,5,139,105,4,129,252,253,239,15,132,244,
113 244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,65,139,172, 113 62,139,1,137,106,252,252,137,66,252,248,252,233,244,62,248,6,129,252,253,
114 253,174,233,252,233,244,2,248,61,255,129,252,248,239,15,130,244,56,129,122, 114 239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,
115 253,4,239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12, 115 65,139,172,253,174,233,252,233,244,2,248,64,255,129,252,248,239,15,130,244,
116 239,15,133,244,56,139,66,8,137,133,233,139,90,252,252,199,66,252,252,237, 116 59,129,122,253,4,239,15,133,244,59,139,42,131,189,233,0,15,133,244,59,129,
117 137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,65, 117 122,253,12,239,15,133,244,59,139,66,8,137,133,233,139,90,252,252,199,66,252,
118 139,134,233,65,137,174,233,137,133,233,248,1,252,233,244,59,248,62,129,252, 118 252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,
119 248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,137,213,139,50,141, 119 255,65,139,134,233,65,137,174,233,137,133,233,248,1,252,233,244,62,248,65,
120 82,8,139,124,36,24,232,251,1,10,137,252,234,72,139,40,139,90,252,252,72,137, 120 129,252,248,239,15,130,244,59,129,122,253,4,239,15,133,244,59,137,213,139,
121 106,252,248,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,122,253, 121 50,141,82,8,139,124,36,24,232,251,1,10,137,252,234,72,139,40,139,90,252,252,
122 4,239,255,15,135,244,56,255,252,242,15,16,2,252,233,244,64,255,221,2,252, 122 72,137,106,252,248,252,233,244,62,248,66,129,252,248,239,15,133,244,59,129,
123 233,244,65,255,248,66,129,252,248,239,15,130,244,56,139,90,252,252,129,122, 123 122,253,4,239,255,15,133,244,247,139,42,252,233,244,67,248,1,15,135,244,59,
124 253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252, 124 255,15,131,244,59,255,252,242,15,16,2,252,233,244,68,255,221,2,252,233,244,
125 233,244,59,248,3,129,122,253,4,239,15,135,244,56,65,131,190,233,0,15,133, 125 69,255,248,70,129,252,248,239,15,130,244,59,139,90,252,252,129,122,253,4,
126 244,56,65,139,174,233,65,59,174,233,255,15,130,244,247,232,244,67,248,1,139, 126 239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,
127 108,36,24,137,149,233,137,92,36,28,137,214,137,252,239,232,251,1,11,139,149, 127 244,62,248,3,129,122,253,4,239,15,135,244,59,65,131,190,233,0,15,133,244,
128 233,252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248, 128 59,65,139,174,233,65,59,174,233,255,15,130,244,247,232,244,71,248,1,139,108,
129 1,129,122,253,4,239,15,133,244,56,139,108,36,24,137,149,233,255,137,149,233, 129 36,24,137,149,233,137,92,36,28,137,214,137,252,239,255,232,251,1,11,255,232,
130 139,90,252,252,139,50,141,82,8,137,252,239,137,92,36,28,232,251,1,12,139, 130 251,1,12,255,139,149,233,252,233,244,2,248,72,129,252,248,239,15,130,244,
131 149,233,133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248, 131 59,15,132,244,248,248,1,129,122,253,4,239,15,133,244,59,139,108,36,24,137,
132 72,137,2,248,69,184,237,252,233,244,70,248,2,199,66,12,237,252,233,244,1, 132 149,233,137,149,233,139,90,252,252,139,50,141,82,8,137,252,239,137,92,36,
133 248,3,199,66,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244, 133 28,232,251,1,13,139,149,233,133,192,15,132,244,249,72,139,106,8,72,139,66,
134 56,255,139,42,129,122,253,4,239,15,133,244,56,255,131,189,233,0,15,133,244, 134 16,72,137,106,252,248,72,137,2,248,73,184,237,255,252,233,244,74,248,2,199,
135 56,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252,237,137, 135 66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,62,248,75,129,
136 66,252,248,199,66,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15, 136 252,248,239,15,130,244,59,139,42,129,122,253,4,239,15,133,244,59,255,131,
137 130,244,56,129,122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244, 137 189,233,0,15,133,244,59,255,139,106,252,248,139,133,233,139,90,252,252,199,
138 56,139,90,252,252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205, 138 66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,74,248,76,
139 252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59, 139 129,252,248,239,15,130,244,59,129,122,253,4,239,15,133,244,59,129,122,253,
140 133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132, 140 12,239,255,139,90,252,252,255,139,66,8,131,192,1,199,66,252,252,237,137,66,
141 244,73,72,139,40,72,137,42,252,233,244,69,248,2,131,189,233,0,15,132,244, 141 252,248,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,
142 73,137,252,239,137,213,137,198,232,251,1,13,137,252,234,133,192,15,133,244, 142 88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,
143 1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15,130,244,56, 143 131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,77,72,
144 139,42,129,122,253,4,239,15,133,244,56,255,139,106,252,248,139,133,233,139, 144 139,40,72,137,42,252,233,244,73,248,2,131,189,233,0,15,132,244,77,137,252,
145 90,252,252,199,66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17, 145 239,137,213,137,198,232,251,1,14,137,252,234,133,192,15,133,244,1,248,77,
146 66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,70,248,75,129,252,248, 146 184,237,252,233,244,74,248,78,255,139,106,252,248,139,133,233,139,90,252,
147 239,15,130,244,56,141,74,8,131,232,1,187,237,248,1,65,15,182,174,233,193, 147 252,199,66,252,252,237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,
148 252,237,235,131,229,1,1,252,235,252,233,244,27,248,76,129,252,248,239,15, 148 255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,
149 130,244,56,129,122,253,12,239,15,133,244,56,255,139,106,4,137,106,12,199, 149 233,244,74,248,79,129,252,248,239,15,130,244,59,141,74,8,131,232,1,187,237,
150 66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,187,237,252, 150 248,1,65,15,182,174,233,193,252,237,235,131,229,1,1,252,235,252,233,244,27,
151 233,244,1,248,77,129,252,248,239,15,130,244,56,139,42,139,90,252,252,137, 151 248,80,129,252,248,239,15,130,244,59,129,122,253,12,239,15,133,244,59,255,
152 92,36,28,137,44,36,129,122,253,4,239,15,133,244,56,72,131,189,233,0,15,133, 152 139,106,4,137,106,12,199,66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,
153 244,56,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,255,59,141, 153 16,131,232,2,187,237,252,233,244,1,248,81,129,252,248,239,15,130,244,59,139,
154 233,15,132,244,56,248,1,141,92,193,252,240,59,157,233,15,135,244,56,137,157, 154 42,139,90,252,252,137,92,36,28,137,44,36,129,122,253,4,239,15,133,244,59,
155 233,139,108,36,24,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41, 155 72,131,189,233,0,15,133,244,59,128,189,233,235,15,135,244,59,139,141,233,
156 221,57,203,15,132,244,249,248,2,72,139,4,43,72,137,67,252,248,131,252,235, 156 15,132,244,247,255,59,141,233,15,132,244,59,248,1,141,92,193,252,240,59,157,
157 8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237, 157 233,15,135,244,59,137,157,233,139,108,36,24,137,149,233,131,194,8,137,149,
158 255,139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248, 158 233,141,108,194,232,72,41,221,57,203,15,132,244,249,248,2,72,139,4,43,72,
159 4,139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244, 159 137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,139,60,36,
160 252,141,4,26,193,252,235,3,59,133,233,15,135,244,255,137,213,72,41,205,248, 160 232,244,24,65,199,134,233,237,255,139,108,36,24,139,28,36,139,149,233,129,
161 5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67, 161 252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68,
162 2,199,66,252,252,237,248,7,139,92,36,28,137,68,36,4,72,199,193,252,248,252, 162 137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,135,
163 255,252,255,252,255,252,247,195,237,255,15,132,244,13,252,233,244,14,248, 163 244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,68,57,252,
164 8,199,66,252,252,237,139,139,233,131,252,233,8,137,139,233,72,139,1,72,137, 164 249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,139,92,36,28,137,
165 2,184,237,252,233,244,7,248,9,139,12,36,68,137,185,233,137,222,137,252,239, 165 68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,195,237,255,15,
166 232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,78,139,106,252,248,139, 166 132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,139,233,131,252,233,
167 173,233,139,90,252,252,137,92,36,28,137,44,36,72,131,189,233,0,15,133,244, 167 8,137,139,233,72,139,1,72,137,2,184,237,252,233,244,7,248,9,139,12,36,68,
168 56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,141,233, 168 137,185,233,137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,233,
169 15,132,244,56,248,1,141,92,193,252,248,59,157,233,15,135,244,56,137,157,233, 169 244,4,248,82,139,106,252,248,139,173,233,139,90,252,252,137,92,36,28,137,
170 139,108,36,24,137,149,233,137,149,233,141,108,194,252,240,72,41,221,57,203, 170 44,36,72,131,189,233,0,15,133,244,59,255,128,189,233,235,15,135,244,59,139,
171 15,132,244,249,248,2,255,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203, 171 141,233,15,132,244,247,59,141,233,15,132,244,59,248,1,141,92,193,252,248,
172 15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,139,108, 172 59,157,233,15,135,244,59,137,157,233,139,108,36,24,137,149,233,137,149,233,
173 36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139, 173 141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,255,72,139,4,43,
174 233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4, 174 72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,139,60,
175 26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,72, 175 36,232,244,24,65,199,134,233,237,139,108,36,24,139,28,36,139,149,233,129,
176 139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,1,248, 176 252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68,
177 7,139,92,36,28,137,68,36,4,49,201,252,247,195,237,15,132,244,13,252,233,244, 177 137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,135,
178 14,248,8,137,222,137,252,239,232,251,1,14,248,9,139,12,36,68,137,185,233, 178 244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,68,57,
179 137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,79, 179 252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,28,137,68,36,4,49,201,
180 139,108,36,24,72,252,247,133,233,237,15,132,244,56,255,137,149,233,141,68, 180 252,247,195,237,15,132,244,13,252,233,244,14,248,8,137,222,137,252,239,232,
181 194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,252,233, 181 251,1,15,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,
182 244,16,255,248,65,139,90,252,252,221,90,252,248,252,233,244,59,248,80,129, 182 28,36,139,149,233,252,233,244,4,248,83,139,108,36,24,72,252,247,133,233,237,
183 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2, 183 15,132,244,59,255,137,149,233,141,68,194,252,248,137,133,233,49,192,72,137,
184 72,184,237,237,102,72,15,110,200,15,84,193,248,64,139,90,252,252,252,242, 184 133,233,176,235,136,133,233,252,233,244,16,255,248,67,255,248,69,139,90,252,
185 15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,56,129,122,253,4,239, 185 252,221,90,252,248,252,233,244,62,255,248,84,129,252,248,239,15,130,244,59,
186 15,135,244,56,221,2,217,225,248,64,248,65,139,90,252,252,221,90,252,248,255, 186 255,129,122,253,4,239,15,133,244,248,139,42,131,252,253,0,15,137,244,67,252,
187 248,59,184,237,248,70,137,68,36,4,248,57,252,247,195,237,15,133,244,253,248, 187 247,221,15,136,244,247,248,85,248,67,139,90,252,252,199,66,252,252,237,137,
188 5,56,67,252,255,15,135,244,252,15,182,75,252,253,72,252,247,209,141,20,202, 188 106,252,248,252,233,244,62,248,1,139,90,252,252,199,66,252,252,0,0,224,65,
189 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248, 189 199,66,252,248,0,0,0,0,252,233,244,62,248,2,15,135,244,59,255,129,122,253,
190 6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248, 190 4,239,15,131,244,59,255,252,242,15,16,2,72,184,237,237,102,72,15,110,200,
191 252,255,252,255,252,255,252,233,244,14,255,248,81,129,252,248,239,15,130, 191 15,84,193,248,68,139,90,252,252,252,242,15,17,66,252,248,255,221,2,217,225,
192 244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,252,233,244,64,248, 192 248,68,248,69,139,90,252,252,221,90,252,248,255,248,62,184,237,248,74,137,
193 82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242, 193 68,36,4,248,60,252,247,195,237,15,133,244,253,248,5,56,67,252,255,15,135,
194 15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244,56, 194 244,252,15,182,75,252,253,72,252,247,209,141,20,202,139,3,15,182,204,15,182,
195 129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,85,252,233,244,64, 195 232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,199,68,194,252,244,237,
196 255,248,81,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56, 196 131,192,1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,
197 221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56,129, 197 252,233,244,14,248,86,255,129,122,253,4,239,15,133,244,247,139,42,252,233,
198 122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,65,248,84,255,129, 198 244,67,248,1,15,135,244,59,255,252,242,15,16,2,232,244,87,255,252,242,15,
199 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,85, 199 45,232,129,252,253,0,0,0,128,15,133,244,67,252,242,15,42,205,102,15,46,193,
200 252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,122,253,4,239, 200 15,138,244,68,15,132,244,67,255,221,2,232,244,87,255,248,88,255,252,242,15,
201 15,135,244,56,217,252,237,221,2,217,252,241,252,233,244,65,248,87,129,252, 201 16,2,232,244,89,255,221,2,232,244,89,255,248,90,129,252,248,239,15,130,244,
202 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,217,252,236,221,2,217, 202 59,129,122,253,4,239,15,131,244,59,252,242,15,81,2,252,233,244,68,255,248,
203 252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129,122,253, 203 90,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,217,
204 4,239,15,135,244,56,221,2,232,244,89,252,233,244,65,248,90,129,252,248,239, 204 252,250,252,233,244,69,255,248,91,129,252,248,239,15,130,244,59,129,122,253,
205 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,254,252,233,244, 205 4,239,15,131,244,59,217,252,237,221,2,217,252,241,252,233,244,69,248,92,129,
206 65,248,91,129,252,248,239,255,15,130,244,56,129,122,253,4,239,15,135,244, 206 252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,217,252,236,221,
207 56,221,2,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130,244,56, 207 2,217,252,241,252,233,244,69,248,93,129,252,248,239,255,15,130,244,59,129,
208 129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,216,252,233,244,65, 208 122,253,4,239,15,131,244,59,221,2,232,244,94,252,233,244,69,248,95,129,252,
209 248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,239,15,135,244,56, 209 248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,217,252,254,252,
210 221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244, 210 233,244,69,248,96,129,252,248,239,255,15,130,244,59,129,122,253,4,239,15,
211 65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221, 211 131,244,59,221,2,217,252,255,252,233,244,69,248,97,129,252,248,239,15,130,
212 2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233, 212 244,59,129,122,253,4,239,15,131,244,59,221,2,217,252,242,221,216,252,233,
213 244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 213 244,69,248,98,129,252,248,239,15,130,244,59,255,129,122,253,4,239,15,131,
214 56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,129,252,248,239, 214 244,59,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
215 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213, 215 233,244,69,248,99,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,
216 232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130, 216 244,59,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
217 244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,232,251, 217 243,252,233,244,69,248,100,129,252,248,239,15,130,244,59,129,122,253,4,239,
218 1,16,137,252,234,252,233,244,64,255,248,98,129,252,248,239,15,130,244,56, 218 15,131,244,59,255,221,2,217,232,217,252,243,252,233,244,69,255,248,101,129,
219 129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,232,251,1,17, 219 252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,
220 137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239,15,130,244, 220 255,137,213,232,251,1,16,137,252,234,252,233,244,68,255,248,102,129,252,248,
221 56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,139,106,252,248,252,242, 221 239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,255,137,
222 15,89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129, 222 213,232,251,1,17,137,252,234,252,233,244,68,255,248,103,129,252,248,239,15,
223 122,253,4,239,15,135,244,56,221,2,139,106,252,248,220,141,233,252,233,244, 223 130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,255,137,213,232,
224 65,255,248,101,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 224 251,1,18,137,252,234,252,233,244,68,248,104,255,248,105,129,252,248,239,15,
225 56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,217,252,243,252,233,244, 225 130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,139,106,252,248,
226 65,248,102,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56, 226 252,242,15,89,133,233,252,233,244,68,255,248,105,129,252,248,239,15,130,244,
227 129,122,253,12,239,255,15,135,244,56,221,66,8,221,2,217,252,253,221,217,252, 227 59,129,122,253,4,239,15,131,244,59,221,2,139,106,252,248,220,141,233,252,
228 233,244,65,248,103,129,252,248,239,15,130,244,56,139,106,4,129,252,253,239, 228 233,244,69,255,248,106,129,252,248,239,15,130,244,59,129,122,253,4,239,15,
229 15,135,244,56,139,90,252,252,139,2,137,106,252,252,137,66,252,248,209,229, 229 131,244,59,129,122,253,12,239,15,131,244,59,221,2,221,66,8,217,252,243,252,
230 129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254, 230 233,244,69,248,107,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,
231 3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255, 231 244,59,129,122,253,12,239,255,15,131,244,59,221,66,8,221,2,217,252,253,221,
232 252,242,15,42,197,255,137,44,36,219,4,36,255,139,106,252,252,129,229,252, 232 217,252,233,244,69,248,108,129,252,248,239,15,130,244,59,139,106,4,129,252,
233 255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15, 233 253,239,15,131,244,59,139,90,252,252,139,2,137,106,252,252,137,66,252,248,
234 17,2,255,221,26,255,184,237,252,233,244,70,248,3,255,15,87,192,252,233,244, 234 209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,
235 2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,72,189,237, 235 252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,
236 237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,66,252,248,255,221, 236 197,255,252,242,15,42,197,255,137,44,36,219,4,36,255,139,106,252,252,129,
237 2,199,4,36,0,0,128,90,216,12,36,221,90,252,248,255,139,106,252,252,184,52, 237 229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,
238 4,0,0,209,229,252,233,244,1,255,248,104,129,252,248,239,15,130,244,56,129, 238 242,15,17,2,255,221,26,255,184,237,252,233,244,74,248,3,255,15,87,192,252,
239 122,253,4,239,15,135,244,56,252,242,15,16,2,255,248,104,129,252,248,239,15, 239 233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,72,
240 130,244,56,129,122,253,4,239,15,135,244,56,221,2,255,139,106,4,139,90,252, 240 189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,66,252,248,
241 252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232, 241 255,221,2,199,4,36,0,0,128,90,216,12,36,221,90,252,248,255,139,106,252,252,
242 244,105,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34, 242 184,52,4,0,0,209,229,252,233,244,1,255,248,109,129,252,248,239,15,130,244,
243 255,217,192,232,244,105,220,252,233,248,1,221,90,252,248,221,26,255,139,66, 243 59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,255,248,109,129,252,248,
244 252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248, 244 239,15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,255,139,106,4,139,
245 90,252,252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,
246 232,244,110,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,
247 34,255,217,192,232,244,110,220,252,233,248,1,221,90,252,248,221,26,255,139,
248 66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,74,248,
245 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233, 249 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
246 244,1,255,217,252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15, 250 244,1,255,217,252,238,217,201,252,233,244,1,255,248,111,129,252,248,239,15,
247 130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244, 251 130,244,59,129,122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,
248 56,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252, 252 59,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
249 233,244,65,255,248,107,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 253 233,244,69,255,248,112,129,252,248,239,15,130,244,59,129,122,253,4,239,15,
250 135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16, 254 131,244,59,129,122,253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,
251 74,8,232,244,108,252,233,244,64,255,248,107,129,252,248,239,15,130,244,56, 255 74,8,232,244,113,252,233,244,68,255,248,112,129,252,248,239,15,130,244,59,
252 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221, 256 129,122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,221,2,221,
253 66,8,232,244,108,252,233,244,65,255,248,109,129,252,248,239,15,130,244,56, 257 66,8,232,244,113,252,233,244,69,255,248,114,185,2,0,0,0,129,122,253,4,239,
254 129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197, 258 255,15,133,244,250,139,42,248,1,57,193,15,131,244,67,129,124,253,202,252,
255 15,131,244,64,129,124,253,252,234,252,252,239,15,135,244,56,252,242,15,16, 259 252,239,15,133,244,249,59,108,202,252,248,15,79,108,202,252,248,131,193,1,
256 76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,110, 260 252,233,244,1,248,3,15,135,244,59,255,252,233,244,252,248,4,15,135,244,59,
257 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15, 261 255,252,242,15,16,2,248,5,57,193,15,131,244,68,129,124,253,202,252,252,239,
258 16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239, 262 255,15,130,244,252,15,135,244,59,252,242,15,42,76,202,252,248,252,233,244,
259 15,135,244,56,252,242,15,16,76,252,234,252,248,252,242,15,95,193,131,197, 263 253,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,
260 1,252,233,244,1,255,248,5,221,216,252,233,244,56,255,248,111,129,252,248, 264 1,252,233,244,5,255,248,115,185,2,0,0,0,129,122,253,4,239,255,15,133,244,
261 239,15,130,244,56,129,122,253,4,239,15,133,244,56,139,42,255,252,242,15,42, 265 250,139,42,248,1,57,193,15,131,244,67,129,124,253,202,252,252,239,15,133,
262 133,233,252,233,244,64,255,219,133,233,252,233,244,65,255,248,112,129,252, 266 244,249,59,108,202,252,248,15,76,108,202,252,248,131,193,1,252,233,244,1,
263 248,239,15,133,244,56,129,122,253,4,239,15,133,244,56,139,42,139,90,252,252, 267 248,3,15,135,244,59,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,
264 131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42,197,252,233, 268 15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,252,233,244,59,255,248,
265 244,64,255,137,44,36,219,4,36,252,233,244,65,255,248,113,65,139,174,233,65, 269 116,129,252,248,239,15,130,244,59,129,122,253,4,239,15,133,244,59,139,42,
266 59,174,233,15,130,244,247,232,244,67,248,1,129,252,248,239,15,133,244,56, 270 255,139,173,233,252,233,244,67,255,252,242,15,42,133,233,252,233,244,68,255,
267 129,122,253,4,239,15,135,244,56,255,252,242,15,44,42,129,252,253,252,255, 271 219,133,233,252,233,244,69,255,248,117,129,252,248,239,15,133,244,59,129,
268 0,0,0,15,135,244,56,137,108,36,4,255,221,2,219,92,36,4,129,124,36,4,252,255, 272 122,253,4,239,15,133,244,59,139,42,139,90,252,252,131,189,233,1,15,130,244,
269 0,0,0,15,135,244,56,255,199,68,36,8,1,0,0,0,72,141,68,36,4,248,114,139,108, 273 77,15,182,173,233,255,252,242,15,42,197,252,233,244,68,255,137,44,36,219,
270 36,24,137,149,233,139,84,36,8,72,137,198,137,252,239,137,92,36,28,232,251, 274 4,36,252,233,244,69,255,248,118,65,139,174,233,65,59,174,233,15,130,244,247,
271 1,18,139,149,233,139,90,252,252,199,66,252,252,237,137,66,252,248,252,233, 275 232,244,71,248,1,129,252,248,239,15,133,244,59,129,122,253,4,239,255,15,133,
272 244,59,248,115,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248, 276 244,59,139,42,129,252,253,252,255,0,0,0,15,135,244,59,137,108,36,4,255,15,
273 1,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244, 277 131,244,59,252,242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,59,137,108,
274 56,15,134,244,247,129,122,253,20,239,255,252,242,15,44,106,16,137,108,36, 278 36,4,255,15,131,244,59,221,2,219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,
275 4,255,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,56,129, 279 244,59,255,199,68,36,8,1,0,0,0,72,141,68,36,4,248,119,139,108,36,24,137,149,
276 122,253,12,239,15,135,244,56,139,42,137,108,36,8,139,173,233,255,252,242, 280 233,139,84,36,8,72,137,198,137,252,239,137,92,36,28,232,251,1,19,139,149,
277 15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,244, 281 233,139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,62,248,120,
278 253,248,3,139,108,36,8,41,200,15,140,244,116,141,172,253,13,233,131,192,1, 282 65,139,174,233,65,59,174,233,15,130,244,247,232,244,71,248,1,199,68,36,4,
279 248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252,141,68,40, 283 252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,59,15,134,244,
280 1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252, 284 247,129,122,253,20,239,255,15,133,244,59,139,106,16,137,108,36,4,255,15,131,
281 233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,116,49,192, 285 244,59,252,242,15,44,106,16,137,108,36,4,255,15,131,244,59,221,66,16,219,
282 252,233,244,4,248,117,129,252,248,239,15,130,244,56,65,139,174,233,65,59, 286 92,36,4,255,248,1,129,122,253,4,239,15,133,244,59,129,122,253,12,239,255,
283 174,233,15,130,244,247,232,244,67,248,1,255,129,122,253,4,239,15,133,244, 287 139,42,137,108,36,8,139,173,233,255,139,74,8,255,252,242,15,44,74,8,255,139,
284 56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,44,66,8,255,221, 288 68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,
285 66,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,116,131,189,233,1,15, 289 36,8,41,200,15,140,244,121,141,172,253,13,233,131,192,1,248,4,137,68,36,8,
286 130,244,116,15,133,244,118,65,57,134,233,15,130,244,118,15,182,141,233,65, 290 137,232,252,233,244,119,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,
287 139,174,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65, 291 6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,
288 139,134,233,252,233,244,114,248,119,129,252,248,239,255,15,130,244,56,65, 292 244,3,248,8,185,1,0,0,0,252,233,244,3,248,121,49,192,252,233,244,4,248,122,
289 139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239, 293 129,252,248,239,15,130,244,59,65,139,174,233,65,59,174,233,15,130,244,247,
290 15,133,244,56,139,42,139,133,233,133,192,15,132,244,116,65,57,134,233,15, 294 232,244,71,248,1,255,129,122,253,4,239,15,133,244,59,129,122,253,12,239,139,
291 130,244,120,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,248,1,255, 295 42,255,15,133,244,59,139,66,8,255,15,131,244,59,252,242,15,44,66,8,255,15,
292 15,182,77,0,131,197,1,131,232,1,136,12,3,15,133,244,1,137,216,139,92,36,4, 296 131,244,59,221,66,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,121,131,
293 252,233,244,114,248,121,129,252,248,239,15,130,244,56,65,139,174,233,65,59, 297 189,233,1,15,130,244,121,15,133,244,123,65,57,134,233,15,130,244,123,15,182,
294 174,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139, 298 141,233,65,139,174,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,
295 42,139,133,233,65,57,134,233,255,15,130,244,120,129,197,239,137,92,36,4,137, 299 133,244,1,65,139,134,233,252,233,244,119,248,124,129,252,248,239,255,15,130,
296 68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65, 300 244,59,65,139,174,233,65,59,174,233,15,130,244,247,232,244,71,248,1,129,122,
297 15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12, 301 253,4,239,15,133,244,59,139,42,139,133,233,133,192,15,132,244,121,65,57,134,
298 3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,114,248,122, 302 233,15,130,244,125,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,248,
299 129,252,248,239,15,130,244,56,255,65,139,174,233,65,59,174,233,15,130,244, 303 1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133,244,1,137,216,139,92,
300 247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,65, 304 36,4,252,233,244,119,248,126,129,252,248,239,15,130,244,59,65,139,174,233,
301 57,134,233,15,130,244,120,129,197,239,137,92,36,4,137,68,36,8,65,139,158, 305 65,59,174,233,15,130,244,247,232,244,71,248,1,129,122,253,4,239,15,133,244,
302 233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255, 306 59,139,42,139,133,233,65,57,134,233,255,15,130,244,125,129,197,239,137,92,
303 131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232, 307 36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,
304 1,15,137,244,1,137,216,139,92,36,4,252,233,244,114,248,123,129,252,248,239, 308 249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,
305 15,130,244,56,129,122,253,4,239,15,133,244,56,137,213,139,58,232,251,1,19, 309 136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,119,
306 137,252,234,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248, 310 248,127,129,252,248,239,15,130,244,59,255,65,139,174,233,65,59,174,233,15,
307 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189, 311 130,244,247,232,244,71,248,1,129,122,253,4,239,15,133,244,59,139,42,139,133,
308 237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42, 312 233,65,57,134,233,15,130,244,125,129,197,239,137,92,36,4,137,68,36,8,65,139,
309 197,252,233,244,64,255,248,125,129,252,248,239,15,130,244,56,129,122,253, 313 158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,
310 4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252, 314 255,131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,
311 242,15,88,193,102,15,126,197,255,137,68,36,4,141,68,194,252,240,248,1,57, 315 232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,119,248,128,129,252,248,
312 208,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,0,252, 316 239,15,130,244,59,129,122,253,4,239,15,133,244,59,137,213,139,58,232,251,
313 242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,128, 317 1,20,137,252,234,255,137,197,252,233,244,67,255,252,242,15,42,192,252,233,
314 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15, 318 244,68,255,248,129,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,
315 16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255, 319 85,248,1,15,135,244,59,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
316 252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,129,129,252, 320 252,242,15,88,193,102,15,126,197,255,252,233,244,85,255,248,130,255,72,189,
317 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72, 321 237,237,102,72,15,110,205,255,199,4,36,0,0,192,89,255,15,133,244,247,139,
318 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242, 322 42,252,233,244,248,248,1,15,135,244,59,255,252,242,15,16,2,252,242,15,88,
319 15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,248,130,129,252,248,239, 323 193,102,15,126,197,255,248,2,137,68,36,4,141,68,194,252,240,248,1,57,208,
320 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237, 324 15,134,244,85,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8,252,233,
321 237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233, 325 244,1,248,2,15,135,244,131,255,15,131,244,131,255,252,242,15,16,0,252,242,
322 244,126,255,248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135, 326 15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244,1,248,132,255,15,
323 244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193, 327 133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,131,255,252,242,
324 102,15,126,197,255,252,247,213,255,248,126,252,242,15,42,197,252,233,244, 328 15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,
325 64,255,248,127,139,68,36,4,252,233,244,56,255,248,132,129,252,248,239,15, 329 1,248,133,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135,244,
326 130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244, 330 131,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,131,232,
327 56,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252, 331 8,252,233,244,1,248,134,129,122,253,4,239,255,248,2,15,205,252,233,244,85,
328 242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255, 332 248,135,129,122,253,4,239,255,248,2,252,247,213,255,248,85,252,242,15,42,
329 211,229,137,193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56, 333 197,252,233,244,68,255,248,131,139,68,36,4,252,233,244,59,255,248,136,129,
330 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242, 334 122,253,4,239,255,248,2,129,122,253,12,239,15,133,244,59,139,74,8,255,248,
331 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88, 335 136,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,122,
332 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237, 336 253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
333 137,193,252,233,244,126,255,248,134,129,252,248,239,15,130,244,56,129,122, 337 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,
334 253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2, 338 15,126,201,255,211,229,252,233,244,85,255,248,137,129,122,253,4,239,255,248,
335 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252, 339 137,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,122,
336 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193, 340 253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
337 252,233,244,126,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239, 341 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,
338 15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15, 342 15,126,201,255,211,252,237,252,233,244,85,255,248,138,129,122,253,4,239,255,
339 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88, 343 248,138,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,
340 202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244, 344 122,253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,72,189,237,
341 126,255,248,136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 345 237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,
342 56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72, 346 102,15,126,201,255,211,252,253,252,233,244,85,255,248,139,129,122,253,4,239,
343 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, 347 255,248,139,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,
344 102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,244,126,248,118, 348 129,122,253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,72,189,
345 184,237,252,233,244,56,248,120,184,237,248,56,139,108,36,24,139,90,252,252, 349 237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,
346 137,92,36,28,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66, 350 197,102,15,126,201,255,211,197,252,233,244,85,255,248,140,129,122,253,4,239,
347 252,248,59,141,233,15,135,244,251,137,252,239,252,255,144,233,139,149,233, 351 255,248,140,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,
348 133,192,15,143,244,70,248,1,255,139,141,233,41,209,193,252,233,3,133,192, 352 129,122,253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,72,189,
349 141,65,1,139,106,252,248,15,133,244,248,139,157,233,139,11,15,182,252,233, 353 237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,
350 15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209,252,247,195,237, 354 197,102,15,126,201,255,211,205,252,233,244,85,248,123,184,237,252,233,244,
351 15,133,244,249,15,182,107,252,253,72,252,247,213,141,20,252,234,252,233,244, 355 59,248,125,184,237,248,59,139,108,36,24,139,90,252,252,137,92,36,28,137,149,
352 27,248,3,137,221,131,229,252,248,41,252,234,252,233,244,27,248,5,190,237, 356 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,
353 137,252,239,232,251,1,0,139,149,233,49,192,252,233,244,1,248,67,93,72,137, 357 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,143,244,
354 108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194,252,248,137, 358 74,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,
355 252,239,137,133,233,232,251,1,20,139,149,233,139,133,233,41,208,193,232,3, 359 248,15,133,244,248,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,
356 131,192,1,72,139,108,36,8,85,195,248,137,255,65,15,182,134,233,168,235,15, 360 65,252,255,36,252,238,248,2,137,209,252,247,195,237,15,133,244,249,15,182,
357 133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,65,252,255,142, 361 107,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,221,131,
358 233,252,233,244,247,255,248,138,65,15,182,134,233,168,235,15,133,244,251, 362 229,252,248,41,252,234,252,233,244,27,248,5,190,237,137,252,239,232,251,1,
359 252,233,244,247,248,139,65,15,182,134,233,168,235,15,133,244,251,168,235, 363 0,139,149,233,49,192,252,233,244,1,248,71,93,72,137,108,36,8,139,108,36,24,
360 15,132,244,251,65,252,255,142,233,15,132,244,247,168,235,15,132,244,251,248, 364 137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232,
361 1,255,139,108,36,24,137,149,233,137,222,137,252,239,232,251,1,21,248,3,139, 365 251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,
362 149,233,248,4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,67,252,254, 366 8,85,195,248,141,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,
363 65,252,255,164,253,252,238,233,248,140,131,195,4,139,77,232,137,76,36,4,252, 367 133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,
364 233,244,4,248,141,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194, 368 248,142,65,15,182,134,233,168,235,15,133,244,251,252,233,244,247,248,143,
365 139,108,36,24,137,149,233,137,133,233,137,222,65,141,190,233,73,137,174,233, 369 65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255,
366 137,92,36,28,232,251,1,22,252,233,244,3,255,248,142,137,92,36,28,255,248, 370 142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,24,137,
367 143,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24, 371 149,233,137,222,137,252,239,232,251,1,22,248,3,139,149,233,248,4,15,182,75,
368 137,149,233,137,133,233,137,222,137,252,239,232,251,1,23,199,68,36,28,0,0, 372 252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252,
369 0,0,255,131,227,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72, 373 238,233,248,144,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,145,255,
370 137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,144,255,65, 374 139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,24,137,149,
371 85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80, 375 233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92,36,28,232,251,
372 15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,68, 376 1,23,252,233,244,3,255,248,146,137,92,36,28,255,248,147,255,137,92,36,28,
373 139,117,0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,142,233, 377 131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149,233,137,133,
374 72,129,252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68, 378 233,137,222,137,252,239,232,251,1,24,199,68,36,28,0,0,0,0,255,131,227,252,
375 15,17,117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242, 379 254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,75,252,
376 68,15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68, 380 253,193,232,3,131,192,1,252,255,229,248,148,255,65,85,65,84,65,83,65,82,65,
377 15,17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109, 381 81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,
378 168,252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242, 382 252,240,76,137,125,252,248,76,137,117,252,240,68,139,117,0,65,139,142,233,
379 15,17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,137,174, 383 65,199,134,233,237,65,137,134,233,65,137,142,233,72,129,252,236,239,72,131,
380 233,65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251, 384 197,128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,
381 1,24,72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,233,139, 385 68,15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,
382 153,233,252,233,244,247,255,248,145,255,72,131,196,16,248,1,76,139,108,36, 386 68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,
383 8,76,139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139, 387 17,125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,
384 191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15, 388 160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,
385 182,204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,139, 389 15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233,65,199,134,233,
386 68,36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,198, 390 0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,25,72,139,141,233,
387 232,251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68, 391 72,129,225,239,72,137,204,137,169,233,139,149,233,139,153,233,252,233,244,
388 36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217, 392 247,255,248,149,255,72,131,196,16,248,1,76,139,108,36,8,76,139,36,36,133,
389 108,36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72, 393 192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191,233,69,139,191,
390 184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134, 394 233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204,15,182,232,
391 244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72, 395 131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36,4,248,2,65,
392 184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242, 396 252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232,251,1,26,255,
393 15,92,200,15,40,193,248,1,195,248,85,255,217,124,36,4,137,68,36,8,102,184, 397 248,87,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
394 0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217, 398 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
395 252,252,217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15, 399 36,8,195,255,248,150,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
396 110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46, 400 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
397 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 401 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
398 15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84, 402 72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,
399 194,252,242,15,92,200,15,40,193,248,1,195,248,105,255,217,124,36,4,137,68, 403 193,248,1,195,248,89,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,
400 36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252, 404 4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
401 217,108,36,4,139,68,36,8,195,255,248,148,72,184,237,237,102,72,15,110,208, 405 36,4,139,68,36,8,195,255,248,151,72,184,237,237,102,72,15,110,208,72,184,
402 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, 406 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
403 134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72, 407 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
404 184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242, 408 237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
405 15,92,200,102,15,86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242, 409 200,15,40,193,248,1,195,248,110,255,217,124,36,4,137,68,36,8,102,184,0,12,
406 15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216, 410 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
407 15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242, 411 68,36,8,195,255,248,152,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
408 15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208, 412 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
409 252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15, 413 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,
410 89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15, 414 15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,
411 92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36, 415 202,15,40,193,248,1,195,248,153,255,15,40,232,252,242,15,94,193,72,184,237,
412 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, 416 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,
413 36,4,222,201,222,252,233,195,255,248,89,217,252,234,222,201,248,150,217,84, 417 226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,
414 36,252,248,129,124,36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248, 418 15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,
415 0,0,128,252,255,15,132,244,248,248,151,217,192,217,252,252,220,252,233,217, 419 1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,
416 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216, 420 92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,
417 217,252,238,195,255,248,108,255,248,152,252,242,15,45,193,252,242,15,42,208, 421 193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
418 102,15,46,202,15,133,244,254,15,138,244,255,248,153,131,252,248,1,15,142, 422 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,
419 244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233, 423 233,195,255,248,94,217,252,234,222,201,248,154,217,84,36,252,248,129,124,
420 244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209, 424 36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,
421 232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4, 425 15,132,244,248,248,155,217,192,217,252,252,220,252,233,217,201,217,252,240,
422 252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216, 426 217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,
423 232,244,1,72,184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195, 427 255,248,113,255,248,156,252,242,15,45,193,252,242,15,42,208,102,15,46,202,
424 248,7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209, 428 15,133,244,254,15,138,244,255,248,157,131,252,248,1,15,142,244,252,248,1,
425 224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72, 429 169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,
426 209,224,15,132,244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244, 430 209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,
427 251,252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252, 431 250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,
428 240,221,68,36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201, 432 193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,
429 217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242, 433 184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,
430 15,16,68,36,252,248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46, 434 237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,
431 194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110, 435 12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,
432 208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244, 436 244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,
433 1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72, 437 17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68,36,
434 184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133, 438 252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,217,
435 244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195, 439 232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36,252,
436 248,154,255,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130, 440 248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,247,
437 244,105,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252, 441 15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84,194,
438 248,221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244, 442 72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80,193,
439 89,252,233,244,253,248,1,232,244,150,255,252,233,244,253,248,2,131,252,255, 443 15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237,255,
440 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244, 444 102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,192,
441 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9, 445 195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,158,255,131,
442 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244, 446 252,255,1,15,130,244,87,15,132,244,89,131,252,255,3,15,130,244,110,15,135,
443 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244, 447 244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68,36,
444 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216, 448 252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,94,252,233,244,
445 248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12, 449 253,248,1,232,244,154,255,252,233,244,253,248,2,131,252,255,7,15,132,244,
446 221,68,36,4,131,252,255,1,15,130,244,83,15,132,244,85,131,252,255,3,15,130, 450 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1,
447 244,105,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,89, 451 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132,244,
448 15,132,244,150,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217, 452 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1,
449 201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255, 453 255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,135,
450 9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248, 454 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92,
451 1,217,252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217, 455 36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,4,
452 252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,155,255,131, 456 131,252,255,1,15,130,244,87,15,132,244,89,131,252,255,3,15,130,244,110,15,
453 252,255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242, 457 135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,94,15,132,244,
454 15,92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15, 458 154,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
455 89,193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,149, 459 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,9,15,132,
456 15,132,244,108,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237, 460 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
457 255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200, 461 252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255,
458 15,84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252, 462 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,159,255,131,252,255,
459 248,252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132, 463 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
460 244,247,217,252,243,248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195, 464 193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,193,
461 248,1,217,201,217,252,253,221,217,252,233,244,7,248,2,131,252,255,11,15,132, 465 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,153,15,132,
462 244,247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195, 466 244,113,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102,
463 248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132, 467 72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,84,
464 244,247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248, 468 193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,252,
465 3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 469 242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,247,
466 252,248,5,15,130,244,149,15,132,244,108,131,252,248,7,15,132,244,247,15,135, 470 217,252,243,248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,248,1,
471 217,201,217,252,253,221,217,252,233,244,7,248,2,131,252,255,11,15,132,244,
472 247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,
473 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,
474 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,
475 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,
476 252,248,5,15,130,244,153,15,132,244,113,131,252,248,7,15,132,244,247,15,135,
467 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 477 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,
468 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 478 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,
469 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 479 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,
470 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 480 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,
471 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 481 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,
472 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 482 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,
473 156,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,157, 483 160,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,161,
474 255,85,72,137,229,83,72,137,252,251,139,131,233,72,41,196,255,15,182,139, 484 255,85,72,137,229,83,72,137,252,251,139,131,233,72,41,196,255,15,182,139,
475 233,131,252,233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132, 485 233,131,252,233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,
476 253,204,233,131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,187,233, 486 253,204,233,131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,187,233,
@@ -479,247 +489,298 @@ static const unsigned char build_actionlist[14600] = {
479 155,233,131,252,248,4,15,134,244,251,15,40,163,233,15,40,171,233,15,40,179, 489 155,233,131,252,248,4,15,134,244,251,15,40,163,233,15,40,171,233,15,40,179,
480 233,15,40,187,233,248,5,252,255,147,233,72,137,131,233,15,41,131,233,72,137, 490 233,15,40,187,233,248,5,252,255,147,233,72,137,131,233,15,41,131,233,72,137,
481 147,233,15,41,139,233,255,72,139,93,252,248,201,195,255,249,255,129,124,253, 491 147,233,15,41,139,233,255,72,139,93,252,248,201,195,255,249,255,129,124,253,
482 202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,15, 492 202,4,239,15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,
483 16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4,194,131,195,4,255, 493 131,195,4,59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,
484 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15, 494 255,255,15,142,244,255,255,248,6,15,183,67,252,254,141,156,253,131,233,248,
485 131,244,248,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,139,3,15, 495 9,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
486 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108, 496 248,7,15,135,244,41,129,124,253,194,4,239,15,130,244,247,15,133,244,41,255,
487 194,4,131,195,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135, 497 252,242,15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,
488 244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255, 498 255,248,8,15,135,244,41,255,252,242,15,42,12,202,252,242,15,16,4,194,131,
489 15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1, 499 195,4,102,15,46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,
490 15,183,67,252,254,141,156,253,131,233,248,2,255,248,2,15,183,67,252,254,141, 500 15,131,244,9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,
491 156,253,131,233,248,1,255,248,5,255,129,252,253,239,15,132,244,46,129,124, 501 253,202,4,239,15,131,244,41,129,124,253,194,4,239,15,131,244,41,255,248,1,
492 253,202,4,239,15,132,244,46,255,57,108,202,4,15,133,244,2,129,252,253,239, 502 252,242,15,16,4,194,248,2,131,195,4,102,15,46,4,202,248,3,255,248,1,221,4,
493 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15, 503 202,248,2,221,4,194,248,3,131,195,4,255,223,252,233,221,216,255,218,252,233,
494 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133, 504 223,224,158,255,15,134,244,247,255,15,135,244,247,255,15,130,244,247,255,
495 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,248,3,129,252, 505 15,131,244,247,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,
496 253,239,15,133,244,2,252,233,244,46,255,72,252,247,208,139,108,202,4,131, 506 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,
497 195,4,129,252,253,239,15,133,244,249,139,12,202,65,59,12,135,255,139,108, 507 4,131,195,4,255,129,252,253,239,15,133,244,253,129,124,253,202,4,239,15,133,
498 202,4,131,195,4,129,252,253,239,15,135,244,249,255,252,242,65,15,16,4,199, 508 244,254,139,44,194,59,44,202,255,15,133,244,255,255,15,132,244,255,255,15,
499 102,15,46,4,202,255,221,4,202,65,221,4,199,255,72,252,247,208,139,108,202, 509 183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,131,
500 4,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254,141,156,253,131,233, 510 195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,251,129,124,253,202,
501 248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 511 4,239,15,130,244,247,15,133,244,251,255,252,242,15,42,4,202,255,219,4,202,
502 238,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,15,132,244,248, 512 255,252,233,244,248,248,8,15,135,244,251,255,252,242,15,42,4,194,102,15,46,
503 129,252,253,239,15,132,244,46,15,183,67,252,254,141,156,253,131,233,248,2, 513 4,202,255,219,4,194,221,4,202,255,252,233,244,250,255,129,252,253,239,15,
504 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 514 131,244,251,129,124,253,202,4,239,15,131,244,251,255,248,1,252,242,15,16,
505 139,108,194,4,131,195,4,129,252,253,239,255,15,131,244,247,255,15,130,244, 515 4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,2,221,4,194,248,
506 247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,67,252,254,141,156, 516 4,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,
507 253,131,233,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, 517 248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,2,15,183,67,252,
508 255,36,252,238,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232, 518 254,141,156,253,131,233,248,1,255,252,233,244,9,255,248,5,255,129,252,253,
509 131,195,4,193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194, 519 239,15,132,244,46,129,124,253,202,4,239,15,132,244,46,255,57,108,202,4,15,
510 4,239,129,213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193, 520 133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,
511 232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,49,255, 521 244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,
512 252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15, 522 246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,
513 17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133, 523 45,255,248,3,129,252,253,239,255,15,133,244,9,255,252,233,244,46,255,72,252,
514 244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17, 524 247,208,139,108,202,4,131,195,4,129,252,253,239,15,133,244,249,139,12,202,
515 4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,232,131, 525 65,59,12,135,255,139,108,202,4,131,195,4,255,129,252,253,239,15,133,244,253,
516 195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,15,133, 526 65,129,124,253,199,4,239,15,133,244,254,65,139,44,199,59,44,202,255,15,183,
517 244,51,139,60,194,137,213,232,251,1,19,255,252,242,15,42,192,137,252,234, 527 67,252,254,141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,131,195,
518 255,15,182,75,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129, 528 4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,249,65,129,124,253,199,
519 124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,252,234,252,242,65, 529 4,239,15,130,244,247,255,252,242,65,15,42,4,199,255,65,219,4,199,255,252,
520 15,88,4,199,255,221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239, 530 233,244,248,248,8,255,252,242,15,42,4,202,102,65,15,46,4,199,255,219,4,202,
521 15,135,244,48,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221, 531 221,4,194,255,129,252,253,239,15,131,244,249,255,248,1,252,242,65,15,16,4,
522 4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,50,129,124,253, 532 199,248,2,102,15,46,4,202,248,4,255,248,1,65,221,4,199,248,2,221,4,202,255,
523 194,4,239,15,135,244,50,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255, 533 72,252,247,208,139,108,202,4,131,195,4,57,197,255,15,133,244,249,15,183,67,
524 221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199, 534 252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,
525 255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92, 535 232,16,65,252,255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,
526 4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252, 536 46,255,15,132,244,248,129,252,253,239,15,132,244,46,15,183,67,252,254,141,
527 242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234, 537 156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
528 252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15, 538 252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,239,255,137,108,
529 16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252, 539 202,4,139,44,194,137,44,202,255,72,139,44,194,72,137,44,202,139,3,15,182,
530 242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255, 540 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,49,252,237,
531 252,242,15,16,4,252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52, 541 129,124,253,194,4,239,129,213,239,137,108,202,4,139,3,15,182,204,15,182,232,
532 199,255,252,242,65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220, 542 131,195,4,193,232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,133,
533 52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252, 543 244,251,139,44,194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,
534 234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221, 544 248,9,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
535 4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234, 545 238,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,
536 255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, 546 135,244,51,255,129,124,253,194,4,239,15,131,244,51,255,252,242,15,16,4,194,
537 12,194,255,221,4,252,234,221,4,194,255,248,158,232,244,149,255,252,233,244, 547 72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,
538 158,255,232,244,108,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233, 548 194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,
539 141,52,194,137,194,41,252,234,248,33,137,252,253,137,92,36,28,232,251,1,26, 549 255,139,128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,
540 139,149,233,133,192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,72, 550 42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,
541 139,4,252,234,72,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
542 16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,
543 137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
544 252,238,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,
545 254,221,28,202,255,252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,
546 4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,
547 232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,
548 4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,
549 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,
550 106,252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,202,139,
551 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,
552 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,
553 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,
554 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
555 252,238,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,
556 15,132,244,1,137,252,238,137,213,65,141,190,233,255,232,251,1,27,137,252,
557 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,
558 65,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,
559 248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
560 252,238,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,
561 137,213,137,198,65,141,190,233,232,251,1,27,137,252,234,252,233,244,1,255,
562 139,106,252,248,255,252,242,65,15,16,4,199,255,139,172,253,141,233,139,141,
563 233,255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,
564 172,253,141,233,139,141,233,137,65,4,139,3,15,182,204,15,182,232,131,195,
565 4,193,232,16,65,252,255,36,252,238,255,141,156,253,131,233,139,108,36,24,
566 131,189,233,0,15,132,244,247,137,149,233,141,52,202,137,252,239,232,251,1,
567 28,139,149,233,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
568 252,255,36,252,238,255,72,252,247,208,139,108,36,24,137,149,233,139,82,252,
569 248,65,139,52,135,137,252,239,137,92,36,28,232,251,1,29,139,149,233,15,182,
570 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,
571 4,193,232,16,65,252,255,36,252,238,255,139,108,36,24,137,149,233,65,139,142,
572 233,65,59,142,233,137,92,36,28,15,131,244,251,248,1,137,194,37,252,255,7,
573 0,0,193,252,234,11,61,252,255,7,0,0,15,132,244,249,248,2,137,252,239,137,
574 198,232,251,1,30,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,
575 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,
576 3,184,1,8,0,0,252,233,244,2,248,5,137,252,239,232,251,1,31,15,183,67,252,
577 254,252,233,244,1,255,72,252,247,208,139,108,36,24,65,139,142,233,137,92,
578 36,28,65,59,142,233,137,149,233,15,131,244,249,248,2,65,139,52,135,137,252,
579 239,232,251,1,32,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,
580 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248, 551 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,
581 3,137,252,239,232,251,1,31,15,183,67,252,254,72,252,247,208,252,233,244,2, 552 2,129,124,253,194,4,239,15,133,244,54,139,60,194,137,213,232,251,1,20,255,
582 255,72,252,247,208,139,106,252,248,139,173,233,65,139,4,135,252,233,244,159, 553 252,242,15,42,192,255,137,252,234,15,182,75,252,253,252,233,244,1,255,15,
583 255,72,252,247,208,139,106,252,248,139,173,233,65,139,4,135,252,233,244,160, 554 182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,133,244,48,65,129,
584 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139, 555 124,253,199,4,239,15,133,244,48,139,44,252,234,65,3,44,199,15,128,244,47,
585 44,252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, 556 255,129,124,253,252,234,4,239,15,133,244,50,65,129,124,253,199,4,239,15,133,
586 242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233, 557 244,50,65,139,4,199,3,4,252,234,15,128,244,49,255,129,124,253,252,234,4,239,
587 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139, 558 15,133,244,53,129,124,253,194,4,239,15,133,244,53,139,44,252,234,3,44,194,
588 40,72,137,44,202,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 559 15,128,244,52,255,199,68,202,4,237,255,129,124,253,252,234,4,239,15,131,244,
589 252,255,36,252,238,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246, 560 48,255,65,129,124,253,199,4,239,15,131,244,48,255,252,242,15,16,4,252,234,
590 129,233,235,15,132,244,36,15,182,75,252,253,248,3,255,199,68,202,4,237,252, 561 252,242,65,15,88,4,199,255,221,4,252,234,65,220,4,199,255,129,124,253,252,
591 233,244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244, 562 234,4,239,15,131,244,50,255,65,129,124,253,199,4,239,15,131,244,50,255,252,
592 159,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253, 563 242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,
593 252,234,4,239,15,133,244,34,139,44,252,234,248,159,139,141,233,35,136,233, 564 255,129,124,253,252,234,4,239,15,131,244,53,129,124,253,194,4,239,15,131,
594 105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15, 565 244,53,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,
595 133,244,250,129,121,253,4,239,15,132,244,251,15,182,67,252,253,72,139,41, 566 220,4,194,255,129,124,253,252,234,4,239,15,133,244,48,65,129,124,253,199,
596 72,137,44,194,248,2,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 567 4,239,15,133,244,48,139,44,252,234,65,43,44,199,15,128,244,47,255,129,124,
597 65,252,255,36,252,238,248,3,15,182,67,252,253,199,68,194,4,237,252,233,244, 568 253,252,234,4,239,15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,65,
598 2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132, 569 139,4,199,43,4,252,234,15,128,244,49,255,129,124,253,252,234,4,239,15,133,
599 244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,236, 570 244,53,129,124,253,194,4,239,15,133,244,53,139,44,252,234,43,44,194,15,128,
600 15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133, 571 244,52,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,
601 233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72, 572 65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,
602 139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232, 573 4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,
574 221,4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,48,65,129,
575 124,253,199,4,239,15,133,244,48,139,44,252,234,65,15,175,44,199,15,128,244,
576 47,255,129,124,253,252,234,4,239,15,133,244,50,65,129,124,253,199,4,239,15,
577 133,244,50,65,139,4,199,15,175,4,252,234,15,128,244,49,255,129,124,253,252,
578 234,4,239,15,133,244,53,129,124,253,194,4,239,15,133,244,53,139,44,252,234,
579 15,175,44,194,15,128,244,52,255,252,242,15,16,4,252,234,252,242,65,15,89,
580 4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,
581 15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,
582 252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,
583 234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,
584 15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,
585 242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,
586 252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,
587 4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,
588 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,
589 252,234,221,4,194,255,248,162,232,244,153,255,252,233,244,162,255,232,244,
590 113,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233,141,52,194,137,
591 194,41,252,234,248,33,137,252,253,137,92,36,28,232,251,1,27,139,149,233,133,
592 192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,72,139,4,252,234,72,
593 137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
594 252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202,139,3,
595 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,15,191,
596 192,199,68,202,4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,
597 17,4,202,255,223,67,252,254,221,28,202,255,252,242,65,15,16,4,199,252,242,
598 15,17,4,202,255,65,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,
599 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,
600 76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,
601 193,15,134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
602 255,36,252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,72,139,
603 69,0,72,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
604 255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,
605 173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,
606 133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,
607 232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239,15,134,244,
608 1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141,190,233,255,
609 232,251,1,28,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,248,
610 139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4,237,252,246,
611 133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,195,4,193,
612 232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132,244,1,128,189,
613 233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1,28,137,252,234,
614 252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199,255,139,172,
615 253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,247,208,
616 139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,3,15,182,204,
617 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,156,253,131,
618 233,139,108,36,24,131,189,233,0,15,132,244,247,137,149,233,141,52,202,137,
619 252,239,232,251,1,29,139,149,233,248,1,139,3,15,182,204,15,182,232,131,195,
620 4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,139,108,36,24,137,149,
621 233,139,82,252,248,65,139,52,135,137,252,239,137,92,36,28,232,251,1,30,139,
622 149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,
623 182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,36,24,137,
624 149,233,65,139,142,233,65,59,142,233,137,92,36,28,15,131,244,251,248,1,137,
625 194,37,252,255,7,0,0,193,252,234,11,61,252,255,7,0,0,15,132,244,249,248,2,
626 137,252,239,137,198,232,251,1,31,139,149,233,15,182,75,252,253,137,4,202,
627 199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
628 255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,239,232,251,
629 1,32,15,183,67,252,254,252,233,244,1,255,72,252,247,208,139,108,36,24,65,
630 139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,131,244,249,248,2,65,
631 139,52,135,137,252,239,232,251,1,33,139,149,233,15,182,75,252,253,137,4,202,
632 199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
633 255,36,252,238,248,3,137,252,239,232,251,1,32,15,183,67,252,254,72,252,247,
634 208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,65,139,4,
635 135,252,233,244,163,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
636 4,135,252,233,244,164,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
637 239,15,133,244,36,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251,
638 139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,252,242,15,16,4,194,
639 252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,36,255,59,
640 133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,
641 72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,
642 16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,244,249,139,141,233,252,
643 246,129,233,235,15,132,244,36,15,182,75,252,253,248,3,199,68,202,4,237,252,
644 233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,
645 244,163,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,
646 253,252,234,4,239,15,133,244,34,139,44,252,234,248,163,139,141,233,35,136,
647 233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,
648 15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,67,252,253,72,139,
649 41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232,131,195,4,193,232,
650 16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68,194,4,237,252,233,
651 244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,
652 132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,
653 236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,
654 133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,
655 72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,
603 16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,244,249,139,141,233,252, 656 16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,244,249,139,141,233,252,
604 246,129,233,235,15,132,244,35,255,15,182,75,252,253,248,3,199,68,202,4,237, 657 246,129,233,235,15,132,244,35,255,15,182,75,252,253,248,3,199,68,202,4,237,
605 252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15, 658 252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,
606 133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133, 659 133,244,39,139,44,252,234,255,15,133,244,39,255,59,133,233,15,131,244,39,
607 244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15, 660 193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,
608 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202, 661 235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,3,15,182,204,15,182,
609 72,137,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 662 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15,132,
610 252,238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233, 663 244,1,139,141,233,252,246,129,233,235,255,15,132,244,39,15,182,75,252,253,
611 235,15,132,244,39,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4, 664 252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,194,252,233,
612 239,15,133,244,39,139,4,194,252,233,244,160,248,7,128,165,233,235,65,139, 665 244,164,248,7,128,165,233,235,65,139,142,233,65,137,174,233,137,141,233,15,
613 142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15, 666 182,75,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,247,208,
614 182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4, 667 65,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,164,
615 239,15,133,244,37,139,44,252,234,248,160,139,141,233,35,136,233,105,201,239, 668 139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,
616 198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15, 669 233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,
617 133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235, 670 244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,67,252,
618 15,133,244,253,248,3,15,182,67,252,253,72,139,44,194,72,137,41,139,3,15,182, 671 253,72,139,44,194,72,137,41,139,3,15,182,204,15,182,232,131,195,4,193,232,
619 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,131,189,233, 672 16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,
620 0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,15,132,244,37,139, 673 233,252,246,129,233,235,15,132,244,37,139,12,36,252,233,244,2,248,5,139,137,
621 12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233, 674 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,
622 133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,4,36,199, 675 233,235,15,132,244,37,248,6,137,4,36,199,68,36,4,237,137,108,36,8,139,124,
623 68,36,4,237,137,108,36,8,139,124,36,24,137,151,233,72,141,20,36,137,252,238, 676 36,24,137,151,233,72,141,20,36,137,252,238,137,252,253,137,92,36,28,232,251,
624 137,252,253,137,92,36,28,232,251,1,33,139,149,233,139,108,36,8,137,193,252, 677 1,34,139,149,233,139,108,36,8,137,193,252,233,244,2,248,7,128,165,233,235,
625 233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233, 678 65,139,134,233,65,137,174,233,137,133,233,252,233,244,3,255,15,182,252,236,
626 252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15, 679 15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,
627 133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129, 680 233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
628 120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248, 681 1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,72,137,8,139,3,15,
629 2,72,139,12,202,72,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 682 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,
630 65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252, 683 233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,
631 246,129,233,235,15,132,244,38,15,182,75,252,253,252,233,244,1,248,7,128,165, 684 75,252,253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,
632 233,235,65,139,142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233, 685 233,137,141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,69,139,60,
633 244,2,255,68,137,60,36,69,139,60,199,248,1,141,12,202,139,105,252,248,252, 686 199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,
634 246,133,233,235,15,133,244,253,248,2,139,68,36,4,131,232,1,15,132,244,250, 687 2,139,68,36,4,131,232,1,15,132,244,250,68,1,252,248,59,133,233,15,135,244,
635 68,1,252,248,59,133,233,15,135,244,251,68,41,252,248,65,193,231,3,68,3,189, 688 251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,72,139,41,131,193,8,73,
636 233,248,3,72,139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244, 689 137,47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139,60,36,139,3,15,182,
637 3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 690 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,139,124,36,
638 252,255,36,252,238,248,5,139,124,36,24,137,151,233,137,252,238,137,194,137, 691 24,137,151,233,137,252,238,137,194,137,252,253,137,92,36,28,232,251,1,35,
639 252,253,137,92,36,28,232,251,1,34,139,149,233,15,182,75,252,253,252,233,244, 692 139,149,233,15,182,75,252,253,252,233,244,1,248,7,255,128,165,233,235,65,
640 1,248,7,255,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252, 693 139,134,233,65,137,174,233,137,133,233,252,233,244,2,255,3,68,36,4,255,129,
641 233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,52, 694 124,253,202,4,239,139,44,202,15,133,244,55,141,84,202,8,137,90,252,252,139,
642 141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205, 695 157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,
643 131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248, 696 255,141,76,202,8,65,137,215,139,105,252,248,129,121,253,252,252,239,15,133,
644 129,121,253,252,252,239,15,133,244,28,248,53,139,90,252,252,252,247,195,237, 697 244,28,248,56,139,90,252,252,252,247,195,237,15,133,244,253,248,1,137,106,
645 15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249, 698 252,248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,73,
646 248,2,72,139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,2,139, 699 137,47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,
647 106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,244,251,248,4,139,157, 700 4,128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15,182,252,233,15,
648 233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248, 701 182,205,131,195,4,65,252,255,36,252,238,248,5,255,252,247,195,237,15,133,
649 5,255,252,247,195,237,15,133,244,4,15,182,75,252,253,72,252,247,209,141,12, 702 244,4,15,182,75,252,253,72,252,247,209,141,12,202,68,139,121,252,248,69,139,
650 202,68,139,121,252,248,69,139,191,233,69,139,191,233,252,233,244,4,248,7, 703 191,233,69,139,191,233,252,233,244,4,248,7,129,252,235,239,252,247,195,237,
651 129,252,235,239,252,247,195,237,15,133,244,254,41,218,65,137,215,139,90,252, 704 15,133,244,254,41,218,65,137,215,139,90,252,252,252,233,244,1,248,8,129,195,
652 252,252,233,244,1,248,8,129,195,239,252,233,244,1,255,141,76,202,8,72,139, 705 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,
653 105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,224,139,65,228,137, 706 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,
654 105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,28,137,202, 707 252,248,239,184,237,15,133,244,28,137,202,137,90,252,252,139,157,233,139,
655 137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65, 708 11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,255,68,137,60,
656 252,255,36,252,238,255,68,137,60,36,68,137,116,36,4,139,108,202,252,240,139, 709 36,68,137,116,36,4,139,108,202,252,240,139,68,202,252,248,68,139,181,233,
657 68,202,252,248,68,139,181,233,131,195,4,68,139,189,233,248,1,68,57,252,240, 710 131,195,4,68,139,189,233,248,1,68,57,252,240,15,131,244,251,65,129,124,253,
658 15,131,244,251,65,129,124,253,199,4,239,15,132,244,250,255,252,242,15,42, 711 199,4,239,15,132,244,250,255,219,68,202,252,248,255,73,139,44,199,72,137,
659 192,255,219,68,202,252,248,255,73,139,44,199,72,137,108,202,8,131,192,1,255, 712 108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,67,252,254,141,156,
660 137,68,202,252,248,248,2,15,183,67,252,254,141,156,253,131,233,248,3,68,139, 713 253,131,233,248,3,68,139,116,36,4,68,139,60,36,139,3,15,182,204,15,182,232,
661 116,36,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 714 131,195,4,193,232,16,65,252,255,36,252,238,248,4,131,192,1,255,137,68,202,
662 252,255,36,252,238,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244, 715 252,248,255,252,233,244,1,248,5,68,41,252,240,248,6,59,133,233,15,135,244,
663 1,248,5,68,41,252,240,248,6,59,133,233,15,135,244,3,68,105,252,248,239,68, 716 3,68,105,252,248,239,68,3,189,233,65,129,191,233,239,15,132,244,253,70,141,
664 3,189,233,65,129,191,233,239,15,132,244,253,70,141,116,48,1,73,139,175,233, 717 116,48,1,73,139,175,233,73,139,135,233,72,137,44,202,72,137,68,202,8,68,137,
665 73,139,135,233,72,137,44,202,72,137,68,202,8,68,137,116,202,252,248,252,233, 718 116,202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6,255,129,124,253,
666 244,2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133, 719 202,252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239,
667 244,251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124, 720 15,133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235,
668 253,202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,156, 721 15,133,244,251,141,156,253,131,233,199,68,202,252,248,0,0,0,0,248,1,139,3,
669 253,131,233,199,68,202,252,248,0,0,0,0,248,1,139,3,15,182,204,15,182,232, 722 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,198,
670 131,195,4,193,232,16,65,252,255,36,252,238,248,5,198,67,252,252,235,141,156, 723 67,252,252,235,141,156,253,131,233,198,3,235,252,233,244,1,255,15,182,252,
671 253,131,233,198,3,235,252,233,244,1,255,15,182,252,236,15,182,192,68,137, 724 236,15,182,192,68,137,60,36,68,141,188,253,194,233,141,12,202,68,43,122,252,
672 60,36,68,141,188,253,194,233,141,12,202,68,43,122,252,252,133,252,237,15, 725 252,133,252,237,15,132,244,251,141,108,252,233,252,248,65,57,215,15,131,244,
673 132,244,251,141,108,252,233,252,248,65,57,215,15,131,244,248,248,1,73,139, 726 248,248,1,73,139,71,252,248,65,131,199,8,72,137,1,131,193,8,57,252,233,15,
674 71,252,248,65,131,199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,65,57, 727 131,244,249,65,57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,
675 215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248, 728 15,130,244,2,248,3,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,
676 3,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255, 729 232,16,65,252,255,36,252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41,252,
677 36,252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41,252,248,15,134,244,3,137, 730 248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,4,139,108,36,
678 197,193,252,237,3,131,197,1,137,108,36,4,139,108,36,24,1,200,59,133,233,15, 731 24,1,200,59,133,233,15,135,244,253,248,6,255,73,139,71,252,248,65,131,199,
679 135,244,253,248,6,255,73,139,71,252,248,65,131,199,8,72,137,1,131,193,8,65, 732 8,72,137,1,131,193,8,65,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,
680 57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,92,36, 733 137,141,233,137,92,36,28,65,41,215,139,116,36,4,131,252,238,1,137,252,239,
681 28,65,41,215,139,116,36,4,131,252,238,1,137,252,239,232,251,1,0,139,149,233, 734 232,251,1,0,139,149,233,139,141,233,65,1,215,252,233,244,6,255,193,225,3,
682 139,141,233,65,1,215,252,233,244,6,255,193,225,3,255,248,1,139,90,252,252, 735 255,248,1,139,90,252,252,137,68,36,4,252,247,195,237,15,133,244,253,255,248,
683 137,68,36,4,252,247,195,237,15,133,244,253,255,248,13,65,137,215,131,232, 736 13,65,137,215,131,232,1,15,132,244,249,248,2,73,139,44,15,73,137,111,252,
684 1,15,132,244,249,248,2,73,139,44,15,73,137,111,252,248,65,131,199,8,131,232, 737 248,65,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,4,15,182,107,252,
685 1,15,133,244,2,248,3,139,68,36,4,15,182,107,252,255,248,5,57,197,15,135,244, 738 255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,
686 252,255,72,139,44,10,72,137,106,252,248,255,248,5,56,67,252,255,15,135,244, 739 5,56,67,252,255,15,135,244,252,255,15,182,75,252,253,72,252,247,209,141,20,
687 252,255,15,182,75,252,253,72,252,247,209,141,20,202,68,139,122,252,248,69, 740 202,68,139,122,252,248,69,139,191,233,69,139,191,233,139,3,15,182,204,15,
688 139,191,233,69,139,191,233,139,3,15,182,204,15,182,232,131,195,4,193,232, 741 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,255,65,199,71,252,
689 16,65,252,255,36,252,238,248,6,255,65,199,71,252,252,237,65,131,199,8,255, 742 252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,
690 199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,171,233,252, 743 5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,
691 247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,221,209,252,237, 744 255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,
692 129,229,239,102,65,131,172,253,46,233,1,15,132,244,141,255,141,12,202,255, 745 145,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12,
693 129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,139, 746 239,15,133,244,57,129,121,253,20,239,15,133,244,57,139,41,131,121,16,0,15,
694 105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,15,16, 747 140,244,251,255,139,105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,
748 137,41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244,253,248,1,248,
749 6,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252,254,15,142,245,
750 248,1,248,6,255,15,143,244,253,248,6,141,156,253,131,233,248,1,255,248,7,
751 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,
752 5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,255,141,156,253,131,233,15,
753 183,67,252,254,15,141,245,255,15,140,244,7,255,252,233,244,6,248,9,255,129,
754 121,253,4,239,255,15,131,244,57,129,121,253,12,239,15,131,244,57,255,139,
755 105,20,255,129,252,253,239,15,131,244,57,255,252,242,15,16,1,252,242,15,16,
695 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255, 756 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,
696 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221, 757 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,
697 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24, 758 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,
698 15,140,244,247,255,217,201,248,1,255,15,183,67,252,254,255,15,131,244,248, 759 15,140,244,247,255,217,201,248,1,255,15,183,67,252,254,255,15,131,244,7,255,
699 141,156,253,131,233,255,141,156,253,131,233,15,183,67,252,254,15,131,245, 760 15,131,244,248,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252,
700 255,15,130,244,248,141,156,253,131,233,255,248,3,102,15,46,193,252,233,244, 761 254,15,131,245,255,15,130,244,7,255,15,130,244,248,141,156,253,131,233,255,
701 1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252, 762 248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,
702 252,139,41,137,105,252,248,252,233,245,255,141,156,253,131,233,139,1,137, 763 15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,
703 105,252,252,137,65,252,248,255,65,139,142,233,139,4,129,72,139,128,233,139, 764 141,156,253,131,233,139,1,137,105,252,252,137,65,252,248,255,65,139,142,233,
704 108,36,24,65,137,150,233,65,137,174,233,76,137,36,36,76,137,108,36,8,72,131, 765 139,4,129,72,139,128,233,139,108,36,24,65,137,150,233,65,137,174,233,76,137,
705 252,236,16,252,255,224,255,141,156,253,131,233,139,3,15,182,204,15,182,232, 766 36,36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,253,131,233,
706 131,195,4,193,232,16,65,252,255,36,252,238,255,137,221,209,252,237,129,229, 767 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
707 239,102,65,131,172,253,46,233,1,15,132,244,143,255,68,139,187,233,139,108, 768 137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,147,
708 36,24,141,12,202,59,141,233,15,135,244,23,15,182,139,233,57,200,15,134,244, 769 255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,135,244,23,15,182,
709 249,248,2,255,15,183,67,252,254,252,233,245,255,248,3,199,68,194,252,252, 770 139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,252,233,245,255,
710 237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4, 771 248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,
711 194,68,139,122,252,248,137,104,252,252,68,137,120,252,248,139,108,36,24,141, 772 255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252,252,68,137,120,
712 12,200,59,141,233,15,135,244,22,137,209,137,194,15,182,171,233,133,252,237, 773 252,248,139,108,36,24,141,12,200,59,141,233,15,135,244,22,137,209,137,194,
713 15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,68,139,121,252,248,68, 774 15,182,171,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
714 137,56,68,139,121,252,252,68,137,120,4,131,192,8,199,65,252,252,237,131,252, 775 249,68,139,121,252,248,68,137,56,68,139,121,252,252,68,137,120,4,131,192,
715 237,1,15,133,244,1,248,2,255,68,139,187,233,139,3,15,182,204,15,182,232,131, 776 8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,68,139,187,233,
716 195,4,193,232,16,65,252,255,36,252,238,255,248,3,199,64,4,237,131,192,8,131, 777 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
717 252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,76,139,189,233,139, 778 248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,
718 108,36,24,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233, 779 139,106,252,248,76,139,189,233,139,108,36,24,141,68,194,252,248,137,149,233,
719 255,137,252,239,255,76,137,252,254,137,252,239,255,15,135,244,21,65,199,134, 780 141,136,233,59,141,233,137,133,233,255,76,137,252,254,137,252,239,255,15,
720 233,237,255,65,252,255,215,255,65,252,255,150,233,255,65,199,134,233,237, 781 135,244,21,65,199,134,233,237,255,65,252,255,215,255,65,252,255,150,233,255,
721 139,149,233,141,12,194,252,247,217,3,141,233,139,90,252,252,252,233,244,12, 782 65,199,134,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,90,252,
722 255,254,0 783 252,252,233,244,12,255,254,0
723}; 784};
724 785
725enum { 786enum {
@@ -760,9 +821,12 @@ enum {
760 GLOB_cont_condf, 821 GLOB_cont_condf,
761 GLOB_vmeta_equal, 822 GLOB_vmeta_equal,
762 GLOB_vmeta_equal_cd, 823 GLOB_vmeta_equal_cd,
824 GLOB_vmeta_arith_vno,
763 GLOB_vmeta_arith_vn, 825 GLOB_vmeta_arith_vn,
826 GLOB_vmeta_arith_nvo,
764 GLOB_vmeta_arith_nv, 827 GLOB_vmeta_arith_nv,
765 GLOB_vmeta_unm, 828 GLOB_vmeta_unm,
829 GLOB_vmeta_arith_vvo,
766 GLOB_vmeta_arith_vv, 830 GLOB_vmeta_arith_vv,
767 GLOB_vmeta_len, 831 GLOB_vmeta_len,
768 GLOB_vmeta_call_ra, 832 GLOB_vmeta_call_ra,
@@ -777,6 +841,7 @@ enum {
777 GLOB_ff_setmetatable, 841 GLOB_ff_setmetatable,
778 GLOB_ff_rawget, 842 GLOB_ff_rawget,
779 GLOB_ff_tonumber, 843 GLOB_ff_tonumber,
844 GLOB_fff_resi,
780 GLOB_fff_resxmm0, 845 GLOB_fff_resxmm0,
781 GLOB_fff_resn, 846 GLOB_fff_resn,
782 GLOB_ff_tostring, 847 GLOB_ff_tostring,
@@ -794,11 +859,12 @@ enum {
794 GLOB_ff_coroutine_wrap_aux, 859 GLOB_ff_coroutine_wrap_aux,
795 GLOB_ff_coroutine_yield, 860 GLOB_ff_coroutine_yield,
796 GLOB_ff_math_abs, 861 GLOB_ff_math_abs,
797 GLOB_ff_math_sqrt, 862 GLOB_fff_resbit,
798 GLOB_ff_math_floor, 863 GLOB_ff_math_floor,
799 GLOB_vm_floor, 864 GLOB_vm_floor,
800 GLOB_ff_math_ceil, 865 GLOB_ff_math_ceil,
801 GLOB_vm_ceil, 866 GLOB_vm_ceil,
867 GLOB_ff_math_sqrt,
802 GLOB_ff_math_log, 868 GLOB_ff_math_log,
803 GLOB_ff_math_log10, 869 GLOB_ff_math_log10,
804 GLOB_ff_math_exp, 870 GLOB_ff_math_exp,
@@ -839,7 +905,6 @@ enum {
839 GLOB_ff_table_getn, 905 GLOB_ff_table_getn,
840 GLOB_ff_bit_tobit, 906 GLOB_ff_bit_tobit,
841 GLOB_ff_bit_band, 907 GLOB_ff_bit_band,
842 GLOB_fff_resbit,
843 GLOB_fff_fallback_bit_op, 908 GLOB_fff_fallback_bit_op,
844 GLOB_ff_bit_bor, 909 GLOB_ff_bit_bor,
845 GLOB_ff_bit_bxor, 910 GLOB_ff_bit_bxor,
@@ -914,9 +979,12 @@ static const char *const globnames[] = {
914 "cont_condf", 979 "cont_condf",
915 "vmeta_equal", 980 "vmeta_equal",
916 "vmeta_equal_cd", 981 "vmeta_equal_cd",
982 "vmeta_arith_vno",
917 "vmeta_arith_vn", 983 "vmeta_arith_vn",
984 "vmeta_arith_nvo",
918 "vmeta_arith_nv", 985 "vmeta_arith_nv",
919 "vmeta_unm", 986 "vmeta_unm",
987 "vmeta_arith_vvo",
920 "vmeta_arith_vv", 988 "vmeta_arith_vv",
921 "vmeta_len", 989 "vmeta_len",
922 "vmeta_call_ra", 990 "vmeta_call_ra",
@@ -931,6 +999,7 @@ static const char *const globnames[] = {
931 "ff_setmetatable", 999 "ff_setmetatable",
932 "ff_rawget", 1000 "ff_rawget",
933 "ff_tonumber", 1001 "ff_tonumber",
1002 "fff_resi",
934 "fff_resxmm0", 1003 "fff_resxmm0",
935 "fff_resn", 1004 "fff_resn",
936 "ff_tostring", 1005 "ff_tostring",
@@ -948,11 +1017,12 @@ static const char *const globnames[] = {
948 "ff_coroutine_wrap_aux", 1017 "ff_coroutine_wrap_aux",
949 "ff_coroutine_yield", 1018 "ff_coroutine_yield",
950 "ff_math_abs", 1019 "ff_math_abs",
951 "ff_math_sqrt", 1020 "fff_resbit",
952 "ff_math_floor", 1021 "ff_math_floor",
953 "vm_floor", 1022 "vm_floor",
954 "ff_math_ceil", 1023 "ff_math_ceil",
955 "vm_ceil", 1024 "vm_ceil",
1025 "ff_math_sqrt",
956 "ff_math_log", 1026 "ff_math_log",
957 "ff_math_log10", 1027 "ff_math_log10",
958 "ff_math_exp", 1028 "ff_math_exp",
@@ -993,7 +1063,6 @@ static const char *const globnames[] = {
993 "ff_table_getn", 1063 "ff_table_getn",
994 "ff_bit_tobit", 1064 "ff_bit_tobit",
995 "ff_bit_band", 1065 "ff_bit_band",
996 "fff_resbit",
997 "fff_fallback_bit_op", 1066 "fff_fallback_bit_op",
998 "ff_bit_bor", 1067 "ff_bit_bor",
999 "ff_bit_bxor", 1068 "ff_bit_bxor",
@@ -1042,6 +1111,7 @@ static const char *const extnames[] = {
1042 "lj_meta_call", 1111 "lj_meta_call",
1043 "lj_meta_for@8", 1112 "lj_meta_for@8",
1044 "lj_tab_get", 1113 "lj_tab_get",
1114 "lj_str_fromnumber@8",
1045 "lj_str_fromnum@8", 1115 "lj_str_fromnum@8",
1046 "lj_tab_next", 1116 "lj_tab_next",
1047 "lj_tab_getinth@8", 1117 "lj_tab_getinth@8",
@@ -1098,386 +1168,655 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1098 dasm_put(Dst, 529, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 1168 dasm_put(Dst, 529, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1099 dasm_put(Dst, 642, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc)); 1169 dasm_put(Dst, 642, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
1100 dasm_put(Dst, 807, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1170 dasm_put(Dst, 807, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1101 if (sse) { 1171 if (LJ_DUALNUM) {
1102 dasm_put(Dst, 912); 1172 dasm_put(Dst, 912, LJ_TISNUM);
1173 } else if (sse) {
1174 dasm_put(Dst, 921);
1103 } else { 1175 } else {
1104 } 1176 }
1105 dasm_put(Dst, 924, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1177 dasm_put(Dst, 933, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1106 dasm_put(Dst, 1070, DISPATCH_GL(tmptv), LJ_TTAB); 1178 dasm_put(Dst, 1079, DISPATCH_GL(tmptv), LJ_TTAB);
1107 if (sse) { 1179 if (LJ_DUALNUM) {
1108 dasm_put(Dst, 912); 1180 dasm_put(Dst, 912, LJ_TISNUM);
1181 } else if (sse) {
1182 dasm_put(Dst, 921);
1109 } else { 1183 } else {
1110 } 1184 }
1111 dasm_put(Dst, 1094, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1185 dasm_put(Dst, 1103, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1112 dasm_put(Dst, 1266, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1186 dasm_put(Dst, 1275, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1113 dasm_put(Dst, 1365); 1187 dasm_put(Dst, 1374);
1114#if LJ_HASFFI 1188#if LJ_HASFFI
1115 dasm_put(Dst, 1385, Dt1(->base)); 1189 dasm_put(Dst, 1394, Dt1(->base));
1190#endif
1191 dasm_put(Dst, 1425);
1192#if LJ_DUALNUM
1193 dasm_put(Dst, 1428);
1194#endif
1195 dasm_put(Dst, 1434);
1196#if LJ_DUALNUM
1197 dasm_put(Dst, 906);
1198#endif
1199 dasm_put(Dst, 1447);
1200#if LJ_DUALNUM
1201 dasm_put(Dst, 1428);
1116#endif 1202#endif
1117 dasm_put(Dst, 1416, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1); 1203 dasm_put(Dst, 1476, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
1118 dasm_put(Dst, 1530, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1204 dasm_put(Dst, 1608, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1119 dasm_put(Dst, 1715, 1+1, ~LJ_TNUMX); 1205 dasm_put(Dst, 1792, 1+1, ~LJ_TNUMX);
1120 if (cmov) { 1206 if (cmov) {
1121 dasm_put(Dst, 1813); 1207 dasm_put(Dst, 1837);
1122 } else { 1208 } else {
1123 dasm_put(Dst, 1817); 1209 dasm_put(Dst, 1841);
1210 }
1211 dasm_put(Dst, 1850, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1212 dasm_put(Dst, 1929, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1213 dasm_put(Dst, 1987, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
1214 dasm_put(Dst, 2056, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
1215 dasm_put(Dst, 2125, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1216 if (LJ_DUALNUM) {
1217 dasm_put(Dst, 2211);
1218 } else {
1219 dasm_put(Dst, 2228);
1124 } 1220 }
1125 dasm_put(Dst, 1826, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1126 dasm_put(Dst, 1905, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1127 dasm_put(Dst, 1963, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
1128 dasm_put(Dst, 2032, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
1129 dasm_put(Dst, 2101, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1130 dasm_put(Dst, 2187);
1131 if (sse) { 1221 if (sse) {
1132 dasm_put(Dst, 2192); 1222 dasm_put(Dst, 2233);
1223 } else {
1224 dasm_put(Dst, 2243);
1225 }
1226 dasm_put(Dst, 2250, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1227 dasm_put(Dst, 2319, Dt1(->base));
1228 if (LJ_DUALNUM) {
1229 dasm_put(Dst, 2345);
1133 } else { 1230 } else {
1134 dasm_put(Dst, 2202); 1231 dasm_put(Dst, 2350);
1135 } 1232 }
1136 dasm_put(Dst, 2209, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1233 dasm_put(Dst, 2355, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1137 dasm_put(Dst, 2278, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1234 dasm_put(Dst, 2447, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1138 dasm_put(Dst, 2347, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
1139 dasm_put(Dst, 2435, LJ_TTAB);
1140#ifdef LUAJIT_ENABLE_LUA52COMPAT 1235#ifdef LUAJIT_ENABLE_LUA52COMPAT
1141 dasm_put(Dst, 2447, Dt6(->metatable)); 1236 dasm_put(Dst, 2494, Dt6(->metatable));
1142#endif 1237#endif
1143 dasm_put(Dst, 2456, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1238 dasm_put(Dst, 2503, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1144 if (sse) { 1239 if (LJ_DUALNUM) {
1145 dasm_put(Dst, 2519, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1240 dasm_put(Dst, 2489);
1241 } else {
1242 dasm_put(Dst, 2228);
1243 }
1244 dasm_put(Dst, 2558);
1245 if (LJ_DUALNUM) {
1246 dasm_put(Dst, 2563, LJ_TISNUM);
1247 } else if (sse) {
1248 dasm_put(Dst, 2579, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1146 } else { 1249 } else {
1147 } 1250 }
1148 dasm_put(Dst, 2552, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1251 dasm_put(Dst, 2612, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1149 dasm_put(Dst, 2629, 1+1, LJ_TTAB); 1252 dasm_put(Dst, 2474, 1+1, LJ_TTAB);
1150#ifdef LUAJIT_ENABLE_LUA52COMPAT 1253#ifdef LUAJIT_ENABLE_LUA52COMPAT
1151 dasm_put(Dst, 2447, Dt6(->metatable)); 1254 dasm_put(Dst, 2494, Dt6(->metatable));
1152#endif 1255#endif
1153 dasm_put(Dst, 2649, Dt8(->upvalue[0]), LJ_TFUNC); 1256 dasm_put(Dst, 2689, Dt8(->upvalue[0]), LJ_TFUNC);
1154 if (sse) { 1257 if (LJ_DUALNUM) {
1155 dasm_put(Dst, 2670); 1258 dasm_put(Dst, 2710, LJ_TISNUM);
1156 } else { 1259 } else if (sse) {
1157 dasm_put(Dst, 2680); 1260 dasm_put(Dst, 2722);
1158 }
1159 dasm_put(Dst, 2687, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1160 dasm_put(Dst, 2752, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1161 dasm_put(Dst, 2841, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1162 dasm_put(Dst, 2928, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1163 dasm_put(Dst, 3043, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1164 dasm_put(Dst, 3138, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1165 dasm_put(Dst, 3204, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1166 dasm_put(Dst, 3293, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1167 dasm_put(Dst, 3403, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1168 if (sse) {
1169 dasm_put(Dst, 3430, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1170 } else { 1261 } else {
1171 dasm_put(Dst, 3494, 1+1, LJ_TISNUM); 1262 dasm_put(Dst, 2732);
1263 }
1264 dasm_put(Dst, 2739, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1265 dasm_put(Dst, 2804, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1266 dasm_put(Dst, 2893, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1267 dasm_put(Dst, 2980, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1268 dasm_put(Dst, 3095, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1269 dasm_put(Dst, 3190, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1270 dasm_put(Dst, 3256, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1271 dasm_put(Dst, 3345, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1272 dasm_put(Dst, 3455, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1273 if (!LJ_DUALNUM) {
1274 dasm_put(Dst, 3482);
1172 } 1275 }
1173 dasm_put(Dst, 3530, 1+1, FRAME_TYPE, LJ_TNIL);
1174 if (sse) { 1276 if (sse) {
1175 dasm_put(Dst, 3625, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1277 dasm_put(Dst, 3485);
1176 dasm_put(Dst, 3687, 1+1, LJ_TISNUM); 1278 }
1279 dasm_put(Dst, 3500, 1+1);
1280 if (LJ_DUALNUM) {
1281 dasm_put(Dst, 3511, LJ_TISNUM, LJ_TISNUM);
1177 } else { 1282 } else {
1178 dasm_put(Dst, 3717, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1283 dasm_put(Dst, 3591, LJ_TISNUM);
1179 dasm_put(Dst, 3776, 1+1, LJ_TISNUM);
1180 } 1284 }
1181 dasm_put(Dst, 3803, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1182 dasm_put(Dst, 3872, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1183 dasm_put(Dst, 3929, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1184 dasm_put(Dst, 3992, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1185 dasm_put(Dst, 4082);
1186 if (sse) { 1285 if (sse) {
1187 dasm_put(Dst, 4094, 1+1, LJ_TISNUM); 1286 dasm_put(Dst, 3601, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1287 } else {
1288 dasm_put(Dst, 3632);
1289 }
1290 dasm_put(Dst, 3649, 1+1, FRAME_TYPE, LJ_TNIL);
1291 if (LJ_DUALNUM) {
1292 dasm_put(Dst, 3746, LJ_TISNUM);
1188 } else { 1293 } else {
1294 dasm_put(Dst, 3591, LJ_TISNUM);
1189 } 1295 }
1190 dasm_put(Dst, 4119);
1191 if (sse) { 1296 if (sse) {
1192 dasm_put(Dst, 4133, 1+1, LJ_TISNUM); 1297 dasm_put(Dst, 3768);
1298 if (LJ_DUALNUM) {
1299 dasm_put(Dst, 3777);
1300 }
1301 dasm_put(Dst, 2238);
1302 } else {
1303 dasm_put(Dst, 3811);
1304 if (LJ_DUALNUM) {
1305 } else {
1306 dasm_put(Dst, 2245);
1307 }
1308 }
1309 dasm_put(Dst, 3817);
1310 if (LJ_DUALNUM) {
1311 dasm_put(Dst, 3746, LJ_TISNUM);
1193 } else { 1312 } else {
1313 dasm_put(Dst, 3591, LJ_TISNUM);
1194 } 1314 }
1195 dasm_put(Dst, 4158);
1196 if (sse) { 1315 if (sse) {
1197 dasm_put(Dst, 4172, 1+1, LJ_TISNUM); 1316 dasm_put(Dst, 3820);
1317 if (LJ_DUALNUM) {
1318 dasm_put(Dst, 3777);
1319 }
1320 dasm_put(Dst, 2238);
1198 } else { 1321 } else {
1322 dasm_put(Dst, 3829);
1323 if (LJ_DUALNUM) {
1324 } else {
1325 dasm_put(Dst, 2245);
1326 }
1199 } 1327 }
1200 dasm_put(Dst, 4197);
1201 if (sse) { 1328 if (sse) {
1202 dasm_put(Dst, 4213, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1329 dasm_put(Dst, 3835, 1+1, LJ_TISNUM);
1203 } else { 1330 } else {
1204 dasm_put(Dst, 4252, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1331 dasm_put(Dst, 3864, 1+1, LJ_TISNUM);
1205 } 1332 }
1206 dasm_put(Dst, 4285, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1333 dasm_put(Dst, 3893, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1207 dasm_put(Dst, 4350, 1+1, LJ_TISNUM); 1334 dasm_put(Dst, 3962, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1335 dasm_put(Dst, 4019, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1336 dasm_put(Dst, 4082, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1337 dasm_put(Dst, 4172);
1208 if (sse) { 1338 if (sse) {
1209 dasm_put(Dst, 4449); 1339 dasm_put(Dst, 4184, 1+1, LJ_TISNUM);
1210 } else { 1340 } else {
1211 dasm_put(Dst, 4455);
1212 } 1341 }
1213 dasm_put(Dst, 4462); 1342 dasm_put(Dst, 4209);
1214 if (sse) { 1343 if (sse) {
1215 dasm_put(Dst, 4487); 1344 dasm_put(Dst, 4223, 1+1, LJ_TISNUM);
1216 } else { 1345 } else {
1217 dasm_put(Dst, 4493);
1218 } 1346 }
1219 dasm_put(Dst, 4496, 1+2); 1347 dasm_put(Dst, 4248);
1220 if (sse) { 1348 if (sse) {
1221 dasm_put(Dst, 4505); 1349 dasm_put(Dst, 4262, 1+1, LJ_TISNUM);
1222 } else { 1350 } else {
1223 dasm_put(Dst, 4513);
1224 } 1351 }
1225 dasm_put(Dst, 4521); 1352 dasm_put(Dst, 4287);
1226 if (sse) { 1353 if (sse) {
1227 dasm_put(Dst, 4524, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1354 dasm_put(Dst, 4303, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1228 } else { 1355 } else {
1229 dasm_put(Dst, 4551); 1356 dasm_put(Dst, 4342, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1230 } 1357 }
1231 dasm_put(Dst, 4568); 1358 dasm_put(Dst, 4375, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1359 dasm_put(Dst, 4440, 1+1, LJ_TISNUM);
1232 if (sse) { 1360 if (sse) {
1233 dasm_put(Dst, 4584, 1+1, LJ_TISNUM); 1361 dasm_put(Dst, 4539);
1234 } else { 1362 } else {
1235 dasm_put(Dst, 4609, 1+1, LJ_TISNUM); 1363 dasm_put(Dst, 4545);
1236 } 1364 }
1237 dasm_put(Dst, 4631); 1365 dasm_put(Dst, 4552);
1238 if (sse) { 1366 if (sse) {
1239 dasm_put(Dst, 4653); 1367 dasm_put(Dst, 4577);
1240 } else { 1368 } else {
1241 dasm_put(Dst, 4679); 1369 dasm_put(Dst, 4583);
1242 } 1370 }
1243 dasm_put(Dst, 4696, 1+2); 1371 dasm_put(Dst, 4586, 1+2);
1244 if (sse) { 1372 if (sse) {
1245 dasm_put(Dst, 4736); 1373 dasm_put(Dst, 4595);
1246 } else { 1374 } else {
1247 dasm_put(Dst, 4744); 1375 dasm_put(Dst, 4603);
1248 } 1376 }
1249 dasm_put(Dst, 4754, 2+1, LJ_TISNUM, LJ_TISNUM); 1377 dasm_put(Dst, 4611);
1250 if (sse) { 1378 if (sse) {
1251 dasm_put(Dst, 4806, 2+1, LJ_TISNUM, LJ_TISNUM); 1379 dasm_put(Dst, 4614, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1252 } else { 1380 } else {
1253 dasm_put(Dst, 4853, 2+1, LJ_TISNUM, LJ_TISNUM); 1381 dasm_put(Dst, 4641);
1254 } 1382 }
1383 dasm_put(Dst, 4658);
1255 if (sse) { 1384 if (sse) {
1256 dasm_put(Dst, 4894, 1+1, LJ_TISNUM, LJ_TISNUM); 1385 dasm_put(Dst, 4674, 1+1, LJ_TISNUM);
1257 } else { 1386 } else {
1387 dasm_put(Dst, 4699, 1+1, LJ_TISNUM);
1258 } 1388 }
1389 dasm_put(Dst, 4721);
1259 if (sse) { 1390 if (sse) {
1260 dasm_put(Dst, 4965, 1+1, LJ_TISNUM, LJ_TISNUM); 1391 dasm_put(Dst, 4743);
1261 } else { 1392 } else {
1393 dasm_put(Dst, 4769);
1262 } 1394 }
1263 if (!sse) { 1395 dasm_put(Dst, 4786, 1+2);
1264 dasm_put(Dst, 5036); 1396 if (sse) {
1397 dasm_put(Dst, 4826);
1398 } else {
1399 dasm_put(Dst, 4834);
1265 } 1400 }
1266 dasm_put(Dst, 5045, 1+1, LJ_TSTR); 1401 dasm_put(Dst, 4844, 2+1, LJ_TISNUM, LJ_TISNUM);
1267 if (sse) { 1402 if (sse) {
1268 dasm_put(Dst, 5067, Dt5(->len)); 1403 dasm_put(Dst, 4896, 2+1, LJ_TISNUM, LJ_TISNUM);
1269 } else { 1404 } else {
1270 dasm_put(Dst, 5078, Dt5(->len)); 1405 dasm_put(Dst, 4943, 2+1, LJ_TISNUM, LJ_TISNUM);
1271 } 1406 }
1272 dasm_put(Dst, 5086, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1407 dasm_put(Dst, 4984, LJ_TISNUM);
1408 if (LJ_DUALNUM) {
1409 dasm_put(Dst, 4997, LJ_TISNUM);
1273 if (sse) { 1410 if (sse) {
1274 dasm_put(Dst, 5124); 1411 dasm_put(Dst, 4539);
1275 } else { 1412 } else {
1276 dasm_put(Dst, 5134);
1277 } 1413 }
1278 dasm_put(Dst, 5145, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1414 dasm_put(Dst, 5047);
1415 } else {
1416 dasm_put(Dst, 2228);
1417 }
1279 if (sse) { 1418 if (sse) {
1280 dasm_put(Dst, 5182); 1419 dasm_put(Dst, 5058, LJ_TISNUM);
1420 if (LJ_DUALNUM) {
1421 dasm_put(Dst, 5079);
1422 } else {
1423 dasm_put(Dst, 2228);
1424 }
1425 dasm_put(Dst, 5100);
1281 } else { 1426 } else {
1282 dasm_put(Dst, 5204);
1283 } 1427 }
1284 dasm_put(Dst, 5224, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1428 dasm_put(Dst, 5125, LJ_TISNUM);
1285 dasm_put(Dst, 2187); 1429 if (LJ_DUALNUM) {
1430 dasm_put(Dst, 5138, LJ_TISNUM);
1286 if (sse) { 1431 if (sse) {
1287 dasm_put(Dst, 5333); 1432 dasm_put(Dst, 4539);
1288 } else { 1433 } else {
1289 dasm_put(Dst, 5344);
1290 } 1434 }
1291 dasm_put(Dst, 5352, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1435 dasm_put(Dst, 5047);
1436 } else {
1437 dasm_put(Dst, 2228);
1438 }
1292 if (sse) { 1439 if (sse) {
1293 dasm_put(Dst, 5382); 1440 dasm_put(Dst, 5058, LJ_TISNUM);
1441 if (LJ_DUALNUM) {
1442 dasm_put(Dst, 5079);
1443 } else {
1444 dasm_put(Dst, 2228);
1445 }
1446 dasm_put(Dst, 5188);
1447 } else {
1448 }
1449 if (!sse) {
1450 dasm_put(Dst, 5213);
1451 }
1452 dasm_put(Dst, 5222, 1+1, LJ_TSTR);
1453 if (LJ_DUALNUM) {
1454 dasm_put(Dst, 5244, Dt5(->len));
1455 } else if (sse) {
1456 dasm_put(Dst, 5252, Dt5(->len));
1457 } else {
1458 dasm_put(Dst, 5263, Dt5(->len));
1459 }
1460 dasm_put(Dst, 5271, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1461 if (LJ_DUALNUM) {
1462 dasm_put(Dst, 5247);
1463 } else if (sse) {
1464 dasm_put(Dst, 5309);
1465 } else {
1466 dasm_put(Dst, 5319);
1467 }
1468 dasm_put(Dst, 5330, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1469 if (LJ_DUALNUM) {
1470 dasm_put(Dst, 5363);
1471 } else if (sse) {
1472 dasm_put(Dst, 5386);
1294 } else { 1473 } else {
1474 dasm_put(Dst, 5412);
1475 }
1476 dasm_put(Dst, 5436, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1477 if (LJ_DUALNUM) {
1478 dasm_put(Dst, 5545);
1479 } else if (sse) {
1480 dasm_put(Dst, 5557);
1481 } else {
1482 dasm_put(Dst, 5572);
1483 }
1484 dasm_put(Dst, 5584, LJ_TSTR, LJ_TISNUM);
1485 if (LJ_DUALNUM) {
1486 dasm_put(Dst, 2489);
1487 } else {
1488 dasm_put(Dst, 2228);
1489 }
1490 dasm_put(Dst, 5601, Dt5(->len));
1491 if (LJ_DUALNUM) {
1492 dasm_put(Dst, 5611);
1493 } else if (sse) {
1494 dasm_put(Dst, 5615);
1495 } else {
1496 }
1497 dasm_put(Dst, 5622, sizeof(GCstr)-1);
1498 dasm_put(Dst, 5697, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1499 dasm_put(Dst, 5758, LJ_TSTR, LJ_TISNUM);
1500 if (LJ_DUALNUM) {
1501 dasm_put(Dst, 5775);
1502 } else if (sse) {
1503 dasm_put(Dst, 5783);
1504 } else {
1505 dasm_put(Dst, 5794);
1506 }
1507 dasm_put(Dst, 5810, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1508 dasm_put(Dst, 5878, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1509 dasm_put(Dst, 5945, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1510 dasm_put(Dst, 6018, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1511 dasm_put(Dst, 6103, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1512 dasm_put(Dst, 6177, 1+1, LJ_TTAB);
1513 if (LJ_DUALNUM) {
1514 dasm_put(Dst, 6244);
1515 } else if (sse) {
1516 dasm_put(Dst, 6251);
1517 } else {
1518 }
1519 dasm_put(Dst, 6261, LJ_TISNUM);
1520 if (LJ_DUALNUM) {
1521 dasm_put(Dst, 6269);
1522 } else {
1523 dasm_put(Dst, 2228);
1295 } 1524 }
1296 dasm_put(Dst, 5389, sizeof(GCstr)-1);
1297 dasm_put(Dst, 5464, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1298 dasm_put(Dst, 5525, LJ_TSTR, LJ_TISNUM);
1299 if (sse) { 1525 if (sse) {
1300 dasm_put(Dst, 5546); 1526 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1527 } else {
1528 }
1529 dasm_put(Dst, 106);
1530 if (LJ_DUALNUM || sse) {
1531 if (!sse) {
1532 }
1533 dasm_put(Dst, 6310);
1301 } else { 1534 } else {
1302 dasm_put(Dst, 5553);
1303 } 1535 }
1304 dasm_put(Dst, 5565, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1536 dasm_put(Dst, 6315);
1305 dasm_put(Dst, 5633, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1306 dasm_put(Dst, 5700, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1307 dasm_put(Dst, 5773, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1308 dasm_put(Dst, 5858, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1309 dasm_put(Dst, 5932, 1+1, LJ_TTAB);
1310 if (sse) { 1537 if (sse) {
1311 dasm_put(Dst, 5999); 1538 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1312 } else { 1539 } else {
1540 dasm_put(Dst, 6328);
1541 }
1542 dasm_put(Dst, 2205, LJ_TISNUM);
1543 if (LJ_DUALNUM) {
1544 dasm_put(Dst, 6336);
1545 } else {
1546 dasm_put(Dst, 2228);
1313 } 1547 }
1314 if (sse) { 1548 if (sse) {
1315 dasm_put(Dst, 6009, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1549 dasm_put(Dst, 6353);
1550 } else {
1551 }
1552 dasm_put(Dst, 6368, LJ_TISNUM);
1553 if (LJ_DUALNUM) {
1554 dasm_put(Dst, 6393);
1316 } else { 1555 } else {
1556 dasm_put(Dst, 6413);
1317 } 1557 }
1318 if (sse) { 1558 if (sse) {
1319 dasm_put(Dst, 6061, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1559 dasm_put(Dst, 6418);
1320 } else { 1560 } else {
1321 } 1561 }
1322 dasm_put(Dst, 6104, LJ_TISNUM); 1562 dasm_put(Dst, 6435);
1323 if (sse) { 1563 if (sse) {
1324 dasm_put(Dst, 6131); 1564 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1325 } else { 1565 } else {
1566 dasm_put(Dst, 6328);
1567 }
1568 dasm_put(Dst, 2205, LJ_TISNUM);
1569 if (LJ_DUALNUM) {
1570 dasm_put(Dst, 6336);
1571 } else {
1572 dasm_put(Dst, 2228);
1326 } 1573 }
1327 dasm_put(Dst, 6148);
1328 if (sse) { 1574 if (sse) {
1329 dasm_put(Dst, 6156, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1575 dasm_put(Dst, 6353);
1576 } else {
1577 }
1578 dasm_put(Dst, 6368, LJ_TISNUM);
1579 if (LJ_DUALNUM) {
1580 dasm_put(Dst, 6445);
1330 } else { 1581 } else {
1582 dasm_put(Dst, 6413);
1331 } 1583 }
1332 dasm_put(Dst, 6104, LJ_TISNUM);
1333 if (sse) { 1584 if (sse) {
1334 dasm_put(Dst, 6199); 1585 dasm_put(Dst, 6465);
1335 } else { 1586 } else {
1336 } 1587 }
1337 dasm_put(Dst, 6148); 1588 dasm_put(Dst, 6482);
1338 if (sse) { 1589 if (sse) {
1339 dasm_put(Dst, 6216, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1590 dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1591 } else {
1592 dasm_put(Dst, 6328);
1593 }
1594 dasm_put(Dst, 2205, LJ_TISNUM);
1595 if (LJ_DUALNUM) {
1596 dasm_put(Dst, 6336);
1340 } else { 1597 } else {
1598 dasm_put(Dst, 2228);
1341 } 1599 }
1342 dasm_put(Dst, 6104, LJ_TISNUM);
1343 if (sse) { 1600 if (sse) {
1344 dasm_put(Dst, 6259); 1601 dasm_put(Dst, 6353);
1602 } else {
1603 }
1604 dasm_put(Dst, 6368, LJ_TISNUM);
1605 if (LJ_DUALNUM) {
1606 dasm_put(Dst, 6492);
1345 } else { 1607 } else {
1608 dasm_put(Dst, 6413);
1346 } 1609 }
1347 dasm_put(Dst, 6148);
1348 if (sse) { 1610 if (sse) {
1349 dasm_put(Dst, 6276, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1611 dasm_put(Dst, 6512);
1612 } else {
1613 }
1614 dasm_put(Dst, 6529, LJ_TISNUM);
1615 if (LJ_DUALNUM) {
1616 dasm_put(Dst, 6336);
1350 } else { 1617 } else {
1618 dasm_put(Dst, 2228);
1351 } 1619 }
1352 dasm_put(Dst, 6319);
1353 if (sse) { 1620 if (sse) {
1354 dasm_put(Dst, 6326, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1621 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1622 } else {
1623 }
1624 dasm_put(Dst, 6544, LJ_TISNUM);
1625 if (LJ_DUALNUM) {
1626 dasm_put(Dst, 6336);
1355 } else { 1627 } else {
1628 dasm_put(Dst, 2228);
1356 } 1629 }
1357 dasm_put(Dst, 6369);
1358 if (sse) { 1630 if (sse) {
1359 dasm_put(Dst, 6373); 1631 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1632 } else {
1633 }
1634 dasm_put(Dst, 6560);
1635 if (LJ_DUALNUM) {
1636 dasm_put(Dst, 6310);
1637 } else if (sse) {
1638 dasm_put(Dst, 6566);
1639 } else {
1640 }
1641 dasm_put(Dst, 6578);
1642 if (LJ_DUALNUM) {
1643 dasm_put(Dst, 6589, LJ_TISNUM);
1644 if (LJ_DUALNUM) {
1645 dasm_put(Dst, 6336);
1360 } else { 1646 } else {
1647 dasm_put(Dst, 2228);
1361 } 1648 }
1362 dasm_put(Dst, 6385);
1363 if (sse) { 1649 if (sse) {
1364 dasm_put(Dst, 6396, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1650 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1365 } else { 1651 } else {
1366 } 1652 }
1367 dasm_put(Dst, 6465); 1653 dasm_put(Dst, 6597, LJ_TISNUM);
1654 } else if (sse) {
1655 dasm_put(Dst, 6612, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1656 } else {
1657 }
1658 dasm_put(Dst, 6679);
1659 if (LJ_DUALNUM) {
1660 dasm_put(Dst, 6686, LJ_TISNUM);
1661 if (LJ_DUALNUM) {
1662 dasm_put(Dst, 6336);
1663 } else {
1664 dasm_put(Dst, 2228);
1665 }
1368 if (sse) { 1666 if (sse) {
1369 dasm_put(Dst, 6474, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1667 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1668 } else {
1669 }
1670 dasm_put(Dst, 6597, LJ_TISNUM);
1671 } else if (sse) {
1672 dasm_put(Dst, 6694, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1370 } else { 1673 } else {
1371 } 1674 }
1372 dasm_put(Dst, 6543); 1675 dasm_put(Dst, 6761);
1676 if (LJ_DUALNUM) {
1677 dasm_put(Dst, 6769, LJ_TISNUM);
1678 if (LJ_DUALNUM) {
1679 dasm_put(Dst, 6336);
1680 } else {
1681 dasm_put(Dst, 2228);
1682 }
1373 if (sse) { 1683 if (sse) {
1374 dasm_put(Dst, 6553, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1684 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1685 } else {
1686 }
1687 dasm_put(Dst, 6597, LJ_TISNUM);
1688 } else if (sse) {
1689 dasm_put(Dst, 6777, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1375 } else { 1690 } else {
1376 } 1691 }
1377 dasm_put(Dst, 6622); 1692 dasm_put(Dst, 6844);
1693 if (LJ_DUALNUM) {
1694 dasm_put(Dst, 6852, LJ_TISNUM);
1695 if (LJ_DUALNUM) {
1696 dasm_put(Dst, 6336);
1697 } else {
1698 dasm_put(Dst, 2228);
1699 }
1378 if (sse) { 1700 if (sse) {
1379 dasm_put(Dst, 6632, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1701 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1702 } else {
1703 }
1704 dasm_put(Dst, 6597, LJ_TISNUM);
1705 } else if (sse) {
1706 dasm_put(Dst, 6860, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1380 } else { 1707 } else {
1381 } 1708 }
1382 dasm_put(Dst, 6701); 1709 dasm_put(Dst, 6927);
1710 if (LJ_DUALNUM) {
1711 dasm_put(Dst, 6934, LJ_TISNUM);
1712 if (LJ_DUALNUM) {
1713 dasm_put(Dst, 6336);
1714 } else {
1715 dasm_put(Dst, 2228);
1716 }
1383 if (sse) { 1717 if (sse) {
1384 dasm_put(Dst, 6710, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1718 dasm_put(Dst, 6286, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1719 } else {
1720 }
1721 dasm_put(Dst, 6597, LJ_TISNUM);
1722 } else if (sse) {
1723 dasm_put(Dst, 6942, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1385 } else { 1724 } else {
1386 } 1725 }
1387 dasm_put(Dst, 6779, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1726 dasm_put(Dst, 7009, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1388 dasm_put(Dst, 6857, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1727 dasm_put(Dst, 7085, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1389 dasm_put(Dst, 6984, Dt1(->top), Dt1(->base), Dt1(->top)); 1728 dasm_put(Dst, 7212, Dt1(->top), Dt1(->base), Dt1(->top));
1390#if LJ_HASJIT 1729#if LJ_HASJIT
1391 dasm_put(Dst, 7023, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1730 dasm_put(Dst, 7251, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1392#endif 1731#endif
1393 dasm_put(Dst, 7056, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1732 dasm_put(Dst, 7284, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1394 dasm_put(Dst, 7110, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1733 dasm_put(Dst, 7338, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1395#if LJ_HASJIT 1734#if LJ_HASJIT
1396 dasm_put(Dst, 7177, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1735 dasm_put(Dst, 7405, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1397#endif 1736#endif
1398 dasm_put(Dst, 7224); 1737 dasm_put(Dst, 7452);
1399#if LJ_HASJIT 1738#if LJ_HASJIT
1400 dasm_put(Dst, 7051); 1739 dasm_put(Dst, 7279);
1401#endif 1740#endif
1402 dasm_put(Dst, 7231); 1741 dasm_put(Dst, 7459);
1403#if LJ_HASJIT 1742#if LJ_HASJIT
1404 dasm_put(Dst, 7234); 1743 dasm_put(Dst, 7462);
1405#endif 1744#endif
1406 dasm_put(Dst, 7244, Dt1(->base), Dt1(->top)); 1745 dasm_put(Dst, 7472, Dt1(->base), Dt1(->top));
1407#if LJ_HASJIT 1746#if LJ_HASJIT
1408 dasm_put(Dst, 7277); 1747 dasm_put(Dst, 7505);
1409#endif 1748#endif
1410 dasm_put(Dst, 7282, Dt1(->base), Dt1(->top)); 1749 dasm_put(Dst, 7510, Dt1(->base), Dt1(->top));
1411#if LJ_HASJIT 1750#if LJ_HASJIT
1412 dasm_put(Dst, 7313, 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); 1751 dasm_put(Dst, 7541, 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);
1413#endif 1752#endif
1414 dasm_put(Dst, 7552); 1753 dasm_put(Dst, 7780);
1415#if LJ_HASJIT 1754#if LJ_HASJIT
1416 dasm_put(Dst, 7555, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1755 dasm_put(Dst, 7783, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1417#endif 1756#endif
1418 dasm_put(Dst, 7655); 1757 dasm_put(Dst, 7883);
1419 if (!sse) { 1758 if (!sse) {
1420 dasm_put(Dst, 7658); 1759 dasm_put(Dst, 7886);
1421 } 1760 }
1422 dasm_put(Dst, 7703, (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)); 1761 dasm_put(Dst, 7931, (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));
1423 if (!sse) { 1762 if (!sse) {
1424 dasm_put(Dst, 7789); 1763 dasm_put(Dst, 8017);
1425 } 1764 }
1426 dasm_put(Dst, 7834, (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)); 1765 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(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
1427 if (!sse) { 1766 if (!sse) {
1428 dasm_put(Dst, 7920); 1767 dasm_put(Dst, 8148);
1429 } 1768 }
1430 dasm_put(Dst, 7959, (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)); 1769 dasm_put(Dst, 8187, (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));
1431 if (sse) { 1770 if (sse) {
1432 dasm_put(Dst, 8048, (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)); 1771 dasm_put(Dst, 8276, (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));
1433 } else { 1772 } else {
1434 dasm_put(Dst, 8162); 1773 dasm_put(Dst, 8390);
1435 } 1774 }
1436 dasm_put(Dst, 8209); 1775 dasm_put(Dst, 8437);
1437 if (!sse) { 1776 if (!sse) {
1438 } else { 1777 } else {
1439 dasm_put(Dst, 8286); 1778 dasm_put(Dst, 8514);
1440 } 1779 }
1441 dasm_put(Dst, 8289); 1780 dasm_put(Dst, 8517);
1442 dasm_put(Dst, 8374, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1781 dasm_put(Dst, 8602, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1443 dasm_put(Dst, 8477, (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)); 1782 dasm_put(Dst, 8705, (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));
1444 dasm_put(Dst, 8639); 1783 dasm_put(Dst, 8867);
1445#if LJ_HASJIT 1784#if LJ_HASJIT
1446 if (sse) { 1785 if (sse) {
1447 dasm_put(Dst, 8680); 1786 dasm_put(Dst, 8908);
1448 dasm_put(Dst, 8750); 1787 dasm_put(Dst, 8978);
1449 dasm_put(Dst, 8822); 1788 dasm_put(Dst, 9050);
1450 } else { 1789 } else {
1451 dasm_put(Dst, 8874); 1790 dasm_put(Dst, 9102);
1452 dasm_put(Dst, 8966); 1791 dasm_put(Dst, 9194);
1453 } 1792 }
1454 dasm_put(Dst, 9012); 1793 dasm_put(Dst, 9240);
1455#endif 1794#endif
1456 dasm_put(Dst, 9016); 1795 dasm_put(Dst, 9244);
1457 if (sse) { 1796 if (sse) {
1458 dasm_put(Dst, 9019, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1797 dasm_put(Dst, 9247, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1459 dasm_put(Dst, 9104, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1798 dasm_put(Dst, 9332, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1460 } else { 1799 } else {
1461 dasm_put(Dst, 9232); 1800 dasm_put(Dst, 9460);
1462 dasm_put(Dst, 9315); 1801 dasm_put(Dst, 9543);
1463 if (cmov) { 1802 if (cmov) {
1464 dasm_put(Dst, 9370); 1803 dasm_put(Dst, 9598);
1465 } else { 1804 } else {
1466 dasm_put(Dst, 9389); 1805 dasm_put(Dst, 9617);
1467 } 1806 }
1468 dasm_put(Dst, 9012); 1807 dasm_put(Dst, 9240);
1469 } 1808 }
1470 dasm_put(Dst, 9430); 1809 dasm_put(Dst, 9658);
1471#if LJ_HASFFI 1810#if LJ_HASFFI
1472#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1811#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1473 dasm_put(Dst, 9454, DtE(->spadj)); 1812 dasm_put(Dst, 9682, DtE(->spadj));
1474#if LJ_TARGET_WINDOWS 1813#if LJ_TARGET_WINDOWS
1475#endif 1814#endif
1476 dasm_put(Dst, 9470, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1])); 1815 dasm_put(Dst, 9698, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1]));
1477 dasm_put(Dst, 9549, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1])); 1816 dasm_put(Dst, 9777, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1]));
1478#if LJ_TARGET_WINDOWS 1817#if LJ_TARGET_WINDOWS
1479#endif 1818#endif
1480 dasm_put(Dst, 9604); 1819 dasm_put(Dst, 9832);
1481#endif 1820#endif
1482} 1821}
1483 1822
@@ -1485,7 +1824,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1485static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1824static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1486{ 1825{
1487 int vk = 0; 1826 int vk = 0;
1488 dasm_put(Dst, 9612, defop); 1827 dasm_put(Dst, 9840, defop);
1489 1828
1490 switch (op) { 1829 switch (op) {
1491 1830
@@ -1493,642 +1832,906 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1493 1832
1494 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1833 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1495 1834
1835
1496 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1836 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1497 dasm_put(Dst, 9614, LJ_TISNUM, LJ_TISNUM); 1837 if (LJ_DUALNUM) {
1838 dasm_put(Dst, 9842, LJ_TISNUM, LJ_TISNUM);
1839 switch (op) {
1840 case BC_ISLT:
1841 dasm_put(Dst, 9872);
1842 break;
1843 case BC_ISGE:
1844 dasm_put(Dst, 9877);
1845 break;
1846 case BC_ISLE:
1847 dasm_put(Dst, 9882);
1848 break;
1849 case BC_ISGT:
1850 dasm_put(Dst, 9887);
1851 break;
1852 default: break; /* Shut up GCC. */
1853 }
1854 dasm_put(Dst, 9892, -BCBIAS_J*4, LJ_TISNUM);
1855 if (sse) {
1856 dasm_put(Dst, 9947);
1857 } else {
1858 dasm_put(Dst, 9958);
1859 }
1860 dasm_put(Dst, 9969);
1861 if (sse) {
1862 dasm_put(Dst, 9976);
1863 switch (op) {
1864 case BC_ISLT:
1865 dasm_put(Dst, 9996);
1866 break;
1867 case BC_ISGE:
1868 dasm_put(Dst, 10001);
1869 break;
1870 case BC_ISLE:
1871 dasm_put(Dst, 10006);
1872 break;
1873 case BC_ISGT:
1874 dasm_put(Dst, 10011);
1875 break;
1876 default: break; /* Shut up GCC. */
1877 }
1878 dasm_put(Dst, 10016);
1879 } else {
1880 dasm_put(Dst, 10021);
1881 }
1882 } else {
1883 dasm_put(Dst, 10029, LJ_TISNUM, LJ_TISNUM);
1884 }
1498 if (sse) { 1885 if (sse) {
1499 dasm_put(Dst, 9635); 1886 dasm_put(Dst, 10050);
1500 } else { 1887 } else {
1501 dasm_put(Dst, 9650); 1888 dasm_put(Dst, 10071);
1502 if (cmov) { 1889 if (cmov) {
1503 dasm_put(Dst, 9660); 1890 dasm_put(Dst, 10087);
1504 } else { 1891 } else {
1505 dasm_put(Dst, 9666); 1892 dasm_put(Dst, 10093);
1506 } 1893 }
1507 } 1894 }
1508 switch (op) { 1895 if (LJ_DUALNUM) {
1509 case BC_ISLT: 1896 switch (op) {
1510 dasm_put(Dst, 9673); 1897 case BC_ISLT:
1898 dasm_put(Dst, 9996);
1899 break;
1900 case BC_ISGE:
1901 dasm_put(Dst, 10001);
1902 break;
1903 case BC_ISLE:
1904 dasm_put(Dst, 10006);
1905 break;
1906 case BC_ISGT:
1907 dasm_put(Dst, 10011);
1511 break; 1908 break;
1512 case BC_ISGE: 1909 default: break; /* Shut up GCC. */
1513 dasm_put(Dst, 9310); 1910 }
1911 dasm_put(Dst, 10016);
1912 } else {
1913 switch (op) {
1914 case BC_ISLT:
1915 dasm_put(Dst, 10100);
1916 break;
1917 case BC_ISGE:
1918 dasm_put(Dst, 10105);
1514 break; 1919 break;
1515 case BC_ISLE: 1920 case BC_ISLE:
1516 dasm_put(Dst, 5927); 1921 dasm_put(Dst, 10110);
1517 break; 1922 break;
1518 case BC_ISGT: 1923 case BC_ISGT:
1519 dasm_put(Dst, 9678); 1924 dasm_put(Dst, 10115);
1520 break; 1925 break;
1521 default: break; /* Shut up GCC. */ 1926 default: break; /* Shut up GCC. */
1927 }
1928 dasm_put(Dst, 10120, -BCBIAS_J*4);
1522 } 1929 }
1523 dasm_put(Dst, 9683, -BCBIAS_J*4);
1524 break; 1930 break;
1525 1931
1526 case BC_ISEQV: case BC_ISNEV: 1932 case BC_ISEQV: case BC_ISNEV:
1527 vk = op == BC_ISEQV; 1933 vk = op == BC_ISEQV;
1528 dasm_put(Dst, 9718, LJ_TISNUM, LJ_TISNUM); 1934 dasm_put(Dst, 10153);
1935 if (LJ_DUALNUM) {
1936 dasm_put(Dst, 10161, LJ_TISNUM, LJ_TISNUM);
1937 if (vk) {
1938 dasm_put(Dst, 10186);
1939 } else {
1940 dasm_put(Dst, 10191);
1941 }
1942 dasm_put(Dst, 10196, -BCBIAS_J*4, LJ_TISNUM);
1943 if (sse) {
1944 dasm_put(Dst, 10249);
1945 } else {
1946 dasm_put(Dst, 10256);
1947 }
1948 dasm_put(Dst, 10260);
1949 if (sse) {
1950 dasm_put(Dst, 10271);
1951 } else {
1952 dasm_put(Dst, 10283);
1953 }
1954 dasm_put(Dst, 10290);
1955 } else {
1956 dasm_put(Dst, 10295, LJ_TISNUM, LJ_TISNUM);
1957 }
1529 if (sse) { 1958 if (sse) {
1530 dasm_put(Dst, 9744); 1959 dasm_put(Dst, 10314);
1531 } else { 1960 } else {
1532 dasm_put(Dst, 9756); 1961 dasm_put(Dst, 10332);
1533 if (cmov) { 1962 if (cmov) {
1534 dasm_put(Dst, 9660); 1963 dasm_put(Dst, 10087);
1535 } else { 1964 } else {
1536 dasm_put(Dst, 9666); 1965 dasm_put(Dst, 10093);
1537 } 1966 }
1538 } 1967 }
1539 iseqne_fp: 1968 iseqne_fp:
1540 if (vk) { 1969 if (vk) {
1541 dasm_put(Dst, 9763); 1970 dasm_put(Dst, 10345);
1542 } else { 1971 } else {
1543 dasm_put(Dst, 9772); 1972 dasm_put(Dst, 10354);
1544 } 1973 }
1545 iseqne_end: 1974 iseqne_end:
1546 if (vk) { 1975 if (vk) {
1547 dasm_put(Dst, 9781, -BCBIAS_J*4); 1976 dasm_put(Dst, 10363, -BCBIAS_J*4);
1548 if (!LJ_HASFFI) { 1977 if (!LJ_HASFFI) {
1549 dasm_put(Dst, 4502); 1978 dasm_put(Dst, 4592);
1550 } 1979 }
1551 } else { 1980 } else {
1552 if (!LJ_HASFFI) { 1981 if (!LJ_HASFFI) {
1553 dasm_put(Dst, 4502); 1982 dasm_put(Dst, 4592);
1554 } 1983 }
1555 dasm_put(Dst, 9796, -BCBIAS_J*4); 1984 dasm_put(Dst, 10378, -BCBIAS_J*4);
1985 }
1986 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
1987 op == BC_ISEQN || op == BC_ISNEN)) {
1988 dasm_put(Dst, 10393);
1989 } else {
1990 dasm_put(Dst, 10132);
1556 } 1991 }
1557 dasm_put(Dst, 9697);
1558 if (op == BC_ISEQV || op == BC_ISNEV) { 1992 if (op == BC_ISEQV || op == BC_ISNEV) {
1559 dasm_put(Dst, 9811); 1993 dasm_put(Dst, 10398);
1560 if (LJ_HASFFI) { 1994 if (LJ_HASFFI) {
1561 dasm_put(Dst, 9814, LJ_TCDATA, LJ_TCDATA); 1995 dasm_put(Dst, 10401, LJ_TCDATA, LJ_TCDATA);
1562 } 1996 }
1563 dasm_put(Dst, 9833, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1997 dasm_put(Dst, 10420, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1564 if (vk) { 1998 if (vk) {
1565 dasm_put(Dst, 9889); 1999 dasm_put(Dst, 10476);
1566 } else { 2000 } else {
1567 dasm_put(Dst, 9893); 2001 dasm_put(Dst, 10480);
1568 } 2002 }
1569 dasm_put(Dst, 9899); 2003 dasm_put(Dst, 10486);
1570 } else if (LJ_HASFFI) { 2004 } else if (LJ_HASFFI) {
1571 dasm_put(Dst, 9904, LJ_TCDATA); 2005 dasm_put(Dst, 10491, LJ_TCDATA);
2006 if (LJ_DUALNUM && vk) {
2007 dasm_put(Dst, 10498);
2008 } else {
2009 dasm_put(Dst, 10471);
2010 }
2011 dasm_put(Dst, 10503);
1572 } 2012 }
1573 break; 2013 break;
1574 case BC_ISEQS: case BC_ISNES: 2014 case BC_ISEQS: case BC_ISNES:
1575 vk = op == BC_ISEQS; 2015 vk = op == BC_ISEQS;
1576 dasm_put(Dst, 9919, LJ_TSTR); 2016 dasm_put(Dst, 10508, LJ_TSTR);
1577 iseqne_test: 2017 iseqne_test:
1578 if (vk) { 2018 if (vk) {
1579 dasm_put(Dst, 9767); 2019 dasm_put(Dst, 10349);
1580 } else { 2020 } else {
1581 dasm_put(Dst, 2836); 2021 dasm_put(Dst, 2888);
1582 } 2022 }
1583 goto iseqne_end; 2023 goto iseqne_end;
1584 case BC_ISEQN: case BC_ISNEN: 2024 case BC_ISEQN: case BC_ISNEN:
1585 vk = op == BC_ISEQN; 2025 vk = op == BC_ISEQN;
1586 dasm_put(Dst, 9946, LJ_TISNUM); 2026 dasm_put(Dst, 10535);
2027 if (LJ_DUALNUM) {
2028 dasm_put(Dst, 10543, LJ_TISNUM, LJ_TISNUM);
2029 if (vk) {
2030 dasm_put(Dst, 10186);
2031 } else {
2032 dasm_put(Dst, 10191);
2033 }
2034 dasm_put(Dst, 10570, -BCBIAS_J*4, LJ_TISNUM);
2035 if (sse) {
2036 dasm_put(Dst, 10620);
2037 } else {
2038 dasm_put(Dst, 10628);
2039 }
2040 dasm_put(Dst, 10633);
2041 if (sse) {
2042 dasm_put(Dst, 10640);
2043 } else {
2044 dasm_put(Dst, 10653);
2045 }
2046 dasm_put(Dst, 10290);
2047 } else {
2048 dasm_put(Dst, 10660, LJ_TISNUM);
2049 }
1587 if (sse) { 2050 if (sse) {
1588 dasm_put(Dst, 9962); 2051 dasm_put(Dst, 10669);
1589 } else { 2052 } else {
1590 dasm_put(Dst, 9975); 2053 dasm_put(Dst, 10688);
1591 if (cmov) { 2054 if (cmov) {
1592 dasm_put(Dst, 9660); 2055 dasm_put(Dst, 10087);
1593 } else { 2056 } else {
1594 dasm_put(Dst, 9666); 2057 dasm_put(Dst, 10093);
1595 } 2058 }
2059 dasm_put(Dst, 4611);
1596 } 2060 }
1597 goto iseqne_fp; 2061 goto iseqne_fp;
1598 case BC_ISEQP: case BC_ISNEP: 2062 case BC_ISEQP: case BC_ISNEP:
1599 vk = op == BC_ISEQP; 2063 vk = op == BC_ISEQP;
1600 dasm_put(Dst, 9983); 2064 dasm_put(Dst, 10700);
1601 if (!LJ_HASFFI) goto iseqne_test; 2065 if (!LJ_HASFFI) goto iseqne_test;
1602 if (vk) { 2066 if (vk) {
1603 dasm_put(Dst, 9997, -BCBIAS_J*4, LJ_TCDATA); 2067 dasm_put(Dst, 10714, -BCBIAS_J*4, LJ_TCDATA);
1604 } else { 2068 } else {
1605 dasm_put(Dst, 10048, LJ_TCDATA, -BCBIAS_J*4); 2069 dasm_put(Dst, 10765, LJ_TCDATA, -BCBIAS_J*4);
1606 } 2070 }
1607 break; 2071 break;
1608 2072
1609 /* -- Unary test and copy ops ------------------------------------------- */ 2073 /* -- Unary test and copy ops ------------------------------------------- */
1610 2074
1611 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2075 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1612 dasm_put(Dst, 10093, LJ_TISTRUECOND); 2076 dasm_put(Dst, 10810, LJ_TISTRUECOND);
1613 if (op == BC_IST || op == BC_ISTC) { 2077 if (op == BC_IST || op == BC_ISTC) {
1614 dasm_put(Dst, 10105); 2078 dasm_put(Dst, 10115);
1615 } else { 2079 } else {
1616 dasm_put(Dst, 10110); 2080 dasm_put(Dst, 10110);
1617 } 2081 }
1618 if (op == BC_ISTC || op == BC_ISFC) { 2082 if (op == BC_ISTC || op == BC_ISFC) {
1619 dasm_put(Dst, 10115); 2083 dasm_put(Dst, 10822);
1620 } 2084 }
1621 dasm_put(Dst, 10126, -BCBIAS_J*4); 2085 dasm_put(Dst, 10120, -BCBIAS_J*4);
1622 break; 2086 break;
1623 2087
1624 /* -- Unary ops --------------------------------------------------------- */ 2088 /* -- Unary ops --------------------------------------------------------- */
1625 2089
1626 case BC_MOV: 2090 case BC_MOV:
1627 dasm_put(Dst, 10159); 2091 dasm_put(Dst, 10833);
1628 break; 2092 break;
1629 case BC_NOT: 2093 case BC_NOT:
1630 dasm_put(Dst, 10188, LJ_TISTRUECOND, LJ_TTRUE); 2094 dasm_put(Dst, 10862, LJ_TISTRUECOND, LJ_TTRUE);
1631 break; 2095 break;
1632 case BC_UNM: 2096 case BC_UNM:
1633 dasm_put(Dst, 10225, LJ_TISNUM); 2097 if (LJ_DUALNUM) {
2098 dasm_put(Dst, 10899, LJ_TISNUM, LJ_TISNUM);
2099 } else {
2100 dasm_put(Dst, 10977, LJ_TISNUM);
2101 }
1634 if (sse) { 2102 if (sse) {
1635 dasm_put(Dst, 10236, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 2103 dasm_put(Dst, 10988, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
2104 } else {
2105 dasm_put(Dst, 11013);
2106 }
2107 if (LJ_DUALNUM) {
2108 dasm_put(Dst, 10393);
1636 } else { 2109 } else {
1637 dasm_put(Dst, 10261); 2110 dasm_put(Dst, 10132);
1638 } 2111 }
1639 dasm_put(Dst, 9697);
1640 break; 2112 break;
1641 case BC_LEN: 2113 case BC_LEN:
1642 dasm_put(Dst, 10270, LJ_TSTR); 2114 dasm_put(Dst, 11022, LJ_TSTR);
1643 if (sse) { 2115 if (LJ_DUALNUM) {
1644 dasm_put(Dst, 10284, Dt5(->len)); 2116 dasm_put(Dst, 11036, Dt5(->len), LJ_TISNUM);
2117 } else if (sse) {
2118 dasm_put(Dst, 11050, Dt5(->len));
1645 } else { 2119 } else {
1646 dasm_put(Dst, 10302, Dt5(->len)); 2120 dasm_put(Dst, 11068, Dt5(->len));
1647 } 2121 }
1648 dasm_put(Dst, 10311, LJ_TTAB); 2122 dasm_put(Dst, 11077, LJ_TTAB);
1649 if (sse) { 2123 if (LJ_DUALNUM) {
1650 dasm_put(Dst, 10353); 2124 } else if (sse) {
2125 dasm_put(Dst, 11119);
1651 } else { 2126 } else {
1652 } 2127 }
1653 dasm_put(Dst, 10362); 2128 dasm_put(Dst, 11125);
1654 break; 2129 break;
1655 2130
1656 /* -- Binary ops -------------------------------------------------------- */ 2131 /* -- Binary ops -------------------------------------------------------- */
1657 2132
1658 2133
1659 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2134 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1660 dasm_put(Dst, 10372); 2135 if (LJ_DUALNUM) {
2136 dasm_put(Dst, 11138);
2137 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2138 switch (vk) {
2139 case 0:
2140 dasm_put(Dst, 11146, LJ_TISNUM, LJ_TISNUM);
2141 break;
2142 case 1:
2143 dasm_put(Dst, 11181, LJ_TISNUM, LJ_TISNUM);
2144 break;
2145 default:
2146 dasm_put(Dst, 11216, LJ_TISNUM, LJ_TISNUM);
2147 break;
2148 }
2149 dasm_put(Dst, 11249, LJ_TISNUM);
2150 if (vk == 1) {
2151 dasm_put(Dst, 11046);
2152 } else {
2153 dasm_put(Dst, 10829);
2154 }
2155 dasm_put(Dst, 10132);
2156 } else {
2157 dasm_put(Dst, 11138);
1661 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2158 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1662 switch (vk) { 2159 switch (vk) {
1663 case 0: 2160 case 0:
1664 dasm_put(Dst, 10380, LJ_TISNUM); 2161 dasm_put(Dst, 11255, LJ_TISNUM);
2162 if (LJ_DUALNUM) {
2163 dasm_put(Dst, 11267, LJ_TISNUM);
2164 }
1665 if (sse) { 2165 if (sse) {
1666 dasm_put(Dst, 10392); 2166 dasm_put(Dst, 11279);
1667 } else { 2167 } else {
1668 dasm_put(Dst, 10407); 2168 dasm_put(Dst, 11294);
1669 } 2169 }
1670 break; 2170 break;
1671 case 1: 2171 case 1:
1672 dasm_put(Dst, 10416, LJ_TISNUM); 2172 dasm_put(Dst, 11303, LJ_TISNUM);
2173 if (LJ_DUALNUM) {
2174 dasm_put(Dst, 11315, LJ_TISNUM);
2175 }
1673 if (sse) { 2176 if (sse) {
1674 dasm_put(Dst, 10428); 2177 dasm_put(Dst, 11327);
1675 } else { 2178 } else {
1676 dasm_put(Dst, 10443); 2179 dasm_put(Dst, 11342);
1677 } 2180 }
1678 break; 2181 break;
1679 default: 2182 default:
1680 dasm_put(Dst, 10452, LJ_TISNUM, LJ_TISNUM); 2183 dasm_put(Dst, 11351, LJ_TISNUM, LJ_TISNUM);
1681 if (sse) { 2184 if (sse) {
1682 dasm_put(Dst, 10474); 2185 dasm_put(Dst, 11373);
1683 } else { 2186 } else {
1684 dasm_put(Dst, 10488); 2187 dasm_put(Dst, 11387);
1685 } 2188 }
1686 break; 2189 break;
1687 } 2190 }
1688 if (sse) { 2191 if (sse) {
1689 dasm_put(Dst, 10254); 2192 dasm_put(Dst, 11006);
1690 } else { 2193 } else {
1691 dasm_put(Dst, 10266); 2194 dasm_put(Dst, 11018);
2195 }
2196 dasm_put(Dst, 10132);
1692 } 2197 }
1693 dasm_put(Dst, 9697);
1694 break; 2198 break;
1695 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2199 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1696 dasm_put(Dst, 10372); 2200 if (LJ_DUALNUM) {
2201 dasm_put(Dst, 11138);
2202 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2203 switch (vk) {
2204 case 0:
2205 dasm_put(Dst, 11395, LJ_TISNUM, LJ_TISNUM);
2206 break;
2207 case 1:
2208 dasm_put(Dst, 11430, LJ_TISNUM, LJ_TISNUM);
2209 break;
2210 default:
2211 dasm_put(Dst, 11465, LJ_TISNUM, LJ_TISNUM);
2212 break;
2213 }
2214 dasm_put(Dst, 11249, LJ_TISNUM);
2215 if (vk == 1) {
2216 dasm_put(Dst, 11046);
2217 } else {
2218 dasm_put(Dst, 10829);
2219 }
2220 dasm_put(Dst, 10132);
2221 } else {
2222 dasm_put(Dst, 11138);
1697 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2223 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1698 switch (vk) { 2224 switch (vk) {
1699 case 0: 2225 case 0:
1700 dasm_put(Dst, 10380, LJ_TISNUM); 2226 dasm_put(Dst, 11255, LJ_TISNUM);
2227 if (LJ_DUALNUM) {
2228 dasm_put(Dst, 11267, LJ_TISNUM);
2229 }
1701 if (sse) { 2230 if (sse) {
1702 dasm_put(Dst, 10496); 2231 dasm_put(Dst, 11498);
1703 } else { 2232 } else {
1704 dasm_put(Dst, 10511); 2233 dasm_put(Dst, 11513);
1705 } 2234 }
1706 break; 2235 break;
1707 case 1: 2236 case 1:
1708 dasm_put(Dst, 10416, LJ_TISNUM); 2237 dasm_put(Dst, 11303, LJ_TISNUM);
2238 if (LJ_DUALNUM) {
2239 dasm_put(Dst, 11315, LJ_TISNUM);
2240 }
1709 if (sse) { 2241 if (sse) {
1710 dasm_put(Dst, 10520); 2242 dasm_put(Dst, 11522);
1711 } else { 2243 } else {
1712 dasm_put(Dst, 10535); 2244 dasm_put(Dst, 11537);
1713 } 2245 }
1714 break; 2246 break;
1715 default: 2247 default:
1716 dasm_put(Dst, 10452, LJ_TISNUM, LJ_TISNUM); 2248 dasm_put(Dst, 11351, LJ_TISNUM, LJ_TISNUM);
1717 if (sse) { 2249 if (sse) {
1718 dasm_put(Dst, 10544); 2250 dasm_put(Dst, 11546);
1719 } else { 2251 } else {
1720 dasm_put(Dst, 10558); 2252 dasm_put(Dst, 11560);
1721 } 2253 }
1722 break; 2254 break;
1723 } 2255 }
1724 if (sse) { 2256 if (sse) {
1725 dasm_put(Dst, 10254); 2257 dasm_put(Dst, 11006);
1726 } else { 2258 } else {
1727 dasm_put(Dst, 10266); 2259 dasm_put(Dst, 11018);
2260 }
2261 dasm_put(Dst, 10132);
1728 } 2262 }
1729 dasm_put(Dst, 9697);
1730 break; 2263 break;
1731 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2264 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1732 dasm_put(Dst, 10372); 2265 if (LJ_DUALNUM) {
2266 dasm_put(Dst, 11138);
2267 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2268 switch (vk) {
2269 case 0:
2270 dasm_put(Dst, 11568, LJ_TISNUM, LJ_TISNUM);
2271 break;
2272 case 1:
2273 dasm_put(Dst, 11604, LJ_TISNUM, LJ_TISNUM);
2274 break;
2275 default:
2276 dasm_put(Dst, 11640, LJ_TISNUM, LJ_TISNUM);
2277 break;
2278 }
2279 dasm_put(Dst, 11249, LJ_TISNUM);
2280 if (vk == 1) {
2281 dasm_put(Dst, 11046);
2282 } else {
2283 dasm_put(Dst, 10829);
2284 }
2285 dasm_put(Dst, 10132);
2286 } else {
2287 dasm_put(Dst, 11138);
1733 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2288 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1734 switch (vk) { 2289 switch (vk) {
1735 case 0: 2290 case 0:
1736 dasm_put(Dst, 10380, LJ_TISNUM); 2291 dasm_put(Dst, 11255, LJ_TISNUM);
2292 if (LJ_DUALNUM) {
2293 dasm_put(Dst, 11267, LJ_TISNUM);
2294 }
1737 if (sse) { 2295 if (sse) {
1738 dasm_put(Dst, 10566); 2296 dasm_put(Dst, 11674);
1739 } else { 2297 } else {
1740 dasm_put(Dst, 10581); 2298 dasm_put(Dst, 11689);
1741 } 2299 }
1742 break; 2300 break;
1743 case 1: 2301 case 1:
1744 dasm_put(Dst, 10416, LJ_TISNUM); 2302 dasm_put(Dst, 11303, LJ_TISNUM);
2303 if (LJ_DUALNUM) {
2304 dasm_put(Dst, 11315, LJ_TISNUM);
2305 }
1745 if (sse) { 2306 if (sse) {
1746 dasm_put(Dst, 10590); 2307 dasm_put(Dst, 11698);
1747 } else { 2308 } else {
1748 dasm_put(Dst, 10605); 2309 dasm_put(Dst, 11713);
1749 } 2310 }
1750 break; 2311 break;
1751 default: 2312 default:
1752 dasm_put(Dst, 10452, LJ_TISNUM, LJ_TISNUM); 2313 dasm_put(Dst, 11351, LJ_TISNUM, LJ_TISNUM);
1753 if (sse) { 2314 if (sse) {
1754 dasm_put(Dst, 10614); 2315 dasm_put(Dst, 11722);
1755 } else { 2316 } else {
1756 dasm_put(Dst, 10628); 2317 dasm_put(Dst, 11736);
1757 } 2318 }
1758 break; 2319 break;
1759 } 2320 }
1760 if (sse) { 2321 if (sse) {
1761 dasm_put(Dst, 10254); 2322 dasm_put(Dst, 11006);
1762 } else { 2323 } else {
1763 dasm_put(Dst, 10266); 2324 dasm_put(Dst, 11018);
2325 }
2326 dasm_put(Dst, 10132);
1764 } 2327 }
1765 dasm_put(Dst, 9697);
1766 break; 2328 break;
1767 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2329 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1768 dasm_put(Dst, 10372); 2330 dasm_put(Dst, 11138);
1769 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2331 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1770 switch (vk) { 2332 switch (vk) {
1771 case 0: 2333 case 0:
1772 dasm_put(Dst, 10380, LJ_TISNUM); 2334 dasm_put(Dst, 11255, LJ_TISNUM);
2335 if (LJ_DUALNUM) {
2336 dasm_put(Dst, 11267, LJ_TISNUM);
2337 }
1773 if (sse) { 2338 if (sse) {
1774 dasm_put(Dst, 10636); 2339 dasm_put(Dst, 11744);
1775 } else { 2340 } else {
1776 dasm_put(Dst, 10651); 2341 dasm_put(Dst, 11759);
1777 } 2342 }
1778 break; 2343 break;
1779 case 1: 2344 case 1:
1780 dasm_put(Dst, 10416, LJ_TISNUM); 2345 dasm_put(Dst, 11303, LJ_TISNUM);
2346 if (LJ_DUALNUM) {
2347 dasm_put(Dst, 11315, LJ_TISNUM);
2348 }
1781 if (sse) { 2349 if (sse) {
1782 dasm_put(Dst, 10660); 2350 dasm_put(Dst, 11768);
1783 } else { 2351 } else {
1784 dasm_put(Dst, 10675); 2352 dasm_put(Dst, 11783);
1785 } 2353 }
1786 break; 2354 break;
1787 default: 2355 default:
1788 dasm_put(Dst, 10452, LJ_TISNUM, LJ_TISNUM); 2356 dasm_put(Dst, 11351, LJ_TISNUM, LJ_TISNUM);
1789 if (sse) { 2357 if (sse) {
1790 dasm_put(Dst, 10684); 2358 dasm_put(Dst, 11792);
1791 } else { 2359 } else {
1792 dasm_put(Dst, 10698); 2360 dasm_put(Dst, 11806);
1793 } 2361 }
1794 break; 2362 break;
1795 } 2363 }
1796 if (sse) { 2364 if (sse) {
1797 dasm_put(Dst, 10254); 2365 dasm_put(Dst, 11006);
1798 } else { 2366 } else {
1799 dasm_put(Dst, 10266); 2367 dasm_put(Dst, 11018);
1800 } 2368 }
1801 dasm_put(Dst, 9697); 2369 dasm_put(Dst, 10132);
1802 break; 2370 break;
1803 case BC_MODVN: 2371 case BC_MODVN:
1804 dasm_put(Dst, 10372); 2372 dasm_put(Dst, 11138);
1805 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2373 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1806 switch (vk) { 2374 switch (vk) {
1807 case 0: 2375 case 0:
1808 dasm_put(Dst, 10380, LJ_TISNUM); 2376 dasm_put(Dst, 11255, LJ_TISNUM);
2377 if (LJ_DUALNUM) {
2378 dasm_put(Dst, 11267, LJ_TISNUM);
2379 }
1809 if (sse) { 2380 if (sse) {
1810 dasm_put(Dst, 10706); 2381 dasm_put(Dst, 11814);
1811 } else { 2382 } else {
1812 dasm_put(Dst, 10721); 2383 dasm_put(Dst, 11829);
1813 } 2384 }
1814 break; 2385 break;
1815 case 1: 2386 case 1:
1816 dasm_put(Dst, 10416, LJ_TISNUM); 2387 dasm_put(Dst, 11303, LJ_TISNUM);
2388 if (LJ_DUALNUM) {
2389 dasm_put(Dst, 11315, LJ_TISNUM);
2390 }
1817 if (sse) { 2391 if (sse) {
1818 dasm_put(Dst, 10730); 2392 dasm_put(Dst, 11838);
1819 } else { 2393 } else {
1820 dasm_put(Dst, 10745); 2394 dasm_put(Dst, 11853);
1821 } 2395 }
1822 break; 2396 break;
1823 default: 2397 default:
1824 dasm_put(Dst, 10452, LJ_TISNUM, LJ_TISNUM); 2398 dasm_put(Dst, 11351, LJ_TISNUM, LJ_TISNUM);
1825 if (sse) { 2399 if (sse) {
1826 dasm_put(Dst, 10754); 2400 dasm_put(Dst, 11862);
1827 } else { 2401 } else {
1828 dasm_put(Dst, 10768); 2402 dasm_put(Dst, 11876);
1829 } 2403 }
1830 break; 2404 break;
1831 } 2405 }
1832 dasm_put(Dst, 10776); 2406 dasm_put(Dst, 11884);
1833 if (sse) { 2407 if (sse) {
1834 dasm_put(Dst, 10254); 2408 dasm_put(Dst, 11006);
1835 } else { 2409 } else {
1836 dasm_put(Dst, 10266); 2410 dasm_put(Dst, 11018);
1837 } 2411 }
1838 dasm_put(Dst, 9697); 2412 dasm_put(Dst, 10132);
1839 break; 2413 break;
1840 case BC_MODNV: case BC_MODVV: 2414 case BC_MODNV: case BC_MODVV:
1841 dasm_put(Dst, 10372); 2415 dasm_put(Dst, 11138);
1842 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2416 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1843 switch (vk) { 2417 switch (vk) {
1844 case 0: 2418 case 0:
1845 dasm_put(Dst, 10380, LJ_TISNUM); 2419 dasm_put(Dst, 11255, LJ_TISNUM);
2420 if (LJ_DUALNUM) {
2421 dasm_put(Dst, 11267, LJ_TISNUM);
2422 }
1846 if (sse) { 2423 if (sse) {
1847 dasm_put(Dst, 10706); 2424 dasm_put(Dst, 11814);
1848 } else { 2425 } else {
1849 dasm_put(Dst, 10721); 2426 dasm_put(Dst, 11829);
1850 } 2427 }
1851 break; 2428 break;
1852 case 1: 2429 case 1:
1853 dasm_put(Dst, 10416, LJ_TISNUM); 2430 dasm_put(Dst, 11303, LJ_TISNUM);
2431 if (LJ_DUALNUM) {
2432 dasm_put(Dst, 11315, LJ_TISNUM);
2433 }
1854 if (sse) { 2434 if (sse) {
1855 dasm_put(Dst, 10730); 2435 dasm_put(Dst, 11838);
1856 } else { 2436 } else {
1857 dasm_put(Dst, 10745); 2437 dasm_put(Dst, 11853);
1858 } 2438 }
1859 break; 2439 break;
1860 default: 2440 default:
1861 dasm_put(Dst, 10452, LJ_TISNUM, LJ_TISNUM); 2441 dasm_put(Dst, 11351, LJ_TISNUM, LJ_TISNUM);
1862 if (sse) { 2442 if (sse) {
1863 dasm_put(Dst, 10754); 2443 dasm_put(Dst, 11862);
1864 } else { 2444 } else {
1865 dasm_put(Dst, 10768); 2445 dasm_put(Dst, 11876);
1866 } 2446 }
1867 break; 2447 break;
1868 } 2448 }
1869 dasm_put(Dst, 10782); 2449 dasm_put(Dst, 11890);
1870 break; 2450 break;
1871 case BC_POW: 2451 case BC_POW:
1872 dasm_put(Dst, 10372); 2452 dasm_put(Dst, 11138);
1873 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2453 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1874 switch (vk) { 2454 switch (vk) {
1875 case 0: 2455 case 0:
1876 dasm_put(Dst, 10380, LJ_TISNUM); 2456 dasm_put(Dst, 11255, LJ_TISNUM);
2457 if (LJ_DUALNUM) {
2458 dasm_put(Dst, 11267, LJ_TISNUM);
2459 }
1877 if (sse) { 2460 if (sse) {
1878 dasm_put(Dst, 10706); 2461 dasm_put(Dst, 11814);
1879 } else { 2462 } else {
1880 dasm_put(Dst, 10721); 2463 dasm_put(Dst, 11829);
1881 } 2464 }
1882 break; 2465 break;
1883 case 1: 2466 case 1:
1884 dasm_put(Dst, 10416, LJ_TISNUM); 2467 dasm_put(Dst, 11303, LJ_TISNUM);
2468 if (LJ_DUALNUM) {
2469 dasm_put(Dst, 11315, LJ_TISNUM);
2470 }
1885 if (sse) { 2471 if (sse) {
1886 dasm_put(Dst, 10730); 2472 dasm_put(Dst, 11838);
1887 } else { 2473 } else {
1888 dasm_put(Dst, 10745); 2474 dasm_put(Dst, 11853);
1889 } 2475 }
1890 break; 2476 break;
1891 default: 2477 default:
1892 dasm_put(Dst, 10452, LJ_TISNUM, LJ_TISNUM); 2478 dasm_put(Dst, 11351, LJ_TISNUM, LJ_TISNUM);
1893 if (sse) { 2479 if (sse) {
1894 dasm_put(Dst, 10754); 2480 dasm_put(Dst, 11862);
1895 } else { 2481 } else {
1896 dasm_put(Dst, 10768); 2482 dasm_put(Dst, 11876);
1897 } 2483 }
1898 break; 2484 break;
1899 } 2485 }
1900 dasm_put(Dst, 10787); 2486 dasm_put(Dst, 11895);
1901 if (sse) { 2487 if (sse) {
1902 dasm_put(Dst, 10254); 2488 dasm_put(Dst, 11006);
1903 } else { 2489 } else {
1904 dasm_put(Dst, 10266); 2490 dasm_put(Dst, 11018);
1905 } 2491 }
1906 dasm_put(Dst, 9697); 2492 dasm_put(Dst, 10132);
1907 break; 2493 break;
1908 2494
1909 case BC_CAT: 2495 case BC_CAT:
1910 dasm_put(Dst, 10791, Dt1(->base), Dt1(->base)); 2496 dasm_put(Dst, 11899, Dt1(->base), Dt1(->base));
1911 break; 2497 break;
1912 2498
1913 /* -- Constant ops ------------------------------------------------------ */ 2499 /* -- Constant ops ------------------------------------------------------ */
1914 2500
1915 case BC_KSTR: 2501 case BC_KSTR:
1916 dasm_put(Dst, 10875, LJ_TSTR); 2502 dasm_put(Dst, 11983, LJ_TSTR);
1917 break; 2503 break;
1918 case BC_KCDATA: 2504 case BC_KCDATA:
1919#if LJ_HASFFI 2505#if LJ_HASFFI
1920 dasm_put(Dst, 10875, LJ_TCDATA); 2506 dasm_put(Dst, 11983, LJ_TCDATA);
1921#endif 2507#endif
1922 break; 2508 break;
1923 case BC_KSHORT: 2509 case BC_KSHORT:
1924 if (sse) { 2510 if (LJ_DUALNUM) {
1925 dasm_put(Dst, 10912); 2511 dasm_put(Dst, 12020, LJ_TISNUM);
2512 } else if (sse) {
2513 dasm_put(Dst, 12032);
1926 } else { 2514 } else {
1927 dasm_put(Dst, 10927); 2515 dasm_put(Dst, 12047);
1928 } 2516 }
1929 dasm_put(Dst, 9697); 2517 dasm_put(Dst, 10132);
1930 break; 2518 break;
1931 case BC_KNUM: 2519 case BC_KNUM:
1932 if (sse) { 2520 if (sse) {
1933 dasm_put(Dst, 10935); 2521 dasm_put(Dst, 12055);
1934 } else { 2522 } else {
1935 dasm_put(Dst, 10949); 2523 dasm_put(Dst, 12069);
1936 } 2524 }
1937 dasm_put(Dst, 9697); 2525 dasm_put(Dst, 10132);
1938 break; 2526 break;
1939 case BC_KPRI: 2527 case BC_KPRI:
1940 dasm_put(Dst, 10957); 2528 dasm_put(Dst, 12077);
1941 break; 2529 break;
1942 case BC_KNIL: 2530 case BC_KNIL:
1943 dasm_put(Dst, 10986, LJ_TNIL); 2531 dasm_put(Dst, 12106, LJ_TNIL);
1944 break; 2532 break;
1945 2533
1946 /* -- Upvalue and function ops ------------------------------------------ */ 2534 /* -- Upvalue and function ops ------------------------------------------ */
1947 2535
1948 case BC_UGET: 2536 case BC_UGET:
1949 dasm_put(Dst, 11034, offsetof(GCfuncL, uvptr), DtA(->v)); 2537 dasm_put(Dst, 12154, offsetof(GCfuncL, uvptr), DtA(->v));
1950 break; 2538 break;
1951 case BC_USETV: 2539 case BC_USETV:
1952#define TV2MARKOFS \ 2540#define TV2MARKOFS \
1953 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2541 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1954 dasm_put(Dst, 11075, 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); 2542 dasm_put(Dst, 12195, 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);
1955 dasm_put(Dst, 11171); 2543 dasm_put(Dst, 12291);
1956 break; 2544 break;
1957#undef TV2MARKOFS 2545#undef TV2MARKOFS
1958 case BC_USETS: 2546 case BC_USETS:
1959 dasm_put(Dst, 11183, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2547 dasm_put(Dst, 12303, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1960 break; 2548 break;
1961 case BC_USETN: 2549 case BC_USETN:
1962 dasm_put(Dst, 11279); 2550 dasm_put(Dst, 12399);
1963 if (sse) { 2551 if (sse) {
1964 dasm_put(Dst, 11284); 2552 dasm_put(Dst, 12404);
1965 } else { 2553 } else {
1966 dasm_put(Dst, 9978); 2554 dasm_put(Dst, 11833);
1967 } 2555 }
1968 dasm_put(Dst, 11292, offsetof(GCfuncL, uvptr), DtA(->v)); 2556 dasm_put(Dst, 12412, offsetof(GCfuncL, uvptr), DtA(->v));
1969 if (sse) { 2557 if (sse) {
1970 dasm_put(Dst, 11301); 2558 dasm_put(Dst, 12421);
1971 } else { 2559 } else {
1972 dasm_put(Dst, 11307); 2560 dasm_put(Dst, 12427);
1973 } 2561 }
1974 dasm_put(Dst, 9697); 2562 dasm_put(Dst, 10132);
1975 break; 2563 break;
1976 case BC_USETP: 2564 case BC_USETP:
1977 dasm_put(Dst, 11310, offsetof(GCfuncL, uvptr), DtA(->v)); 2565 dasm_put(Dst, 12430, offsetof(GCfuncL, uvptr), DtA(->v));
1978 break; 2566 break;
1979 case BC_UCLO: 2567 case BC_UCLO:
1980 dasm_put(Dst, 11350, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2568 dasm_put(Dst, 12470, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1981 break; 2569 break;
1982 2570
1983 case BC_FNEW: 2571 case BC_FNEW:
1984 dasm_put(Dst, 11406, Dt1(->base), Dt1(->base), LJ_TFUNC); 2572 dasm_put(Dst, 12526, Dt1(->base), Dt1(->base), LJ_TFUNC);
1985 break; 2573 break;
1986 2574
1987 /* -- Table ops --------------------------------------------------------- */ 2575 /* -- Table ops --------------------------------------------------------- */
1988 2576
1989 case BC_TNEW: 2577 case BC_TNEW:
1990 dasm_put(Dst, 11473, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2578 dasm_put(Dst, 12593, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1991 break; 2579 break;
1992 case BC_TDUP: 2580 case BC_TDUP:
1993 dasm_put(Dst, 11597, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2581 dasm_put(Dst, 12717, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1994 break; 2582 break;
1995 2583
1996 case BC_GGET: 2584 case BC_GGET:
1997 dasm_put(Dst, 11696, Dt7(->env)); 2585 dasm_put(Dst, 12816, Dt7(->env));
1998 break; 2586 break;
1999 case BC_GSET: 2587 case BC_GSET:
2000 dasm_put(Dst, 11716, Dt7(->env)); 2588 dasm_put(Dst, 12836, Dt7(->env));
2001 break; 2589 break;
2002 2590
2003 case BC_TGETV: 2591 case BC_TGETV:
2004 dasm_put(Dst, 11736, LJ_TTAB, LJ_TISNUM); 2592 dasm_put(Dst, 12856, LJ_TTAB);
2005 if (sse) { 2593 if (LJ_DUALNUM) {
2006 dasm_put(Dst, 11769); 2594 dasm_put(Dst, 12879, LJ_TISNUM);
2007 } else { 2595 } else {
2596 dasm_put(Dst, 12893, LJ_TISNUM);
2597 if (sse) {
2598 dasm_put(Dst, 12904);
2599 } else {
2600 }
2601 dasm_put(Dst, 12925);
2008 } 2602 }
2009 dasm_put(Dst, 11790, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2603 dasm_put(Dst, 12930, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2010 dasm_put(Dst, 11875, LJ_TNIL, LJ_TSTR); 2604 dasm_put(Dst, 13022, LJ_TSTR);
2011 break; 2605 break;
2012 case BC_TGETS: 2606 case BC_TGETS:
2013 dasm_put(Dst, 11904, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2607 dasm_put(Dst, 13040, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2014 dasm_put(Dst, 11989, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2608 dasm_put(Dst, 13125, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2015 break; 2609 break;
2016 case BC_TGETB: 2610 case BC_TGETB:
2017 dasm_put(Dst, 12061, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2611 dasm_put(Dst, 13197, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2018 dasm_put(Dst, 12157, LJ_TNIL); 2612 dasm_put(Dst, 13293, LJ_TNIL);
2019 break; 2613 break;
2020 2614
2021 case BC_TSETV: 2615 case BC_TSETV:
2022 dasm_put(Dst, 12174, LJ_TTAB, LJ_TISNUM); 2616 dasm_put(Dst, 13310, LJ_TTAB);
2023 if (sse) { 2617 if (LJ_DUALNUM) {
2024 dasm_put(Dst, 11769); 2618 dasm_put(Dst, 12879, LJ_TISNUM);
2025 } else { 2619 } else {
2620 dasm_put(Dst, 12893, LJ_TISNUM);
2621 if (sse) {
2622 dasm_put(Dst, 12904);
2623 } else {
2624 }
2625 dasm_put(Dst, 13333);
2026 } 2626 }
2027 dasm_put(Dst, 12207, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2627 dasm_put(Dst, 13338, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2028 dasm_put(Dst, 12287, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2628 dasm_put(Dst, 13419, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2029 break; 2629 break;
2030 case BC_TSETS: 2630 case BC_TSETS:
2031 dasm_put(Dst, 12351, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2631 dasm_put(Dst, 13478, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2032 dasm_put(Dst, 12428, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2632 dasm_put(Dst, 13555, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2033 dasm_put(Dst, 12515, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2633 dasm_put(Dst, 13642, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2034 break; 2634 break;
2035 case BC_TSETB: 2635 case BC_TSETB:
2036 dasm_put(Dst, 12607, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2636 dasm_put(Dst, 13734, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2037 dasm_put(Dst, 12702, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2637 dasm_put(Dst, 13829, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2038 break; 2638 break;
2039 2639
2040 case BC_TSETM: 2640 case BC_TSETM:
2041 dasm_put(Dst, 12750, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2641 dasm_put(Dst, 13877, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2042 dasm_put(Dst, 12900, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2642 dasm_put(Dst, 14027, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2043 break; 2643 break;
2044 2644
2045 /* -- Calls and vararg handling ----------------------------------------- */ 2645 /* -- Calls and vararg handling ----------------------------------------- */
2046 2646
2047 case BC_CALL: case BC_CALLM: 2647 case BC_CALL: case BC_CALLM:
2048 dasm_put(Dst, 10376); 2648 dasm_put(Dst, 11142);
2049 if (op == BC_CALLM) { 2649 if (op == BC_CALLM) {
2050 dasm_put(Dst, 12920); 2650 dasm_put(Dst, 14047);
2051 } 2651 }
2052 dasm_put(Dst, 12925, LJ_TFUNC, Dt7(->pc)); 2652 dasm_put(Dst, 14052, LJ_TFUNC, Dt7(->pc));
2053 break; 2653 break;
2054 2654
2055 case BC_CALLMT: 2655 case BC_CALLMT:
2056 dasm_put(Dst, 12920); 2656 dasm_put(Dst, 14047);
2057 break; 2657 break;
2058 case BC_CALLT: 2658 case BC_CALLT:
2059 dasm_put(Dst, 12968, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2659 dasm_put(Dst, 14095, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2060 dasm_put(Dst, 13086, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2660 dasm_put(Dst, 14213, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2061 break; 2661 break;
2062 2662
2063 case BC_ITERC: 2663 case BC_ITERC:
2064 dasm_put(Dst, 13160, LJ_TFUNC, 2+1, Dt7(->pc)); 2664 dasm_put(Dst, 14287, LJ_TFUNC, 2+1, Dt7(->pc));
2065 break; 2665 break;
2066 2666
2067 case BC_ITERN: 2667 case BC_ITERN:
2068#if LJ_HASJIT 2668#if LJ_HASJIT
2069#endif 2669#endif
2070 dasm_put(Dst, 13232, Dt6(->asize), Dt6(->array), LJ_TNIL); 2670 dasm_put(Dst, 14359, Dt6(->asize), Dt6(->array), LJ_TNIL);
2071 if (sse) { 2671 if (LJ_DUALNUM) {
2072 dasm_put(Dst, 13284); 2672 dasm_put(Dst, 11041, LJ_TISNUM);
2673 } else if (sse) {
2674 dasm_put(Dst, 11119);
2073 } else { 2675 } else {
2074 dasm_put(Dst, 13290); 2676 dasm_put(Dst, 14411);
2075 } 2677 }
2076 dasm_put(Dst, 13296); 2678 dasm_put(Dst, 14417);
2077 if (sse) { 2679 if (LJ_DUALNUM) {
2078 dasm_put(Dst, 10254); 2680 } else if (sse) {
2681 dasm_put(Dst, 11006);
2079 } else { 2682 } else {
2080 dasm_put(Dst, 10266); 2683 dasm_put(Dst, 11018);
2081 } 2684 }
2082 dasm_put(Dst, 13309, -BCBIAS_J*4); 2685 dasm_put(Dst, 14430, -BCBIAS_J*4);
2083 if (!sse) { 2686 if (!LJ_DUALNUM && !sse) {
2084 dasm_put(Dst, 13363); 2687 dasm_put(Dst, 14484);
2085 } 2688 }
2086 dasm_put(Dst, 13369, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2689 dasm_put(Dst, 14490, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2087 break; 2690 break;
2088 2691
2089 case BC_ISNEXT: 2692 case BC_ISNEXT:
2090 dasm_put(Dst, 13448, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2693 dasm_put(Dst, 14569, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2091 break; 2694 break;
2092 2695
2093 case BC_VARG: 2696 case BC_VARG:
2094 dasm_put(Dst, 13549, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2697 dasm_put(Dst, 14670, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2095 dasm_put(Dst, 13716, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2698 dasm_put(Dst, 14837, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2096 break; 2699 break;
2097 2700
2098 /* -- Returns ----------------------------------------------------------- */ 2701 /* -- Returns ----------------------------------------------------------- */
2099 2702
2100 case BC_RETM: 2703 case BC_RETM:
2101 dasm_put(Dst, 12920); 2704 dasm_put(Dst, 14047);
2102 break; 2705 break;
2103 2706
2104 case BC_RET: case BC_RET0: case BC_RET1: 2707 case BC_RET: case BC_RET0: case BC_RET1:
2105 if (op != BC_RET0) { 2708 if (op != BC_RET0) {
2106 dasm_put(Dst, 13786); 2709 dasm_put(Dst, 14907);
2107 } 2710 }
2108 dasm_put(Dst, 13790, FRAME_TYPE); 2711 dasm_put(Dst, 14911, FRAME_TYPE);
2109 switch (op) { 2712 switch (op) {
2110 case BC_RET: 2713 case BC_RET:
2111 dasm_put(Dst, 13809); 2714 dasm_put(Dst, 14930);
2112 break; 2715 break;
2113 case BC_RET1: 2716 case BC_RET1:
2114 dasm_put(Dst, 13863); 2717 dasm_put(Dst, 14984);
2115 /* fallthrough */ 2718 /* fallthrough */
2116 case BC_RET0: 2719 case BC_RET0:
2117 dasm_put(Dst, 13873); 2720 dasm_put(Dst, 14994);
2118 default: 2721 default:
2119 break; 2722 break;
2120 } 2723 }
2121 dasm_put(Dst, 13884, Dt7(->pc), PC2PROTO(k)); 2724 dasm_put(Dst, 15005, Dt7(->pc), PC2PROTO(k));
2122 if (op == BC_RET) { 2725 if (op == BC_RET) {
2123 dasm_put(Dst, 13932, LJ_TNIL); 2726 dasm_put(Dst, 15053, LJ_TNIL);
2124 } else { 2727 } else {
2125 dasm_put(Dst, 13943, LJ_TNIL); 2728 dasm_put(Dst, 15064, LJ_TNIL);
2126 } 2729 }
2127 dasm_put(Dst, 13950, -FRAME_VARG, FRAME_TYPEP); 2730 dasm_put(Dst, 15071, -FRAME_VARG, FRAME_TYPEP);
2128 if (op != BC_RET0) { 2731 if (op != BC_RET0) {
2129 dasm_put(Dst, 13974); 2732 dasm_put(Dst, 15095);
2130 } 2733 }
2131 dasm_put(Dst, 4579); 2734 dasm_put(Dst, 4669);
2132 break; 2735 break;
2133 2736
2134 /* -- Loops and branches ------------------------------------------------ */ 2737 /* -- Loops and branches ------------------------------------------------ */
@@ -2136,7 +2739,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2136 2739
2137 case BC_FORL: 2740 case BC_FORL:
2138#if LJ_HASJIT 2741#if LJ_HASJIT
2139 dasm_put(Dst, 13978, HOTCOUNT_PCMASK, GG_DISP2HOT); 2742 dasm_put(Dst, 15099, HOTCOUNT_PCMASK, GG_DISP2HOT);
2140#endif 2743#endif
2141 break; 2744 break;
2142 2745
@@ -2148,57 +2751,104 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2148 case BC_FORI: 2751 case BC_FORI:
2149 case BC_IFORL: 2752 case BC_IFORL:
2150 vk = (op == BC_IFORL || op == BC_JFORL); 2753 vk = (op == BC_IFORL || op == BC_JFORL);
2151 dasm_put(Dst, 13999); 2754 dasm_put(Dst, 15120);
2755 if (LJ_DUALNUM) {
2756 dasm_put(Dst, 15124, LJ_TISNUM);
2757 if (!vk) {
2758 dasm_put(Dst, 15134, LJ_TISNUM, LJ_TISNUM);
2759 } else {
2760 dasm_put(Dst, 15163);
2761 }
2762 dasm_put(Dst, 15182, LJ_TISNUM);
2763 if (op == BC_FORI) {
2764 dasm_put(Dst, 15193, -BCBIAS_J*4);
2765 } else if (op == BC_JFORI) {
2766 dasm_put(Dst, 15207, -BCBIAS_J*4, BC_JLOOP);
2767 } else if (op == BC_IFORL) {
2768 dasm_put(Dst, 15225, -BCBIAS_J*4);
2769 } else {
2770 dasm_put(Dst, 15217, BC_JLOOP);
2771 }
2772 dasm_put(Dst, 15239);
2773 if (vk) {
2774 dasm_put(Dst, 15264);
2775 }
2776 dasm_put(Dst, 15182, LJ_TISNUM);
2777 if (op == BC_FORI) {
2778 dasm_put(Dst, 15273);
2779 } else if (op == BC_JFORI) {
2780 dasm_put(Dst, 15278, -BCBIAS_J*4, BC_JLOOP);
2781 } else if (op == BC_IFORL) {
2782 dasm_put(Dst, 15292);
2783 } else {
2784 dasm_put(Dst, 15288, BC_JLOOP);
2785 }
2786 dasm_put(Dst, 15297);
2787 } else if (!vk) {
2788 dasm_put(Dst, 15304, LJ_TISNUM);
2789 }
2152 if (!vk) { 2790 if (!vk) {
2153 dasm_put(Dst, 14003, LJ_TISNUM, LJ_TISNUM); 2791 dasm_put(Dst, 15310, LJ_TISNUM);
2154 } 2792 }
2155 dasm_put(Dst, 14022); 2793 dasm_put(Dst, 15324);
2156 if (!vk) { 2794 if (!vk) {
2157 dasm_put(Dst, 14026, LJ_TISNUM); 2795 dasm_put(Dst, 15328, LJ_TISNUM);
2158 } 2796 }
2159 if (sse) { 2797 if (sse) {
2160 dasm_put(Dst, 14035); 2798 dasm_put(Dst, 15337);
2161 if (vk) { 2799 if (vk) {
2162 dasm_put(Dst, 14047); 2800 dasm_put(Dst, 15349);
2163 } else { 2801 } else {
2164 dasm_put(Dst, 14066); 2802 dasm_put(Dst, 15368);
2165 } 2803 }
2166 dasm_put(Dst, 14071); 2804 dasm_put(Dst, 15373);
2167 } else { 2805 } else {
2168 dasm_put(Dst, 14084); 2806 dasm_put(Dst, 15386);
2169 if (vk) { 2807 if (vk) {
2170 dasm_put(Dst, 14090); 2808 dasm_put(Dst, 15392);
2171 } else { 2809 } else {
2172 dasm_put(Dst, 14106); 2810 dasm_put(Dst, 15408);
2173 } 2811 }
2174 dasm_put(Dst, 14114); 2812 dasm_put(Dst, 15416);
2175 if (cmov) { 2813 if (cmov) {
2176 dasm_put(Dst, 9660); 2814 dasm_put(Dst, 10087);
2177 } else { 2815 } else {
2178 dasm_put(Dst, 9666); 2816 dasm_put(Dst, 10093);
2179 } 2817 }
2180 if (!cmov) { 2818 if (!cmov) {
2181 dasm_put(Dst, 14119); 2819 dasm_put(Dst, 15421);
2182 } 2820 }
2183 } 2821 }
2184 if (op == BC_FORI) { 2822 if (op == BC_FORI) {
2185 dasm_put(Dst, 14125, -BCBIAS_J*4); 2823 if (LJ_DUALNUM) {
2824 dasm_put(Dst, 15427);
2825 } else {
2826 dasm_put(Dst, 15432, -BCBIAS_J*4);
2827 }
2186 } else if (op == BC_JFORI) { 2828 } else if (op == BC_JFORI) {
2187 dasm_put(Dst, 14135, -BCBIAS_J*4, BC_JLOOP); 2829 dasm_put(Dst, 15442, -BCBIAS_J*4, BC_JLOOP);
2188 } else if (op == BC_IFORL) { 2830 } else if (op == BC_IFORL) {
2189 dasm_put(Dst, 14149, -BCBIAS_J*4); 2831 if (LJ_DUALNUM) {
2832 dasm_put(Dst, 15456);
2833 } else {
2834 dasm_put(Dst, 15461, -BCBIAS_J*4);
2835 }
2836 } else {
2837 dasm_put(Dst, 15452, BC_JLOOP);
2838 }
2839 if (LJ_DUALNUM) {
2840 dasm_put(Dst, 10016);
2190 } else { 2841 } else {
2191 dasm_put(Dst, 14145, BC_JLOOP); 2842 dasm_put(Dst, 10787);
2192 } 2843 }
2193 dasm_put(Dst, 9695);
2194 if (sse) { 2844 if (sse) {
2195 dasm_put(Dst, 14159); 2845 dasm_put(Dst, 15471);
2196 } 2846 }
2197 break; 2847 break;
2198 2848
2199 case BC_ITERL: 2849 case BC_ITERL:
2200#if LJ_HASJIT 2850#if LJ_HASJIT
2201 dasm_put(Dst, 13978, HOTCOUNT_PCMASK, GG_DISP2HOT); 2851 dasm_put(Dst, 15099, HOTCOUNT_PCMASK, GG_DISP2HOT);
2202#endif 2852#endif
2203 break; 2853 break;
2204 2854
@@ -2207,33 +2857,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2207 break; 2857 break;
2208#endif 2858#endif
2209 case BC_IITERL: 2859 case BC_IITERL:
2210 dasm_put(Dst, 14170, LJ_TNIL); 2860 dasm_put(Dst, 15482, LJ_TNIL);
2211 if (op == BC_JITERL) { 2861 if (op == BC_JITERL) {
2212 dasm_put(Dst, 14185, BC_JLOOP); 2862 dasm_put(Dst, 15497, BC_JLOOP);
2213 } else { 2863 } else {
2214 dasm_put(Dst, 14199, -BCBIAS_J*4); 2864 dasm_put(Dst, 15511, -BCBIAS_J*4);
2215 } 2865 }
2216 dasm_put(Dst, 10136); 2866 dasm_put(Dst, 10130);
2217 break; 2867 break;
2218 2868
2219 case BC_LOOP: 2869 case BC_LOOP:
2220#if LJ_HASJIT 2870#if LJ_HASJIT
2221 dasm_put(Dst, 13978, HOTCOUNT_PCMASK, GG_DISP2HOT); 2871 dasm_put(Dst, 15099, HOTCOUNT_PCMASK, GG_DISP2HOT);
2222#endif 2872#endif
2223 break; 2873 break;
2224 2874
2225 case BC_ILOOP: 2875 case BC_ILOOP:
2226 dasm_put(Dst, 9697); 2876 dasm_put(Dst, 10132);
2227 break; 2877 break;
2228 2878
2229 case BC_JLOOP: 2879 case BC_JLOOP:
2230#if LJ_HASJIT 2880#if LJ_HASJIT
2231 dasm_put(Dst, 14215, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2881 dasm_put(Dst, 15527, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2232#endif 2882#endif
2233 break; 2883 break;
2234 2884
2235 case BC_JMP: 2885 case BC_JMP:
2236 dasm_put(Dst, 14256, -BCBIAS_J*4); 2886 dasm_put(Dst, 15568, -BCBIAS_J*4);
2237 break; 2887 break;
2238 2888
2239 /* -- Function headers -------------------------------------------------- */ 2889 /* -- Function headers -------------------------------------------------- */
@@ -2247,7 +2897,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2247 2897
2248 case BC_FUNCF: 2898 case BC_FUNCF:
2249#if LJ_HASJIT 2899#if LJ_HASJIT
2250 dasm_put(Dst, 14282, HOTCOUNT_PCMASK, GG_DISP2HOT); 2900 dasm_put(Dst, 15594, HOTCOUNT_PCMASK, GG_DISP2HOT);
2251#endif 2901#endif
2252 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2902 case BC_FUNCV: /* NYI: compiled vararg functions. */
2253 break; 2903 break;
@@ -2257,47 +2907,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2257 break; 2907 break;
2258#endif 2908#endif
2259 case BC_IFUNCF: 2909 case BC_IFUNCF:
2260 dasm_put(Dst, 14303, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2910 dasm_put(Dst, 15615, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2261 if (op == BC_JFUNCF) { 2911 if (op == BC_JFUNCF) {
2262 dasm_put(Dst, 14334, BC_JLOOP); 2912 dasm_put(Dst, 15646, BC_JLOOP);
2263 } else { 2913 } else {
2264 dasm_put(Dst, 9697); 2914 dasm_put(Dst, 10132);
2265 } 2915 }
2266 dasm_put(Dst, 14343, LJ_TNIL); 2916 dasm_put(Dst, 15655, LJ_TNIL);
2267 break; 2917 break;
2268 2918
2269 case BC_JFUNCV: 2919 case BC_JFUNCV:
2270#if !LJ_HASJIT 2920#if !LJ_HASJIT
2271 break; 2921 break;
2272#endif 2922#endif
2273 dasm_put(Dst, 9014); 2923 dasm_put(Dst, 9242);
2274 break; /* NYI: compiled vararg functions. */ 2924 break; /* NYI: compiled vararg functions. */
2275 2925
2276 case BC_IFUNCV: 2926 case BC_IFUNCV:
2277 dasm_put(Dst, 14365, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2927 dasm_put(Dst, 15677, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2278 if (op == BC_JFUNCV) { 2928 if (op == BC_JFUNCV) {
2279 dasm_put(Dst, 14334, BC_JLOOP); 2929 dasm_put(Dst, 15646, BC_JLOOP);
2280 } else { 2930 } else {
2281 dasm_put(Dst, 14462, -4+PC2PROTO(k)); 2931 dasm_put(Dst, 15774, -4+PC2PROTO(k));
2282 } 2932 }
2283 dasm_put(Dst, 14487, LJ_TNIL); 2933 dasm_put(Dst, 15799, LJ_TNIL);
2284 break; 2934 break;
2285 2935
2286 case BC_FUNCC: 2936 case BC_FUNCC:
2287 case BC_FUNCCW: 2937 case BC_FUNCCW:
2288 dasm_put(Dst, 14509, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2938 dasm_put(Dst, 15821, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2289 if (op == BC_FUNCC) { 2939 if (op == BC_FUNCC) {
2290 dasm_put(Dst, 14539); 2940 dasm_put(Dst, 2341);
2291 } else { 2941 } else {
2292 dasm_put(Dst, 14543); 2942 dasm_put(Dst, 15851);
2293 } 2943 }
2294 dasm_put(Dst, 14551, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2944 dasm_put(Dst, 15859, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2295 if (op == BC_FUNCC) { 2945 if (op == BC_FUNCC) {
2296 dasm_put(Dst, 14561); 2946 dasm_put(Dst, 15869);
2297 } else { 2947 } else {
2298 dasm_put(Dst, 14566, DISPATCH_GL(wrapf)); 2948 dasm_put(Dst, 15874, DISPATCH_GL(wrapf));
2299 } 2949 }
2300 dasm_put(Dst, 14572, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2950 dasm_put(Dst, 15880, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2301 break; 2951 break;
2302 2952
2303 /* ---------------------------------------------------------------------- */ 2953 /* ---------------------------------------------------------------------- */
@@ -2325,7 +2975,7 @@ static int build_backend(BuildCtx *ctx)
2325 2975
2326 build_subroutines(ctx, cmov, sse); 2976 build_subroutines(ctx, cmov, sse);
2327 2977
2328 dasm_put(Dst, 14598); 2978 dasm_put(Dst, 15906);
2329 for (op = 0; op < BC__MAX; op++) 2979 for (op = 0; op < BC__MAX; op++)
2330 build_ins(ctx, (BCOp)op, op, cmov, sse); 2980 build_ins(ctx, (BCOp)op, op, cmov, sse);
2331 2981
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index d6d580e2..e4de09ee 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[14499] = { 15static const unsigned char build_actionlist[15785] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68, 17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237, 18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,
@@ -56,538 +56,591 @@ static const unsigned char build_actionlist[14499] = {
56 137,145,233,72,139,0,72,137,69,0,137,252,234,252,233,244,33,248,34,137,68, 56 137,145,233,72,139,0,72,137,69,0,137,252,234,252,233,244,33,248,34,137,68,
57 36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,244,247, 57 36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,244,247,
58 141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,35,15,182,70, 58 141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,35,15,182,70,
59 252,254,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141,68,36,80, 59 252,254,255,199,68,36,84,237,137,68,36,80,255,252,242,15,42,192,252,242,15,
60 252,233,244,247,248,36,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255, 60 17,68,36,80,255,72,141,68,36,80,252,233,244,247,248,36,15,182,70,252,254,
61 141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137, 61 141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,
62 205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244,249,248,32, 62 145,233,137,252,234,73,137,192,137,205,137,116,36,100,232,251,1,1,139,149,
63 15,182,78,252,253,72,139,40,72,137,44,202,139,6,15,182,204,15,182,232,131, 63 233,133,192,15,132,244,249,248,32,15,182,78,252,253,72,139,40,72,137,44,202,
64 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,141, 64 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,
65 177,233,41,214,139,105,252,248,184,237,252,233,244,29,248,37,137,68,36,80, 65 139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252,
66 199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,244,247,255,141, 66 233,244,29,248,37,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,
67 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,38,15,182,70,252, 67 252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233,
68 254,255,72,141,68,36,80,252,233,244,247,248,39,15,182,70,252,254,141,4,194, 68 244,248,248,38,15,182,70,252,254,255,72,141,68,36,80,252,233,244,247,248,
69 248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137, 69 39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,
70 252,234,73,137,192,137,205,137,116,36,100,232,251,1,2,139,149,233,133,192, 70 2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,36,100,
71 15,132,244,249,15,182,78,252,253,72,139,44,202,72,137,40,248,40,139,6,15, 71 232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,72,139,44,
72 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,139,141, 72 202,72,137,40,248,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
73 233,137,113,252,244,15,182,70,252,253,72,139,44,194,72,137,105,16,141,177, 73 255,36,252,235,248,3,139,141,233,137,113,252,244,15,182,70,252,253,72,139,
74 233,41,214,139,105,252,248,184,237,252,233,244,29,248,41,139,108,36,96,137, 74 44,194,72,137,105,16,141,177,233,41,214,139,105,252,248,184,237,252,233,244,
75 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116, 75 29,248,41,139,108,36,96,137,149,233,68,141,4,194,141,20,202,137,252,233,68,
76 36,100,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,42,248, 76 15,182,78,252,252,137,116,36,100,232,251,1,3,248,3,139,149,233,255,131,252,
77 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248, 77 248,1,15,135,244,42,248,4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,
78 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248, 78 141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
79 43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120, 79 252,255,36,252,235,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,
80 253,4,239,252,233,244,4,248,45,131,252,238,4,65,137,192,65,137,252,233,139, 80 244,6,248,44,129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,65,137,
81 108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4, 81 192,65,137,252,233,139,108,36,96,137,149,233,255,137,202,137,252,233,137,
82 252,233,244,3,248,46,255,131,252,238,4,139,108,36,96,137,149,233,137,252, 82 116,36,100,232,251,1,4,252,233,244,3,248,46,255,131,252,238,4,139,108,36,
83 233,139,86,252,252,137,116,36,100,232,251,1,5,252,233,244,3,255,248,47,141, 83 96,137,149,233,137,252,233,139,86,252,252,137,116,36,100,232,251,1,5,252,
84 4,199,252,233,244,247,248,48,141,4,199,141,44,252,234,149,252,233,244,248, 84 233,244,3,255,248,47,255,15,182,110,252,255,255,248,48,141,4,199,252,233,
85 248,49,141,4,194,137,197,252,233,244,248,248,50,141,4,194,248,1,141,44,252, 85 244,247,248,49,255,248,50,141,4,199,141,44,252,234,149,252,233,244,248,248,
86 234,248,2,141,12,202,65,137,232,65,137,193,15,182,70,252,252,137,68,36,32, 86 51,141,4,194,137,197,252,233,244,248,248,52,255,248,53,141,4,194,248,1,141,
87 139,108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,6, 87 44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,70,252,252,137,68,
88 139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,244,141, 88 36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,
89 176,233,184,237,252,233,244,27,248,51,255,139,108,36,96,137,149,233,141,20, 89 1,6,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,244,
90 141,176,233,184,237,252,233,244,27,248,54,139,108,36,96,137,149,233,141,20,
90 194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,252,233,244,42,248, 91 194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,252,233,244,42,248,
91 52,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36, 92 55,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,
92 96,137,149,233,137,202,68,141,4,193,137,252,233,137,116,36,100,232,251,1, 93 96,137,149,233,255,137,202,68,141,4,193,137,252,233,137,116,36,100,232,251,
93 8,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,131,192,1,57,215, 94 1,8,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,
94 15,132,244,53,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15, 95 15,132,244,56,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,
95 182,205,131,198,4,252,255,36,252,235,248,54,139,108,36,96,137,149,233,137, 96 182,205,131,198,4,252,255,36,252,235,248,57,139,108,36,96,137,149,233,137,
96 202,137,252,233,137,116,36,100,232,251,1,9,139,149,233,139,70,252,252,15, 97 202,137,252,233,137,116,36,100,232,251,1,9,139,149,233,139,70,252,252,15,
97 182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,248,55,129,252, 98 182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,248,58,129,252,
98 248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,244,56,139,114, 99 248,239,15,130,244,59,139,106,4,129,252,253,239,15,131,244,59,139,114,252,
99 252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,232,2,15, 100 252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,232,2,15,132,
100 132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232, 101 244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,1,15,
101 1,15,133,244,1,248,2,139,68,36,84,252,233,244,57,248,58,129,252,248,239,15, 102 133,244,1,248,2,255,139,68,36,84,252,233,244,60,248,61,129,252,248,239,15,
102 130,244,56,139,106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132, 103 130,244,59,139,106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132,
103 244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232, 104 244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,
104 248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66, 105 248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,
105 252,252,237,137,66,252,248,252,233,244,59,248,3,184,237,252,233,244,2,248, 106 252,252,237,137,66,252,248,252,233,244,62,248,3,184,237,252,233,244,2,248,
106 60,129,252,248,239,15,130,244,56,139,106,4,139,114,252,252,129,252,253,239, 107 63,129,252,248,239,15,130,244,59,139,106,4,139,114,252,252,129,252,253,239,
107 15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252, 108 15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252,
108 237,255,15,132,244,59,139,131,233,199,66,252,252,237,137,106,252,248,139, 109 237,255,15,132,244,62,139,131,233,199,66,252,252,237,137,106,252,248,139,
109 141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244, 110 141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,
110 250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255, 111 250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255,
111 252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,139,1,137,106, 112 252,233,244,62,248,5,139,105,4,129,252,253,239,15,132,244,62,139,1,137,106,
112 252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132,244,1, 113 252,252,137,66,252,248,252,233,244,62,248,6,129,252,253,239,15,132,244,1,
113 129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171, 114 129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171,
114 233,252,233,244,2,248,61,255,129,252,248,239,15,130,244,56,129,122,253,4, 115 233,252,233,244,2,248,64,255,129,252,248,239,15,130,244,59,129,122,253,4,
115 239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,239,15, 116 239,15,133,244,59,139,42,131,189,233,0,15,133,244,59,129,122,253,12,239,15,
116 133,244,56,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,106, 117 133,244,59,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,106,
117 252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,139,131,233, 118 252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,139,131,233,
118 137,171,233,137,133,233,248,1,252,233,244,59,248,62,129,252,248,239,15,130, 119 137,171,233,137,133,233,248,1,252,233,244,62,248,65,129,252,248,239,15,130,
119 244,56,129,122,253,4,239,15,133,244,56,137,213,68,141,66,8,139,18,139,76, 120 244,59,129,122,253,4,239,15,133,244,59,137,213,68,141,66,8,139,18,139,76,
120 36,96,232,251,1,10,137,252,234,72,139,40,139,114,252,252,72,137,106,252,248, 121 36,96,232,251,1,10,137,252,234,72,139,40,139,114,252,252,72,137,106,252,248,
121 252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,122,253,4,239,255, 122 252,233,244,62,248,66,129,252,248,239,15,133,244,59,129,122,253,4,239,255,
122 15,135,244,56,255,252,242,15,16,2,252,233,244,64,255,221,2,252,233,244,65, 123 15,133,244,247,139,42,252,233,244,67,248,1,15,135,244,59,255,15,131,244,59,
123 255,248,66,129,252,248,239,15,130,244,56,139,114,252,252,129,122,253,4,239, 124 255,252,242,15,16,2,252,233,244,68,255,221,2,252,233,244,69,255,248,70,129,
124 15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244, 125 252,248,239,15,130,244,59,139,114,252,252,129,122,253,4,239,15,133,244,249,
125 59,248,3,129,122,253,4,239,15,135,244,56,131,187,233,0,15,133,244,56,139, 126 139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,62,248,3,129,122,
126 171,233,59,171,233,255,15,130,244,247,232,244,67,248,1,139,108,36,96,137, 127 253,4,239,15,135,244,59,131,187,233,0,15,133,244,59,139,171,233,59,171,233,
127 149,233,137,116,36,100,137,252,233,232,251,1,11,139,149,233,252,233,244,2, 128 255,15,130,244,247,232,244,71,248,1,139,108,36,96,137,149,233,137,116,36,
128 248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129,122,253,4,239, 129 100,137,252,233,255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233,
129 15,133,244,56,139,108,36,96,137,149,233,255,137,149,233,139,114,252,252,68, 130 244,2,248,72,129,252,248,239,15,130,244,59,15,132,244,248,248,1,129,122,253,
130 141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,12,139,149,233,133,192, 131 4,239,15,133,244,59,139,108,36,96,137,149,233,137,149,233,139,114,252,252,
131 15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248, 132 68,141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,13,139,149,233,133,
132 69,184,237,252,233,244,70,248,2,199,66,12,237,252,233,244,1,248,3,199,66, 133 192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,
133 252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56,255,139,42, 134 248,73,184,237,255,252,233,244,74,248,2,199,66,12,237,252,233,244,1,248,3,
134 129,122,253,4,239,15,133,244,56,255,131,189,233,0,15,133,244,56,255,139,106, 135 199,66,252,252,237,252,233,244,62,248,75,129,252,248,239,15,130,244,59,139,
135 252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199, 136 42,129,122,253,4,239,15,133,244,59,255,131,189,233,0,15,133,244,59,255,139,
136 66,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130,244,56,129, 137 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
137 122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,114,252, 138 199,66,12,237,184,237,252,233,244,74,248,76,129,252,248,239,15,130,244,59,
138 252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88, 139 129,122,253,4,239,15,133,244,59,129,122,253,12,239,255,139,114,252,252,255,
139 193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131, 140 139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,
140 244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,72,139, 141 8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,
141 40,72,137,42,252,233,244,69,248,2,131,189,233,0,15,132,244,73,137,252,233, 142 242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,
142 137,213,137,194,232,251,1,13,137,252,234,133,192,15,133,244,1,248,73,184, 143 233,248,1,129,120,253,4,239,15,132,244,77,72,139,40,72,137,42,252,233,244,
143 237,252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,139,42,129,122, 144 73,248,2,131,189,233,0,15,132,244,77,137,252,233,137,213,137,194,232,251,
144 253,4,239,15,133,244,56,255,139,106,252,248,139,133,233,139,114,252,252,199, 145 1,14,137,252,234,133,192,15,133,244,1,248,77,184,237,252,233,244,74,248,78,
145 66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252, 146 255,139,106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,
146 238,221,90,8,255,184,237,252,233,244,70,248,75,129,252,248,239,15,130,244, 147 252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,
147 56,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229, 148 8,255,217,252,238,221,90,8,255,184,237,252,233,244,74,248,79,129,252,248,
148 1,1,252,238,252,233,244,27,248,76,129,252,248,239,15,130,244,56,129,122,253, 149 239,15,130,244,59,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,
149 12,239,15,133,244,56,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114, 150 237,235,131,229,1,1,252,238,252,233,244,27,248,80,129,252,248,239,15,130,
150 8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,77,129,252, 151 244,59,129,122,253,12,239,15,133,244,59,255,139,106,4,137,106,12,199,66,4,
151 248,239,15,130,244,56,139,42,139,114,252,252,137,116,36,100,137,108,36,80, 152 237,139,42,139,114,8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,
152 129,122,253,4,239,15,133,244,56,72,131,189,233,0,15,133,244,56,128,189,233, 153 244,1,248,81,129,252,248,239,15,130,244,59,139,42,139,114,252,252,137,116,
153 235,15,135,244,56,139,141,233,15,132,244,247,255,59,141,233,15,132,244,56, 154 36,100,137,108,36,80,129,122,253,4,239,15,133,244,59,72,131,189,233,0,15,
154 248,1,141,116,193,252,240,59,181,233,15,135,244,56,137,181,233,139,108,36, 155 133,244,59,128,189,233,235,15,135,244,59,139,141,233,15,132,244,247,255,59,
155 96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206, 156 141,233,15,132,244,59,248,1,141,116,193,252,240,59,181,233,15,135,244,59,
156 15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15, 157 137,181,233,139,108,36,96,137,149,233,131,194,8,137,149,233,141,108,194,232,
157 133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,255,139,108, 158 72,41,252,245,57,206,15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,
158 36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139, 159 252,238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,
159 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50, 160 233,237,255,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,
160 193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1, 161 244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,
161 72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252, 162 244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,
162 237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252,255, 163 248,5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,
163 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252, 164 2,199,66,252,252,237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,
164 252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237,252, 165 252,255,252,255,252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,
165 233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,251, 166 248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,
166 1,0,139,116,36,80,139,149,233,252,233,244,4,248,78,139,106,252,248,139,173, 167 137,2,184,237,252,233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,
167 233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133, 168 252,233,232,251,1,0,139,116,36,80,139,149,233,252,233,244,4,248,82,139,106,
168 244,56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,141, 169 252,248,139,173,233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,
169 233,15,132,244,56,248,1,141,116,193,252,248,59,181,233,15,135,244,56,137, 170 233,0,15,133,244,59,255,128,189,233,235,15,135,244,59,139,141,233,15,132,
170 181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72,41,252, 171 244,247,59,141,233,15,132,244,59,248,1,141,116,193,252,248,59,181,233,15,
171 245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248,131,252, 172 135,244,59,137,181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,
172 238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233, 173 252,240,72,41,252,245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,
173 237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254, 174 70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,
174 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252, 175 244,24,199,131,233,237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,
175 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248, 176 239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,
176 5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248, 177 41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,
177 7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233, 178 137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,
178 244,14,248,8,137,252,242,137,252,233,232,251,1,14,248,9,139,76,36,80,137, 179 244,5,248,6,141,70,1,248,7,139,116,36,100,137,68,36,84,49,201,252,247,198,
179 185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,233,252, 180 237,15,132,244,13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,
180 233,244,4,248,79,139,108,36,96,72,252,247,133,233,237,15,132,244,56,255,137, 181 15,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,
181 149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136, 182 116,36,80,139,149,233,252,233,244,4,248,83,139,108,36,96,72,252,247,133,233,
182 133,233,252,233,244,16,255,248,65,139,114,252,252,221,90,252,248,252,233, 183 237,15,132,244,59,255,137,149,233,141,68,194,252,248,137,133,233,49,192,72,
183 244,59,248,80,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 184 137,133,233,176,235,136,133,233,252,233,244,16,255,248,67,255,248,69,139,
184 56,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,64,139, 185 114,252,252,221,90,252,248,252,233,244,62,255,248,84,129,252,248,239,15,130,
185 114,252,252,252,242,15,17,66,252,248,255,248,80,129,252,248,239,15,130,244, 186 244,59,255,129,122,253,4,239,15,133,244,248,139,42,131,252,253,0,15,137,244,
186 56,129,122,253,4,239,15,135,244,56,221,2,217,225,248,64,248,65,139,114,252, 187 67,252,247,221,15,136,244,247,248,85,248,67,139,114,252,252,199,66,252,252,
187 252,221,90,252,248,255,248,59,184,237,248,70,137,68,36,84,248,57,252,247, 188 237,137,106,252,248,252,233,244,62,248,1,139,114,252,252,199,66,252,252,0,
188 198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253, 189 0,224,65,199,66,252,248,0,0,0,0,252,233,244,62,248,2,15,135,244,59,255,129,
189 72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 190 122,253,4,239,15,131,244,59,255,252,242,15,16,2,72,184,237,237,102,72,15,
190 252,255,36,252,235,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248, 191 110,200,15,84,193,248,68,139,114,252,252,252,242,15,17,66,252,248,255,221,
191 7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,255,248,81,129, 192 2,217,225,248,68,248,69,139,114,252,252,221,90,252,248,255,248,62,184,237,
192 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2, 193 248,74,137,68,36,84,248,60,252,247,198,237,15,133,244,253,248,5,56,70,252,
193 252,233,244,64,248,82,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 194 255,15,135,244,252,15,182,78,252,253,72,252,247,209,141,20,202,139,6,15,182,
194 135,244,56,252,242,15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248, 195 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,199,68,194,252,
195 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244, 196 244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,255,
196 85,252,233,244,64,255,248,81,129,252,248,239,15,130,244,56,129,122,253,4, 197 252,255,252,233,244,14,248,86,255,129,122,253,4,239,15,133,244,247,139,42,
197 239,15,135,244,56,221,2,217,252,250,252,233,244,65,248,82,129,252,248,239, 198 252,233,244,67,248,1,15,135,244,59,255,252,242,15,16,2,232,244,87,255,252,
198 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244, 199 242,15,45,232,129,252,253,0,0,0,128,15,133,244,67,252,242,15,42,205,102,15,
199 65,248,84,255,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 200 46,193,15,138,244,68,15,132,244,67,255,221,2,232,244,87,255,248,88,255,252,
200 56,221,2,232,244,85,252,233,244,65,255,248,86,129,252,248,239,15,130,244, 201 242,15,16,2,232,244,89,255,221,2,232,244,89,255,248,90,129,252,248,239,15,
201 56,129,122,253,4,239,15,135,244,56,217,252,237,221,2,217,252,241,252,233, 202 130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,81,2,252,233,244,68,
202 244,65,248,87,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 203 255,248,90,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,
203 56,217,252,236,221,2,217,252,241,252,233,244,65,248,88,129,252,248,239,255, 204 221,2,217,252,250,252,233,244,69,255,248,91,129,252,248,239,15,130,244,59,
204 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,89,252,233,244, 205 129,122,253,4,239,15,131,244,59,217,252,237,221,2,217,252,241,252,233,244,
205 65,248,90,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221, 206 69,248,92,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,217,
206 2,217,252,254,252,233,244,65,248,91,129,252,248,239,255,15,130,244,56,129, 207 252,236,221,2,217,252,241,252,233,244,69,248,93,129,252,248,239,255,15,130,
207 122,253,4,239,15,135,244,56,221,2,217,252,255,252,233,244,65,248,92,129,252, 208 244,59,129,122,253,4,239,15,131,244,59,221,2,232,244,94,252,233,244,69,248,
208 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,242,221, 209 95,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,217,
209 216,252,233,244,65,248,93,129,252,248,239,15,130,244,56,255,129,122,253,4, 210 252,254,252,233,244,69,248,96,129,252,248,239,255,15,130,244,59,129,122,253,
210 239,15,135,244,56,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252, 211 4,239,15,131,244,59,221,2,217,252,255,252,233,244,69,248,97,129,252,248,239,
211 243,252,233,244,65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239, 212 15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,217,252,242,221,216,252,
212 15,135,244,56,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217, 213 233,244,69,248,98,129,252,248,239,15,130,244,59,255,129,122,253,4,239,15,
213 252,243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4, 214 131,244,59,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
214 239,15,135,244,56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96, 215 252,233,244,69,248,99,129,252,248,239,15,130,244,59,129,122,253,4,239,15,
215 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15, 216 131,244,59,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
216 16,2,255,137,213,232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252, 217 252,243,252,233,244,69,248,100,129,252,248,239,15,130,244,59,129,122,253,
217 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255, 218 4,239,15,131,244,59,255,221,2,217,232,217,252,243,252,233,244,69,255,248,
218 137,213,232,251,1,16,137,252,234,252,233,244,64,255,248,98,129,252,248,239, 219 101,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,
219 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213, 220 15,16,2,255,137,213,232,251,1,16,137,252,234,252,233,244,68,255,248,102,129,
220 232,251,1,17,137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239, 221 252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,
221 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,139,106,252, 222 255,137,213,232,251,1,17,137,252,234,252,233,244,68,255,248,103,129,252,248,
222 248,252,242,15,89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130, 223 239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,255,137,
223 244,56,129,122,253,4,239,15,135,244,56,221,2,139,106,252,248,220,141,233, 224 213,232,251,1,18,137,252,234,252,233,244,68,248,104,255,248,105,129,252,248,
224 252,233,244,65,255,248,101,129,252,248,239,15,130,244,56,129,122,253,4,239, 225 239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,139,106,
225 15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,217,252,243, 226 252,248,252,242,15,89,133,233,252,233,244,68,255,248,105,129,252,248,239,
226 252,233,244,65,248,102,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 227 15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,139,106,252,248,220,141,
227 135,244,56,129,122,253,12,239,255,15,135,244,56,221,66,8,221,2,217,252,253, 228 233,252,233,244,69,255,248,106,129,252,248,239,15,130,244,59,129,122,253,
228 221,217,252,233,244,65,248,103,129,252,248,239,15,130,244,56,139,106,4,129, 229 4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,221,2,221,66,8,217,252,
229 252,253,239,15,135,244,56,139,114,252,252,139,2,137,106,252,252,137,66,252, 230 243,252,233,244,69,248,107,129,252,248,239,15,130,244,59,129,122,253,4,239,
230 248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249, 231 15,131,244,59,129,122,253,12,239,255,15,131,244,59,221,66,8,221,2,217,252,
231 184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21, 232 253,221,217,252,233,244,69,248,108,129,252,248,239,15,130,244,59,139,106,
232 41,197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252, 233 4,129,252,253,239,15,131,244,59,139,114,252,252,139,2,137,106,252,252,137,
233 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248, 234 66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,
234 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,70,248,3,255,15, 235 244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,
235 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242, 236 237,21,41,197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,
236 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17, 237 106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,
237 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248, 238 252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,74,248,3,
238 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,104,129,252, 239 255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,
239 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255, 240 242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,
240 248,104,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221, 241 17,66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248,
242 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,109,129,252,
243 248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,255,
244 248,109,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,221,
241 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132, 245 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,
242 244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242,15,17,66, 246 244,250,255,15,40,224,232,244,110,252,242,15,92,224,248,1,252,242,15,17,66,
243 252,248,252,242,15,17,34,255,217,192,232,244,105,220,252,233,248,1,221,90, 247 252,248,252,242,15,17,34,255,217,192,232,244,110,220,252,233,248,1,221,90,
244 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184, 248 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,
245 237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248, 249 237,252,233,244,74,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,
246 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248, 250 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,
247 106,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122, 251 111,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,122,
248 253,12,239,15,135,244,56,221,66,8,221,2,248,1,217,252,248,223,224,158,15, 252 253,12,239,15,131,244,59,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
249 138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15,130,244,56, 253 138,244,1,221,217,252,233,244,69,255,248,112,129,252,248,239,15,130,244,59,
250 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242, 254 129,122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,252,242,
251 15,16,2,252,242,15,16,74,8,232,244,108,252,233,244,64,255,248,107,129,252, 255 15,16,2,252,242,15,16,74,8,232,244,113,252,233,244,68,255,248,112,129,252,
252 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239, 256 248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,122,253,12,239,
253 15,135,244,56,221,2,221,66,8,232,244,108,252,233,244,65,255,248,109,129,252, 257 15,131,244,59,221,2,221,66,8,232,244,113,252,233,244,69,255,248,114,185,2,
254 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189, 258 0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,
255 2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,15,135, 259 67,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,79,108,
256 244,56,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233, 260 202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,59,255,252,233,244,252,
257 244,1,255,248,110,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135, 261 248,4,15,135,244,59,255,252,242,15,16,2,248,5,57,193,15,131,244,68,129,124,
258 244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253, 262 253,202,252,252,239,255,15,130,244,252,15,135,244,59,252,242,15,42,76,202,
259 252,234,252,252,239,15,135,244,56,252,242,15,16,76,252,234,252,248,252,242, 263 252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,248,7,252,
260 15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,56,255,248, 264 242,15,93,193,131,193,1,252,233,244,5,255,248,115,185,2,0,0,0,129,122,253,
261 111,129,252,248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,139,42, 265 4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,67,129,124,253,202,
262 255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233,244,65,255, 266 252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248,131,193,
263 248,112,129,252,248,239,15,133,244,56,129,122,253,4,239,15,133,244,56,139, 267 1,252,233,244,1,248,3,15,135,244,59,255,248,6,252,242,15,16,76,202,252,248,
264 42,139,114,252,252,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242, 268 248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,252,233,
265 15,42,197,252,233,244,64,255,137,108,36,80,219,68,36,80,252,233,244,65,255, 269 244,59,255,248,116,129,252,248,239,15,130,244,59,129,122,253,4,239,15,133,
266 248,113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248, 270 244,59,139,42,255,139,173,233,252,233,244,67,255,252,242,15,42,133,233,252,
267 239,15,133,244,56,129,122,253,4,239,15,135,244,56,255,252,242,15,44,42,129, 271 233,244,68,255,219,133,233,252,233,244,69,255,248,117,129,252,248,239,15,
268 252,253,252,255,0,0,0,15,135,244,56,137,108,36,84,255,221,2,219,92,36,84, 272 133,244,59,129,122,253,4,239,15,133,244,59,139,42,139,114,252,252,131,189,
269 129,124,36,84,252,255,0,0,0,15,135,244,56,255,199,68,36,32,1,0,0,0,72,141, 273 233,1,15,130,244,77,15,182,173,233,255,252,242,15,42,197,252,233,244,68,255,
270 68,36,84,248,114,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137, 274 137,108,36,80,219,68,36,80,252,233,244,69,255,248,118,139,171,233,59,171,
271 252,233,137,116,36,100,232,251,1,18,139,149,233,139,114,252,252,199,66,252, 275 233,15,130,244,247,232,244,71,248,1,129,252,248,239,15,133,244,59,129,122,
272 252,237,137,66,252,248,252,233,244,59,248,115,139,171,233,59,171,233,15,130, 276 253,4,239,255,15,133,244,59,139,42,129,252,253,252,255,0,0,0,15,135,244,59,
273 244,247,232,244,67,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129, 277 137,108,36,84,255,15,131,244,59,252,242,15,44,42,129,252,253,252,255,0,0,
274 252,248,239,15,130,244,56,15,134,244,247,129,122,253,20,239,255,252,242,15, 278 0,15,135,244,59,137,108,36,84,255,15,131,244,59,221,2,219,92,36,84,129,124,
275 44,106,16,137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253, 279 36,84,252,255,0,0,0,15,135,244,59,255,199,68,36,32,1,0,0,0,72,141,68,36,84,
276 4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,42,137,108,36,32, 280 248,119,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233,
277 139,173,233,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,251, 281 137,116,36,100,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252,237,
278 248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,116,141, 282 137,66,252,248,252,233,244,62,248,120,139,171,233,59,171,233,15,130,244,247,
279 172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,114,248,5, 283 232,244,71,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,
280 15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248, 284 239,15,130,244,59,15,134,244,247,129,122,253,20,239,255,15,133,244,59,139,
281 7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252, 285 106,16,137,108,36,84,255,15,131,244,59,252,242,15,44,106,16,137,108,36,84,
282 233,244,3,248,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244, 286 255,15,131,244,59,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133,
283 56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,255,129,122,253, 287 244,59,129,122,253,12,239,255,139,42,137,108,36,32,139,173,233,255,139,74,
284 4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15, 288 8,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133,
285 44,66,8,255,221,66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,116, 289 201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,121,141,172,253,
286 131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130,244,118,15, 290 13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,119,248,5,15,140,
287 182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15, 291 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,
288 133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239,255,15,130, 292 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,
289 244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,122,253, 293 3,248,121,49,192,252,233,244,4,248,122,129,252,248,239,15,130,244,59,139,
290 4,239,15,133,244,56,139,42,139,133,233,133,192,15,132,244,116,57,131,233, 294 171,233,59,171,233,15,130,244,247,232,244,71,248,1,255,129,122,253,4,239,
291 15,130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,248,1,255, 295 15,133,244,59,129,122,253,12,239,139,42,255,15,133,244,59,139,66,8,255,15,
292 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116, 296 131,244,59,252,242,15,44,66,8,255,15,131,244,59,221,66,8,219,92,36,84,139,
293 36,84,252,233,244,114,248,121,129,252,248,239,15,130,244,56,139,171,233,59, 297 68,36,84,255,133,192,15,142,244,121,131,189,233,1,15,130,244,121,15,133,244,
294 171,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139, 298 123,57,131,233,15,130,244,123,15,182,141,233,139,171,233,137,68,36,32,248,
295 42,139,133,233,57,131,233,255,15,130,244,120,129,197,239,137,116,36,84,137, 299 1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,119,248,
296 68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15, 300 124,129,252,248,239,255,15,130,244,59,139,171,233,59,171,233,15,130,244,247,
297 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248, 301 232,244,71,248,1,129,122,253,4,239,15,133,244,59,139,42,139,133,233,133,192,
298 3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,114,248,122, 302 15,132,244,121,57,131,233,15,130,244,125,129,197,239,137,116,36,84,137,68,
299 129,252,248,239,15,130,244,56,255,139,171,233,59,171,233,15,130,244,247,232, 303 36,32,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,
300 244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,57,131,233, 304 244,1,137,252,240,139,116,36,84,252,233,244,119,248,126,129,252,248,239,15,
301 15,130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233, 305 130,244,59,139,171,233,59,171,233,15,130,244,247,232,244,71,248,1,129,122,
302 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249, 306 253,4,239,15,133,244,59,139,42,139,133,233,57,131,233,255,15,130,244,125,
303 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244, 307 129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,
304 1,137,252,240,139,116,36,84,252,233,244,114,248,123,129,252,248,239,15,130, 308 15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,
305 244,56,129,122,253,4,239,15,133,244,56,137,213,139,10,232,251,1,19,137,252, 309 131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,
306 234,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239,15,130, 310 116,36,84,252,233,244,119,248,127,129,252,248,239,15,130,244,59,255,139,171,
307 244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102, 311 233,59,171,233,15,130,244,247,232,244,71,248,1,129,122,253,4,239,15,133,244,
308 72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233, 312 59,139,42,139,133,233,57,131,233,15,130,244,125,129,197,239,137,116,36,84,
309 244,64,255,248,125,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135, 313 137,68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,
310 244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193, 314 97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,2,
311 102,15,126,197,255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244, 315 136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,
312 126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,0,252,242,15,88,193, 316 119,248,128,129,252,248,239,15,130,244,59,129,122,253,4,239,15,133,244,59,
313 102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,128,129,252,248, 317 137,213,139,10,232,251,1,20,137,252,234,255,137,197,252,233,244,67,255,252,
314 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189, 318 242,15,42,192,252,233,244,68,255,248,129,129,122,253,4,239,255,15,133,244,
315 237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15, 319 247,139,42,252,233,244,85,248,1,15,135,244,59,255,252,242,15,16,2,72,189,
316 16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,129,129,252,248,239,15, 320 237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,233,244,
317 130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237, 321 85,255,248,130,255,72,189,237,237,102,72,15,110,205,255,199,68,36,80,0,0,
318 102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252, 322 192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,59,255,
319 242,15,88,193,102,15,126,193,49,205,255,248,130,129,252,248,239,15,130,244, 323 252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,84,141,
320 56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,72, 324 68,194,252,240,248,1,57,208,15,134,244,85,129,120,253,4,239,255,15,133,244,
321 15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,126,255, 325 248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,131,255,15,131,244,131,
322 248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252, 326 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,
323 242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126, 327 252,233,244,1,248,132,255,15,133,244,248,11,40,131,232,8,252,233,244,1,248,
324 197,255,252,247,213,255,248,126,252,242,15,42,197,252,233,244,64,255,248, 328 2,15,135,244,131,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,
325 127,139,68,36,84,252,233,244,56,255,248,132,129,252,248,239,15,130,244,56, 329 255,131,232,8,252,233,244,1,248,133,255,15,133,244,248,51,40,131,232,8,252,
326 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242, 330 233,244,1,248,2,15,135,244,131,255,252,242,15,16,0,252,242,15,88,193,102,
327 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88, 331 15,126,193,49,205,255,131,232,8,252,233,244,1,248,134,129,122,253,4,239,255,
328 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137, 332 248,2,15,205,252,233,244,85,248,135,129,122,253,4,239,255,248,2,252,247,213,
329 193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,129,122,253, 333 255,248,85,252,242,15,42,197,252,233,244,68,255,248,131,139,68,36,84,252,
330 4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252, 334 233,244,59,255,248,136,129,122,253,4,239,255,248,2,129,122,253,12,239,15,
335 133,244,59,139,74,8,255,248,136,129,252,248,239,15,130,244,59,129,122,253,
336 4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,252,242,15,16,2,252,
331 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242, 337 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,
332 15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252, 338 15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,85,255,248,
333 233,244,126,255,248,134,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 339 137,129,122,253,4,239,255,248,137,129,252,248,239,15,130,244,59,129,122,253,
334 135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16, 340 4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,252,242,15,16,2,252,
335 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202, 341 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,
336 137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244, 342 15,88,202,102,15,126,197,102,15,126,201,255,211,252,237,252,233,244,85,255,
337 126,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 343 248,138,129,122,253,4,239,255,248,138,129,252,248,239,15,130,244,59,129,122,
338 56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72, 344 253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,252,242,15,16,2,
339 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, 345 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
340 102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,126,255,248, 346 242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,85,
341 136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122, 347 255,248,139,129,122,253,4,239,255,248,139,129,252,248,239,15,130,244,59,129,
342 253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237, 348 122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,252,242,15,16,
343 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126, 349 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
344 197,102,15,126,201,255,211,205,137,193,252,233,244,126,248,118,184,237,252, 350 242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,252,233,244,85,255,
345 233,244,56,248,120,184,237,248,56,139,108,36,96,139,114,252,252,137,116,36, 351 248,140,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,59,129,122,
346 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248, 352 253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,252,242,15,16,2,
347 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192, 353 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
348 15,143,244,70,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1, 354 242,15,88,202,102,15,126,197,102,15,126,201,255,211,205,252,233,244,85,248,
349 139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205, 355 123,184,237,252,233,244,59,248,125,184,237,248,59,139,108,36,96,139,114,252,
350 131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,237,15,133,244,249, 356 252,137,116,36,100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,
351 15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137, 357 139,66,252,248,59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,
352 252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252,233, 358 149,233,133,192,15,143,244,74,248,1,255,139,141,233,41,209,193,252,233,3,
353 232,251,1,0,139,149,233,49,192,252,233,244,1,248,67,93,72,137,108,36,32,139, 359 133,192,141,65,1,139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,
354 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137, 360 252,233,15,182,205,131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,
355 133,233,232,251,1,20,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72, 361 237,15,133,244,249,15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,
356 139,108,36,32,85,195,248,137,255,15,182,131,233,168,235,15,133,244,251,168, 362 244,27,248,3,137,252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,
357 235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247, 363 186,237,137,252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,71,93,
358 255,248,138,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,139, 364 72,137,108,36,32,139,108,36,96,137,116,36,100,137,149,233,255,141,68,194,
359 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139, 365 252,248,137,252,233,137,133,233,232,251,1,21,139,149,233,139,133,233,41,208,
360 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149, 366 193,232,3,131,192,1,72,139,108,36,32,85,195,248,141,255,15,182,131,233,168,
361 233,137,252,242,137,252,233,232,251,1,21,248,3,139,149,233,248,4,15,182,78, 367 235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,
362 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235, 368 139,233,252,233,244,247,255,248,142,15,182,131,233,168,235,15,133,244,251,
363 233,248,140,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,141,255,139, 369 252,233,244,247,248,143,15,182,131,233,168,235,15,133,244,251,168,235,15,
364 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233, 370 132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244,251,248,1,255,
365 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251, 371 139,108,36,96,137,149,233,137,252,242,137,252,233,232,251,1,22,248,3,139,
366 1,22,252,233,244,3,255,248,142,137,116,36,100,255,248,143,255,137,116,36, 372 149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,
367 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137, 373 252,255,164,253,252,235,233,248,144,131,198,4,139,77,232,137,76,36,84,252,
368 133,233,137,252,242,137,252,233,232,251,1,23,199,68,36,100,0,0,0,0,255,131, 374 233,244,4,248,145,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,
369 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182, 375 139,108,36,96,137,149,233,137,133,233,137,252,242,141,139,233,72,137,171,
370 78,252,253,193,232,3,131,192,1,252,255,229,248,144,255,65,85,65,84,65,83, 376 233,137,116,36,100,232,251,1,23,252,233,244,3,255,248,146,137,116,36,100,
371 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252, 377 255,248,147,255,137,116,36,100,131,206,1,248,1,255,141,68,194,252,248,139,
372 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139, 378 108,36,96,137,149,233,137,133,233,137,252,242,137,252,233,232,251,1,24,199,
373 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197, 379 68,36,100,0,0,0,0,255,131,230,252,254,255,139,149,233,72,137,193,139,133,
374 128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68, 380 233,41,208,72,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,248,
375 15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68, 381 148,255,65,85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,
376 15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17, 382 83,82,81,80,15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,
377 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160, 383 252,240,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,72,129,
378 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15, 384 252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68,15,17,
379 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137, 385 117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242,68,
380 149,233,72,141,148,253,36,233,141,139,233,232,251,1,24,72,139,141,233,72, 386 15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,
381 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,145, 387 17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109,168,
382 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233, 388 252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,
383 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68, 389 17,77,136,252,242,15,17,69,128,139,171,233,139,147,233,72,137,171,233,199,
384 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185, 390 131,233,0,0,0,0,137,149,233,72,141,148,253,36,233,141,139,233,232,251,1,25,
385 233,72,137,204,102,15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108, 391 72,139,141,233,72,129,225,239,137,169,233,139,149,233,139,177,233,252,233,
386 36,32,76,139,100,36,80,133,192,15,136,244,249,137,68,36,84,139,122,252,248, 392 244,247,255,248,149,255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,
387 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182, 393 102,68,15,111,177,233,102,68,15,111,169,233,102,68,15,111,161,233,102,68,
388 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139, 394 15,111,153,233,102,68,15,111,145,233,102,68,15,111,137,233,102,68,15,111,
389 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232, 395 129,233,102,15,111,185,233,72,137,204,102,15,111,49,76,139,124,36,16,76,139,
390 251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36, 396 116,36,24,76,139,108,36,32,76,139,100,36,80,133,192,15,136,244,249,137,68,
391 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, 397 36,84,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,
392 36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,184, 398 233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,129,252,253,239,
393 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244, 399 15,130,244,248,255,139,68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,
394 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184, 400 137,252,233,137,194,232,251,1,26,255,248,87,255,217,124,36,4,137,68,36,8,
395 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92, 401 102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,
396 200,15,40,193,248,1,195,248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102, 402 36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,150,72,184,237,237,
397 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252, 403 102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,
398 217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,110,208, 404 102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,
399 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, 405 203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,
400 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, 406 15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,89,255,217,124,36,4,137,
401 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242, 407 68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,
402 15,92,200,15,40,193,248,1,195,248,105,255,217,124,36,4,137,68,36,8,102,184, 408 217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,151,72,184,
403 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 409 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,
404 139,68,36,8,195,255,248,148,72,184,237,237,102,72,15,110,208,72,184,237,237, 410 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,
405 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, 411 242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,
406 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102, 412 193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,110,255,217,
407 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, 413 124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,
408 86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,15,94,193,72,184, 414 36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,152,72,184,237,237,
409 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102, 415 102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,
410 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252, 416 102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,
411 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194, 417 242,15,92,203,72,184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,
412 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242, 418 84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,153,255,15,
413 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255, 419 40,232,252,242,15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,
414 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255, 420 102,72,15,110,216,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,
415 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222, 421 15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,
416 252,233,195,255,248,89,217,252,234,222,201,248,150,217,84,36,8,129,124,36, 422 102,72,15,110,208,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,
417 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248, 423 40,197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,
418 248,151,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, 424 40,197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,
419 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,255, 425 0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
420 248,152,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254, 426 252,252,217,108,36,4,222,201,222,252,233,195,255,248,94,217,252,234,222,201,
421 15,138,244,255,248,153,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15, 427 248,154,217,84,36,8,129,124,36,8,0,0,128,127,15,132,244,247,129,124,36,8,
422 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132, 428 0,0,128,252,255,15,132,244,248,248,155,217,192,217,252,252,220,252,233,217,
423 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244, 429 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
424 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248, 430 217,252,238,195,255,248,113,255,248,156,252,242,15,45,193,252,242,15,42,208,
425 6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,184,237,237,102,72, 431 102,15,46,202,15,133,244,254,15,138,244,255,248,157,131,252,248,1,15,142,
426 15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15, 432 244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,
427 110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254, 433 244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,
428 15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,244,250,255,72, 434 232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,
429 193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252, 435 252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,
430 242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252, 436 232,244,1,72,184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,
431 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92, 437 248,7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,
432 36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102, 438 224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,
433 15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72, 439 209,224,15,132,244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,
434 15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15, 440 251,252,242,15,17,76,36,16,252,242,15,17,68,36,8,221,68,36,16,221,68,36,8,
435 132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1, 441 217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,
436 248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192, 442 193,217,252,253,221,217,221,92,36,8,252,242,15,16,68,36,8,195,248,9,72,184,
437 15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87, 443 237,237,102,72,15,110,208,102,15,46,194,15,132,244,247,15,40,193,248,1,195,
438 192,195,248,154,255,131,252,250,1,15,130,244,83,15,132,244,85,131,252,250, 444 248,2,72,184,237,237,102,72,15,110,208,102,15,84,194,72,184,237,237,102,72,
439 3,15,130,244,105,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17, 445 15,110,208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,
440 68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244, 446 146,208,48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,
441 89,80,252,233,244,253,248,1,232,244,150,255,80,252,233,244,253,248,2,131, 447 248,4,102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,
442 252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252, 448 133,192,15,132,244,3,15,87,192,195,248,158,255,131,252,250,1,15,130,244,87,
443 233,244,253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252, 449 15,132,244,89,131,252,250,3,15,130,244,110,15,135,244,248,252,242,15,81,192,
444 250,9,15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233, 450 195,248,2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,
445 244,253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132, 451 88,15,132,244,247,232,244,94,80,252,233,244,253,248,1,232,244,154,255,80,
446 244,247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221, 452 252,233,244,253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252,
447 216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36, 453 237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,
448 4,131,252,250,1,15,130,244,83,15,132,244,85,131,252,250,3,15,130,244,105, 454 252,233,244,253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252,
449 15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,89,15,132,244, 455 236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,
450 150,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252, 456 253,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233,
451 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132, 457 244,253,248,1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8,
452 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 458 195,255,139,84,36,12,221,68,36,4,131,252,250,1,15,130,244,87,15,132,244,89,
453 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255, 459 131,252,250,3,15,130,244,110,15,135,244,248,217,252,250,195,248,2,131,252,
454 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,155,255,65,131,252, 460 250,5,15,130,244,94,15,132,244,154,131,252,250,7,15,132,244,247,15,135,244,
455 248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15, 461 248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,
456 92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15, 462 195,248,2,131,252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217,
457 89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244, 463 201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244,
458 149,15,132,244,108,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184, 464 247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,
459 237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15, 465 9,204,255,248,159,255,65,131,252,248,1,15,132,244,247,15,135,244,248,252,
460 110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17, 466 242,15,88,193,195,248,1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,
461 68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217, 467 244,247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,
462 252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252, 468 248,2,65,131,252,248,5,15,130,244,153,15,132,244,113,65,131,252,248,7,15,
463 253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244, 469 132,244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193,
464 255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68, 470 195,248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,65,131,252,
465 36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248, 471 248,9,15,135,244,248,252,242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,
466 222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135, 472 36,8,221,68,36,16,15,132,244,247,217,252,243,248,7,221,92,36,8,252,242,15,
467 244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244, 473 16,68,36,8,195,248,1,217,201,217,252,253,221,217,252,233,244,7,248,2,65,131,
468 149,15,132,244,108,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216, 474 252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,195,248,1,252,
469 217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247, 475 242,15,95,193,195,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,
470 15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248, 476 252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,233,195,
471 2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221, 477 248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,
472 217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246, 478 249,195,248,2,131,252,248,5,15,130,244,153,15,132,244,113,131,252,248,7,15,
473 196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252, 479 132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216,217,225,
474 246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,156,137,200,86, 480 195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,195,248,
475 72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,157, 481 1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,
476 255,85,72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233, 482 135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,218,209,
477 131,252,233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253, 483 221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,
478 204,233,131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72, 484 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
479 139,147,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131, 485 248,2,221,216,195,255,248,160,137,200,86,72,137,214,83,15,162,137,6,137,94,
480 233,15,40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72, 486 4,137,78,8,137,86,12,91,94,195,248,161,255,85,72,137,229,83,72,137,203,139,
481 137,131,233,15,41,131,233,255,72,139,93,252,248,201,195,255,249,255,129,124, 487 131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,
482 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242, 488 139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,
483 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255, 489 2,15,182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139,
484 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15, 490 233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,15,40,
485 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15, 491 155,233,248,5,255,252,255,147,233,72,137,131,233,15,41,131,233,255,72,139,
486 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194, 492 93,252,248,201,195,255,249,255,129,124,253,202,4,239,15,133,244,253,129,124,
487 4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244, 493 253,194,4,239,15,133,244,254,139,44,202,131,198,4,59,44,194,255,15,141,244,
488 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15, 494 255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,248,6,15,
489 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15, 495 183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131,
490 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141, 496 198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,41,129,124,253,194,4,
491 180,253,134,233,248,1,255,129,252,253,239,15,132,244,46,129,124,253,202,4, 497 239,15,130,244,247,15,133,244,41,255,252,242,15,42,4,194,252,233,244,248,
492 239,15,132,244,46,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244, 498 255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,41,255,252,242,
493 1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139, 499 15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,46,193,255,15,134,244,9,
494 169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49, 500 255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,
495 252,237,255,189,1,0,0,0,255,252,233,244,45,255,248,3,129,252,253,239,15,133, 501 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,41,129,124,
496 244,2,252,233,244,46,255,72,252,247,208,139,108,202,4,131,198,4,129,252,253, 502 253,194,4,239,15,131,244,41,255,248,1,252,242,15,16,4,194,248,2,131,198,4,
497 239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,129,252, 503 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,198,4,
498 253,239,15,135,244,249,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4, 504 255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,247,255,
499 202,221,4,199,255,72,252,247,208,139,108,202,4,131,198,4,57,197,255,15,133, 505 15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,254,
500 244,249,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182, 506 141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
501 232,131,198,4,193,232,16,252,255,36,252,235,248,3,129,252,253,239,15,133, 507 252,255,36,252,235,255,139,108,194,4,131,198,4,255,129,252,253,239,15,133,
502 244,2,252,233,244,46,255,15,132,244,248,129,252,253,239,15,132,244,46,15, 508 244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,
503 183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131, 509 133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
504 198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253, 510 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
505 239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137, 511 248,7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,
506 44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15, 512 255,252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,
507 182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137, 513 251,255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,
508 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 514 233,244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,
509 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182, 515 244,251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,
510 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194, 516 1,221,4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,
511 4,239,15,135,244,49,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110, 517 138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,
512 200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129, 518 248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,
513 124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128, 519 9,255,129,252,253,239,15,132,244,46,129,124,253,202,4,239,15,132,244,46,255,
514 233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6, 520 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
515 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124, 521 57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,
516 253,194,4,239,15,133,244,51,139,12,194,137,213,232,251,1,19,255,252,242,15, 522 15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,
517 42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236, 523 0,0,255,252,233,244,45,255,248,3,129,252,253,239,255,15,133,244,9,255,252,
518 15,182,192,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,15,16, 524 233,244,46,255,72,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,
519 4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253, 525 133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,252,
520 252,234,4,239,15,135,244,48,255,252,242,15,16,4,199,252,242,15,88,4,252,234, 526 253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,59,
521 255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,50,129, 527 44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,
522 124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,252,234,252,242,15,88, 528 182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,249,129,
523 4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15, 529 124,253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,
524 92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15, 530 252,233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,
525 92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252, 531 221,4,194,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,
526 242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234, 532 248,2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,255,72,252,
527 252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199, 533 247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,
528 252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4, 534 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
529 252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16, 535 252,255,36,252,235,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,
530 4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15, 536 15,132,244,248,129,252,253,239,15,132,244,46,15,183,70,252,254,141,180,253,
531 16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242, 537 134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
532 15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252, 538 252,235,255,139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139,
533 242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255, 539 44,194,137,44,202,255,72,139,44,194,72,137,44,202,139,6,15,182,204,15,182,
534 252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234, 540 232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,237,129,124,253,194,
535 255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4, 541 4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,
536 194,255,248,158,232,244,149,255,252,233,244,158,255,232,244,108,255,15,182, 542 232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,133,244,251,139,44,
537 252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232, 543 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15,
538 248,33,137,205,137,116,36,100,232,251,1,26,139,149,233,133,192,15,133,244, 544 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,199,68,202,
539 42,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139, 545 4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,51,255,129,
540 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252, 546 124,253,194,4,239,15,131,244,51,255,252,242,15,16,4,194,72,184,237,237,102,
541 247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232, 547 72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,
542 131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192, 548 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,248,
543 252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199, 549 1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252,
544 252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202, 550 242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,
545 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, 551 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,4,239,
546 141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8, 552 15,133,244,54,139,12,194,137,213,232,251,1,20,255,252,242,15,42,192,255,137,
547 57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 553 252,234,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,
548 255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,233,72,139, 554 129,124,253,252,234,4,239,15,133,244,48,129,124,253,199,4,239,15,133,244,
549 69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 555 48,139,44,252,234,3,44,199,15,128,244,47,255,129,124,253,252,234,4,239,15,
550 36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173, 556 133,244,50,129,124,253,199,4,239,15,133,244,50,139,4,199,3,4,252,234,15,128,
551 233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133, 557 244,49,255,129,124,253,252,234,4,239,15,133,244,53,129,124,253,194,4,239,
552 233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, 558 15,133,244,53,139,44,252,234,3,44,194,15,128,244,52,255,199,68,202,4,237,
553 16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252, 559 255,129,124,253,252,234,4,239,15,131,244,48,255,129,124,253,199,4,239,15,
554 246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,27,137,252, 560 131,244,48,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,
555 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233, 561 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,50,255,129,124,253,
556 139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244, 562 199,4,239,15,131,244,50,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,
557 248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 563 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,53,129,124,
558 235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137, 564 253,194,4,239,15,131,244,53,255,252,242,15,16,4,252,234,252,242,15,88,4,194,
559 213,137,194,141,139,233,232,251,1,27,137,252,234,252,233,244,1,255,139,106, 565 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,48,129,
560 252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252, 566 124,253,199,4,239,15,133,244,48,139,44,252,234,43,44,199,15,128,244,47,255,
561 242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,253,141, 567 129,124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,
562 233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 568 50,139,4,199,43,4,252,234,15,128,244,49,255,129,124,253,252,234,4,239,15,
563 252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,0,15, 569 133,244,53,129,124,253,194,4,239,15,133,244,53,139,44,252,234,43,44,194,15,
564 132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,28,139,149,233,248, 570 128,244,52,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
565 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, 571 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
566 72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,135,137, 572 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
567 252,233,137,116,36,100,232,251,1,29,139,149,233,15,182,78,252,253,137,4,202, 573 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,48,129,124,
568 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 574 253,199,4,239,15,133,244,48,139,44,252,234,15,175,44,199,15,128,244,47,255,
569 36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,137,116,36, 575 129,124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,
570 100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252, 576 50,139,4,199,15,175,4,252,234,15,128,244,49,255,129,124,253,252,234,4,239,
571 255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,30,139,149,233, 577 15,133,244,53,129,124,253,194,4,239,15,133,244,53,139,44,252,234,15,175,44,
572 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232, 578 194,15,128,244,52,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
573 131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248, 579 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,
574 5,137,252,233,232,251,1,31,15,183,70,252,254,252,233,244,1,255,72,252,247, 580 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
575 208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,149,233,15,131, 581 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,
576 244,249,248,2,139,20,135,137,252,233,232,251,1,32,139,149,233,15,182,78,252, 582 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,
577 253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193, 583 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
578 232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,31,15,183,70,252,254, 584 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
579 72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233, 585 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
580 139,4,135,252,233,244,159,255,72,252,247,208,139,106,252,248,139,173,233, 586 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
581 139,4,135,252,233,244,160,255,15,182,252,236,15,182,192,129,124,253,252,234, 587 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,162,232,244,
582 4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255, 588 153,255,252,233,244,162,255,232,244,113,255,15,182,252,236,15,182,192,139,
589 76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,137,116,
590 36,100,232,251,1,27,139,149,233,133,192,15,133,244,42,15,182,110,252,255,
591 15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,15,182,232,
592 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,
593 68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
594 255,36,252,235,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252,
595 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,
596 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,
597 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
598 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,
599 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,
600 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,
601 233,72,139,69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,
602 16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,
603 0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,
604 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,
605 4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,
606 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,
607 28,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,
608 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,
609 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
610 36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,
611 1,137,213,137,194,141,139,233,232,251,1,28,137,252,234,252,233,244,1,255,
612 139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,
613 255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,
614 253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,
615 232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,
616 0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,29,139,149,
617 233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
618 235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,
619 135,137,252,233,137,116,36,100,232,251,1,30,139,149,233,15,182,78,252,253,
620 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
621 16,252,255,36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,
622 137,116,36,100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,
623 11,61,252,255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,31,
624 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
625 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,
626 233,244,2,248,5,137,252,233,232,251,1,32,15,183,70,252,254,252,233,244,1,
627 255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,
628 149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,33,139,149,
629 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,
630 232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,32,
631 15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,
632 252,248,139,173,233,139,4,135,252,233,244,163,255,72,252,247,208,139,106,
633 252,248,139,173,233,139,4,135,252,233,244,164,255,15,182,252,236,15,182,192,
634 129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,255,129,124,253,194,
635 4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,
583 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, 636 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
584 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4, 637 15,133,244,36,255,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,
585 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182, 638 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,
586 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244, 639 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,
587 249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3, 640 249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3,
588 255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244, 641 199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
589 36,139,4,194,252,233,244,159,255,15,182,252,236,15,182,192,72,252,247,208, 642 36,139,4,194,252,233,244,163,255,15,182,252,236,15,182,192,72,252,247,208,
590 139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,159, 643 139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,163,
591 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, 644 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
592 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, 645 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
593 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232, 646 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232,
@@ -600,124 +653,132 @@ static const unsigned char build_actionlist[14499] = {
600 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249, 653 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,
601 139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3, 654 139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3,
602 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253, 655 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,
603 252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244, 656 252,234,4,239,15,133,244,39,139,44,252,234,255,15,133,244,39,255,59,133,233,
604 251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120, 657 15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,
605 253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72, 658 252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,6,15,
606 139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 659 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,
607 255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129, 660 233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,39,15,182,
608 233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194, 661 78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,
609 4,239,15,133,244,39,139,4,194,252,233,244,160,248,7,128,165,233,235,139,139, 662 194,252,233,244,164,248,7,128,165,233,235,139,139,233,137,171,233,137,141,
610 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252, 663 233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,
611 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, 664 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,
612 244,37,139,44,252,234,248,160,139,141,233,35,136,233,105,201,239,198,133, 665 248,164,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
613 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244, 666 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,
614 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133, 667 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,
615 244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182,204, 668 70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,232,131,198,4,
616 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,0,15, 669 193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,2,137,76,36,
617 132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,37,139, 670 80,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,80,252,233,244,
618 76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141, 671 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
619 233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68, 672 252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,80,199,68,36,84,237,
620 36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,36, 673 137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205,
621 80,137,252,234,137,205,137,116,36,100,232,251,1,33,139,149,233,139,108,36, 674 137,116,36,100,232,251,1,34,139,149,233,139,108,36,32,137,193,252,233,244,
622 32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137, 675 2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,
623 133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 676 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,
624 239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 677 44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,
625 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 678 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
626 253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193, 679 72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
627 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233, 680 235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
628 252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128, 681 15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
629 165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233, 682 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,
630 244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246, 683 80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,
631 133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1, 684 244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,233,
632 252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72, 685 15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,8,72,
633 139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 686 137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,
634 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 687 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,
635 248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36, 688 137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,35,139,
636 100,232,251,1,34,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 689 149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,
637 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 690 233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,253,
638 84,255,129,124,253,202,4,239,139,44,202,15,133,244,52,141,84,202,8,137,114, 691 202,4,239,139,44,202,15,133,244,55,141,84,202,8,137,114,252,252,139,181,233,
639 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 692 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,76,
640 252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239, 693 202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,56,
641 15,133,244,28,248,53,139,114,252,252,252,247,198,237,15,133,244,253,248,1, 694 139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
642 137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131, 695 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
643 193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139, 696 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
644 68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252, 697 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
645 233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15, 698 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
646 133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139, 699 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
647 191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15, 700 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
648 133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198, 701 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
649 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137, 702 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
650 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129, 703 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
651 252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139, 704 133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
652 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36, 705 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
653 80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198, 706 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
654 4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244, 707 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,
655 250,255,252,242,15,42,192,255,219,68,202,252,248,255,72,139,44,199,72,137, 708 255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,
656 108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,180, 709 15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,84,139,124,36,80,139,
657 253,134,233,248,3,139,92,36,84,139,124,36,80,139,6,15,182,204,15,182,232, 710 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,
658 131,198,4,193,232,16,252,255,36,252,235,248,4,131,192,1,255,137,68,202,252, 711 192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,133,
659 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252, 712 233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,253,
660 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,72,139,175,233, 713 141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,72,137,68,202,8,137,
661 72,139,135,233,72,137,44,202,72,137,68,202,8,137,92,202,252,248,252,233,244, 714 92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6,255,129,124,253,
662 2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,244, 715 202,252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239,
663 251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,253, 716 15,133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235,
664 202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,253, 717 15,133,244,251,141,180,253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,
665 134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131, 718 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,198,70,
666 198,4,193,232,16,252,255,36,252,235,248,5,198,70,252,252,235,141,180,253, 719 252,252,235,141,180,253,134,233,198,6,235,252,233,244,1,255,15,182,252,236,
667 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36, 720 15,182,192,137,124,36,80,141,188,253,194,233,141,12,202,43,122,252,252,133,
668 80,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251, 721 252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248,
669 141,108,252,233,252,248,57,215,15,131,244,248,248,1,72,139,71,252,248,131, 722 1,72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,
670 199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248, 723 57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,
671 2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139, 724 248,3,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
672 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199, 725 255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,
673 68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131, 726 137,197,193,252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133,
674 197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255, 727 233,15,135,244,253,248,6,255,72,139,71,252,248,131,199,8,72,137,1,131,193,
675 72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233, 728 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,
676 244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131, 729 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,
677 252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244, 730 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,
678 6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15, 731 137,68,36,84,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,
679 133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15, 732 15,132,244,249,248,2,72,139,44,15,72,137,111,252,248,131,199,8,131,232,1,
680 72,137,111,252,248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15, 733 15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,244,
681 182,110,252,255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252, 734 252,255,72,139,44,10,72,137,106,252,248,255,248,5,56,70,252,255,15,135,244,
682 248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247, 735 252,255,15,182,78,252,253,72,252,247,209,141,20,202,139,122,252,248,139,191,
683 209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15, 736 233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
684 182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252, 737 36,252,235,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,
685 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 738 237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,15,133,
686 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255, 739 244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,239,102,
687 137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,141, 740 131,172,253,43,233,1,15,132,244,145,255,141,12,202,255,129,121,253,4,239,
688 255,141,12,202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15, 741 15,133,244,255,255,129,121,253,12,239,15,133,244,57,129,121,253,20,239,15,
689 135,244,54,255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15, 742 133,244,57,139,41,131,121,16,0,15,140,244,251,255,139,105,16,133,252,237,
690 16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237, 743 15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,
691 15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65, 744 105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,253,
692 24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244, 745 134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,
693 247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254, 746 141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,4,
694 255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70, 747 193,232,16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137,41,255,15,141,
695 252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15, 748 244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,
696 46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, 749 7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,57,129,121,
697 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253, 750 253,12,239,15,131,244,57,255,139,105,20,255,129,252,253,239,15,131,244,57,
698 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72, 751 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,
699 139,128,233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137, 752 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,
700 108,36,32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239, 753 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,
701 102,15,127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137, 754 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,
702 233,102,68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102, 755 15,183,70,252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,
703 68,15,127,169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224, 756 255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,
704 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 757 15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,
705 252,255,36,252,235,255,137,252,245,209,252,237,129,229,239,102,131,172,253, 758 255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,
706 43,233,1,15,132,244,143,255,139,190,233,139,108,36,96,141,12,202,59,141,233, 759 139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,
707 15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252, 760 252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,
708 254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, 761 96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,137,116,36,
709 244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104, 762 24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,102,15,127,
710 252,252,137,120,252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,22, 763 185,233,102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,127,145,233,
711 137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8, 764 102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,233,102,68,
712 57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131, 765 15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,134,233,
713 192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233, 766 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,137,
714 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248, 767 252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,147,255,
715 3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139, 768 139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,23,15,182,142,
716 106,252,248,72,139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141, 769 233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,
717 136,233,59,141,233,137,133,233,255,137,252,233,255,72,137,252,250,137,252, 770 3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,
718 233,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,233, 771 141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,248,
719 255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,114, 772 139,108,36,96,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15,182,
720 252,252,252,233,244,12,255,254,0 773 174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,
774 139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,
775 237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,15,
776 182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,131,
777 192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,139,
778 189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,233,
779 137,133,233,255,72,137,252,250,137,252,233,255,15,135,244,21,199,131,233,
780 237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,
781 12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
721}; 782};
722 783
723enum { 784enum {
@@ -758,9 +819,12 @@ enum {
758 GLOB_cont_condf, 819 GLOB_cont_condf,
759 GLOB_vmeta_equal, 820 GLOB_vmeta_equal,
760 GLOB_vmeta_equal_cd, 821 GLOB_vmeta_equal_cd,
822 GLOB_vmeta_arith_vno,
761 GLOB_vmeta_arith_vn, 823 GLOB_vmeta_arith_vn,
824 GLOB_vmeta_arith_nvo,
762 GLOB_vmeta_arith_nv, 825 GLOB_vmeta_arith_nv,
763 GLOB_vmeta_unm, 826 GLOB_vmeta_unm,
827 GLOB_vmeta_arith_vvo,
764 GLOB_vmeta_arith_vv, 828 GLOB_vmeta_arith_vv,
765 GLOB_vmeta_len, 829 GLOB_vmeta_len,
766 GLOB_vmeta_call_ra, 830 GLOB_vmeta_call_ra,
@@ -775,6 +839,7 @@ enum {
775 GLOB_ff_setmetatable, 839 GLOB_ff_setmetatable,
776 GLOB_ff_rawget, 840 GLOB_ff_rawget,
777 GLOB_ff_tonumber, 841 GLOB_ff_tonumber,
842 GLOB_fff_resi,
778 GLOB_fff_resxmm0, 843 GLOB_fff_resxmm0,
779 GLOB_fff_resn, 844 GLOB_fff_resn,
780 GLOB_ff_tostring, 845 GLOB_ff_tostring,
@@ -792,11 +857,12 @@ enum {
792 GLOB_ff_coroutine_wrap_aux, 857 GLOB_ff_coroutine_wrap_aux,
793 GLOB_ff_coroutine_yield, 858 GLOB_ff_coroutine_yield,
794 GLOB_ff_math_abs, 859 GLOB_ff_math_abs,
795 GLOB_ff_math_sqrt, 860 GLOB_fff_resbit,
796 GLOB_ff_math_floor, 861 GLOB_ff_math_floor,
797 GLOB_vm_floor, 862 GLOB_vm_floor,
798 GLOB_ff_math_ceil, 863 GLOB_ff_math_ceil,
799 GLOB_vm_ceil, 864 GLOB_vm_ceil,
865 GLOB_ff_math_sqrt,
800 GLOB_ff_math_log, 866 GLOB_ff_math_log,
801 GLOB_ff_math_log10, 867 GLOB_ff_math_log10,
802 GLOB_ff_math_exp, 868 GLOB_ff_math_exp,
@@ -837,7 +903,6 @@ enum {
837 GLOB_ff_table_getn, 903 GLOB_ff_table_getn,
838 GLOB_ff_bit_tobit, 904 GLOB_ff_bit_tobit,
839 GLOB_ff_bit_band, 905 GLOB_ff_bit_band,
840 GLOB_fff_resbit,
841 GLOB_fff_fallback_bit_op, 906 GLOB_fff_fallback_bit_op,
842 GLOB_ff_bit_bor, 907 GLOB_ff_bit_bor,
843 GLOB_ff_bit_bxor, 908 GLOB_ff_bit_bxor,
@@ -912,9 +977,12 @@ static const char *const globnames[] = {
912 "cont_condf", 977 "cont_condf",
913 "vmeta_equal", 978 "vmeta_equal",
914 "vmeta_equal_cd", 979 "vmeta_equal_cd",
980 "vmeta_arith_vno",
915 "vmeta_arith_vn", 981 "vmeta_arith_vn",
982 "vmeta_arith_nvo",
916 "vmeta_arith_nv", 983 "vmeta_arith_nv",
917 "vmeta_unm", 984 "vmeta_unm",
985 "vmeta_arith_vvo",
918 "vmeta_arith_vv", 986 "vmeta_arith_vv",
919 "vmeta_len", 987 "vmeta_len",
920 "vmeta_call_ra", 988 "vmeta_call_ra",
@@ -929,6 +997,7 @@ static const char *const globnames[] = {
929 "ff_setmetatable", 997 "ff_setmetatable",
930 "ff_rawget", 998 "ff_rawget",
931 "ff_tonumber", 999 "ff_tonumber",
1000 "fff_resi",
932 "fff_resxmm0", 1001 "fff_resxmm0",
933 "fff_resn", 1002 "fff_resn",
934 "ff_tostring", 1003 "ff_tostring",
@@ -946,11 +1015,12 @@ static const char *const globnames[] = {
946 "ff_coroutine_wrap_aux", 1015 "ff_coroutine_wrap_aux",
947 "ff_coroutine_yield", 1016 "ff_coroutine_yield",
948 "ff_math_abs", 1017 "ff_math_abs",
949 "ff_math_sqrt", 1018 "fff_resbit",
950 "ff_math_floor", 1019 "ff_math_floor",
951 "vm_floor", 1020 "vm_floor",
952 "ff_math_ceil", 1021 "ff_math_ceil",
953 "vm_ceil", 1022 "vm_ceil",
1023 "ff_math_sqrt",
954 "ff_math_log", 1024 "ff_math_log",
955 "ff_math_log10", 1025 "ff_math_log10",
956 "ff_math_exp", 1026 "ff_math_exp",
@@ -991,7 +1061,6 @@ static const char *const globnames[] = {
991 "ff_table_getn", 1061 "ff_table_getn",
992 "ff_bit_tobit", 1062 "ff_bit_tobit",
993 "ff_bit_band", 1063 "ff_bit_band",
994 "fff_resbit",
995 "fff_fallback_bit_op", 1064 "fff_fallback_bit_op",
996 "ff_bit_bor", 1065 "ff_bit_bor",
997 "ff_bit_bxor", 1066 "ff_bit_bxor",
@@ -1040,6 +1109,7 @@ static const char *const extnames[] = {
1040 "lj_meta_call", 1109 "lj_meta_call",
1041 "lj_meta_for@8", 1110 "lj_meta_for@8",
1042 "lj_tab_get", 1111 "lj_tab_get",
1112 "lj_str_fromnumber@8",
1043 "lj_str_fromnum@8", 1113 "lj_str_fromnum@8",
1044 "lj_tab_next", 1114 "lj_tab_next",
1045 "lj_tab_getinth@8", 1115 "lj_tab_getinth@8",
@@ -1096,387 +1166,656 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1096 dasm_put(Dst, 513, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 1166 dasm_put(Dst, 513, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1097 dasm_put(Dst, 619, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc)); 1167 dasm_put(Dst, 619, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, 0, Dt7(->pc));
1098 dasm_put(Dst, 777, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1168 dasm_put(Dst, 777, PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1099 if (sse) { 1169 if (LJ_DUALNUM) {
1100 dasm_put(Dst, 883); 1170 dasm_put(Dst, 883, LJ_TISNUM);
1171 } else if (sse) {
1172 dasm_put(Dst, 893);
1101 } else { 1173 } else {
1102 } 1174 }
1103 dasm_put(Dst, 896, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1175 dasm_put(Dst, 906, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1104 dasm_put(Dst, 1043, DISPATCH_GL(tmptv), LJ_TTAB); 1176 dasm_put(Dst, 1053, DISPATCH_GL(tmptv), LJ_TTAB);
1105 if (sse) { 1177 if (LJ_DUALNUM) {
1106 dasm_put(Dst, 883); 1178 dasm_put(Dst, 883, LJ_TISNUM);
1179 } else if (sse) {
1180 dasm_put(Dst, 893);
1107 } else { 1181 } else {
1108 } 1182 }
1109 dasm_put(Dst, 1066, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1183 dasm_put(Dst, 1076, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1110 dasm_put(Dst, 1239, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1184 dasm_put(Dst, 1249, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1111 dasm_put(Dst, 1339); 1185 dasm_put(Dst, 1349);
1112#if LJ_HASFFI 1186#if LJ_HASFFI
1113 dasm_put(Dst, 1359, Dt1(->base)); 1187 dasm_put(Dst, 1369, Dt1(->base));
1188#endif
1189 dasm_put(Dst, 1400);
1190#if LJ_DUALNUM
1191 dasm_put(Dst, 1403);
1114#endif 1192#endif
1115 dasm_put(Dst, 1390, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1); 1193 dasm_put(Dst, 1409);
1116 dasm_put(Dst, 1506, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1194#if LJ_DUALNUM
1117 dasm_put(Dst, 1691, 1+1, ~LJ_TNUMX); 1195 dasm_put(Dst, 877);
1196#endif
1197 dasm_put(Dst, 1421);
1198#if LJ_DUALNUM
1199 dasm_put(Dst, 1403);
1200#endif
1201 dasm_put(Dst, 1449, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
1202 dasm_put(Dst, 1586, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1203 dasm_put(Dst, 1769, 1+1, ~LJ_TNUMX);
1118 if (cmov) { 1204 if (cmov) {
1119 dasm_put(Dst, 1789); 1205 dasm_put(Dst, 1814);
1206 } else {
1207 dasm_put(Dst, 1818);
1208 }
1209 dasm_put(Dst, 1827, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1210 dasm_put(Dst, 1906, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1211 dasm_put(Dst, 1963, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
1212 dasm_put(Dst, 2031, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
1213 dasm_put(Dst, 2100, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1214 if (LJ_DUALNUM) {
1215 dasm_put(Dst, 2185);
1120 } else { 1216 } else {
1121 dasm_put(Dst, 1793); 1217 dasm_put(Dst, 2202);
1122 } 1218 }
1123 dasm_put(Dst, 1802, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1124 dasm_put(Dst, 1881, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
1125 dasm_put(Dst, 1938, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
1126 dasm_put(Dst, 2006, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
1127 dasm_put(Dst, 2075, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1128 dasm_put(Dst, 2160);
1129 if (sse) { 1219 if (sse) {
1130 dasm_put(Dst, 2165); 1220 dasm_put(Dst, 2207);
1221 } else {
1222 dasm_put(Dst, 2217);
1223 }
1224 dasm_put(Dst, 2224, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1225 dasm_put(Dst, 2290, Dt1(->base));
1226 if (LJ_DUALNUM) {
1227 dasm_put(Dst, 2314);
1131 } else { 1228 } else {
1132 dasm_put(Dst, 2175); 1229 dasm_put(Dst, 2319);
1133 } 1230 }
1134 dasm_put(Dst, 2182, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1231 dasm_put(Dst, 2324, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1135 dasm_put(Dst, 2248, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1232 dasm_put(Dst, 2417, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1136 dasm_put(Dst, 2315, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
1137 dasm_put(Dst, 2404, LJ_TTAB);
1138#ifdef LUAJIT_ENABLE_LUA52COMPAT 1233#ifdef LUAJIT_ENABLE_LUA52COMPAT
1139 dasm_put(Dst, 2416, Dt6(->metatable)); 1234 dasm_put(Dst, 2464, Dt6(->metatable));
1140#endif 1235#endif
1141 dasm_put(Dst, 2425, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1236 dasm_put(Dst, 2473, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1142 if (sse) { 1237 if (LJ_DUALNUM) {
1143 dasm_put(Dst, 2488, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1238 dasm_put(Dst, 2459);
1144 } else { 1239 } else {
1240 dasm_put(Dst, 2202);
1145 } 1241 }
1146 dasm_put(Dst, 2521, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1242 dasm_put(Dst, 2528);
1147 dasm_put(Dst, 2598, 1+1, LJ_TTAB); 1243 if (LJ_DUALNUM) {
1244 dasm_put(Dst, 2533, LJ_TISNUM);
1245 } else if (sse) {
1246 dasm_put(Dst, 2549, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1247 } else {
1248 }
1249 dasm_put(Dst, 2582, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1250 dasm_put(Dst, 2444, 1+1, LJ_TTAB);
1148#ifdef LUAJIT_ENABLE_LUA52COMPAT 1251#ifdef LUAJIT_ENABLE_LUA52COMPAT
1149 dasm_put(Dst, 2416, Dt6(->metatable)); 1252 dasm_put(Dst, 2464, Dt6(->metatable));
1150#endif 1253#endif
1151 dasm_put(Dst, 2618, Dt8(->upvalue[0]), LJ_TFUNC); 1254 dasm_put(Dst, 2659, Dt8(->upvalue[0]), LJ_TFUNC);
1255 if (LJ_DUALNUM) {
1256 dasm_put(Dst, 2680, LJ_TISNUM);
1257 } else if (sse) {
1258 dasm_put(Dst, 2692);
1259 } else {
1260 dasm_put(Dst, 2702);
1261 }
1262 dasm_put(Dst, 2709, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1263 dasm_put(Dst, 2773, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1264 dasm_put(Dst, 2863, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1265 dasm_put(Dst, 2951, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1266 dasm_put(Dst, 3064, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1267 dasm_put(Dst, 3162, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1268 dasm_put(Dst, 3229, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1269 dasm_put(Dst, 3317, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1270 dasm_put(Dst, 3429, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1271 if (!LJ_DUALNUM) {
1272 dasm_put(Dst, 3456);
1273 }
1152 if (sse) { 1274 if (sse) {
1153 dasm_put(Dst, 2639); 1275 dasm_put(Dst, 3459);
1154 } else { 1276 }
1155 dasm_put(Dst, 2649); 1277 dasm_put(Dst, 3474, 1+1);
1156 } 1278 if (LJ_DUALNUM) {
1157 dasm_put(Dst, 2656, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1279 dasm_put(Dst, 3485, LJ_TISNUM, LJ_TISNUM);
1158 dasm_put(Dst, 2720, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1280 } else {
1159 dasm_put(Dst, 2810, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1281 dasm_put(Dst, 3565, LJ_TISNUM);
1160 dasm_put(Dst, 2898, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1282 }
1161 dasm_put(Dst, 3011, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1162 dasm_put(Dst, 3109, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1163 dasm_put(Dst, 3176, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1164 dasm_put(Dst, 3264, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1165 dasm_put(Dst, 3376, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1166 if (sse) { 1283 if (sse) {
1167 dasm_put(Dst, 3403, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1284 dasm_put(Dst, 3575, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1168 } else { 1285 } else {
1169 dasm_put(Dst, 3467, 1+1, LJ_TISNUM); 1286 dasm_put(Dst, 3606);
1287 }
1288 dasm_put(Dst, 3623, 1+1, FRAME_TYPE, LJ_TNIL);
1289 if (LJ_DUALNUM) {
1290 dasm_put(Dst, 3719, LJ_TISNUM);
1291 } else {
1292 dasm_put(Dst, 3565, LJ_TISNUM);
1170 } 1293 }
1171 dasm_put(Dst, 3503, 1+1, FRAME_TYPE, LJ_TNIL);
1172 if (sse) { 1294 if (sse) {
1173 dasm_put(Dst, 3597, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1295 dasm_put(Dst, 3741);
1174 dasm_put(Dst, 3659, 1+1, LJ_TISNUM); 1296 if (LJ_DUALNUM) {
1297 dasm_put(Dst, 3750);
1298 }
1299 dasm_put(Dst, 2212);
1175 } else { 1300 } else {
1176 dasm_put(Dst, 3689, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1301 dasm_put(Dst, 3784);
1177 dasm_put(Dst, 3748, 1+1, LJ_TISNUM); 1302 if (LJ_DUALNUM) {
1303 } else {
1304 dasm_put(Dst, 2219);
1305 }
1306 }
1307 dasm_put(Dst, 3790);
1308 if (LJ_DUALNUM) {
1309 dasm_put(Dst, 3719, LJ_TISNUM);
1310 } else {
1311 dasm_put(Dst, 3565, LJ_TISNUM);
1178 } 1312 }
1179 dasm_put(Dst, 3775, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1180 dasm_put(Dst, 3844, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1181 dasm_put(Dst, 3901, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1182 dasm_put(Dst, 3964, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1183 dasm_put(Dst, 4054);
1184 if (sse) { 1313 if (sse) {
1185 dasm_put(Dst, 4066, 1+1, LJ_TISNUM); 1314 dasm_put(Dst, 3793);
1315 if (LJ_DUALNUM) {
1316 dasm_put(Dst, 3750);
1317 }
1318 dasm_put(Dst, 2212);
1186 } else { 1319 } else {
1320 dasm_put(Dst, 3802);
1321 if (LJ_DUALNUM) {
1322 } else {
1323 dasm_put(Dst, 2219);
1324 }
1187 } 1325 }
1188 dasm_put(Dst, 4091);
1189 if (sse) { 1326 if (sse) {
1190 dasm_put(Dst, 4105, 1+1, LJ_TISNUM); 1327 dasm_put(Dst, 3808, 1+1, LJ_TISNUM);
1191 } else { 1328 } else {
1329 dasm_put(Dst, 3837, 1+1, LJ_TISNUM);
1192 } 1330 }
1193 dasm_put(Dst, 4130); 1331 dasm_put(Dst, 3866, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1332 dasm_put(Dst, 3935, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1333 dasm_put(Dst, 3992, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1334 dasm_put(Dst, 4055, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1335 dasm_put(Dst, 4145);
1194 if (sse) { 1336 if (sse) {
1195 dasm_put(Dst, 4144, 1+1, LJ_TISNUM); 1337 dasm_put(Dst, 4157, 1+1, LJ_TISNUM);
1196 } else { 1338 } else {
1197 } 1339 }
1198 dasm_put(Dst, 4169); 1340 dasm_put(Dst, 4182);
1199 if (sse) { 1341 if (sse) {
1200 dasm_put(Dst, 4185, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1342 dasm_put(Dst, 4196, 1+1, LJ_TISNUM);
1201 } else { 1343 } else {
1202 dasm_put(Dst, 4224, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1203 } 1344 }
1204 dasm_put(Dst, 4257, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1345 dasm_put(Dst, 4221);
1205 dasm_put(Dst, 4322, 1+1, LJ_TISNUM);
1206 if (sse) { 1346 if (sse) {
1207 dasm_put(Dst, 4421); 1347 dasm_put(Dst, 4235, 1+1, LJ_TISNUM);
1208 } else { 1348 } else {
1209 dasm_put(Dst, 4427);
1210 } 1349 }
1211 dasm_put(Dst, 4436); 1350 dasm_put(Dst, 4260);
1212 if (sse) { 1351 if (sse) {
1213 dasm_put(Dst, 4461); 1352 dasm_put(Dst, 4276, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1214 } else { 1353 } else {
1215 dasm_put(Dst, 4467); 1354 dasm_put(Dst, 4315, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1216 } 1355 }
1217 dasm_put(Dst, 4470, 1+2); 1356 dasm_put(Dst, 4348, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1357 dasm_put(Dst, 4413, 1+1, LJ_TISNUM);
1218 if (sse) { 1358 if (sse) {
1219 dasm_put(Dst, 4479); 1359 dasm_put(Dst, 4512);
1220 } else { 1360 } else {
1221 dasm_put(Dst, 4487); 1361 dasm_put(Dst, 4518);
1222 } 1362 }
1223 dasm_put(Dst, 4495); 1363 dasm_put(Dst, 4527);
1224 if (sse) { 1364 if (sse) {
1225 dasm_put(Dst, 4498, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1365 dasm_put(Dst, 4552);
1226 } else { 1366 } else {
1227 dasm_put(Dst, 4525); 1367 dasm_put(Dst, 4558);
1228 } 1368 }
1229 dasm_put(Dst, 4544); 1369 dasm_put(Dst, 4561, 1+2);
1230 if (sse) { 1370 if (sse) {
1231 dasm_put(Dst, 4560, 1+1, LJ_TISNUM); 1371 dasm_put(Dst, 4570);
1232 } else { 1372 } else {
1233 dasm_put(Dst, 4585, 1+1, LJ_TISNUM); 1373 dasm_put(Dst, 4578);
1234 } 1374 }
1235 dasm_put(Dst, 4607); 1375 dasm_put(Dst, 4586);
1236 if (sse) { 1376 if (sse) {
1237 dasm_put(Dst, 4629); 1377 dasm_put(Dst, 4589, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1238 } else { 1378 } else {
1239 dasm_put(Dst, 4655); 1379 dasm_put(Dst, 4616);
1240 } 1380 }
1241 dasm_put(Dst, 4672, 1+2); 1381 dasm_put(Dst, 4635);
1242 if (sse) { 1382 if (sse) {
1243 dasm_put(Dst, 4712); 1383 dasm_put(Dst, 4651, 1+1, LJ_TISNUM);
1244 } else { 1384 } else {
1385 dasm_put(Dst, 4676, 1+1, LJ_TISNUM);
1386 }
1387 dasm_put(Dst, 4698);
1388 if (sse) {
1245 dasm_put(Dst, 4720); 1389 dasm_put(Dst, 4720);
1390 } else {
1391 dasm_put(Dst, 4746);
1246 } 1392 }
1247 dasm_put(Dst, 4730, 2+1, LJ_TISNUM, LJ_TISNUM); 1393 dasm_put(Dst, 4763, 1+2);
1248 if (sse) { 1394 if (sse) {
1249 dasm_put(Dst, 4782, 2+1, LJ_TISNUM, LJ_TISNUM); 1395 dasm_put(Dst, 4803);
1250 } else { 1396 } else {
1251 dasm_put(Dst, 4829, 2+1, LJ_TISNUM, LJ_TISNUM); 1397 dasm_put(Dst, 4811);
1252 } 1398 }
1399 dasm_put(Dst, 4821, 2+1, LJ_TISNUM, LJ_TISNUM);
1253 if (sse) { 1400 if (sse) {
1254 dasm_put(Dst, 4870, 1+1, LJ_TISNUM, LJ_TISNUM); 1401 dasm_put(Dst, 4873, 2+1, LJ_TISNUM, LJ_TISNUM);
1255 } else { 1402 } else {
1403 dasm_put(Dst, 4920, 2+1, LJ_TISNUM, LJ_TISNUM);
1256 } 1404 }
1405 dasm_put(Dst, 4961, LJ_TISNUM);
1406 if (LJ_DUALNUM) {
1407 dasm_put(Dst, 4974, LJ_TISNUM);
1257 if (sse) { 1408 if (sse) {
1258 dasm_put(Dst, 4941, 1+1, LJ_TISNUM, LJ_TISNUM); 1409 dasm_put(Dst, 4512);
1259 } else { 1410 } else {
1260 } 1411 }
1261 if (!sse) { 1412 dasm_put(Dst, 5024);
1262 dasm_put(Dst, 5012); 1413 } else {
1414 dasm_put(Dst, 2202);
1263 } 1415 }
1264 dasm_put(Dst, 5021, 1+1, LJ_TSTR);
1265 if (sse) { 1416 if (sse) {
1266 dasm_put(Dst, 5043, Dt5(->len)); 1417 dasm_put(Dst, 5035, LJ_TISNUM);
1418 if (LJ_DUALNUM) {
1419 dasm_put(Dst, 5056);
1267 } else { 1420 } else {
1268 dasm_put(Dst, 5054, Dt5(->len)); 1421 dasm_put(Dst, 2202);
1269 } 1422 }
1270 dasm_put(Dst, 5062, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1423 dasm_put(Dst, 5077);
1271 if (sse) {
1272 dasm_put(Dst, 5100);
1273 } else { 1424 } else {
1274 dasm_put(Dst, 5110);
1275 } 1425 }
1276 dasm_put(Dst, 5123, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1426 dasm_put(Dst, 5102, LJ_TISNUM);
1427 if (LJ_DUALNUM) {
1428 dasm_put(Dst, 5115, LJ_TISNUM);
1277 if (sse) { 1429 if (sse) {
1278 dasm_put(Dst, 5158); 1430 dasm_put(Dst, 4512);
1279 } else { 1431 } else {
1280 dasm_put(Dst, 5180);
1281 } 1432 }
1282 dasm_put(Dst, 5200, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1433 dasm_put(Dst, 5024);
1283 dasm_put(Dst, 2160);
1284 if (sse) {
1285 dasm_put(Dst, 5308);
1286 } else { 1434 } else {
1287 dasm_put(Dst, 5319); 1435 dasm_put(Dst, 2202);
1288 } 1436 }
1289 dasm_put(Dst, 5327, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1290 if (sse) { 1437 if (sse) {
1291 dasm_put(Dst, 5357); 1438 dasm_put(Dst, 5035, LJ_TISNUM);
1439 if (LJ_DUALNUM) {
1440 dasm_put(Dst, 5056);
1441 } else {
1442 dasm_put(Dst, 2202);
1443 }
1444 dasm_put(Dst, 5165);
1445 } else {
1446 }
1447 if (!sse) {
1448 dasm_put(Dst, 5190);
1449 }
1450 dasm_put(Dst, 5199, 1+1, LJ_TSTR);
1451 if (LJ_DUALNUM) {
1452 dasm_put(Dst, 5221, Dt5(->len));
1453 } else if (sse) {
1454 dasm_put(Dst, 5229, Dt5(->len));
1455 } else {
1456 dasm_put(Dst, 5240, Dt5(->len));
1457 }
1458 dasm_put(Dst, 5248, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1459 if (LJ_DUALNUM) {
1460 dasm_put(Dst, 5224);
1461 } else if (sse) {
1462 dasm_put(Dst, 5286);
1463 } else {
1464 dasm_put(Dst, 5296);
1465 }
1466 dasm_put(Dst, 5309, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1467 if (LJ_DUALNUM) {
1468 dasm_put(Dst, 5340);
1469 } else if (sse) {
1470 dasm_put(Dst, 5363);
1471 } else {
1472 dasm_put(Dst, 5389);
1473 }
1474 dasm_put(Dst, 5413, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1475 if (LJ_DUALNUM) {
1476 dasm_put(Dst, 5521);
1477 } else if (sse) {
1478 dasm_put(Dst, 5533);
1479 } else {
1480 dasm_put(Dst, 5548);
1481 }
1482 dasm_put(Dst, 5560, LJ_TSTR, LJ_TISNUM);
1483 if (LJ_DUALNUM) {
1484 dasm_put(Dst, 2459);
1485 } else {
1486 dasm_put(Dst, 2202);
1487 }
1488 dasm_put(Dst, 5577, Dt5(->len));
1489 if (LJ_DUALNUM) {
1490 dasm_put(Dst, 5587);
1491 } else if (sse) {
1492 dasm_put(Dst, 5591);
1292 } else { 1493 } else {
1293 } 1494 }
1294 dasm_put(Dst, 5364, sizeof(GCstr)-1); 1495 dasm_put(Dst, 5598, sizeof(GCstr)-1);
1295 dasm_put(Dst, 5439, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1496 dasm_put(Dst, 5673, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1296 dasm_put(Dst, 5498, LJ_TSTR, LJ_TISNUM); 1497 dasm_put(Dst, 5732, LJ_TSTR, LJ_TISNUM);
1498 if (LJ_DUALNUM) {
1499 dasm_put(Dst, 5749);
1500 } else if (sse) {
1501 dasm_put(Dst, 5757);
1502 } else {
1503 dasm_put(Dst, 5768);
1504 }
1505 dasm_put(Dst, 5784, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1506 dasm_put(Dst, 5849, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1507 dasm_put(Dst, 5912, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1508 dasm_put(Dst, 5983, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1509 dasm_put(Dst, 6068, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1510 dasm_put(Dst, 6138, 1+1, LJ_TTAB);
1511 if (LJ_DUALNUM) {
1512 dasm_put(Dst, 6206);
1513 } else if (sse) {
1514 dasm_put(Dst, 6213);
1515 } else {
1516 }
1517 dasm_put(Dst, 6223, LJ_TISNUM);
1518 if (LJ_DUALNUM) {
1519 dasm_put(Dst, 6231);
1520 } else {
1521 dasm_put(Dst, 2202);
1522 }
1297 if (sse) { 1523 if (sse) {
1298 dasm_put(Dst, 5519); 1524 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1299 } else { 1525 } else {
1300 dasm_put(Dst, 5526);
1301 } 1526 }
1302 dasm_put(Dst, 5538, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1527 dasm_put(Dst, 106);
1303 dasm_put(Dst, 5603, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1528 if (LJ_DUALNUM || sse) {
1304 dasm_put(Dst, 5666, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1529 if (!sse) {
1305 dasm_put(Dst, 5737, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1530 }
1306 dasm_put(Dst, 5822, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1531 dasm_put(Dst, 6272);
1307 dasm_put(Dst, 5892, 1+1, LJ_TTAB); 1532 } else {
1533 }
1534 dasm_put(Dst, 6277);
1308 if (sse) { 1535 if (sse) {
1309 dasm_put(Dst, 5960); 1536 dasm_put(Dst, 6280, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1537 } else {
1538 dasm_put(Dst, 6290);
1539 }
1540 dasm_put(Dst, 2179, LJ_TISNUM);
1541 if (LJ_DUALNUM) {
1542 dasm_put(Dst, 6299);
1310 } else { 1543 } else {
1544 dasm_put(Dst, 2202);
1311 } 1545 }
1312 if (sse) { 1546 if (sse) {
1313 dasm_put(Dst, 5970, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1547 dasm_put(Dst, 6316);
1314 } else { 1548 } else {
1315 } 1549 }
1550 dasm_put(Dst, 6331, LJ_TISNUM);
1551 if (LJ_DUALNUM) {
1552 dasm_put(Dst, 6356);
1553 } else {
1554 dasm_put(Dst, 6376);
1555 }
1316 if (sse) { 1556 if (sse) {
1317 dasm_put(Dst, 6022, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1557 dasm_put(Dst, 6381);
1318 } else { 1558 } else {
1319 } 1559 }
1320 dasm_put(Dst, 6065, LJ_TISNUM); 1560 dasm_put(Dst, 6398);
1321 if (sse) { 1561 if (sse) {
1322 dasm_put(Dst, 6092); 1562 dasm_put(Dst, 6280, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1563 } else {
1564 dasm_put(Dst, 6290);
1565 }
1566 dasm_put(Dst, 2179, LJ_TISNUM);
1567 if (LJ_DUALNUM) {
1568 dasm_put(Dst, 6299);
1323 } else { 1569 } else {
1570 dasm_put(Dst, 2202);
1324 } 1571 }
1325 dasm_put(Dst, 6109);
1326 if (sse) { 1572 if (sse) {
1327 dasm_put(Dst, 6117, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1573 dasm_put(Dst, 6316);
1574 } else {
1575 }
1576 dasm_put(Dst, 6331, LJ_TISNUM);
1577 if (LJ_DUALNUM) {
1578 dasm_put(Dst, 6408);
1328 } else { 1579 } else {
1580 dasm_put(Dst, 6376);
1329 } 1581 }
1330 dasm_put(Dst, 6065, LJ_TISNUM);
1331 if (sse) { 1582 if (sse) {
1332 dasm_put(Dst, 6160); 1583 dasm_put(Dst, 6428);
1333 } else { 1584 } else {
1334 } 1585 }
1335 dasm_put(Dst, 6109); 1586 dasm_put(Dst, 6445);
1336 if (sse) { 1587 if (sse) {
1337 dasm_put(Dst, 6177, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1588 dasm_put(Dst, 6280, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1589 } else {
1590 dasm_put(Dst, 6290);
1591 }
1592 dasm_put(Dst, 2179, LJ_TISNUM);
1593 if (LJ_DUALNUM) {
1594 dasm_put(Dst, 6299);
1338 } else { 1595 } else {
1596 dasm_put(Dst, 2202);
1339 } 1597 }
1340 dasm_put(Dst, 6065, LJ_TISNUM);
1341 if (sse) { 1598 if (sse) {
1342 dasm_put(Dst, 6220); 1599 dasm_put(Dst, 6316);
1600 } else {
1601 }
1602 dasm_put(Dst, 6331, LJ_TISNUM);
1603 if (LJ_DUALNUM) {
1604 dasm_put(Dst, 6455);
1343 } else { 1605 } else {
1606 dasm_put(Dst, 6376);
1344 } 1607 }
1345 dasm_put(Dst, 6109);
1346 if (sse) { 1608 if (sse) {
1347 dasm_put(Dst, 6237, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1609 dasm_put(Dst, 6475);
1348 } else { 1610 } else {
1349 } 1611 }
1350 dasm_put(Dst, 6280); 1612 dasm_put(Dst, 6492, LJ_TISNUM);
1613 if (LJ_DUALNUM) {
1614 dasm_put(Dst, 6299);
1615 } else {
1616 dasm_put(Dst, 2202);
1617 }
1351 if (sse) { 1618 if (sse) {
1352 dasm_put(Dst, 6287, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1619 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1620 } else {
1621 }
1622 dasm_put(Dst, 6507, LJ_TISNUM);
1623 if (LJ_DUALNUM) {
1624 dasm_put(Dst, 6299);
1353 } else { 1625 } else {
1626 dasm_put(Dst, 2202);
1354 } 1627 }
1355 dasm_put(Dst, 6330);
1356 if (sse) { 1628 if (sse) {
1357 dasm_put(Dst, 6334); 1629 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1630 } else {
1631 }
1632 dasm_put(Dst, 6523);
1633 if (LJ_DUALNUM) {
1634 dasm_put(Dst, 6272);
1635 } else if (sse) {
1636 dasm_put(Dst, 6529);
1637 } else {
1638 }
1639 dasm_put(Dst, 6541);
1640 if (LJ_DUALNUM) {
1641 dasm_put(Dst, 6552, LJ_TISNUM);
1642 if (LJ_DUALNUM) {
1643 dasm_put(Dst, 6299);
1358 } else { 1644 } else {
1645 dasm_put(Dst, 2202);
1359 } 1646 }
1360 dasm_put(Dst, 6346);
1361 if (sse) { 1647 if (sse) {
1362 dasm_put(Dst, 6357, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1648 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1363 } else { 1649 } else {
1364 } 1650 }
1365 dasm_put(Dst, 6426); 1651 dasm_put(Dst, 6560, LJ_TISNUM);
1652 } else if (sse) {
1653 dasm_put(Dst, 6575, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1654 } else {
1655 }
1656 dasm_put(Dst, 6642);
1657 if (LJ_DUALNUM) {
1658 dasm_put(Dst, 6649, LJ_TISNUM);
1659 if (LJ_DUALNUM) {
1660 dasm_put(Dst, 6299);
1661 } else {
1662 dasm_put(Dst, 2202);
1663 }
1366 if (sse) { 1664 if (sse) {
1367 dasm_put(Dst, 6435, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1665 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1666 } else {
1667 }
1668 dasm_put(Dst, 6560, LJ_TISNUM);
1669 } else if (sse) {
1670 dasm_put(Dst, 6657, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1671 } else {
1672 }
1673 dasm_put(Dst, 6724);
1674 if (LJ_DUALNUM) {
1675 dasm_put(Dst, 6732, LJ_TISNUM);
1676 if (LJ_DUALNUM) {
1677 dasm_put(Dst, 6299);
1368 } else { 1678 } else {
1679 dasm_put(Dst, 2202);
1369 } 1680 }
1370 dasm_put(Dst, 6504);
1371 if (sse) { 1681 if (sse) {
1372 dasm_put(Dst, 6514, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1682 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1373 } else { 1683 } else {
1374 } 1684 }
1375 dasm_put(Dst, 6583); 1685 dasm_put(Dst, 6560, LJ_TISNUM);
1686 } else if (sse) {
1687 dasm_put(Dst, 6740, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1688 } else {
1689 }
1690 dasm_put(Dst, 6807);
1691 if (LJ_DUALNUM) {
1692 dasm_put(Dst, 6815, LJ_TISNUM);
1693 if (LJ_DUALNUM) {
1694 dasm_put(Dst, 6299);
1695 } else {
1696 dasm_put(Dst, 2202);
1697 }
1376 if (sse) { 1698 if (sse) {
1377 dasm_put(Dst, 6593, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1699 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1378 } else { 1700 } else {
1379 } 1701 }
1380 dasm_put(Dst, 6662); 1702 dasm_put(Dst, 6560, LJ_TISNUM);
1703 } else if (sse) {
1704 dasm_put(Dst, 6823, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1705 } else {
1706 }
1707 dasm_put(Dst, 6890);
1708 if (LJ_DUALNUM) {
1709 dasm_put(Dst, 6897, LJ_TISNUM);
1710 if (LJ_DUALNUM) {
1711 dasm_put(Dst, 6299);
1712 } else {
1713 dasm_put(Dst, 2202);
1714 }
1381 if (sse) { 1715 if (sse) {
1382 dasm_put(Dst, 6671, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1716 dasm_put(Dst, 6248, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1717 } else {
1718 }
1719 dasm_put(Dst, 6560, LJ_TISNUM);
1720 } else if (sse) {
1721 dasm_put(Dst, 6905, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1383 } else { 1722 } else {
1384 } 1723 }
1385 dasm_put(Dst, 6740, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1724 dasm_put(Dst, 6972, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1386 dasm_put(Dst, 6818, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1725 dasm_put(Dst, 7048, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1387 dasm_put(Dst, 6945, Dt1(->top), Dt1(->base), Dt1(->top)); 1726 dasm_put(Dst, 7175, Dt1(->top), Dt1(->base), Dt1(->top));
1388#if LJ_HASJIT 1727#if LJ_HASJIT
1389 dasm_put(Dst, 6984, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1728 dasm_put(Dst, 7214, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1390#endif 1729#endif
1391 dasm_put(Dst, 7015, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1730 dasm_put(Dst, 7245, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1392 dasm_put(Dst, 7066, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1731 dasm_put(Dst, 7296, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1393#if LJ_HASJIT 1732#if LJ_HASJIT
1394 dasm_put(Dst, 7133, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1733 dasm_put(Dst, 7363, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1395#endif 1734#endif
1396 dasm_put(Dst, 7180); 1735 dasm_put(Dst, 7410);
1397#if LJ_HASJIT 1736#if LJ_HASJIT
1398 dasm_put(Dst, 7010); 1737 dasm_put(Dst, 7240);
1399#endif 1738#endif
1400 dasm_put(Dst, 7187); 1739 dasm_put(Dst, 7417);
1401#if LJ_HASJIT 1740#if LJ_HASJIT
1402 dasm_put(Dst, 7190); 1741 dasm_put(Dst, 7420);
1403#endif 1742#endif
1404 dasm_put(Dst, 7200, Dt1(->base), Dt1(->top)); 1743 dasm_put(Dst, 7430, Dt1(->base), Dt1(->top));
1405#if LJ_HASJIT 1744#if LJ_HASJIT
1406 dasm_put(Dst, 7234); 1745 dasm_put(Dst, 7464);
1407#endif 1746#endif
1408 dasm_put(Dst, 7239, Dt1(->base), Dt1(->top)); 1747 dasm_put(Dst, 7469, Dt1(->base), Dt1(->top));
1409#if LJ_HASJIT 1748#if LJ_HASJIT
1410 dasm_put(Dst, 7270, 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); 1749 dasm_put(Dst, 7500, 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);
1411#endif 1750#endif
1412 dasm_put(Dst, 7500); 1751 dasm_put(Dst, 7730);
1413#if LJ_HASJIT 1752#if LJ_HASJIT
1414 dasm_put(Dst, 7503, 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); 1753 dasm_put(Dst, 7733, 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);
1415 dasm_put(Dst, 7645); 1754 dasm_put(Dst, 7875);
1416#endif 1755#endif
1417 dasm_put(Dst, 7671); 1756 dasm_put(Dst, 7901);
1418 if (!sse) { 1757 if (!sse) {
1419 dasm_put(Dst, 7674); 1758 dasm_put(Dst, 7904);
1420 } 1759 }
1421 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)); 1760 dasm_put(Dst, 7949, (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));
1422 if (!sse) { 1761 if (!sse) {
1423 dasm_put(Dst, 7805); 1762 dasm_put(Dst, 8035);
1424 } 1763 }
1425 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)); 1764 dasm_put(Dst, 8080, (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));
1426 if (!sse) { 1765 if (!sse) {
1427 dasm_put(Dst, 7936); 1766 dasm_put(Dst, 8166);
1428 } 1767 }
1429 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)); 1768 dasm_put(Dst, 8205, (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));
1430 if (sse) { 1769 if (sse) {
1431 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)); 1770 dasm_put(Dst, 8294, (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));
1432 } else { 1771 } else {
1433 dasm_put(Dst, 8178); 1772 dasm_put(Dst, 8408);
1434 } 1773 }
1435 dasm_put(Dst, 8225); 1774 dasm_put(Dst, 8455);
1436 if (!sse) { 1775 if (!sse) {
1437 } else { 1776 } else {
1438 dasm_put(Dst, 8299); 1777 dasm_put(Dst, 8529);
1439 } 1778 }
1440 dasm_put(Dst, 8302); 1779 dasm_put(Dst, 8532);
1441 dasm_put(Dst, 8387, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1780 dasm_put(Dst, 8617, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1442 dasm_put(Dst, 8490, (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)); 1781 dasm_put(Dst, 8720, (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));
1443 dasm_put(Dst, 8646); 1782 dasm_put(Dst, 8876);
1444#if LJ_HASJIT 1783#if LJ_HASJIT
1445 if (sse) { 1784 if (sse) {
1446 dasm_put(Dst, 8687); 1785 dasm_put(Dst, 8917);
1447 dasm_put(Dst, 8757); 1786 dasm_put(Dst, 8987);
1448 dasm_put(Dst, 8830); 1787 dasm_put(Dst, 9060);
1449 } else { 1788 } else {
1450 dasm_put(Dst, 8880); 1789 dasm_put(Dst, 9110);
1451 dasm_put(Dst, 8972); 1790 dasm_put(Dst, 9202);
1452 } 1791 }
1453 dasm_put(Dst, 9018); 1792 dasm_put(Dst, 9248);
1454#endif 1793#endif
1455 dasm_put(Dst, 9022); 1794 dasm_put(Dst, 9252);
1456 if (sse) { 1795 if (sse) {
1457 dasm_put(Dst, 9025, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1796 dasm_put(Dst, 9255, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1458 dasm_put(Dst, 9114, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1797 dasm_put(Dst, 9344, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1459 } else { 1798 } else {
1460 dasm_put(Dst, 9238); 1799 dasm_put(Dst, 9468);
1461 dasm_put(Dst, 9321); 1800 dasm_put(Dst, 9551);
1462 if (cmov) { 1801 if (cmov) {
1463 dasm_put(Dst, 9376); 1802 dasm_put(Dst, 9606);
1464 } else { 1803 } else {
1465 dasm_put(Dst, 9395); 1804 dasm_put(Dst, 9625);
1466 } 1805 }
1467 dasm_put(Dst, 9018); 1806 dasm_put(Dst, 9248);
1468 } 1807 }
1469 dasm_put(Dst, 9436); 1808 dasm_put(Dst, 9666);
1470#if LJ_HASFFI 1809#if LJ_HASFFI
1471#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1810#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1472 dasm_put(Dst, 9464, DtE(->spadj)); 1811 dasm_put(Dst, 9694, DtE(->spadj));
1473#if LJ_TARGET_WINDOWS 1812#if LJ_TARGET_WINDOWS
1474#endif 1813#endif
1475 dasm_put(Dst, 9479, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3])); 1814 dasm_put(Dst, 9709, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]));
1476 dasm_put(Dst, 9560, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0])); 1815 dasm_put(Dst, 9790, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
1477#if LJ_TARGET_WINDOWS 1816#if LJ_TARGET_WINDOWS
1478#endif 1817#endif
1479 dasm_put(Dst, 9573); 1818 dasm_put(Dst, 9803);
1480#endif 1819#endif
1481} 1820}
1482 1821
@@ -1484,7 +1823,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1484static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1823static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1485{ 1824{
1486 int vk = 0; 1825 int vk = 0;
1487 dasm_put(Dst, 9581, defop); 1826 dasm_put(Dst, 9811, defop);
1488 1827
1489 switch (op) { 1828 switch (op) {
1490 1829
@@ -1492,642 +1831,906 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1492 1831
1493 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1832 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1494 1833
1834
1495 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1835 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1496 dasm_put(Dst, 9583, LJ_TISNUM, LJ_TISNUM); 1836 if (LJ_DUALNUM) {
1837 dasm_put(Dst, 9813, LJ_TISNUM, LJ_TISNUM);
1838 switch (op) {
1839 case BC_ISLT:
1840 dasm_put(Dst, 9843);
1841 break;
1842 case BC_ISGE:
1843 dasm_put(Dst, 9848);
1844 break;
1845 case BC_ISLE:
1846 dasm_put(Dst, 9853);
1847 break;
1848 case BC_ISGT:
1849 dasm_put(Dst, 9858);
1850 break;
1851 default: break; /* Shut up GCC. */
1852 }
1853 dasm_put(Dst, 9863, -BCBIAS_J*4, LJ_TISNUM);
1854 if (sse) {
1855 dasm_put(Dst, 9917);
1856 } else {
1857 dasm_put(Dst, 9928);
1858 }
1859 dasm_put(Dst, 9939);
1860 if (sse) {
1861 dasm_put(Dst, 9946);
1862 switch (op) {
1863 case BC_ISLT:
1864 dasm_put(Dst, 9966);
1865 break;
1866 case BC_ISGE:
1867 dasm_put(Dst, 9971);
1868 break;
1869 case BC_ISLE:
1870 dasm_put(Dst, 9976);
1871 break;
1872 case BC_ISGT:
1873 dasm_put(Dst, 9981);
1874 break;
1875 default: break; /* Shut up GCC. */
1876 }
1877 dasm_put(Dst, 9986);
1878 } else {
1879 dasm_put(Dst, 9991);
1880 }
1881 } else {
1882 dasm_put(Dst, 9999, LJ_TISNUM, LJ_TISNUM);
1883 }
1497 if (sse) { 1884 if (sse) {
1498 dasm_put(Dst, 9604); 1885 dasm_put(Dst, 10020);
1499 } else { 1886 } else {
1500 dasm_put(Dst, 9619); 1887 dasm_put(Dst, 10041);
1501 if (cmov) { 1888 if (cmov) {
1502 dasm_put(Dst, 9629); 1889 dasm_put(Dst, 10057);
1503 } else { 1890 } else {
1504 dasm_put(Dst, 9635); 1891 dasm_put(Dst, 10063);
1505 } 1892 }
1506 } 1893 }
1507 switch (op) { 1894 if (LJ_DUALNUM) {
1508 case BC_ISLT: 1895 switch (op) {
1509 dasm_put(Dst, 9642); 1896 case BC_ISLT:
1897 dasm_put(Dst, 9966);
1898 break;
1899 case BC_ISGE:
1900 dasm_put(Dst, 9971);
1901 break;
1902 case BC_ISLE:
1903 dasm_put(Dst, 9976);
1510 break; 1904 break;
1511 case BC_ISGE: 1905 case BC_ISGT:
1512 dasm_put(Dst, 9316); 1906 dasm_put(Dst, 9981);
1513 break; 1907 break;
1514 case BC_ISLE: 1908 default: break; /* Shut up GCC. */
1515 dasm_put(Dst, 5887); 1909 }
1910 dasm_put(Dst, 9986);
1911 } else {
1912 switch (op) {
1913 case BC_ISLT:
1914 dasm_put(Dst, 10070);
1516 break; 1915 break;
1517 case BC_ISGT: 1916 case BC_ISGE:
1518 dasm_put(Dst, 9647); 1917 dasm_put(Dst, 10075);
1519 break; 1918 break;
1520 default: break; /* Shut up GCC. */ 1919 case BC_ISLE:
1920 dasm_put(Dst, 10080);
1921 break;
1922 case BC_ISGT:
1923 dasm_put(Dst, 10085);
1924 break;
1925 default: break; /* Shut up GCC. */
1926 }
1927 dasm_put(Dst, 10090, -BCBIAS_J*4);
1521 } 1928 }
1522 dasm_put(Dst, 9652, -BCBIAS_J*4);
1523 break; 1929 break;
1524 1930
1525 case BC_ISEQV: case BC_ISNEV: 1931 case BC_ISEQV: case BC_ISNEV:
1526 vk = op == BC_ISEQV; 1932 vk = op == BC_ISEQV;
1527 dasm_put(Dst, 9686, LJ_TISNUM, LJ_TISNUM); 1933 dasm_put(Dst, 10122);
1934 if (LJ_DUALNUM) {
1935 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM);
1936 if (vk) {
1937 dasm_put(Dst, 10155);
1938 } else {
1939 dasm_put(Dst, 10160);
1940 }
1941 dasm_put(Dst, 10165, -BCBIAS_J*4, LJ_TISNUM);
1942 if (sse) {
1943 dasm_put(Dst, 10217);
1944 } else {
1945 dasm_put(Dst, 10224);
1946 }
1947 dasm_put(Dst, 10228);
1948 if (sse) {
1949 dasm_put(Dst, 10239);
1950 } else {
1951 dasm_put(Dst, 10251);
1952 }
1953 dasm_put(Dst, 10258);
1954 } else {
1955 dasm_put(Dst, 10263, LJ_TISNUM, LJ_TISNUM);
1956 }
1528 if (sse) { 1957 if (sse) {
1529 dasm_put(Dst, 9712); 1958 dasm_put(Dst, 10282);
1530 } else { 1959 } else {
1531 dasm_put(Dst, 9724); 1960 dasm_put(Dst, 10300);
1532 if (cmov) { 1961 if (cmov) {
1533 dasm_put(Dst, 9629); 1962 dasm_put(Dst, 10057);
1534 } else { 1963 } else {
1535 dasm_put(Dst, 9635); 1964 dasm_put(Dst, 10063);
1536 } 1965 }
1537 } 1966 }
1538 iseqne_fp: 1967 iseqne_fp:
1539 if (vk) { 1968 if (vk) {
1540 dasm_put(Dst, 9731); 1969 dasm_put(Dst, 10313);
1541 } else { 1970 } else {
1542 dasm_put(Dst, 9740); 1971 dasm_put(Dst, 10322);
1543 } 1972 }
1544 iseqne_end: 1973 iseqne_end:
1545 if (vk) { 1974 if (vk) {
1546 dasm_put(Dst, 9749, -BCBIAS_J*4); 1975 dasm_put(Dst, 10331, -BCBIAS_J*4);
1547 if (!LJ_HASFFI) { 1976 if (!LJ_HASFFI) {
1548 dasm_put(Dst, 4476); 1977 dasm_put(Dst, 4567);
1549 } 1978 }
1550 } else { 1979 } else {
1551 if (!LJ_HASFFI) { 1980 if (!LJ_HASFFI) {
1552 dasm_put(Dst, 4476); 1981 dasm_put(Dst, 4567);
1553 } 1982 }
1554 dasm_put(Dst, 9764, -BCBIAS_J*4); 1983 dasm_put(Dst, 10346, -BCBIAS_J*4);
1984 }
1985 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
1986 op == BC_ISEQN || op == BC_ISNEN)) {
1987 dasm_put(Dst, 10361);
1988 } else {
1989 dasm_put(Dst, 10102);
1555 } 1990 }
1556 dasm_put(Dst, 9666);
1557 if (op == BC_ISEQV || op == BC_ISNEV) { 1991 if (op == BC_ISEQV || op == BC_ISNEV) {
1558 dasm_put(Dst, 9557); 1992 dasm_put(Dst, 9787);
1559 if (LJ_HASFFI) { 1993 if (LJ_HASFFI) {
1560 dasm_put(Dst, 9779, LJ_TCDATA, LJ_TCDATA); 1994 dasm_put(Dst, 10366, LJ_TCDATA, LJ_TCDATA);
1561 } 1995 }
1562 dasm_put(Dst, 9798, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1996 dasm_put(Dst, 10385, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1563 if (vk) { 1997 if (vk) {
1564 dasm_put(Dst, 9854); 1998 dasm_put(Dst, 10441);
1565 } else { 1999 } else {
1566 dasm_put(Dst, 9858); 2000 dasm_put(Dst, 10445);
1567 } 2001 }
1568 dasm_put(Dst, 9864); 2002 dasm_put(Dst, 10451);
1569 } else if (LJ_HASFFI) { 2003 } else if (LJ_HASFFI) {
1570 dasm_put(Dst, 9869, LJ_TCDATA); 2004 dasm_put(Dst, 10456, LJ_TCDATA);
2005 if (LJ_DUALNUM && vk) {
2006 dasm_put(Dst, 10463);
2007 } else {
2008 dasm_put(Dst, 10436);
2009 }
2010 dasm_put(Dst, 10468);
1571 } 2011 }
1572 break; 2012 break;
1573 case BC_ISEQS: case BC_ISNES: 2013 case BC_ISEQS: case BC_ISNES:
1574 vk = op == BC_ISEQS; 2014 vk = op == BC_ISEQS;
1575 dasm_put(Dst, 9884, LJ_TSTR); 2015 dasm_put(Dst, 10473, LJ_TSTR);
1576 iseqne_test: 2016 iseqne_test:
1577 if (vk) { 2017 if (vk) {
1578 dasm_put(Dst, 9735); 2018 dasm_put(Dst, 10317);
1579 } else { 2019 } else {
1580 dasm_put(Dst, 2805); 2020 dasm_put(Dst, 2858);
1581 } 2021 }
1582 goto iseqne_end; 2022 goto iseqne_end;
1583 case BC_ISEQN: case BC_ISNEN: 2023 case BC_ISEQN: case BC_ISNEN:
1584 vk = op == BC_ISEQN; 2024 vk = op == BC_ISEQN;
1585 dasm_put(Dst, 9910, LJ_TISNUM); 2025 dasm_put(Dst, 10499);
2026 if (LJ_DUALNUM) {
2027 dasm_put(Dst, 10507, LJ_TISNUM, LJ_TISNUM);
2028 if (vk) {
2029 dasm_put(Dst, 10155);
2030 } else {
2031 dasm_put(Dst, 10160);
2032 }
2033 dasm_put(Dst, 10532, -BCBIAS_J*4, LJ_TISNUM);
2034 if (sse) {
2035 dasm_put(Dst, 10580);
2036 } else {
2037 dasm_put(Dst, 10587);
2038 }
2039 dasm_put(Dst, 10591);
2040 if (sse) {
2041 dasm_put(Dst, 10598);
2042 } else {
2043 dasm_put(Dst, 10610);
2044 }
2045 dasm_put(Dst, 10258);
2046 } else {
2047 dasm_put(Dst, 10617, LJ_TISNUM);
2048 }
1586 if (sse) { 2049 if (sse) {
1587 dasm_put(Dst, 9926); 2050 dasm_put(Dst, 10626);
1588 } else { 2051 } else {
1589 dasm_put(Dst, 9938); 2052 dasm_put(Dst, 10644);
1590 if (cmov) { 2053 if (cmov) {
1591 dasm_put(Dst, 9629); 2054 dasm_put(Dst, 10057);
1592 } else { 2055 } else {
1593 dasm_put(Dst, 9635); 2056 dasm_put(Dst, 10063);
1594 } 2057 }
2058 dasm_put(Dst, 4586);
1595 } 2059 }
1596 goto iseqne_fp; 2060 goto iseqne_fp;
1597 case BC_ISEQP: case BC_ISNEP: 2061 case BC_ISEQP: case BC_ISNEP:
1598 vk = op == BC_ISEQP; 2062 vk = op == BC_ISEQP;
1599 dasm_put(Dst, 9945); 2063 dasm_put(Dst, 10655);
1600 if (!LJ_HASFFI) goto iseqne_test; 2064 if (!LJ_HASFFI) goto iseqne_test;
1601 if (vk) { 2065 if (vk) {
1602 dasm_put(Dst, 9959, -BCBIAS_J*4, LJ_TCDATA); 2066 dasm_put(Dst, 10669, -BCBIAS_J*4, LJ_TCDATA);
1603 } else { 2067 } else {
1604 dasm_put(Dst, 10009, LJ_TCDATA, -BCBIAS_J*4); 2068 dasm_put(Dst, 10719, LJ_TCDATA, -BCBIAS_J*4);
1605 } 2069 }
1606 break; 2070 break;
1607 2071
1608 /* -- Unary test and copy ops ------------------------------------------- */ 2072 /* -- Unary test and copy ops ------------------------------------------- */
1609 2073
1610 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2074 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1611 dasm_put(Dst, 10053, LJ_TISTRUECOND); 2075 dasm_put(Dst, 10763, LJ_TISTRUECOND);
1612 if (op == BC_IST || op == BC_ISTC) { 2076 if (op == BC_IST || op == BC_ISTC) {
1613 dasm_put(Dst, 10065); 2077 dasm_put(Dst, 10085);
1614 } else { 2078 } else {
1615 dasm_put(Dst, 10070); 2079 dasm_put(Dst, 10080);
1616 } 2080 }
1617 if (op == BC_ISTC || op == BC_ISFC) { 2081 if (op == BC_ISTC || op == BC_ISFC) {
1618 dasm_put(Dst, 10075); 2082 dasm_put(Dst, 10775);
1619 } 2083 }
1620 dasm_put(Dst, 10086, -BCBIAS_J*4); 2084 dasm_put(Dst, 10090, -BCBIAS_J*4);
1621 break; 2085 break;
1622 2086
1623 /* -- Unary ops --------------------------------------------------------- */ 2087 /* -- Unary ops --------------------------------------------------------- */
1624 2088
1625 case BC_MOV: 2089 case BC_MOV:
1626 dasm_put(Dst, 10118); 2090 dasm_put(Dst, 10786);
1627 break; 2091 break;
1628 case BC_NOT: 2092 case BC_NOT:
1629 dasm_put(Dst, 10146, LJ_TISTRUECOND, LJ_TTRUE); 2093 dasm_put(Dst, 10814, LJ_TISTRUECOND, LJ_TTRUE);
1630 break; 2094 break;
1631 case BC_UNM: 2095 case BC_UNM:
1632 dasm_put(Dst, 10182, LJ_TISNUM); 2096 if (LJ_DUALNUM) {
2097 dasm_put(Dst, 10850, LJ_TISNUM, LJ_TISNUM);
2098 } else {
2099 dasm_put(Dst, 10927, LJ_TISNUM);
2100 }
1633 if (sse) { 2101 if (sse) {
1634 dasm_put(Dst, 10193, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 2102 dasm_put(Dst, 10938, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1635 } else { 2103 } else {
1636 dasm_put(Dst, 10218); 2104 dasm_put(Dst, 10963);
2105 }
2106 if (LJ_DUALNUM) {
2107 dasm_put(Dst, 10361);
2108 } else {
2109 dasm_put(Dst, 10102);
1637 } 2110 }
1638 dasm_put(Dst, 9666);
1639 break; 2111 break;
1640 case BC_LEN: 2112 case BC_LEN:
1641 dasm_put(Dst, 10227, LJ_TSTR); 2113 dasm_put(Dst, 10972, LJ_TSTR);
1642 if (sse) { 2114 if (LJ_DUALNUM) {
1643 dasm_put(Dst, 10241, Dt5(->len)); 2115 dasm_put(Dst, 10986, Dt5(->len), LJ_TISNUM);
2116 } else if (sse) {
2117 dasm_put(Dst, 11000, Dt5(->len));
1644 } else { 2118 } else {
1645 dasm_put(Dst, 10259, Dt5(->len)); 2119 dasm_put(Dst, 11018, Dt5(->len));
1646 } 2120 }
1647 dasm_put(Dst, 10268, LJ_TTAB); 2121 dasm_put(Dst, 11027, LJ_TTAB);
1648 if (sse) { 2122 if (LJ_DUALNUM) {
1649 dasm_put(Dst, 10309); 2123 } else if (sse) {
2124 dasm_put(Dst, 11068);
1650 } else { 2125 } else {
1651 } 2126 }
1652 dasm_put(Dst, 10318); 2127 dasm_put(Dst, 11074);
1653 break; 2128 break;
1654 2129
1655 /* -- Binary ops -------------------------------------------------------- */ 2130 /* -- Binary ops -------------------------------------------------------- */
1656 2131
1657 2132
1658 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2133 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1659 dasm_put(Dst, 10328); 2134 if (LJ_DUALNUM) {
2135 dasm_put(Dst, 11087);
2136 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2137 switch (vk) {
2138 case 0:
2139 dasm_put(Dst, 11095, LJ_TISNUM, LJ_TISNUM);
2140 break;
2141 case 1:
2142 dasm_put(Dst, 11128, LJ_TISNUM, LJ_TISNUM);
2143 break;
2144 default:
2145 dasm_put(Dst, 11161, LJ_TISNUM, LJ_TISNUM);
2146 break;
2147 }
2148 dasm_put(Dst, 11194, LJ_TISNUM);
2149 if (vk == 1) {
2150 dasm_put(Dst, 10996);
2151 } else {
2152 dasm_put(Dst, 10782);
2153 }
2154 dasm_put(Dst, 10102);
2155 } else {
2156 dasm_put(Dst, 11087);
1660 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2157 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1661 switch (vk) { 2158 switch (vk) {
1662 case 0: 2159 case 0:
1663 dasm_put(Dst, 10336, LJ_TISNUM); 2160 dasm_put(Dst, 11200, LJ_TISNUM);
2161 if (LJ_DUALNUM) {
2162 dasm_put(Dst, 11212, LJ_TISNUM);
2163 }
1664 if (sse) { 2164 if (sse) {
1665 dasm_put(Dst, 10348); 2165 dasm_put(Dst, 11223);
1666 } else { 2166 } else {
1667 dasm_put(Dst, 10362); 2167 dasm_put(Dst, 11237);
1668 } 2168 }
1669 break; 2169 break;
1670 case 1: 2170 case 1:
1671 dasm_put(Dst, 10370, LJ_TISNUM); 2171 dasm_put(Dst, 11245, LJ_TISNUM);
2172 if (LJ_DUALNUM) {
2173 dasm_put(Dst, 11257, LJ_TISNUM);
2174 }
1672 if (sse) { 2175 if (sse) {
1673 dasm_put(Dst, 10382); 2176 dasm_put(Dst, 11268);
1674 } else { 2177 } else {
1675 dasm_put(Dst, 10396); 2178 dasm_put(Dst, 11282);
1676 } 2179 }
1677 break; 2180 break;
1678 default: 2181 default:
1679 dasm_put(Dst, 10404, LJ_TISNUM, LJ_TISNUM); 2182 dasm_put(Dst, 11290, LJ_TISNUM, LJ_TISNUM);
1680 if (sse) { 2183 if (sse) {
1681 dasm_put(Dst, 10426); 2184 dasm_put(Dst, 11312);
1682 } else { 2185 } else {
1683 dasm_put(Dst, 10440); 2186 dasm_put(Dst, 11326);
1684 } 2187 }
1685 break; 2188 break;
1686 } 2189 }
1687 if (sse) { 2190 if (sse) {
1688 dasm_put(Dst, 10211); 2191 dasm_put(Dst, 10956);
1689 } else { 2192 } else {
1690 dasm_put(Dst, 10223); 2193 dasm_put(Dst, 10968);
2194 }
2195 dasm_put(Dst, 10102);
1691 } 2196 }
1692 dasm_put(Dst, 9666);
1693 break; 2197 break;
1694 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2198 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1695 dasm_put(Dst, 10328); 2199 if (LJ_DUALNUM) {
2200 dasm_put(Dst, 11087);
1696 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2201 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1697 switch (vk) { 2202 switch (vk) {
1698 case 0: 2203 case 0:
1699 dasm_put(Dst, 10336, LJ_TISNUM); 2204 dasm_put(Dst, 11334, LJ_TISNUM, LJ_TISNUM);
2205 break;
2206 case 1:
2207 dasm_put(Dst, 11367, LJ_TISNUM, LJ_TISNUM);
2208 break;
2209 default:
2210 dasm_put(Dst, 11400, LJ_TISNUM, LJ_TISNUM);
2211 break;
2212 }
2213 dasm_put(Dst, 11194, LJ_TISNUM);
2214 if (vk == 1) {
2215 dasm_put(Dst, 10996);
2216 } else {
2217 dasm_put(Dst, 10782);
2218 }
2219 dasm_put(Dst, 10102);
2220 } else {
2221 dasm_put(Dst, 11087);
2222 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2223 switch (vk) {
2224 case 0:
2225 dasm_put(Dst, 11200, LJ_TISNUM);
2226 if (LJ_DUALNUM) {
2227 dasm_put(Dst, 11212, LJ_TISNUM);
2228 }
1700 if (sse) { 2229 if (sse) {
1701 dasm_put(Dst, 10448); 2230 dasm_put(Dst, 11433);
1702 } else { 2231 } else {
1703 dasm_put(Dst, 10462); 2232 dasm_put(Dst, 11447);
1704 } 2233 }
1705 break; 2234 break;
1706 case 1: 2235 case 1:
1707 dasm_put(Dst, 10370, LJ_TISNUM); 2236 dasm_put(Dst, 11245, LJ_TISNUM);
2237 if (LJ_DUALNUM) {
2238 dasm_put(Dst, 11257, LJ_TISNUM);
2239 }
1708 if (sse) { 2240 if (sse) {
1709 dasm_put(Dst, 10470); 2241 dasm_put(Dst, 11455);
1710 } else { 2242 } else {
1711 dasm_put(Dst, 10484); 2243 dasm_put(Dst, 11469);
1712 } 2244 }
1713 break; 2245 break;
1714 default: 2246 default:
1715 dasm_put(Dst, 10404, LJ_TISNUM, LJ_TISNUM); 2247 dasm_put(Dst, 11290, LJ_TISNUM, LJ_TISNUM);
1716 if (sse) { 2248 if (sse) {
1717 dasm_put(Dst, 10492); 2249 dasm_put(Dst, 11477);
1718 } else { 2250 } else {
1719 dasm_put(Dst, 10506); 2251 dasm_put(Dst, 11491);
1720 } 2252 }
1721 break; 2253 break;
1722 } 2254 }
1723 if (sse) { 2255 if (sse) {
1724 dasm_put(Dst, 10211); 2256 dasm_put(Dst, 10956);
1725 } else { 2257 } else {
1726 dasm_put(Dst, 10223); 2258 dasm_put(Dst, 10968);
2259 }
2260 dasm_put(Dst, 10102);
1727 } 2261 }
1728 dasm_put(Dst, 9666);
1729 break; 2262 break;
1730 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2263 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1731 dasm_put(Dst, 10328); 2264 if (LJ_DUALNUM) {
2265 dasm_put(Dst, 11087);
2266 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2267 switch (vk) {
2268 case 0:
2269 dasm_put(Dst, 11499, LJ_TISNUM, LJ_TISNUM);
2270 break;
2271 case 1:
2272 dasm_put(Dst, 11533, LJ_TISNUM, LJ_TISNUM);
2273 break;
2274 default:
2275 dasm_put(Dst, 11567, LJ_TISNUM, LJ_TISNUM);
2276 break;
2277 }
2278 dasm_put(Dst, 11194, LJ_TISNUM);
2279 if (vk == 1) {
2280 dasm_put(Dst, 10996);
2281 } else {
2282 dasm_put(Dst, 10782);
2283 }
2284 dasm_put(Dst, 10102);
2285 } else {
2286 dasm_put(Dst, 11087);
1732 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2287 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1733 switch (vk) { 2288 switch (vk) {
1734 case 0: 2289 case 0:
1735 dasm_put(Dst, 10336, LJ_TISNUM); 2290 dasm_put(Dst, 11200, LJ_TISNUM);
2291 if (LJ_DUALNUM) {
2292 dasm_put(Dst, 11212, LJ_TISNUM);
2293 }
1736 if (sse) { 2294 if (sse) {
1737 dasm_put(Dst, 10514); 2295 dasm_put(Dst, 11601);
1738 } else { 2296 } else {
1739 dasm_put(Dst, 10528); 2297 dasm_put(Dst, 11615);
1740 } 2298 }
1741 break; 2299 break;
1742 case 1: 2300 case 1:
1743 dasm_put(Dst, 10370, LJ_TISNUM); 2301 dasm_put(Dst, 11245, LJ_TISNUM);
2302 if (LJ_DUALNUM) {
2303 dasm_put(Dst, 11257, LJ_TISNUM);
2304 }
1744 if (sse) { 2305 if (sse) {
1745 dasm_put(Dst, 10536); 2306 dasm_put(Dst, 11623);
1746 } else { 2307 } else {
1747 dasm_put(Dst, 10550); 2308 dasm_put(Dst, 11637);
1748 } 2309 }
1749 break; 2310 break;
1750 default: 2311 default:
1751 dasm_put(Dst, 10404, LJ_TISNUM, LJ_TISNUM); 2312 dasm_put(Dst, 11290, LJ_TISNUM, LJ_TISNUM);
1752 if (sse) { 2313 if (sse) {
1753 dasm_put(Dst, 10558); 2314 dasm_put(Dst, 11645);
1754 } else { 2315 } else {
1755 dasm_put(Dst, 10572); 2316 dasm_put(Dst, 11659);
1756 } 2317 }
1757 break; 2318 break;
1758 } 2319 }
1759 if (sse) { 2320 if (sse) {
1760 dasm_put(Dst, 10211); 2321 dasm_put(Dst, 10956);
1761 } else { 2322 } else {
1762 dasm_put(Dst, 10223); 2323 dasm_put(Dst, 10968);
2324 }
2325 dasm_put(Dst, 10102);
1763 } 2326 }
1764 dasm_put(Dst, 9666);
1765 break; 2327 break;
1766 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2328 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1767 dasm_put(Dst, 10328); 2329 dasm_put(Dst, 11087);
1768 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2330 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1769 switch (vk) { 2331 switch (vk) {
1770 case 0: 2332 case 0:
1771 dasm_put(Dst, 10336, LJ_TISNUM); 2333 dasm_put(Dst, 11200, LJ_TISNUM);
2334 if (LJ_DUALNUM) {
2335 dasm_put(Dst, 11212, LJ_TISNUM);
2336 }
1772 if (sse) { 2337 if (sse) {
1773 dasm_put(Dst, 10580); 2338 dasm_put(Dst, 11667);
1774 } else { 2339 } else {
1775 dasm_put(Dst, 10594); 2340 dasm_put(Dst, 11681);
1776 } 2341 }
1777 break; 2342 break;
1778 case 1: 2343 case 1:
1779 dasm_put(Dst, 10370, LJ_TISNUM); 2344 dasm_put(Dst, 11245, LJ_TISNUM);
2345 if (LJ_DUALNUM) {
2346 dasm_put(Dst, 11257, LJ_TISNUM);
2347 }
1780 if (sse) { 2348 if (sse) {
1781 dasm_put(Dst, 10602); 2349 dasm_put(Dst, 11689);
1782 } else { 2350 } else {
1783 dasm_put(Dst, 10616); 2351 dasm_put(Dst, 11703);
1784 } 2352 }
1785 break; 2353 break;
1786 default: 2354 default:
1787 dasm_put(Dst, 10404, LJ_TISNUM, LJ_TISNUM); 2355 dasm_put(Dst, 11290, LJ_TISNUM, LJ_TISNUM);
1788 if (sse) { 2356 if (sse) {
1789 dasm_put(Dst, 10624); 2357 dasm_put(Dst, 11711);
1790 } else { 2358 } else {
1791 dasm_put(Dst, 10638); 2359 dasm_put(Dst, 11725);
1792 } 2360 }
1793 break; 2361 break;
1794 } 2362 }
1795 if (sse) { 2363 if (sse) {
1796 dasm_put(Dst, 10211); 2364 dasm_put(Dst, 10956);
1797 } else { 2365 } else {
1798 dasm_put(Dst, 10223); 2366 dasm_put(Dst, 10968);
1799 } 2367 }
1800 dasm_put(Dst, 9666); 2368 dasm_put(Dst, 10102);
1801 break; 2369 break;
1802 case BC_MODVN: 2370 case BC_MODVN:
1803 dasm_put(Dst, 10328); 2371 dasm_put(Dst, 11087);
1804 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2372 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1805 switch (vk) { 2373 switch (vk) {
1806 case 0: 2374 case 0:
1807 dasm_put(Dst, 10336, LJ_TISNUM); 2375 dasm_put(Dst, 11200, LJ_TISNUM);
2376 if (LJ_DUALNUM) {
2377 dasm_put(Dst, 11212, LJ_TISNUM);
2378 }
1808 if (sse) { 2379 if (sse) {
1809 dasm_put(Dst, 10646); 2380 dasm_put(Dst, 11733);
1810 } else { 2381 } else {
1811 dasm_put(Dst, 10660); 2382 dasm_put(Dst, 11747);
1812 } 2383 }
1813 break; 2384 break;
1814 case 1: 2385 case 1:
1815 dasm_put(Dst, 10370, LJ_TISNUM); 2386 dasm_put(Dst, 11245, LJ_TISNUM);
2387 if (LJ_DUALNUM) {
2388 dasm_put(Dst, 11257, LJ_TISNUM);
2389 }
1816 if (sse) { 2390 if (sse) {
1817 dasm_put(Dst, 10668); 2391 dasm_put(Dst, 11755);
1818 } else { 2392 } else {
1819 dasm_put(Dst, 10682); 2393 dasm_put(Dst, 11769);
1820 } 2394 }
1821 break; 2395 break;
1822 default: 2396 default:
1823 dasm_put(Dst, 10404, LJ_TISNUM, LJ_TISNUM); 2397 dasm_put(Dst, 11290, LJ_TISNUM, LJ_TISNUM);
1824 if (sse) { 2398 if (sse) {
1825 dasm_put(Dst, 10690); 2399 dasm_put(Dst, 11777);
1826 } else { 2400 } else {
1827 dasm_put(Dst, 10704); 2401 dasm_put(Dst, 11791);
1828 } 2402 }
1829 break; 2403 break;
1830 } 2404 }
1831 dasm_put(Dst, 10712); 2405 dasm_put(Dst, 11799);
1832 if (sse) { 2406 if (sse) {
1833 dasm_put(Dst, 10211); 2407 dasm_put(Dst, 10956);
1834 } else { 2408 } else {
1835 dasm_put(Dst, 10223); 2409 dasm_put(Dst, 10968);
1836 } 2410 }
1837 dasm_put(Dst, 9666); 2411 dasm_put(Dst, 10102);
1838 break; 2412 break;
1839 case BC_MODNV: case BC_MODVV: 2413 case BC_MODNV: case BC_MODVV:
1840 dasm_put(Dst, 10328); 2414 dasm_put(Dst, 11087);
1841 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2415 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1842 switch (vk) { 2416 switch (vk) {
1843 case 0: 2417 case 0:
1844 dasm_put(Dst, 10336, LJ_TISNUM); 2418 dasm_put(Dst, 11200, LJ_TISNUM);
2419 if (LJ_DUALNUM) {
2420 dasm_put(Dst, 11212, LJ_TISNUM);
2421 }
1845 if (sse) { 2422 if (sse) {
1846 dasm_put(Dst, 10646); 2423 dasm_put(Dst, 11733);
1847 } else { 2424 } else {
1848 dasm_put(Dst, 10660); 2425 dasm_put(Dst, 11747);
1849 } 2426 }
1850 break; 2427 break;
1851 case 1: 2428 case 1:
1852 dasm_put(Dst, 10370, LJ_TISNUM); 2429 dasm_put(Dst, 11245, LJ_TISNUM);
2430 if (LJ_DUALNUM) {
2431 dasm_put(Dst, 11257, LJ_TISNUM);
2432 }
1853 if (sse) { 2433 if (sse) {
1854 dasm_put(Dst, 10668); 2434 dasm_put(Dst, 11755);
1855 } else { 2435 } else {
1856 dasm_put(Dst, 10682); 2436 dasm_put(Dst, 11769);
1857 } 2437 }
1858 break; 2438 break;
1859 default: 2439 default:
1860 dasm_put(Dst, 10404, LJ_TISNUM, LJ_TISNUM); 2440 dasm_put(Dst, 11290, LJ_TISNUM, LJ_TISNUM);
1861 if (sse) { 2441 if (sse) {
1862 dasm_put(Dst, 10690); 2442 dasm_put(Dst, 11777);
1863 } else { 2443 } else {
1864 dasm_put(Dst, 10704); 2444 dasm_put(Dst, 11791);
1865 } 2445 }
1866 break; 2446 break;
1867 } 2447 }
1868 dasm_put(Dst, 10718); 2448 dasm_put(Dst, 11805);
1869 break; 2449 break;
1870 case BC_POW: 2450 case BC_POW:
1871 dasm_put(Dst, 10328); 2451 dasm_put(Dst, 11087);
1872 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2452 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1873 switch (vk) { 2453 switch (vk) {
1874 case 0: 2454 case 0:
1875 dasm_put(Dst, 10336, LJ_TISNUM); 2455 dasm_put(Dst, 11200, LJ_TISNUM);
2456 if (LJ_DUALNUM) {
2457 dasm_put(Dst, 11212, LJ_TISNUM);
2458 }
1876 if (sse) { 2459 if (sse) {
1877 dasm_put(Dst, 10646); 2460 dasm_put(Dst, 11733);
1878 } else { 2461 } else {
1879 dasm_put(Dst, 10660); 2462 dasm_put(Dst, 11747);
1880 } 2463 }
1881 break; 2464 break;
1882 case 1: 2465 case 1:
1883 dasm_put(Dst, 10370, LJ_TISNUM); 2466 dasm_put(Dst, 11245, LJ_TISNUM);
2467 if (LJ_DUALNUM) {
2468 dasm_put(Dst, 11257, LJ_TISNUM);
2469 }
1884 if (sse) { 2470 if (sse) {
1885 dasm_put(Dst, 10668); 2471 dasm_put(Dst, 11755);
1886 } else { 2472 } else {
1887 dasm_put(Dst, 10682); 2473 dasm_put(Dst, 11769);
1888 } 2474 }
1889 break; 2475 break;
1890 default: 2476 default:
1891 dasm_put(Dst, 10404, LJ_TISNUM, LJ_TISNUM); 2477 dasm_put(Dst, 11290, LJ_TISNUM, LJ_TISNUM);
1892 if (sse) { 2478 if (sse) {
1893 dasm_put(Dst, 10690); 2479 dasm_put(Dst, 11777);
1894 } else { 2480 } else {
1895 dasm_put(Dst, 10704); 2481 dasm_put(Dst, 11791);
1896 } 2482 }
1897 break; 2483 break;
1898 } 2484 }
1899 dasm_put(Dst, 10723); 2485 dasm_put(Dst, 11810);
1900 if (sse) { 2486 if (sse) {
1901 dasm_put(Dst, 10211); 2487 dasm_put(Dst, 10956);
1902 } else { 2488 } else {
1903 dasm_put(Dst, 10223); 2489 dasm_put(Dst, 10968);
1904 } 2490 }
1905 dasm_put(Dst, 9666); 2491 dasm_put(Dst, 10102);
1906 break; 2492 break;
1907 2493
1908 case BC_CAT: 2494 case BC_CAT:
1909 dasm_put(Dst, 10727, Dt1(->base), Dt1(->base)); 2495 dasm_put(Dst, 11814, Dt1(->base), Dt1(->base));
1910 break; 2496 break;
1911 2497
1912 /* -- Constant ops ------------------------------------------------------ */ 2498 /* -- Constant ops ------------------------------------------------------ */
1913 2499
1914 case BC_KSTR: 2500 case BC_KSTR:
1915 dasm_put(Dst, 10810, LJ_TSTR); 2501 dasm_put(Dst, 11897, LJ_TSTR);
1916 break; 2502 break;
1917 case BC_KCDATA: 2503 case BC_KCDATA:
1918#if LJ_HASFFI 2504#if LJ_HASFFI
1919 dasm_put(Dst, 10810, LJ_TCDATA); 2505 dasm_put(Dst, 11897, LJ_TCDATA);
1920#endif 2506#endif
1921 break; 2507 break;
1922 case BC_KSHORT: 2508 case BC_KSHORT:
1923 if (sse) { 2509 if (LJ_DUALNUM) {
1924 dasm_put(Dst, 10845); 2510 dasm_put(Dst, 11932, LJ_TISNUM);
2511 } else if (sse) {
2512 dasm_put(Dst, 11944);
1925 } else { 2513 } else {
1926 dasm_put(Dst, 10860); 2514 dasm_put(Dst, 11959);
1927 } 2515 }
1928 dasm_put(Dst, 9666); 2516 dasm_put(Dst, 10102);
1929 break; 2517 break;
1930 case BC_KNUM: 2518 case BC_KNUM:
1931 if (sse) { 2519 if (sse) {
1932 dasm_put(Dst, 10868); 2520 dasm_put(Dst, 11967);
1933 } else { 2521 } else {
1934 dasm_put(Dst, 10881); 2522 dasm_put(Dst, 11980);
1935 } 2523 }
1936 dasm_put(Dst, 9666); 2524 dasm_put(Dst, 10102);
1937 break; 2525 break;
1938 case BC_KPRI: 2526 case BC_KPRI:
1939 dasm_put(Dst, 10888); 2527 dasm_put(Dst, 11987);
1940 break; 2528 break;
1941 case BC_KNIL: 2529 case BC_KNIL:
1942 dasm_put(Dst, 10916, LJ_TNIL); 2530 dasm_put(Dst, 12015, LJ_TNIL);
1943 break; 2531 break;
1944 2532
1945 /* -- Upvalue and function ops ------------------------------------------ */ 2533 /* -- Upvalue and function ops ------------------------------------------ */
1946 2534
1947 case BC_UGET: 2535 case BC_UGET:
1948 dasm_put(Dst, 10963, offsetof(GCfuncL, uvptr), DtA(->v)); 2536 dasm_put(Dst, 12062, offsetof(GCfuncL, uvptr), DtA(->v));
1949 break; 2537 break;
1950 case BC_USETV: 2538 case BC_USETV:
1951#define TV2MARKOFS \ 2539#define TV2MARKOFS \
1952 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2540 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1953 dasm_put(Dst, 11003, 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); 2541 dasm_put(Dst, 12102, 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);
1954 dasm_put(Dst, 11094); 2542 dasm_put(Dst, 12193);
1955 break; 2543 break;
1956#undef TV2MARKOFS 2544#undef TV2MARKOFS
1957 case BC_USETS: 2545 case BC_USETS:
1958 dasm_put(Dst, 11106, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2546 dasm_put(Dst, 12205, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1959 break; 2547 break;
1960 case BC_USETN: 2548 case BC_USETN:
1961 dasm_put(Dst, 11199); 2549 dasm_put(Dst, 12298);
1962 if (sse) { 2550 if (sse) {
1963 dasm_put(Dst, 11204); 2551 dasm_put(Dst, 12303);
1964 } else { 2552 } else {
1965 dasm_put(Dst, 9941); 2553 dasm_put(Dst, 11751);
1966 } 2554 }
1967 dasm_put(Dst, 11211, offsetof(GCfuncL, uvptr), DtA(->v)); 2555 dasm_put(Dst, 12310, offsetof(GCfuncL, uvptr), DtA(->v));
1968 if (sse) { 2556 if (sse) {
1969 dasm_put(Dst, 11220); 2557 dasm_put(Dst, 12319);
1970 } else { 2558 } else {
1971 dasm_put(Dst, 11226); 2559 dasm_put(Dst, 12325);
1972 } 2560 }
1973 dasm_put(Dst, 9666); 2561 dasm_put(Dst, 10102);
1974 break; 2562 break;
1975 case BC_USETP: 2563 case BC_USETP:
1976 dasm_put(Dst, 11229, offsetof(GCfuncL, uvptr), DtA(->v)); 2564 dasm_put(Dst, 12328, offsetof(GCfuncL, uvptr), DtA(->v));
1977 break; 2565 break;
1978 case BC_UCLO: 2566 case BC_UCLO:
1979 dasm_put(Dst, 11268, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2567 dasm_put(Dst, 12367, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1980 break; 2568 break;
1981 2569
1982 case BC_FNEW: 2570 case BC_FNEW:
1983 dasm_put(Dst, 11323, Dt1(->base), Dt1(->base), LJ_TFUNC); 2571 dasm_put(Dst, 12422, Dt1(->base), Dt1(->base), LJ_TFUNC);
1984 break; 2572 break;
1985 2573
1986 /* -- Table ops --------------------------------------------------------- */ 2574 /* -- Table ops --------------------------------------------------------- */
1987 2575
1988 case BC_TNEW: 2576 case BC_TNEW:
1989 dasm_put(Dst, 11389, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2577 dasm_put(Dst, 12488, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1990 break; 2578 break;
1991 case BC_TDUP: 2579 case BC_TDUP:
1992 dasm_put(Dst, 11511, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2580 dasm_put(Dst, 12610, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1993 break; 2581 break;
1994 2582
1995 case BC_GGET: 2583 case BC_GGET:
1996 dasm_put(Dst, 11606, Dt7(->env)); 2584 dasm_put(Dst, 12705, Dt7(->env));
1997 break; 2585 break;
1998 case BC_GSET: 2586 case BC_GSET:
1999 dasm_put(Dst, 11625, Dt7(->env)); 2587 dasm_put(Dst, 12724, Dt7(->env));
2000 break; 2588 break;
2001 2589
2002 case BC_TGETV: 2590 case BC_TGETV:
2003 dasm_put(Dst, 11644, LJ_TTAB, LJ_TISNUM); 2591 dasm_put(Dst, 12743, LJ_TTAB);
2004 if (sse) { 2592 if (LJ_DUALNUM) {
2005 dasm_put(Dst, 11677); 2593 dasm_put(Dst, 12766, LJ_TISNUM);
2006 } else { 2594 } else {
2595 dasm_put(Dst, 12780, LJ_TISNUM);
2596 if (sse) {
2597 dasm_put(Dst, 12791);
2598 } else {
2599 }
2600 dasm_put(Dst, 12812);
2007 } 2601 }
2008 dasm_put(Dst, 11698, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2602 dasm_put(Dst, 12817, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2009 dasm_put(Dst, 11782, LJ_TNIL, LJ_TSTR); 2603 dasm_put(Dst, 12908, LJ_TSTR);
2010 break; 2604 break;
2011 case BC_TGETS: 2605 case BC_TGETS:
2012 dasm_put(Dst, 11811, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2606 dasm_put(Dst, 12926, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2013 dasm_put(Dst, 11895, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2607 dasm_put(Dst, 13010, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2014 break; 2608 break;
2015 case BC_TGETB: 2609 case BC_TGETB:
2016 dasm_put(Dst, 11966, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2610 dasm_put(Dst, 13081, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2017 dasm_put(Dst, 12061, LJ_TNIL); 2611 dasm_put(Dst, 13176, LJ_TNIL);
2018 break; 2612 break;
2019 2613
2020 case BC_TSETV: 2614 case BC_TSETV:
2021 dasm_put(Dst, 12078, LJ_TTAB, LJ_TISNUM); 2615 dasm_put(Dst, 13193, LJ_TTAB);
2022 if (sse) { 2616 if (LJ_DUALNUM) {
2023 dasm_put(Dst, 11677); 2617 dasm_put(Dst, 12766, LJ_TISNUM);
2024 } else { 2618 } else {
2619 dasm_put(Dst, 12780, LJ_TISNUM);
2620 if (sse) {
2621 dasm_put(Dst, 12791);
2622 } else {
2623 }
2624 dasm_put(Dst, 13216);
2025 } 2625 }
2026 dasm_put(Dst, 12111, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2626 dasm_put(Dst, 13221, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2027 dasm_put(Dst, 12190, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2627 dasm_put(Dst, 13301, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2028 break; 2628 break;
2029 case BC_TSETS: 2629 case BC_TSETS:
2030 dasm_put(Dst, 12252, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2630 dasm_put(Dst, 13358, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2031 dasm_put(Dst, 12328, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2631 dasm_put(Dst, 13434, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2032 dasm_put(Dst, 12416, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2632 dasm_put(Dst, 13522, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2033 break; 2633 break;
2034 case BC_TSETB: 2634 case BC_TSETB:
2035 dasm_put(Dst, 12507, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2635 dasm_put(Dst, 13613, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2036 dasm_put(Dst, 12601, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2636 dasm_put(Dst, 13707, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2037 break; 2637 break;
2038 2638
2039 case BC_TSETM: 2639 case BC_TSETM:
2040 dasm_put(Dst, 12647, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2640 dasm_put(Dst, 13753, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2041 dasm_put(Dst, 12790, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2641 dasm_put(Dst, 13896, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2042 break; 2642 break;
2043 2643
2044 /* -- Calls and vararg handling ----------------------------------------- */ 2644 /* -- Calls and vararg handling ----------------------------------------- */
2045 2645
2046 case BC_CALL: case BC_CALLM: 2646 case BC_CALL: case BC_CALLM:
2047 dasm_put(Dst, 10332); 2647 dasm_put(Dst, 11091);
2048 if (op == BC_CALLM) { 2648 if (op == BC_CALLM) {
2049 dasm_put(Dst, 12808); 2649 dasm_put(Dst, 13914);
2050 } 2650 }
2051 dasm_put(Dst, 12813, LJ_TFUNC, Dt7(->pc)); 2651 dasm_put(Dst, 13919, LJ_TFUNC, Dt7(->pc));
2052 break; 2652 break;
2053 2653
2054 case BC_CALLMT: 2654 case BC_CALLMT:
2055 dasm_put(Dst, 12808); 2655 dasm_put(Dst, 13914);
2056 break; 2656 break;
2057 case BC_CALLT: 2657 case BC_CALLT:
2058 dasm_put(Dst, 12855, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2658 dasm_put(Dst, 13961, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2059 dasm_put(Dst, 12970, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2659 dasm_put(Dst, 14076, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2060 break; 2660 break;
2061 2661
2062 case BC_ITERC: 2662 case BC_ITERC:
2063 dasm_put(Dst, 13041, LJ_TFUNC, 2+1, Dt7(->pc)); 2663 dasm_put(Dst, 14147, LJ_TFUNC, 2+1, Dt7(->pc));
2064 break; 2664 break;
2065 2665
2066 case BC_ITERN: 2666 case BC_ITERN:
2067#if LJ_HASJIT 2667#if LJ_HASJIT
2068#endif 2668#endif
2069 dasm_put(Dst, 13112, Dt6(->asize), Dt6(->array), LJ_TNIL); 2669 dasm_put(Dst, 14218, Dt6(->asize), Dt6(->array), LJ_TNIL);
2070 if (sse) { 2670 if (LJ_DUALNUM) {
2071 dasm_put(Dst, 13158); 2671 dasm_put(Dst, 10991, LJ_TISNUM);
2672 } else if (sse) {
2673 dasm_put(Dst, 11068);
2072 } else { 2674 } else {
2073 dasm_put(Dst, 13164); 2675 dasm_put(Dst, 14264);
2074 } 2676 }
2075 dasm_put(Dst, 13170); 2677 dasm_put(Dst, 14270);
2076 if (sse) { 2678 if (LJ_DUALNUM) {
2077 dasm_put(Dst, 10211); 2679 } else if (sse) {
2680 dasm_put(Dst, 10956);
2078 } else { 2681 } else {
2079 dasm_put(Dst, 10223); 2682 dasm_put(Dst, 10968);
2080 } 2683 }
2081 dasm_put(Dst, 13183, -BCBIAS_J*4); 2684 dasm_put(Dst, 14283, -BCBIAS_J*4);
2082 if (!sse) { 2685 if (!LJ_DUALNUM && !sse) {
2083 dasm_put(Dst, 13235); 2686 dasm_put(Dst, 14335);
2084 } 2687 }
2085 dasm_put(Dst, 13241, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2688 dasm_put(Dst, 14341, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2086 break; 2689 break;
2087 2690
2088 case BC_ISNEXT: 2691 case BC_ISNEXT:
2089 dasm_put(Dst, 13313, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2692 dasm_put(Dst, 14413, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2090 break; 2693 break;
2091 2694
2092 case BC_VARG: 2695 case BC_VARG:
2093 dasm_put(Dst, 13413, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2696 dasm_put(Dst, 14513, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2094 dasm_put(Dst, 13573, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2697 dasm_put(Dst, 14673, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2095 break; 2698 break;
2096 2699
2097 /* -- Returns ----------------------------------------------------------- */ 2700 /* -- Returns ----------------------------------------------------------- */
2098 2701
2099 case BC_RETM: 2702 case BC_RETM:
2100 dasm_put(Dst, 12808); 2703 dasm_put(Dst, 13914);
2101 break; 2704 break;
2102 2705
2103 case BC_RET: case BC_RET0: case BC_RET1: 2706 case BC_RET: case BC_RET0: case BC_RET1:
2104 if (op != BC_RET0) { 2707 if (op != BC_RET0) {
2105 dasm_put(Dst, 13639); 2708 dasm_put(Dst, 14739);
2106 } 2709 }
2107 dasm_put(Dst, 13643, FRAME_TYPE); 2710 dasm_put(Dst, 14743, FRAME_TYPE);
2108 switch (op) { 2711 switch (op) {
2109 case BC_RET: 2712 case BC_RET:
2110 dasm_put(Dst, 13662); 2713 dasm_put(Dst, 14762);
2111 break; 2714 break;
2112 case BC_RET1: 2715 case BC_RET1:
2113 dasm_put(Dst, 13714); 2716 dasm_put(Dst, 14814);
2114 /* fallthrough */ 2717 /* fallthrough */
2115 case BC_RET0: 2718 case BC_RET0:
2116 dasm_put(Dst, 13724); 2719 dasm_put(Dst, 14824);
2117 default: 2720 default:
2118 break; 2721 break;
2119 } 2722 }
2120 dasm_put(Dst, 13735, Dt7(->pc), PC2PROTO(k)); 2723 dasm_put(Dst, 14835, Dt7(->pc), PC2PROTO(k));
2121 if (op == BC_RET) { 2724 if (op == BC_RET) {
2122 dasm_put(Dst, 13779, LJ_TNIL); 2725 dasm_put(Dst, 14879, LJ_TNIL);
2123 } else { 2726 } else {
2124 dasm_put(Dst, 13788, LJ_TNIL); 2727 dasm_put(Dst, 14888, LJ_TNIL);
2125 } 2728 }
2126 dasm_put(Dst, 13795, -FRAME_VARG, FRAME_TYPEP); 2729 dasm_put(Dst, 14895, -FRAME_VARG, FRAME_TYPEP);
2127 if (op != BC_RET0) { 2730 if (op != BC_RET0) {
2128 dasm_put(Dst, 13819); 2731 dasm_put(Dst, 14919);
2129 } 2732 }
2130 dasm_put(Dst, 4555); 2733 dasm_put(Dst, 4646);
2131 break; 2734 break;
2132 2735
2133 /* -- Loops and branches ------------------------------------------------ */ 2736 /* -- Loops and branches ------------------------------------------------ */
@@ -2135,7 +2738,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2135 2738
2136 case BC_FORL: 2739 case BC_FORL:
2137#if LJ_HASJIT 2740#if LJ_HASJIT
2138 dasm_put(Dst, 13823, HOTCOUNT_PCMASK, GG_DISP2HOT); 2741 dasm_put(Dst, 14923, HOTCOUNT_PCMASK, GG_DISP2HOT);
2139#endif 2742#endif
2140 break; 2743 break;
2141 2744
@@ -2147,57 +2750,104 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2147 case BC_FORI: 2750 case BC_FORI:
2148 case BC_IFORL: 2751 case BC_IFORL:
2149 vk = (op == BC_IFORL || op == BC_JFORL); 2752 vk = (op == BC_IFORL || op == BC_JFORL);
2150 dasm_put(Dst, 13844); 2753 dasm_put(Dst, 14944);
2754 if (LJ_DUALNUM) {
2755 dasm_put(Dst, 14948, LJ_TISNUM);
2756 if (!vk) {
2757 dasm_put(Dst, 14958, LJ_TISNUM, LJ_TISNUM);
2758 } else {
2759 dasm_put(Dst, 14987);
2760 }
2761 dasm_put(Dst, 15006, LJ_TISNUM);
2762 if (op == BC_FORI) {
2763 dasm_put(Dst, 15017, -BCBIAS_J*4);
2764 } else if (op == BC_JFORI) {
2765 dasm_put(Dst, 15031, -BCBIAS_J*4, BC_JLOOP);
2766 } else if (op == BC_IFORL) {
2767 dasm_put(Dst, 15049, -BCBIAS_J*4);
2768 } else {
2769 dasm_put(Dst, 15041, BC_JLOOP);
2770 }
2771 dasm_put(Dst, 15063);
2772 if (vk) {
2773 dasm_put(Dst, 15087);
2774 }
2775 dasm_put(Dst, 15006, LJ_TISNUM);
2776 if (op == BC_FORI) {
2777 dasm_put(Dst, 15096);
2778 } else if (op == BC_JFORI) {
2779 dasm_put(Dst, 15101, -BCBIAS_J*4, BC_JLOOP);
2780 } else if (op == BC_IFORL) {
2781 dasm_put(Dst, 15115);
2782 } else {
2783 dasm_put(Dst, 15111, BC_JLOOP);
2784 }
2785 dasm_put(Dst, 15120);
2786 } else if (!vk) {
2787 dasm_put(Dst, 15127, LJ_TISNUM);
2788 }
2151 if (!vk) { 2789 if (!vk) {
2152 dasm_put(Dst, 13848, LJ_TISNUM, LJ_TISNUM); 2790 dasm_put(Dst, 15133, LJ_TISNUM);
2153 } 2791 }
2154 dasm_put(Dst, 13867); 2792 dasm_put(Dst, 15147);
2155 if (!vk) { 2793 if (!vk) {
2156 dasm_put(Dst, 13871, LJ_TISNUM); 2794 dasm_put(Dst, 15151, LJ_TISNUM);
2157 } 2795 }
2158 if (sse) { 2796 if (sse) {
2159 dasm_put(Dst, 13880); 2797 dasm_put(Dst, 15160);
2160 if (vk) { 2798 if (vk) {
2161 dasm_put(Dst, 13892); 2799 dasm_put(Dst, 15172);
2162 } else { 2800 } else {
2163 dasm_put(Dst, 13911); 2801 dasm_put(Dst, 15191);
2164 } 2802 }
2165 dasm_put(Dst, 13916); 2803 dasm_put(Dst, 15196);
2166 } else { 2804 } else {
2167 dasm_put(Dst, 13929); 2805 dasm_put(Dst, 15209);
2168 if (vk) { 2806 if (vk) {
2169 dasm_put(Dst, 13935); 2807 dasm_put(Dst, 15215);
2170 } else { 2808 } else {
2171 dasm_put(Dst, 13951); 2809 dasm_put(Dst, 15231);
2172 } 2810 }
2173 dasm_put(Dst, 13959); 2811 dasm_put(Dst, 15239);
2174 if (cmov) { 2812 if (cmov) {
2175 dasm_put(Dst, 9629); 2813 dasm_put(Dst, 10057);
2176 } else { 2814 } else {
2177 dasm_put(Dst, 9635); 2815 dasm_put(Dst, 10063);
2178 } 2816 }
2179 if (!cmov) { 2817 if (!cmov) {
2180 dasm_put(Dst, 13964); 2818 dasm_put(Dst, 15244);
2181 } 2819 }
2182 } 2820 }
2183 if (op == BC_FORI) { 2821 if (op == BC_FORI) {
2184 dasm_put(Dst, 13970, -BCBIAS_J*4); 2822 if (LJ_DUALNUM) {
2823 dasm_put(Dst, 15250);
2824 } else {
2825 dasm_put(Dst, 15255, -BCBIAS_J*4);
2826 }
2185 } else if (op == BC_JFORI) { 2827 } else if (op == BC_JFORI) {
2186 dasm_put(Dst, 13980, -BCBIAS_J*4, BC_JLOOP); 2828 dasm_put(Dst, 15265, -BCBIAS_J*4, BC_JLOOP);
2187 } else if (op == BC_IFORL) { 2829 } else if (op == BC_IFORL) {
2188 dasm_put(Dst, 13994, -BCBIAS_J*4); 2830 if (LJ_DUALNUM) {
2831 dasm_put(Dst, 15279);
2832 } else {
2833 dasm_put(Dst, 15284, -BCBIAS_J*4);
2834 }
2835 } else {
2836 dasm_put(Dst, 15275, BC_JLOOP);
2837 }
2838 if (LJ_DUALNUM) {
2839 dasm_put(Dst, 9986);
2189 } else { 2840 } else {
2190 dasm_put(Dst, 13990, BC_JLOOP); 2841 dasm_put(Dst, 10741);
2191 } 2842 }
2192 dasm_put(Dst, 9664);
2193 if (sse) { 2843 if (sse) {
2194 dasm_put(Dst, 14004); 2844 dasm_put(Dst, 15294);
2195 } 2845 }
2196 break; 2846 break;
2197 2847
2198 case BC_ITERL: 2848 case BC_ITERL:
2199#if LJ_HASJIT 2849#if LJ_HASJIT
2200 dasm_put(Dst, 13823, HOTCOUNT_PCMASK, GG_DISP2HOT); 2850 dasm_put(Dst, 14923, HOTCOUNT_PCMASK, GG_DISP2HOT);
2201#endif 2851#endif
2202 break; 2852 break;
2203 2853
@@ -2206,33 +2856,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2206 break; 2856 break;
2207#endif 2857#endif
2208 case BC_IITERL: 2858 case BC_IITERL:
2209 dasm_put(Dst, 14015, LJ_TNIL); 2859 dasm_put(Dst, 15305, LJ_TNIL);
2210 if (op == BC_JITERL) { 2860 if (op == BC_JITERL) {
2211 dasm_put(Dst, 14030, BC_JLOOP); 2861 dasm_put(Dst, 15320, BC_JLOOP);
2212 } else { 2862 } else {
2213 dasm_put(Dst, 14044, -BCBIAS_J*4); 2863 dasm_put(Dst, 15334, -BCBIAS_J*4);
2214 } 2864 }
2215 dasm_put(Dst, 10096); 2865 dasm_put(Dst, 10100);
2216 break; 2866 break;
2217 2867
2218 case BC_LOOP: 2868 case BC_LOOP:
2219#if LJ_HASJIT 2869#if LJ_HASJIT
2220 dasm_put(Dst, 13823, HOTCOUNT_PCMASK, GG_DISP2HOT); 2870 dasm_put(Dst, 14923, HOTCOUNT_PCMASK, GG_DISP2HOT);
2221#endif 2871#endif
2222 break; 2872 break;
2223 2873
2224 case BC_ILOOP: 2874 case BC_ILOOP:
2225 dasm_put(Dst, 9666); 2875 dasm_put(Dst, 10102);
2226 break; 2876 break;
2227 2877
2228 case BC_JLOOP: 2878 case BC_JLOOP:
2229#if LJ_HASJIT 2879#if LJ_HASJIT
2230 dasm_put(Dst, 14060, 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); 2880 dasm_put(Dst, 15350, 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);
2231#endif 2881#endif
2232 break; 2882 break;
2233 2883
2234 case BC_JMP: 2884 case BC_JMP:
2235 dasm_put(Dst, 14169, -BCBIAS_J*4); 2885 dasm_put(Dst, 15459, -BCBIAS_J*4);
2236 break; 2886 break;
2237 2887
2238 /* -- Function headers -------------------------------------------------- */ 2888 /* -- Function headers -------------------------------------------------- */
@@ -2246,7 +2896,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2246 2896
2247 case BC_FUNCF: 2897 case BC_FUNCF:
2248#if LJ_HASJIT 2898#if LJ_HASJIT
2249 dasm_put(Dst, 14194, HOTCOUNT_PCMASK, GG_DISP2HOT); 2899 dasm_put(Dst, 15484, HOTCOUNT_PCMASK, GG_DISP2HOT);
2250#endif 2900#endif
2251 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2901 case BC_FUNCV: /* NYI: compiled vararg functions. */
2252 break; 2902 break;
@@ -2256,47 +2906,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2256 break; 2906 break;
2257#endif 2907#endif
2258 case BC_IFUNCF: 2908 case BC_IFUNCF:
2259 dasm_put(Dst, 14215, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2909 dasm_put(Dst, 15505, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2260 if (op == BC_JFUNCF) { 2910 if (op == BC_JFUNCF) {
2261 dasm_put(Dst, 14245, BC_JLOOP); 2911 dasm_put(Dst, 15535, BC_JLOOP);
2262 } else { 2912 } else {
2263 dasm_put(Dst, 9666); 2913 dasm_put(Dst, 10102);
2264 } 2914 }
2265 dasm_put(Dst, 14254, LJ_TNIL); 2915 dasm_put(Dst, 15544, LJ_TNIL);
2266 break; 2916 break;
2267 2917
2268 case BC_JFUNCV: 2918 case BC_JFUNCV:
2269#if !LJ_HASJIT 2919#if !LJ_HASJIT
2270 break; 2920 break;
2271#endif 2921#endif
2272 dasm_put(Dst, 9020); 2922 dasm_put(Dst, 9250);
2273 break; /* NYI: compiled vararg functions. */ 2923 break; /* NYI: compiled vararg functions. */
2274 2924
2275 case BC_IFUNCV: 2925 case BC_IFUNCV:
2276 dasm_put(Dst, 14276, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2926 dasm_put(Dst, 15566, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2277 if (op == BC_JFUNCV) { 2927 if (op == BC_JFUNCV) {
2278 dasm_put(Dst, 14245, BC_JLOOP); 2928 dasm_put(Dst, 15535, BC_JLOOP);
2279 } else { 2929 } else {
2280 dasm_put(Dst, 14367, -4+PC2PROTO(k)); 2930 dasm_put(Dst, 15657, -4+PC2PROTO(k));
2281 } 2931 }
2282 dasm_put(Dst, 14390, LJ_TNIL); 2932 dasm_put(Dst, 15680, LJ_TNIL);
2283 break; 2933 break;
2284 2934
2285 case BC_FUNCC: 2935 case BC_FUNCC:
2286 case BC_FUNCCW: 2936 case BC_FUNCCW:
2287 dasm_put(Dst, 14412, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2937 dasm_put(Dst, 15702, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2288 if (op == BC_FUNCC) { 2938 if (op == BC_FUNCC) {
2289 dasm_put(Dst, 14442); 2939 dasm_put(Dst, 2310);
2290 } else { 2940 } else {
2291 dasm_put(Dst, 14446); 2941 dasm_put(Dst, 15732);
2292 } 2942 }
2293 dasm_put(Dst, 14454, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2943 dasm_put(Dst, 15740, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2294 if (op == BC_FUNCC) { 2944 if (op == BC_FUNCC) {
2295 dasm_put(Dst, 14463); 2945 dasm_put(Dst, 15749);
2296 } else { 2946 } else {
2297 dasm_put(Dst, 14467, DISPATCH_GL(wrapf)); 2947 dasm_put(Dst, 15753, DISPATCH_GL(wrapf));
2298 } 2948 }
2299 dasm_put(Dst, 14472, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2949 dasm_put(Dst, 15758, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2300 break; 2950 break;
2301 2951
2302 /* ---------------------------------------------------------------------- */ 2952 /* ---------------------------------------------------------------------- */
@@ -2324,7 +2974,7 @@ static int build_backend(BuildCtx *ctx)
2324 2974
2325 build_subroutines(ctx, cmov, sse); 2975 build_subroutines(ctx, cmov, sse);
2326 2976
2327 dasm_put(Dst, 14497); 2977 dasm_put(Dst, 15783);
2328 for (op = 0; op < BC__MAX; op++) 2978 for (op = 0; op < BC__MAX; op++)
2329 build_ins(ctx, (BCOp)op, op, cmov, sse); 2979 build_ins(ctx, (BCOp)op, op, cmov, sse);
2330 2980
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 4a0bbeab..4d96423c 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -306,7 +306,8 @@
306| 306|
307|// Macros to test operand types. 307|// Macros to test operand types.
308|.macro checktp, reg, tp; cmp dword [BASE+reg*8+4], tp; .endmacro 308|.macro checktp, reg, tp; cmp dword [BASE+reg*8+4], tp; .endmacro
309|.macro checknum, reg, target; checktp reg, LJ_TISNUM; ja target; .endmacro 309|.macro checknum, reg, target; checktp reg, LJ_TISNUM; jae target; .endmacro
310|.macro checkint, reg, target; checktp reg, LJ_TISNUM; jne target; .endmacro
310|.macro checkstr, reg, target; checktp reg, LJ_TSTR; jne target; .endmacro 311|.macro checkstr, reg, target; checktp reg, LJ_TSTR; jne target; .endmacro
311|.macro checktab, reg, target; checktp reg, LJ_TTAB; jne target; .endmacro 312|.macro checktab, reg, target; checktp reg, LJ_TTAB; jne target; .endmacro
312| 313|
@@ -810,7 +811,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
810 | 811 |
811 |->vmeta_tgetb: 812 |->vmeta_tgetb:
812 | movzx RC, PC_RC 813 | movzx RC, PC_RC
813 if (sse) { 814 if (LJ_DUALNUM) {
815 | mov TMP2, LJ_TISNUM
816 | mov TMP1, RC
817 } else if (sse) {
814 | cvtsi2sd xmm0, RC 818 | cvtsi2sd xmm0, RC
815 | movsd TMPQ, xmm0 819 | movsd TMPQ, xmm0
816 } else { 820 } else {
@@ -888,7 +892,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
888 | 892 |
889 |->vmeta_tsetb: 893 |->vmeta_tsetb:
890 | movzx RC, PC_RC 894 | movzx RC, PC_RC
891 if (sse) { 895 if (LJ_DUALNUM) {
896 | mov TMP2, LJ_TISNUM
897 | mov TMP1, RC
898 } else if (sse) {
892 | cvtsi2sd xmm0, RC 899 | cvtsi2sd xmm0, RC
893 | movsd TMPQ, xmm0 900 | movsd TMPQ, xmm0
894 } else { 901 } else {
@@ -1051,17 +1058,25 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1051 | mov FCARG1, L:RB 1058 | mov FCARG1, L:RB
1052 | mov FCARG2, dword [PC-4] 1059 | mov FCARG2, dword [PC-4]
1053 | mov SAVE_PC, PC 1060 | mov SAVE_PC, PC
1054 | call extern lj_meta_equal_cd@8 // (lua_State *L, BCIns op) 1061 | call extern lj_meta_equal_cd@8 // (lua_State *L, BCIns ins)
1055 | // 0/1 or TValue * (metamethod) returned in eax (RC). 1062 | // 0/1 or TValue * (metamethod) returned in eax (RC).
1056 | jmp <3 1063 | jmp <3
1057#endif 1064#endif
1058 | 1065 |
1059 |//-- Arithmetic metamethods --------------------------------------------- 1066 |//-- Arithmetic metamethods ---------------------------------------------
1060 | 1067 |
1068 |->vmeta_arith_vno:
1069#if LJ_DUALNUM
1070 | movzx RB, PC_RB
1071#endif
1061 |->vmeta_arith_vn: 1072 |->vmeta_arith_vn:
1062 | lea RC, [KBASE+RC*8] 1073 | lea RC, [KBASE+RC*8]
1063 | jmp >1 1074 | jmp >1
1064 | 1075 |
1076 |->vmeta_arith_nvo:
1077#if LJ_DUALNUM
1078 | movzx RC, PC_RC
1079#endif
1065 |->vmeta_arith_nv: 1080 |->vmeta_arith_nv:
1066 | lea RC, [KBASE+RC*8] 1081 | lea RC, [KBASE+RC*8]
1067 | lea RB, [BASE+RB*8] 1082 | lea RB, [BASE+RB*8]
@@ -1073,6 +1088,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1073 | mov RB, RC 1088 | mov RB, RC
1074 | jmp >2 1089 | jmp >2
1075 | 1090 |
1091 |->vmeta_arith_vvo:
1092#if LJ_DUALNUM
1093 | movzx RB, PC_RB
1094#endif
1076 |->vmeta_arith_vv: 1095 |->vmeta_arith_vv:
1077 | lea RC, [BASE+RC*8] 1096 | lea RC, [BASE+RC*8]
1078 |1: 1097 |1:
@@ -1210,20 +1229,20 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1210 | 1229 |
1211 |.macro .ffunc_n, name 1230 |.macro .ffunc_n, name
1212 | .ffunc_1 name 1231 | .ffunc_1 name
1213 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 1232 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1214 | fld qword [BASE] 1233 | fld qword [BASE]
1215 |.endmacro 1234 |.endmacro
1216 | 1235 |
1217 |.macro .ffunc_n, name, op 1236 |.macro .ffunc_n, name, op
1218 | .ffunc_1 name 1237 | .ffunc_1 name
1219 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 1238 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1220 | op 1239 | op
1221 | fld qword [BASE] 1240 | fld qword [BASE]
1222 |.endmacro 1241 |.endmacro
1223 | 1242 |
1224 |.macro .ffunc_nsse, name, op 1243 |.macro .ffunc_nsse, name, op
1225 | .ffunc_1 name 1244 | .ffunc_1 name
1226 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 1245 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1227 | op xmm0, qword [BASE] 1246 | op xmm0, qword [BASE]
1228 |.endmacro 1247 |.endmacro
1229 | 1248 |
@@ -1233,24 +1252,24 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1233 | 1252 |
1234 |.macro .ffunc_nn, name 1253 |.macro .ffunc_nn, name
1235 | .ffunc_2 name 1254 | .ffunc_2 name
1236 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 1255 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1237 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback 1256 | cmp dword [BASE+12], LJ_TISNUM; jae ->fff_fallback
1238 | fld qword [BASE] 1257 | fld qword [BASE]
1239 | fld qword [BASE+8] 1258 | fld qword [BASE+8]
1240 |.endmacro 1259 |.endmacro
1241 | 1260 |
1242 |.macro .ffunc_nnsse, name 1261 |.macro .ffunc_nnsse, name
1243 | .ffunc_2 name 1262 | .ffunc_2 name
1244 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 1263 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1245 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback 1264 | cmp dword [BASE+12], LJ_TISNUM; jae ->fff_fallback
1246 | movsd xmm0, qword [BASE] 1265 | movsd xmm0, qword [BASE]
1247 | movsd xmm1, qword [BASE+8] 1266 | movsd xmm1, qword [BASE+8]
1248 |.endmacro 1267 |.endmacro
1249 | 1268 |
1250 |.macro .ffunc_nnr, name 1269 |.macro .ffunc_nnr, name
1251 | .ffunc_2 name 1270 | .ffunc_2 name
1252 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 1271 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1253 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback 1272 | cmp dword [BASE+12], LJ_TISNUM; jae ->fff_fallback
1254 | fld qword [BASE+8] 1273 | fld qword [BASE+8]
1255 | fld qword [BASE] 1274 | fld qword [BASE]
1256 |.endmacro 1275 |.endmacro
@@ -1431,7 +1450,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1431 |.ffunc tonumber 1450 |.ffunc tonumber
1432 | // Only handles the number case inline (without a base argument). 1451 | // Only handles the number case inline (without a base argument).
1433 | cmp NARGS:RD, 1+1; jne ->fff_fallback // Exactly one argument. 1452 | cmp NARGS:RD, 1+1; jne ->fff_fallback // Exactly one argument.
1434 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 1453 | cmp dword [BASE+4], LJ_TISNUM
1454 if (LJ_DUALNUM) {
1455 | jne >1
1456 | mov RB, dword [BASE]; jmp ->fff_resi
1457 |1:
1458 | ja ->fff_fallback
1459 } else {
1460 | jae ->fff_fallback
1461 }
1435 if (sse) { 1462 if (sse) {
1436 | movsd xmm0, qword [BASE]; jmp ->fff_resxmm0 1463 | movsd xmm0, qword [BASE]; jmp ->fff_resxmm0
1437 } else { 1464 } else {
@@ -1460,7 +1487,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1460 | mov FCARG2, BASE // Otherwise: FCARG2 == BASE 1487 | mov FCARG2, BASE // Otherwise: FCARG2 == BASE
1461 |.endif 1488 |.endif
1462 | mov L:FCARG1, L:RB 1489 | mov L:FCARG1, L:RB
1463 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np) 1490 if (LJ_DUALNUM) {
1491 | call extern lj_str_fromnumber@8 // (lua_State *L, cTValue *o)
1492 } else {
1493 | call extern lj_str_fromnum@8 // (lua_State *L, lua_Number *np)
1494 }
1464 | // GCstr returned in eax (RD). 1495 | // GCstr returned in eax (RD).
1465 | mov BASE, L:RB->base 1496 | mov BASE, L:RB->base
1466 | jmp <2 1497 | jmp <2
@@ -1538,9 +1569,19 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1538 | 1569 |
1539 |.ffunc_1 ipairs_aux 1570 |.ffunc_1 ipairs_aux
1540 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback 1571 | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback
1541 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback 1572 | cmp dword [BASE+12], LJ_TISNUM
1573 if (LJ_DUALNUM) {
1574 | jne ->fff_fallback
1575 } else {
1576 | jae ->fff_fallback
1577 }
1542 | mov PC, [BASE-4] 1578 | mov PC, [BASE-4]
1543 if (sse) { 1579 if (LJ_DUALNUM) {
1580 | mov RD, dword [BASE+8]
1581 | add RD, 1
1582 | mov dword [BASE-4], LJ_TISNUM
1583 | mov dword [BASE-8], RD
1584 } else if (sse) {
1544 | movsd xmm0, qword [BASE+8] 1585 | movsd xmm0, qword [BASE+8]
1545 | sseconst_1 xmm1, RBa 1586 | sseconst_1 xmm1, RBa
1546 | addsd xmm0, xmm1 1587 | addsd xmm0, xmm1
@@ -1598,7 +1639,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1598 | mov PC, [BASE-4] 1639 | mov PC, [BASE-4]
1599 | mov dword [BASE-4], LJ_TFUNC 1640 | mov dword [BASE-4], LJ_TFUNC
1600 | mov [BASE-8], CFUNC:RD 1641 | mov [BASE-8], CFUNC:RD
1601 if (sse) { 1642 if (LJ_DUALNUM) {
1643 | mov dword [BASE+12], LJ_TISNUM
1644 | mov dword [BASE+8], 0
1645 } else if (sse) {
1602 | xorps xmm0, xmm0 1646 | xorps xmm0, xmm0
1603 | movsd qword [BASE+8], xmm0 1647 | movsd qword [BASE+8], xmm0
1604 } else { 1648 } else {
@@ -1829,13 +1873,39 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1829 | 1873 |
1830 |//-- Math library ------------------------------------------------------- 1874 |//-- Math library -------------------------------------------------------
1831 | 1875 |
1876 if (!LJ_DUALNUM) {
1877 |->fff_resi: // Dummy.
1878 }
1832 if (sse) { 1879 if (sse) {
1833 |->fff_resn: 1880 |->fff_resn:
1834 | mov PC, [BASE-4] 1881 | mov PC, [BASE-4]
1835 | fstp qword [BASE-8] 1882 | fstp qword [BASE-8]
1836 | jmp ->fff_res1 1883 | jmp ->fff_res1
1837 | 1884 }
1838 |.ffunc_nsse math_abs 1885 | .ffunc_1 math_abs
1886 if (LJ_DUALNUM) {
1887 | cmp dword [BASE+4], LJ_TISNUM; jne >2
1888 | mov RB, dword [BASE]
1889 | cmp RB, 0; jns ->fff_resi
1890 | neg RB; js >1
1891 |->fff_resbit:
1892 |->fff_resi:
1893 | mov PC, [BASE-4]
1894 | mov dword [BASE-4], LJ_TISNUM
1895 | mov dword [BASE-8], RB
1896 | jmp ->fff_res1
1897 |1:
1898 | mov PC, [BASE-4]
1899 | mov dword [BASE-4], 0x41e00000 // 2^31.
1900 | mov dword [BASE-8], 0
1901 | jmp ->fff_res1
1902 |2:
1903 | ja ->fff_fallback
1904 } else {
1905 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1906 }
1907 if (sse) {
1908 | movsd xmm0, qword [BASE]
1839 | sseconst_abs xmm1, RDa 1909 | sseconst_abs xmm1, RDa
1840 | andps xmm0, xmm1 1910 | andps xmm0, xmm1
1841 |->fff_resxmm0: 1911 |->fff_resxmm0:
@@ -1843,7 +1913,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1843 | movsd qword [BASE-8], xmm0 1913 | movsd qword [BASE-8], xmm0
1844 | // fallthrough 1914 | // fallthrough
1845 } else { 1915 } else {
1846 |.ffunc_n math_abs 1916 | fld qword [BASE]
1847 | fabs 1917 | fabs
1848 | // fallthrough 1918 | // fallthrough
1849 |->fff_resxmm0: // Dummy. 1919 |->fff_resxmm0: // Dummy.
@@ -1876,16 +1946,60 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1876 | mov RAa, -8 // Results start at BASE+RA = BASE-8. 1946 | mov RAa, -8 // Results start at BASE+RA = BASE-8.
1877 | jmp ->vm_return 1947 | jmp ->vm_return
1878 | 1948 |
1949 |.macro math_round, func
1950 | .ffunc math_ .. func
1951 ||if (LJ_DUALNUM) {
1952 | cmp dword [BASE+4], LJ_TISNUM; jne >1
1953 | mov RB, dword [BASE]; jmp ->fff_resi
1954 |1:
1955 | ja ->fff_fallback
1956 ||} else {
1957 | cmp dword [BASE+4], LJ_TISNUM; jae ->fff_fallback
1958 ||}
1959 ||if (sse) {
1960 | movsd xmm0, qword [BASE]
1961 | call ->vm_ .. func
1962 || if (LJ_DUALNUM) {
1963 | cvtsd2si RB, xmm0
1964 | cmp RB, 0x80000000
1965 | jne ->fff_resi
1966 | cvtsi2sd xmm1, RB
1967 | ucomisd xmm0, xmm1
1968 | jp ->fff_resxmm0
1969 | je ->fff_resi
1970 || }
1971 | jmp ->fff_resxmm0
1972 ||} else {
1973 | fld qword [BASE]
1974 | call ->vm_ .. func
1975 || if (LJ_DUALNUM) {
1976 |.if not X64
1977 | fist ARG1
1978 | mov RB, ARG1
1979 | cmp RB, 0x80000000; jne >2
1980 | fdup
1981 | fild ARG1
1982 | fcomparepp
1983 | jp ->fff_resn
1984 | jne ->fff_resn
1985 |2:
1986 | fpop
1987 | jmp ->fff_resi
1988 |.endif
1989 || } else {
1990 | jmp ->fff_resn
1991 || }
1992 ||}
1993 |.endmacro
1994 |
1995 | math_round floor
1996 | math_round ceil
1997 |
1879 if (sse) { 1998 if (sse) {
1880 |.ffunc_nsse math_sqrt, sqrtsd; jmp ->fff_resxmm0 1999 |.ffunc_nsse math_sqrt, sqrtsd; jmp ->fff_resxmm0
1881 |.ffunc_nsse math_floor; call ->vm_floor; jmp ->fff_resxmm0
1882 |.ffunc_nsse math_ceil; call ->vm_ceil; jmp ->fff_resxmm0
1883 } else { 2000 } else {
1884 |.ffunc_n math_sqrt; fsqrt; jmp ->fff_resn 2001 |.ffunc_n math_sqrt; fsqrt; jmp ->fff_resn
1885 |.ffunc_n math_floor; call ->vm_floor; jmp ->fff_resn
1886 |.ffunc_n math_ceil; call ->vm_ceil; jmp ->fff_resn
1887 } 2002 }
1888 |
1889 |.ffunc_n math_log, fldln2; fyl2x; jmp ->fff_resn 2003 |.ffunc_n math_log, fldln2; fyl2x; jmp ->fff_resn
1890 |.ffunc_n math_log10, fldlg2; fyl2x; jmp ->fff_resn 2004 |.ffunc_n math_log10, fldlg2; fyl2x; jmp ->fff_resn
1891 |.ffunc_n math_exp; call ->vm_exp; jmp ->fff_resn 2005 |.ffunc_n math_exp; call ->vm_exp; jmp ->fff_resn
@@ -1946,7 +2060,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1946 | 2060 |
1947 |.ffunc_1 math_frexp 2061 |.ffunc_1 math_frexp
1948 | mov RB, [BASE+4] 2062 | mov RB, [BASE+4]
1949 | cmp RB, LJ_TISNUM; ja ->fff_fallback 2063 | cmp RB, LJ_TISNUM; jae ->fff_fallback
1950 | mov PC, [BASE-4] 2064 | mov PC, [BASE-4]
1951 | mov RC, [BASE] 2065 | mov RC, [BASE]
1952 | mov [BASE-4], RB; mov [BASE-8], RC 2066 | mov [BASE-4], RB; mov [BASE-8], RC
@@ -2041,44 +2155,91 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2041 |.ffunc_nn math_pow; call ->vm_pow; jmp ->fff_resn 2155 |.ffunc_nn math_pow; call ->vm_pow; jmp ->fff_resn
2042 } 2156 }
2043 | 2157 |
2044 |.macro math_minmax, name, cmovop, nocmovop, sseop 2158 |.macro math_minmax, name, cmovop, fcmovop, nofcmovop, sseop
2159 | .ffunc name
2160 | mov RA, 2
2161 | cmp dword [BASE+4], LJ_TISNUM
2162 ||if (LJ_DUALNUM) {
2163 | jne >4
2164 | mov RB, dword [BASE]
2165 |1: // Handle integers.
2166 | cmp RA, RD; jae ->fff_resi
2167 | cmp dword [BASE+RA*8-4], LJ_TISNUM; jne >3
2168 | cmp RB, dword [BASE+RA*8-8]
2169 | cmovop RB, dword [BASE+RA*8-8]
2170 | add RA, 1
2171 | jmp <1
2172 |3:
2173 | ja ->fff_fallback
2174 | // Convert intermediate result to number and continue below.
2045 ||if (sse) { 2175 ||if (sse) {
2046 |.ffunc_nsse name 2176 | cvtsi2sd xmm0, RB
2047 | mov RB, 2 2177 ||} else {
2048 |1: 2178 |.if not X64
2049 | cmp RB, RD 2179 | mov TMP1, RB
2050 | jae ->fff_resxmm0 2180 | fild TMP1
2051 | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja ->fff_fallback 2181 |.endif
2052 | movsd xmm1, qword [BASE+RB*8-8] 2182 ||}
2183 | jmp >6
2184 |4:
2185 | ja ->fff_fallback
2186 ||} else {
2187 | jae ->fff_fallback
2188 ||}
2189 |
2190 ||if (sse) {
2191 | movsd xmm0, qword [BASE]
2192 |5: // Handle numbers or integers.
2193 | cmp RA, RD; jae ->fff_resxmm0
2194 | cmp dword [BASE+RA*8-4], LJ_TISNUM
2195 ||if (LJ_DUALNUM) {
2196 | jb >6
2197 | ja ->fff_fallback
2198 | cvtsi2sd xmm1, dword [BASE+RA*8-8]
2199 | jmp >7
2200 ||} else {
2201 | jae ->fff_fallback
2202 ||}
2203 |6:
2204 | movsd xmm1, qword [BASE+RA*8-8]
2205 |7:
2053 | sseop xmm0, xmm1 2206 | sseop xmm0, xmm1
2054 | add RB, 1 2207 | add RA, 1
2055 | jmp <1 2208 | jmp <5
2056 ||} else { 2209 ||} else {
2057 |.if not X64 2210 |.if not X64
2058 |.ffunc_n name 2211 | fld qword [BASE]
2059 | mov RB, 2 2212 |5: // Handle numbers or integers.
2060 |1: 2213 | cmp RA, RD; jae ->fff_resn
2061 | cmp RB, RD 2214 | cmp dword [BASE+RA*8-4], LJ_TISNUM
2062 | jae ->fff_resn 2215 ||if (LJ_DUALNUM) {
2063 | cmp dword [BASE+RB*8-4], LJ_TISNUM; ja >5 2216 | jb >6
2064 | fld qword [BASE+RB*8-8] 2217 | ja >9
2218 | fild dword [BASE+RA*8-8]
2219 | jmp >7
2220 ||} else {
2221 | jae >9
2222 ||}
2223 |6:
2224 | fld qword [BASE+RA*8-8]
2225 |7:
2065 ||if (cmov) { 2226 ||if (cmov) {
2066 | fucomi st1; cmovop st1; fpop1 2227 | fucomi st1; fcmovop st1; fpop1
2067 ||} else { 2228 ||} else {
2068 | push eax 2229 | push eax
2069 | fucom st1; fnstsw ax; test ah, 1; nocmovop >2; fxch; 2: ; fpop 2230 | fucom st1; fnstsw ax; test ah, 1; nofcmovop >2; fxch; 2: ; fpop
2070 | pop eax 2231 | pop eax
2071 ||} 2232 ||}
2072 | add RB, 1 2233 | add RA, 1
2073 | jmp <1 2234 | jmp <5
2074 |.endif 2235 |.endif
2075 ||} 2236 ||}
2076 |.endmacro 2237 |.endmacro
2077 | 2238 |
2078 | math_minmax math_min, fcmovnbe, jz, minsd 2239 | math_minmax math_min, cmovg, fcmovnbe, jz, minsd
2079 | math_minmax math_max, fcmovbe, jnz, maxsd 2240 | math_minmax math_max, cmovl, fcmovbe, jnz, maxsd
2080 if (!sse) { 2241 if (!sse) {
2081 |5: 2242 |9:
2082 | fpop; jmp ->fff_fallback 2243 | fpop; jmp ->fff_fallback
2083 } 2244 }
2084 | 2245 |
@@ -2087,7 +2248,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2087 |.ffunc_1 string_len 2248 |.ffunc_1 string_len
2088 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback 2249 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2089 | mov STR:RB, [BASE] 2250 | mov STR:RB, [BASE]
2090 if (sse) { 2251 if (LJ_DUALNUM) {
2252 | mov RB, dword STR:RB->len; jmp ->fff_resi
2253 } else if (sse) {
2091 | cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0 2254 | cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0
2092 } else { 2255 } else {
2093 | fild dword STR:RB->len; jmp ->fff_resn 2256 | fild dword STR:RB->len; jmp ->fff_resn
@@ -2101,7 +2264,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2101 | cmp dword STR:RB->len, 1 2264 | cmp dword STR:RB->len, 1
2102 | jb ->fff_res0 // Return no results for empty string. 2265 | jb ->fff_res0 // Return no results for empty string.
2103 | movzx RB, byte STR:RB[1] 2266 | movzx RB, byte STR:RB[1]
2104 if (sse) { 2267 if (LJ_DUALNUM) {
2268 | jmp ->fff_resi
2269 } else if (sse) {
2105 | cvtsi2sd xmm0, RB; jmp ->fff_resxmm0 2270 | cvtsi2sd xmm0, RB; jmp ->fff_resxmm0
2106 } else { 2271 } else {
2107 | mov TMP1, RB; fild TMP1; jmp ->fff_resn 2272 | mov TMP1, RB; fild TMP1; jmp ->fff_resn
@@ -2110,12 +2275,19 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2110 |.ffunc string_char // Only handle the 1-arg case here. 2275 |.ffunc string_char // Only handle the 1-arg case here.
2111 | ffgccheck 2276 | ffgccheck
2112 | cmp NARGS:RD, 1+1; jne ->fff_fallback // *Exactly* 1 arg. 2277 | cmp NARGS:RD, 1+1; jne ->fff_fallback // *Exactly* 1 arg.
2113 | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback 2278 | cmp dword [BASE+4], LJ_TISNUM
2114 if (sse) { 2279 if (LJ_DUALNUM) {
2280 | jne ->fff_fallback
2281 | mov RB, dword [BASE]
2282 | cmp RB, 255; ja ->fff_fallback
2283 | mov TMP2, RB
2284 } else if (sse) {
2285 | jae ->fff_fallback
2115 | cvttsd2si RB, qword [BASE] 2286 | cvttsd2si RB, qword [BASE]
2116 | cmp RB, 255; ja ->fff_fallback 2287 | cmp RB, 255; ja ->fff_fallback
2117 | mov TMP2, RB 2288 | mov TMP2, RB
2118 } else { 2289 } else {
2290 | jae ->fff_fallback
2119 | fld qword [BASE] 2291 | fld qword [BASE]
2120 | fistp TMP2 2292 | fistp TMP2
2121 | cmp TMP2, 255; ja ->fff_fallback 2293 | cmp TMP2, 255; ja ->fff_fallback
@@ -2151,21 +2323,34 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2151 | mov TMP2, -1 2323 | mov TMP2, -1
2152 | cmp NARGS:RD, 1+2; jb ->fff_fallback 2324 | cmp NARGS:RD, 1+2; jb ->fff_fallback
2153 | jna >1 2325 | jna >1
2154 | cmp dword [BASE+20], LJ_TISNUM; ja ->fff_fallback 2326 | cmp dword [BASE+20], LJ_TISNUM
2155 if (sse) { 2327 if (LJ_DUALNUM) {
2328 | jne ->fff_fallback
2329 | mov RB, dword [BASE+16]
2330 | mov TMP2, RB
2331 } else if (sse) {
2332 | jae ->fff_fallback
2156 | cvttsd2si RB, qword [BASE+16] 2333 | cvttsd2si RB, qword [BASE+16]
2157 | mov TMP2, RB 2334 | mov TMP2, RB
2158 } else { 2335 } else {
2336 | jae ->fff_fallback
2159 | fld qword [BASE+16] 2337 | fld qword [BASE+16]
2160 | fistp TMP2 2338 | fistp TMP2
2161 } 2339 }
2162 |1: 2340 |1:
2163 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback 2341 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2164 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback 2342 | cmp dword [BASE+12], LJ_TISNUM
2343 if (LJ_DUALNUM) {
2344 | jne ->fff_fallback
2345 } else {
2346 | jae ->fff_fallback
2347 }
2165 | mov STR:RB, [BASE] 2348 | mov STR:RB, [BASE]
2166 | mov TMP3, STR:RB 2349 | mov TMP3, STR:RB
2167 | mov RB, STR:RB->len 2350 | mov RB, STR:RB->len
2168 if (sse) { 2351 if (LJ_DUALNUM) {
2352 | mov RA, dword [BASE+8]
2353 } else if (sse) {
2169 | cvttsd2si RA, qword [BASE+8] 2354 | cvttsd2si RA, qword [BASE+8]
2170 } else { 2355 } else {
2171 |.if not X64 2356 |.if not X64
@@ -2219,11 +2404,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2219 |.ffunc_2 string_rep // Only handle the 1-char case inline. 2404 |.ffunc_2 string_rep // Only handle the 1-char case inline.
2220 | ffgccheck 2405 | ffgccheck
2221 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback 2406 | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback
2222 | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback 2407 | cmp dword [BASE+12], LJ_TISNUM
2223 | mov STR:RB, [BASE] 2408 | mov STR:RB, [BASE]
2224 if (sse) { 2409 if (LJ_DUALNUM) {
2410 | jne ->fff_fallback
2411 | mov RC, dword [BASE+8]
2412 } else if (sse) {
2413 | jae ->fff_fallback
2225 | cvttsd2si RC, qword [BASE+8] 2414 | cvttsd2si RC, qword [BASE+8]
2226 } else { 2415 } else {
2416 | jae ->fff_fallback
2227 | fld qword [BASE+8] 2417 | fld qword [BASE+8]
2228 | fistp TMP2 2418 | fistp TMP2
2229 | mov RC, TMP2 2419 | mov RC, TMP2
@@ -2320,7 +2510,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2320 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t) 2510 | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t)
2321 | // Length of table returned in eax (RD). 2511 | // Length of table returned in eax (RD).
2322 | mov BASE, RB // Restore BASE. 2512 | mov BASE, RB // Restore BASE.
2323 if (sse) { 2513 if (LJ_DUALNUM) {
2514 | mov RB, RD; jmp ->fff_resi
2515 } else if (sse) {
2324 | cvtsi2sd xmm0, RD; jmp ->fff_resxmm0 2516 | cvtsi2sd xmm0, RD; jmp ->fff_resxmm0
2325 } else { 2517 } else {
2326 |.if not X64 2518 |.if not X64
@@ -2332,49 +2524,85 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2332 | 2524 |
2333 |.define TOBIT_BIAS, 0x59c00000 // 2^52 + 2^51 (float, not double!). 2525 |.define TOBIT_BIAS, 0x59c00000 // 2^52 + 2^51 (float, not double!).
2334 | 2526 |
2335 if (sse) { 2527 |.macro .ffunc_bit, name, kind
2336 |.ffunc_nsse bit_tobit 2528 | .ffunc name
2337 | sseconst_tobit xmm1, RBa 2529 |.if kind == 2
2338 | addsd xmm0, xmm1 2530 ||if (sse) {
2339 | movd RB, xmm0 2531 | sseconst_tobit xmm1, RBa
2340 | cvtsi2sd xmm0, RB 2532 ||} else {
2341 | jmp ->fff_resxmm0 2533 | mov TMP1, TOBIT_BIAS
2342 } else { 2534 ||}
2343 |.if not X64 2535 |.endif
2344 |.ffunc_n bit_tobit 2536 | cmp dword [BASE+4], LJ_TISNUM
2345 | mov TMP1, TOBIT_BIAS 2537 ||if (LJ_DUALNUM) {
2346 | fadd TMP1 2538 | jne >1
2347 | fstp FPARG1 // 64 bit FP store. 2539 | mov RB, dword [BASE]
2348 | fild ARG1 // 32 bit integer load (s2lfwd ok). 2540 |.if kind > 0
2349 | jmp ->fff_resn 2541 | jmp >2
2350 |.endif 2542 |.else
2351 } 2543 | jmp ->fff_resbit
2352 | 2544 |.endif
2353 |.macro .ffunc_bit, name 2545 |1:
2546 | ja ->fff_fallback
2547 ||} else {
2548 | jae ->fff_fallback
2549 ||}
2354 ||if (sse) { 2550 ||if (sse) {
2355 | .ffunc_nsse name 2551 | movsd xmm0, qword [BASE]
2552 |.if kind < 2
2356 | sseconst_tobit xmm1, RBa 2553 | sseconst_tobit xmm1, RBa
2554 |.endif
2357 | addsd xmm0, xmm1 2555 | addsd xmm0, xmm1
2358 | movd RB, xmm0 2556 | movd RB, xmm0
2359 ||} else { 2557 ||} else {
2360 |.if not X64 2558 |.if not X64
2361 | .ffunc_n name 2559 | fld qword [BASE]
2560 |.if kind < 2
2362 | mov TMP1, TOBIT_BIAS 2561 | mov TMP1, TOBIT_BIAS
2562 |.endif
2363 | fadd TMP1 2563 | fadd TMP1
2364 | fstp FPARG1 2564 | fstp FPARG1
2565 |.if kind > 0
2365 | mov RB, ARG1 2566 | mov RB, ARG1
2366 |.endif 2567 |.endif
2568 |.endif
2367 ||} 2569 ||}
2570 |2:
2368 |.endmacro 2571 |.endmacro
2369 | 2572 |
2573 |.ffunc_bit bit_tobit, 0
2574 if (LJ_DUALNUM || sse) {
2575 if (!sse) {
2576 |.if not X64
2577 | mov RB, ARG1
2578 |.endif
2579 }
2580 | jmp ->fff_resbit
2581 } else {
2582 |.if not X64
2583 | fild ARG1
2584 | jmp ->fff_resn
2585 |.endif
2586 }
2587 |
2370 |.macro .ffunc_bit_op, name, ins 2588 |.macro .ffunc_bit_op, name, ins
2371 | .ffunc_bit name 2589 | .ffunc_bit name, 2
2372 | mov TMP2, NARGS:RD // Save for fallback. 2590 | mov TMP2, NARGS:RD // Save for fallback.
2373 | lea RD, [BASE+NARGS:RD*8-16] 2591 | lea RD, [BASE+NARGS:RD*8-16]
2374 |1: 2592 |1:
2375 | cmp RD, BASE 2593 | cmp RD, BASE
2376 | jbe ->fff_resbit 2594 | jbe ->fff_resbit
2377 | cmp dword [RD+4], LJ_TISNUM; ja ->fff_fallback_bit_op 2595 | cmp dword [RD+4], LJ_TISNUM
2596 ||if (LJ_DUALNUM) {
2597 | jne >2
2598 | ins RB, dword [RD]
2599 | sub RD, 8
2600 | jmp <1
2601 |2:
2602 | ja ->fff_fallback_bit_op
2603 ||} else {
2604 | jae ->fff_fallback_bit_op
2605 ||}
2378 ||if (sse) { 2606 ||if (sse) {
2379 | movsd xmm0, qword [RD] 2607 | movsd xmm0, qword [RD]
2380 | addsd xmm0, xmm1 2608 | addsd xmm0, xmm1
@@ -2396,13 +2624,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2396 |.ffunc_bit_op bit_bor, or 2624 |.ffunc_bit_op bit_bor, or
2397 |.ffunc_bit_op bit_bxor, xor 2625 |.ffunc_bit_op bit_bxor, xor
2398 | 2626 |
2399 |.ffunc_bit bit_bswap 2627 |.ffunc_bit bit_bswap, 1
2400 | bswap RB 2628 | bswap RB
2401 | jmp ->fff_resbit 2629 | jmp ->fff_resbit
2402 | 2630 |
2403 |.ffunc_bit bit_bnot 2631 |.ffunc_bit bit_bnot, 1
2404 | not RB 2632 | not RB
2405 if (sse) { 2633 if (LJ_DUALNUM) {
2634 | jmp ->fff_resbit
2635 } else if (sse) {
2406 |->fff_resbit: 2636 |->fff_resbit:
2407 | cvtsi2sd xmm0, RB 2637 | cvtsi2sd xmm0, RB
2408 | jmp ->fff_resxmm0 2638 | jmp ->fff_resxmm0
@@ -2420,12 +2650,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2420 | jmp ->fff_fallback 2650 | jmp ->fff_fallback
2421 | 2651 |
2422 |.macro .ffunc_bit_sh, name, ins 2652 |.macro .ffunc_bit_sh, name, ins
2423 ||if (sse) { 2653 ||if (LJ_DUALNUM) {
2654 | .ffunc_bit name, 1
2655 | // Note: no inline conversion from number for 2nd argument!
2656 | cmp dword [BASE+12], LJ_TISNUM; jne ->fff_fallback
2657 | mov RA, dword [BASE+8]
2658 ||} else if (sse) {
2424 | .ffunc_nnsse name 2659 | .ffunc_nnsse name
2425 | sseconst_tobit xmm2, RBa 2660 | sseconst_tobit xmm2, RBa
2426 | addsd xmm0, xmm2 2661 | addsd xmm0, xmm2
2427 | addsd xmm1, xmm2 2662 | addsd xmm1, xmm2
2428 | mov RC, RA // Assumes RA is ecx.
2429 | movd RB, xmm0 2663 | movd RB, xmm0
2430 | movd RA, xmm1 2664 | movd RA, xmm1
2431 ||} else { 2665 ||} else {
@@ -2436,13 +2670,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2436 | fstp FPARG3 2670 | fstp FPARG3
2437 | fadd TMP1 2671 | fadd TMP1
2438 | fstp FPARG1 2672 | fstp FPARG1
2439 | mov RC, RA // Assumes RA is ecx.
2440 | mov RA, ARG3 2673 | mov RA, ARG3
2441 | mov RB, ARG1 2674 | mov RB, ARG1
2442 |.endif 2675 |.endif
2443 ||} 2676 ||}
2444 | ins RB, cl 2677 | ins RB, cl // Assumes RA is ecx.
2445 | mov RA, RC
2446 | jmp ->fff_resbit 2678 | jmp ->fff_resbit
2447 |.endmacro 2679 |.endmacro
2448 | 2680 |
@@ -3073,7 +3305,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
3073 | ret 3305 | ret
3074 |6: 3306 |6:
3075 | je <5 // x^1 ==> x 3307 | je <5 // x^1 ==> x
3076 | jb >7 3308 | jb >7 // x^0 ==> 1
3077 | neg eax 3309 | neg eax
3078 | call <1 3310 | call <1
3079 | sseconst_1 xmm1, RDa 3311 | sseconst_1 xmm1, RDa
@@ -3536,43 +3768,100 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3536 3768
3537 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 3769 /* Remember: all ops branch for a true comparison, fall through otherwise. */
3538 3770
3771 |.macro jmp_comp, lt, ge, le, gt, target
3772 ||switch (op) {
3773 ||case BC_ISLT:
3774 | lt target
3775 ||break;
3776 ||case BC_ISGE:
3777 | ge target
3778 ||break;
3779 ||case BC_ISLE:
3780 | le target
3781 ||break;
3782 ||case BC_ISGT:
3783 | gt target
3784 ||break;
3785 ||default: break; /* Shut up GCC. */
3786 ||}
3787 |.endmacro
3788
3539 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 3789 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
3540 | // RA = src1, RD = src2, JMP with RD = target 3790 | // RA = src1, RD = src2, JMP with RD = target
3541 | ins_AD 3791 | ins_AD
3542 | checknum RA, ->vmeta_comp 3792 if (LJ_DUALNUM) {
3543 | checknum RD, ->vmeta_comp 3793 | checkint RA, >7
3794 | checkint RD, >8
3795 | mov RB, dword [BASE+RA*8]
3796 | add PC, 4
3797 | cmp RB, dword [BASE+RD*8]
3798 | jmp_comp jge, jl, jg, jle, >9
3799 |6:
3800 | movzx RD, PC_RD
3801 | branchPC RD
3802 |9:
3803 | ins_next
3804 |
3805 |7: // RA is not an integer.
3806 | ja ->vmeta_comp
3807 | // RA is a number.
3808 | cmp dword [BASE+RD*8+4], LJ_TISNUM; jb >1; jne ->vmeta_comp
3809 | // RA is a number, RD is an integer.
3810 if (sse) {
3811 | cvtsi2sd xmm0, dword [BASE+RD*8]
3812 | jmp >2
3813 } else {
3814 | fld qword [BASE+RA*8]
3815 | fild dword [BASE+RD*8]
3816 | jmp >3
3817 }
3818 |
3819 |8: // RA is an integer, RD is not an integer.
3820 | ja ->vmeta_comp
3821 | // RA is an integer, RD is a number.
3822 if (sse) {
3823 | cvtsi2sd xmm1, dword [BASE+RA*8]
3824 | movsd xmm0, qword [BASE+RD*8]
3825 | add PC, 4
3826 | ucomisd xmm0, xmm1
3827 | jmp_comp jbe, ja, jb, jae, <9
3828 | jmp <6
3829 } else {
3830 | fild dword [BASE+RA*8]
3831 | jmp >2
3832 }
3833 } else {
3834 | checknum RA, ->vmeta_comp
3835 | checknum RD, ->vmeta_comp
3836 }
3544 if (sse) { 3837 if (sse) {
3838 |1:
3545 | movsd xmm0, qword [BASE+RD*8] 3839 | movsd xmm0, qword [BASE+RD*8]
3840 |2:
3546 | add PC, 4 3841 | add PC, 4
3547 | ucomisd xmm0, qword [BASE+RA*8] 3842 | ucomisd xmm0, qword [BASE+RA*8]
3843 |3:
3548 } else { 3844 } else {
3845 |1:
3549 | fld qword [BASE+RA*8] // Reverse order, i.e like cmp D, A. 3846 | fld qword [BASE+RA*8] // Reverse order, i.e like cmp D, A.
3847 |2:
3550 | fld qword [BASE+RD*8] 3848 | fld qword [BASE+RD*8]
3849 |3:
3551 | add PC, 4 3850 | add PC, 4
3552 | fcomparepp // eax (RD) modified! 3851 | fcomparepp // eax (RD) modified!
3553 } 3852 }
3554 | // Unordered: all of ZF CF PF set, ordered: PF clear. 3853 | // Unordered: all of ZF CF PF set, ordered: PF clear.
3555 | // To preserve NaN semantics GE/GT branch on unordered, but LT/LE don't. 3854 | // To preserve NaN semantics GE/GT branch on unordered, but LT/LE don't.
3556 switch (op) { 3855 if (LJ_DUALNUM) {
3557 case BC_ISLT: 3856 | jmp_comp jbe, ja, jb, jae, <9
3558 | jbe >2 3857 | jmp <6
3559 break; 3858 } else {
3560 case BC_ISGE: 3859 | jmp_comp jbe, ja, jb, jae, >1
3561 | ja >2 3860 | movzx RD, PC_RD
3562 break; 3861 | branchPC RD
3563 case BC_ISLE: 3862 |1:
3564 | jb >2 3863 | ins_next
3565 break;
3566 case BC_ISGT:
3567 | jae >2
3568 break;
3569 default: break; /* Shut up GCC. */
3570 } 3864 }
3571 |1:
3572 | movzx RD, PC_RD
3573 | branchPC RD
3574 |2:
3575 | ins_next
3576 break; 3865 break;
3577 3866
3578 case BC_ISEQV: case BC_ISNEV: 3867 case BC_ISEQV: case BC_ISNEV:
@@ -3580,14 +3869,61 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3580 | ins_AD // RA = src1, RD = src2, JMP with RD = target 3869 | ins_AD // RA = src1, RD = src2, JMP with RD = target
3581 | mov RB, [BASE+RD*8+4] 3870 | mov RB, [BASE+RD*8+4]
3582 | add PC, 4 3871 | add PC, 4
3583 | cmp RB, LJ_TISNUM; ja >5 3872 if (LJ_DUALNUM) {
3584 | checknum RA, >5 3873 | cmp RB, LJ_TISNUM; jne >7
3874 | checkint RA, >8
3875 | mov RB, dword [BASE+RD*8]
3876 | cmp RB, dword [BASE+RA*8]
3877 if (vk) {
3878 | jne >9
3879 } else {
3880 | je >9
3881 }
3882 | movzx RD, PC_RD
3883 | branchPC RD
3884 |9:
3885 | ins_next
3886 |
3887 |7: // RD is not an integer.
3888 | ja >5
3889 | // RD is a number.
3890 | cmp dword [BASE+RA*8+4], LJ_TISNUM; jb >1; jne >5
3891 | // RD is a number, RA is an integer.
3892 if (sse) {
3893 | cvtsi2sd xmm0, dword [BASE+RA*8]
3894 } else {
3895 | fild dword [BASE+RA*8]
3896 }
3897 | jmp >2
3898 |
3899 |8: // RD is an integer, RA is not an integer.
3900 | ja >5
3901 | // RD is an integer, RA is a number.
3902 if (sse) {
3903 | cvtsi2sd xmm0, dword [BASE+RD*8]
3904 | ucomisd xmm0, qword [BASE+RA*8]
3905 } else {
3906 | fild dword [BASE+RD*8]
3907 | fld qword [BASE+RA*8]
3908 }
3909 | jmp >4
3910 |
3911 } else {
3912 | cmp RB, LJ_TISNUM; jae >5
3913 | checknum RA, >5
3914 }
3585 if (sse) { 3915 if (sse) {
3586 | movsd xmm0, qword [BASE+RD*8] 3916 |1:
3587 | ucomisd xmm0, qword [BASE+RA*8] 3917 | movsd xmm0, qword [BASE+RA*8]
3918 |2:
3919 | ucomisd xmm0, qword [BASE+RD*8]
3920 |4:
3588 } else { 3921 } else {
3922 |1:
3589 | fld qword [BASE+RA*8] 3923 | fld qword [BASE+RA*8]
3924 |2:
3590 | fld qword [BASE+RD*8] 3925 | fld qword [BASE+RD*8]
3926 |4:
3591 | fcomparepp // eax (RD) modified! 3927 | fcomparepp // eax (RD) modified!
3592 } 3928 }
3593 iseqne_fp: 3929 iseqne_fp:
@@ -3616,7 +3952,12 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3616 | branchPC RD 3952 | branchPC RD
3617 |1: // EQ: Fallthrough to next instruction. 3953 |1: // EQ: Fallthrough to next instruction.
3618 } 3954 }
3619 | ins_next 3955 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
3956 op == BC_ISEQN || op == BC_ISNEN)) {
3957 | jmp <9
3958 } else {
3959 | ins_next
3960 }
3620 | 3961 |
3621 if (op == BC_ISEQV || op == BC_ISNEV) { 3962 if (op == BC_ISEQV || op == BC_ISNEV) {
3622 |5: // Either or both types are not numbers. 3963 |5: // Either or both types are not numbers.
@@ -3652,7 +3993,12 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3652 | jmp ->vmeta_equal // Handle __eq metamethod. 3993 | jmp ->vmeta_equal // Handle __eq metamethod.
3653 } else if (LJ_HASFFI) { 3994 } else if (LJ_HASFFI) {
3654 |3: 3995 |3:
3655 | cmp RB, LJ_TCDATA; jne <2 3996 | cmp RB, LJ_TCDATA
3997 if (LJ_DUALNUM && vk) {
3998 | jne <9
3999 } else {
4000 | jne <2
4001 }
3656 | jmp ->vmeta_equal_cd 4002 | jmp ->vmeta_equal_cd
3657 } 4003 }
3658 break; 4004 break;
@@ -3676,14 +4022,59 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3676 | ins_AD // RA = src, RD = num const, JMP with RD = target 4022 | ins_AD // RA = src, RD = num const, JMP with RD = target
3677 | mov RB, [BASE+RA*8+4] 4023 | mov RB, [BASE+RA*8+4]
3678 | add PC, 4 4024 | add PC, 4
3679 | cmp RB, LJ_TISNUM; ja >3 4025 if (LJ_DUALNUM) {
4026 | cmp RB, LJ_TISNUM; jne >7
4027 | cmp dword [KBASE+RD*8+4], LJ_TISNUM; jne >8
4028 | mov RB, dword [KBASE+RD*8]
4029 | cmp RB, dword [BASE+RA*8]
4030 if (vk) {
4031 | jne >9
4032 } else {
4033 | je >9
4034 }
4035 | movzx RD, PC_RD
4036 | branchPC RD
4037 |9:
4038 | ins_next
4039 |
4040 |7: // RA is not an integer.
4041 | ja >3
4042 | // RA is a number.
4043 | cmp dword [KBASE+RD*8+4], LJ_TISNUM; jb >1
4044 | // RA is a number, RD is an integer.
4045 if (sse) {
4046 | cvtsi2sd xmm0, dword [KBASE+RD*8]
4047 } else {
4048 | fild dword [KBASE+RD*8]
4049 }
4050 | jmp >2
4051 |
4052 |8: // RA is an integer, RD is a number.
4053 if (sse) {
4054 | cvtsi2sd xmm0, dword [BASE+RA*8]
4055 | ucomisd xmm0, qword [KBASE+RD*8]
4056 } else {
4057 | fild dword [BASE+RA*8]
4058 | fld qword [BASE+RD*8]
4059 }
4060 | jmp >4
4061 |
4062 } else {
4063 | cmp RB, LJ_TISNUM; jae >3
4064 }
3680 if (sse) { 4065 if (sse) {
4066 |1:
3681 | movsd xmm0, qword [KBASE+RD*8] 4067 | movsd xmm0, qword [KBASE+RD*8]
4068 |2:
3682 | ucomisd xmm0, qword [BASE+RA*8] 4069 | ucomisd xmm0, qword [BASE+RA*8]
4070 |4:
3683 } else { 4071 } else {
3684 | fld qword [BASE+RA*8] 4072 |1:
3685 | fld qword [KBASE+RD*8] 4073 | fld qword [KBASE+RD*8]
4074 |2:
4075 | fld qword [BASE+RA*8]
3686 | fcomparepp // eax (RD) modified! 4076 | fcomparepp // eax (RD) modified!
4077 |4:
3687 } 4078 }
3688 goto iseqne_fp; 4079 goto iseqne_fp;
3689 case BC_ISEQP: case BC_ISNEP: 4080 case BC_ISEQP: case BC_ISNEP:
@@ -3760,7 +4151,24 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3760 break; 4151 break;
3761 case BC_UNM: 4152 case BC_UNM:
3762 | ins_AD // RA = dst, RD = src 4153 | ins_AD // RA = dst, RD = src
3763 | checknum RD, ->vmeta_unm 4154 if (LJ_DUALNUM) {
4155 | checkint RD, >5
4156 | mov RB, [BASE+RD*8]
4157 | neg RB
4158 | jo >4
4159 | mov dword [BASE+RA*8+4], LJ_TISNUM
4160 | mov dword [BASE+RA*8], RB
4161 |9:
4162 | ins_next
4163 |4:
4164 | mov dword [BASE+RA*8+4], 0x41e00000 // 2^31.
4165 | mov dword [BASE+RA*8], 0
4166 | jmp <9
4167 |5:
4168 | ja ->vmeta_unm
4169 } else {
4170 | checknum RD, ->vmeta_unm
4171 }
3764 if (sse) { 4172 if (sse) {
3765 | movsd xmm0, qword [BASE+RD*8] 4173 | movsd xmm0, qword [BASE+RD*8]
3766 | sseconst_sign xmm1, RDa 4174 | sseconst_sign xmm1, RDa
@@ -3771,13 +4179,22 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3771 | fchs 4179 | fchs
3772 | fstp qword [BASE+RA*8] 4180 | fstp qword [BASE+RA*8]
3773 } 4181 }
3774 | ins_next 4182 if (LJ_DUALNUM) {
4183 | jmp <9
4184 } else {
4185 | ins_next
4186 }
3775 break; 4187 break;
3776 case BC_LEN: 4188 case BC_LEN:
3777 | ins_AD // RA = dst, RD = src 4189 | ins_AD // RA = dst, RD = src
3778 | checkstr RD, >2 4190 | checkstr RD, >2
3779 | mov STR:RD, [BASE+RD*8] 4191 | mov STR:RD, [BASE+RD*8]
3780 if (sse) { 4192 if (LJ_DUALNUM) {
4193 | mov RD, dword STR:RD->len
4194 |1:
4195 | mov dword [BASE+RA*8+4], LJ_TISNUM
4196 | mov dword [BASE+RA*8], RD
4197 } else if (sse) {
3781 | xorps xmm0, xmm0 4198 | xorps xmm0, xmm0
3782 | cvtsi2sd xmm0, dword STR:RD->len 4199 | cvtsi2sd xmm0, dword STR:RD->len
3783 |1: 4200 |1:
@@ -3793,45 +4210,52 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3793 | mov TAB:FCARG1, [BASE+RD*8] 4210 | mov TAB:FCARG1, [BASE+RD*8]
3794 | mov RB, BASE // Save BASE. 4211 | mov RB, BASE // Save BASE.
3795 | call extern lj_tab_len@4 // (GCtab *t) 4212 | call extern lj_tab_len@4 // (GCtab *t)
3796 | // Length of table returned in eax (RC). 4213 | // Length of table returned in eax (RD).
3797 if (sse) { 4214 if (LJ_DUALNUM) {
3798 | cvtsi2sd xmm0, RC 4215 | // Nothing to do.
3799 | mov BASE, RB // Restore BASE. 4216 } else if (sse) {
4217 | cvtsi2sd xmm0, RD
3800 } else { 4218 } else {
3801 |.if not X64 4219 |.if not X64
3802 | mov ARG1, RC 4220 | mov ARG1, RD
3803 | mov BASE, RB // Restore BASE.
3804 | fild ARG1 4221 | fild ARG1
3805 |.endif 4222 |.endif
3806 } 4223 }
4224 | mov BASE, RB // Restore BASE.
3807 | movzx RA, PC_RA 4225 | movzx RA, PC_RA
3808 | jmp <1 4226 | jmp <1
3809 break; 4227 break;
3810 4228
3811 /* -- Binary ops -------------------------------------------------------- */ 4229 /* -- Binary ops -------------------------------------------------------- */
3812 4230
3813 |.macro ins_arithpre, ins, sseins, ssereg 4231 |.macro ins_arithpre, x87ins, sseins, ssereg
3814 | ins_ABC 4232 | ins_ABC
3815 ||vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 4233 ||vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
3816 ||switch (vk) { 4234 ||switch (vk) {
3817 ||case 0: 4235 ||case 0:
3818 | checknum RB, ->vmeta_arith_vn 4236 | checknum RB, ->vmeta_arith_vn
4237 ||if (LJ_DUALNUM) {
4238 | cmp dword [KBASE+RC*8+4], LJ_TISNUM; jae ->vmeta_arith_vn
4239 ||}
3819 ||if (sse) { 4240 ||if (sse) {
3820 | movsd xmm0, qword [BASE+RB*8] 4241 | movsd xmm0, qword [BASE+RB*8]
3821 | sseins ssereg, qword [KBASE+RC*8] 4242 | sseins ssereg, qword [KBASE+RC*8]
3822 ||} else { 4243 ||} else {
3823 | fld qword [BASE+RB*8] 4244 | fld qword [BASE+RB*8]
3824 | ins qword [KBASE+RC*8] 4245 | x87ins qword [KBASE+RC*8]
3825 ||} 4246 ||}
3826 || break; 4247 || break;
3827 ||case 1: 4248 ||case 1:
3828 | checknum RB, ->vmeta_arith_nv 4249 | checknum RB, ->vmeta_arith_nv
4250 ||if (LJ_DUALNUM) {
4251 | cmp dword [KBASE+RC*8+4], LJ_TISNUM; jae ->vmeta_arith_nv
4252 ||}
3829 ||if (sse) { 4253 ||if (sse) {
3830 | movsd xmm0, qword [KBASE+RC*8] 4254 | movsd xmm0, qword [KBASE+RC*8]
3831 | sseins ssereg, qword [BASE+RB*8] 4255 | sseins ssereg, qword [BASE+RB*8]
3832 ||} else { 4256 ||} else {
3833 | fld qword [KBASE+RC*8] 4257 | fld qword [KBASE+RC*8]
3834 | ins qword [BASE+RB*8] 4258 | x87ins qword [BASE+RB*8]
3835 ||} 4259 ||}
3836 || break; 4260 || break;
3837 ||default: 4261 ||default:
@@ -3842,12 +4266,44 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3842 | sseins ssereg, qword [BASE+RC*8] 4266 | sseins ssereg, qword [BASE+RC*8]
3843 ||} else { 4267 ||} else {
3844 | fld qword [BASE+RB*8] 4268 | fld qword [BASE+RB*8]
3845 | ins qword [BASE+RC*8] 4269 | x87ins qword [BASE+RC*8]
3846 ||} 4270 ||}
3847 || break; 4271 || break;
3848 ||} 4272 ||}
3849 |.endmacro 4273 |.endmacro
3850 | 4274 |
4275 |.macro ins_arithdn, intins
4276 | ins_ABC
4277 ||vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
4278 ||switch (vk) {
4279 ||case 0:
4280 | checkint RB, ->vmeta_arith_vn
4281 | cmp dword [KBASE+RC*8+4], LJ_TISNUM; jne ->vmeta_arith_vn
4282 | mov RB, [BASE+RB*8]
4283 | intins RB, [KBASE+RC*8]; jo ->vmeta_arith_vno
4284 || break;
4285 ||case 1:
4286 | checkint RB, ->vmeta_arith_nv
4287 | cmp dword [KBASE+RC*8+4], LJ_TISNUM; jne ->vmeta_arith_nv
4288 | mov RC, [KBASE+RC*8]
4289 | intins RC, [BASE+RB*8]; jo ->vmeta_arith_nvo
4290 || break;
4291 ||default:
4292 | checkint RB, ->vmeta_arith_vv
4293 | checkint RC, ->vmeta_arith_vv
4294 | mov RB, [BASE+RB*8]
4295 | intins RB, [BASE+RC*8]; jo ->vmeta_arith_vvo
4296 || break;
4297 ||}
4298 | mov dword [BASE+RA*8+4], LJ_TISNUM
4299 ||if (vk == 1) {
4300 | mov dword [BASE+RA*8], RC
4301 ||} else {
4302 | mov dword [BASE+RA*8], RB
4303 ||}
4304 | ins_next
4305 |.endmacro
4306 |
3851 |.macro ins_arithpost 4307 |.macro ins_arithpost
3852 ||if (sse) { 4308 ||if (sse) {
3853 | movsd qword [BASE+RA*8], xmm0 4309 | movsd qword [BASE+RA*8], xmm0
@@ -3856,21 +4312,29 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3856 ||} 4312 ||}
3857 |.endmacro 4313 |.endmacro
3858 | 4314 |
3859 |.macro ins_arith, ins, sseins 4315 |.macro ins_arith, x87ins, sseins
3860 | ins_arithpre ins, sseins, xmm0 4316 | ins_arithpre x87ins, sseins, xmm0
3861 | ins_arithpost 4317 | ins_arithpost
3862 | ins_next 4318 | ins_next
3863 |.endmacro 4319 |.endmacro
4320 |
4321 |.macro ins_arith, intins, x87ins, sseins
4322 ||if (LJ_DUALNUM) {
4323 | ins_arithdn intins
4324 ||} else {
4325 | ins_arith, x87ins, sseins
4326 ||}
4327 |.endmacro
3864 4328
3865 | // RA = dst, RB = src1 or num const, RC = src2 or num const 4329 | // RA = dst, RB = src1 or num const, RC = src2 or num const
3866 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 4330 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
3867 | ins_arith fadd, addsd 4331 | ins_arith add, fadd, addsd
3868 break; 4332 break;
3869 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 4333 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
3870 | ins_arith fsub, subsd 4334 | ins_arith sub, fsub, subsd
3871 break; 4335 break;
3872 case BC_MULVN: case BC_MULNV: case BC_MULVV: 4336 case BC_MULVN: case BC_MULNV: case BC_MULVV:
3873 | ins_arith fmul, mulsd 4337 | ins_arith imul, fmul, mulsd
3874 break; 4338 break;
3875 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 4339 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
3876 | ins_arith fdiv, divsd 4340 | ins_arith fdiv, divsd
@@ -3953,7 +4417,11 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3953 break; 4417 break;
3954 case BC_KSHORT: 4418 case BC_KSHORT:
3955 | ins_AD // RA = dst, RD = signed int16 literal 4419 | ins_AD // RA = dst, RD = signed int16 literal
3956 if (sse) { 4420 if (LJ_DUALNUM) {
4421 | movsx RD, RDW
4422 | mov dword [BASE+RA*8+4], LJ_TISNUM
4423 | mov dword [BASE+RA*8], RD
4424 } else if (sse) {
3957 | movsx RD, RDW // Sign-extend literal. 4425 | movsx RD, RDW // Sign-extend literal.
3958 | cvtsi2sd xmm0, RD 4426 | cvtsi2sd xmm0, RD
3959 | movsd qword [BASE+RA*8], xmm0 4427 | movsd qword [BASE+RA*8], xmm0
@@ -4236,23 +4704,29 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4236 | checktab RB, ->vmeta_tgetv 4704 | checktab RB, ->vmeta_tgetv
4237 | mov TAB:RB, [BASE+RB*8] 4705 | mov TAB:RB, [BASE+RB*8]
4238 | 4706 |
4239 | // Integer key? Convert number to int and back and compare. 4707 | // Integer key?
4240 | checknum RC, >5 4708 if (LJ_DUALNUM) {
4241 if (sse) { 4709 | checkint RC, >5
4242 | movsd xmm0, qword [BASE+RC*8] 4710 | mov RC, dword [BASE+RC*8]
4243 | cvtsd2si RC, xmm0
4244 | cvtsi2sd xmm1, RC
4245 | ucomisd xmm0, xmm1
4246 } else { 4711 } else {
4247 |.if not X64 4712 | // Convert number to int and back and compare.
4248 | fld qword [BASE+RC*8] 4713 | checknum RC, >5
4249 | fist ARG1 4714 if (sse) {
4250 | fild ARG1 4715 | movsd xmm0, qword [BASE+RC*8]
4251 | fcomparepp // eax (RC) modified! 4716 | cvtsd2si RC, xmm0
4252 | mov RC, ARG1 4717 | cvtsi2sd xmm1, RC
4253 |.endif 4718 | ucomisd xmm0, xmm1
4719 } else {
4720 |.if not X64
4721 | fld qword [BASE+RC*8]
4722 | fist ARG1
4723 | fild ARG1
4724 | fcomparepp // eax (RC) modified!
4725 | mov RC, ARG1
4726 |.endif
4727 }
4728 | jne ->vmeta_tgetv // Generic numeric key? Use fallback.
4254 } 4729 }
4255 | jne ->vmeta_tgetv // Generic numeric key? Use fallback.
4256 | cmp RC, TAB:RB->asize // Takes care of unordered, too. 4730 | cmp RC, TAB:RB->asize // Takes care of unordered, too.
4257 | jae ->vmeta_tgetv // Not in array part? Use fallback. 4731 | jae ->vmeta_tgetv // Not in array part? Use fallback.
4258 | shl RC, 3 4732 | shl RC, 3
@@ -4380,23 +4854,29 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4380 | checktab RB, ->vmeta_tsetv 4854 | checktab RB, ->vmeta_tsetv
4381 | mov TAB:RB, [BASE+RB*8] 4855 | mov TAB:RB, [BASE+RB*8]
4382 | 4856 |
4383 | // Integer key? Convert number to int and back and compare. 4857 | // Integer key?
4384 | checknum RC, >5 4858 if (LJ_DUALNUM) {
4385 if (sse) { 4859 | checkint RC, >5
4386 | movsd xmm0, qword [BASE+RC*8] 4860 | mov RC, dword [BASE+RC*8]
4387 | cvtsd2si RC, xmm0
4388 | cvtsi2sd xmm1, RC
4389 | ucomisd xmm0, xmm1
4390 } else { 4861 } else {
4391 |.if not X64 4862 | // Convert number to int and back and compare.
4392 | fld qword [BASE+RC*8] 4863 | checknum RC, >5
4393 | fist ARG1 4864 if (sse) {
4394 | fild ARG1 4865 | movsd xmm0, qword [BASE+RC*8]
4395 | fcomparepp // eax (RC) modified! 4866 | cvtsd2si RC, xmm0
4396 | mov RC, ARG1 4867 | cvtsi2sd xmm1, RC
4397 |.endif 4868 | ucomisd xmm0, xmm1
4869 } else {
4870 |.if not X64
4871 | fld qword [BASE+RC*8]
4872 | fist ARG1
4873 | fild ARG1
4874 | fcomparepp // eax (RC) modified!
4875 | mov RC, ARG1
4876 |.endif
4877 }
4878 | jne ->vmeta_tsetv // Generic numeric key? Use fallback.
4398 } 4879 }
4399 | jne ->vmeta_tsetv // Generic numeric key? Use fallback.
4400 | cmp RC, TAB:RB->asize // Takes care of unordered, too. 4880 | cmp RC, TAB:RB->asize // Takes care of unordered, too.
4401 | jae ->vmeta_tsetv 4881 | jae ->vmeta_tsetv
4402 | shl RC, 3 4882 | shl RC, 3
@@ -4755,7 +5235,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4755 |1: // Traverse array part. 5235 |1: // Traverse array part.
4756 | cmp RC, DISPATCH; jae >5 // Index points after array part? 5236 | cmp RC, DISPATCH; jae >5 // Index points after array part?
4757 | cmp dword [KBASE+RC*8+4], LJ_TNIL; je >4 5237 | cmp dword [KBASE+RC*8+4], LJ_TNIL; je >4
4758 if (sse) { 5238 if (LJ_DUALNUM) {
5239 | mov dword [BASE+RA*8+4], LJ_TISNUM
5240 | mov dword [BASE+RA*8], RC
5241 } else if (sse) {
4759 | cvtsi2sd xmm0, RC 5242 | cvtsi2sd xmm0, RC
4760 } else { 5243 } else {
4761 | fild dword [BASE+RA*8-8] 5244 | fild dword [BASE+RA*8-8]
@@ -4772,7 +5255,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4772 |.endif 5255 |.endif
4773 | add RC, 1 5256 | add RC, 1
4774 | // Return array index as a numeric key. 5257 | // Return array index as a numeric key.
4775 if (sse) { 5258 if (LJ_DUALNUM) {
5259 | // See above.
5260 } else if (sse) {
4776 | movsd qword [BASE+RA*8], xmm0 5261 | movsd qword [BASE+RA*8], xmm0
4777 } else { 5262 } else {
4778 | fstp qword [BASE+RA*8] 5263 | fstp qword [BASE+RA*8]
@@ -4788,7 +5273,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4788 | 5273 |
4789 |4: // Skip holes in array part. 5274 |4: // Skip holes in array part.
4790 | add RC, 1 5275 | add RC, 1
4791 if (!sse) { 5276 if (!LJ_DUALNUM && !sse) {
4792 | mov [BASE+RA*8-8], RC 5277 | mov [BASE+RA*8-8], RC
4793 } 5278 }
4794 | jmp <1 5279 | jmp <1
@@ -5020,10 +5505,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
5020 5505
5021 /* -- Loops and branches ------------------------------------------------ */ 5506 /* -- Loops and branches ------------------------------------------------ */
5022 5507
5023 |.define FOR_IDX, qword [RA]; .define FOR_TIDX, dword [RA+4] 5508 |.define FOR_IDX, [RA]; .define FOR_TIDX, dword [RA+4]
5024 |.define FOR_STOP, qword [RA+8]; .define FOR_TSTOP, dword [RA+12] 5509 |.define FOR_STOP, [RA+8]; .define FOR_TSTOP, dword [RA+12]
5025 |.define FOR_STEP, qword [RA+16]; .define FOR_TSTEP, dword [RA+20] 5510 |.define FOR_STEP, [RA+16]; .define FOR_TSTEP, dword [RA+20]
5026 |.define FOR_EXT, qword [RA+24]; .define FOR_TEXT, dword [RA+28] 5511 |.define FOR_EXT, [RA+24]; .define FOR_TEXT, dword [RA+28]
5027 5512
5028 case BC_FORL: 5513 case BC_FORL:
5029#if LJ_HASJIT 5514#if LJ_HASJIT
@@ -5042,37 +5527,101 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
5042 vk = (op == BC_IFORL || op == BC_JFORL); 5527 vk = (op == BC_IFORL || op == BC_JFORL);
5043 | ins_AJ // RA = base, RD = target (after end of loop or start of loop) 5528 | ins_AJ // RA = base, RD = target (after end of loop or start of loop)
5044 | lea RA, [BASE+RA*8] 5529 | lea RA, [BASE+RA*8]
5530 if (LJ_DUALNUM) {
5531 | cmp FOR_TIDX, LJ_TISNUM; jne >9
5532 if (!vk) {
5533 | cmp FOR_TSTOP, LJ_TISNUM; jne ->vmeta_for
5534 | cmp FOR_TSTEP, LJ_TISNUM; jne ->vmeta_for
5535 | mov RB, dword FOR_IDX
5536 | cmp dword FOR_STEP, 0; jl >5
5537 } else {
5538 | mov RB, dword FOR_STEP
5539 | test RB, RB; js >5
5540 | add RB, dword FOR_IDX; jo >1
5541 | mov dword FOR_IDX, RB
5542 }
5543 | cmp RB, dword FOR_STOP
5544 | mov FOR_TEXT, LJ_TISNUM
5545 | mov dword FOR_EXT, RB
5546 if (op == BC_FORI) {
5547 | jle >7
5548 |1:
5549 |6:
5550 | branchPC RD
5551 } else if (op == BC_JFORI) {
5552 | branchPC RD
5553 | movzx RD, PC_RD
5554 | jle =>BC_JLOOP
5555 |1:
5556 |6:
5557 } else if (op == BC_IFORL) {
5558 | jg >7
5559 |6:
5560 | branchPC RD
5561 |1:
5562 } else {
5563 | jle =>BC_JLOOP
5564 |1:
5565 |6:
5566 }
5567 |7:
5568 | ins_next
5569 |
5570 |5: // Invert check for negative step.
5571 if (vk) {
5572 | add RB, dword FOR_IDX; jo <1
5573 | mov dword FOR_IDX, RB
5574 }
5575 | cmp RB, dword FOR_STOP
5576 | mov FOR_TEXT, LJ_TISNUM
5577 | mov dword FOR_EXT, RB
5578 if (op == BC_FORI) {
5579 | jge <7
5580 } else if (op == BC_JFORI) {
5581 | branchPC RD
5582 | movzx RD, PC_RD
5583 | jge =>BC_JLOOP
5584 } else if (op == BC_IFORL) {
5585 | jl <7
5586 } else {
5587 | jge =>BC_JLOOP
5588 }
5589 | jmp <6
5590 |9: // Fallback to FP variant.
5591 } else if (!vk) {
5592 | cmp FOR_TIDX, LJ_TISNUM
5593 }
5045 if (!vk) { 5594 if (!vk) {
5046 | cmp FOR_TIDX, LJ_TISNUM; ja ->vmeta_for // Type checks 5595 | jae ->vmeta_for
5047 | cmp FOR_TSTOP, LJ_TISNUM; ja ->vmeta_for 5596 | cmp FOR_TSTOP, LJ_TISNUM; jae ->vmeta_for
5048 } 5597 }
5049 | mov RB, FOR_TSTEP // Load type/hiword of for step. 5598 | mov RB, FOR_TSTEP // Load type/hiword of for step.
5050 if (!vk) { 5599 if (!vk) {
5051 | cmp RB, LJ_TISNUM; ja ->vmeta_for 5600 | cmp RB, LJ_TISNUM; jae ->vmeta_for
5052 } 5601 }
5053 if (sse) { 5602 if (sse) {
5054 | movsd xmm0, FOR_IDX 5603 | movsd xmm0, qword FOR_IDX
5055 | movsd xmm1, FOR_STOP 5604 | movsd xmm1, qword FOR_STOP
5056 if (vk) { 5605 if (vk) {
5057 | addsd xmm0, FOR_STEP 5606 | addsd xmm0, qword FOR_STEP
5058 | movsd FOR_IDX, xmm0 5607 | movsd qword FOR_IDX, xmm0
5059 | test RB, RB; js >3 5608 | test RB, RB; js >3
5060 } else { 5609 } else {
5061 | jl >3 5610 | jl >3
5062 } 5611 }
5063 | ucomisd xmm1, xmm0 5612 | ucomisd xmm1, xmm0
5064 |1: 5613 |1:
5065 | movsd FOR_EXT, xmm0 5614 | movsd qword FOR_EXT, xmm0
5066 } else { 5615 } else {
5067 | fld FOR_STOP 5616 | fld qword FOR_STOP
5068 | fld FOR_IDX 5617 | fld qword FOR_IDX
5069 if (vk) { 5618 if (vk) {
5070 | fadd FOR_STEP // nidx = idx + step 5619 | fadd qword FOR_STEP // nidx = idx + step
5071 | fst FOR_IDX 5620 | fst qword FOR_IDX
5072 | fst FOR_EXT 5621 | fst qword FOR_EXT
5073 | test RB, RB; js >1 5622 | test RB, RB; js >1
5074 } else { 5623 } else {
5075 | fst FOR_EXT 5624 | fst qword FOR_EXT
5076 | jl >1 5625 | jl >1
5077 } 5626 }
5078 | fxch // Swap lim/(n)idx if step non-negative. 5627 | fxch // Swap lim/(n)idx if step non-negative.
@@ -5083,20 +5632,32 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
5083 } 5632 }
5084 } 5633 }
5085 if (op == BC_FORI) { 5634 if (op == BC_FORI) {
5086 | jnb >2 5635 if (LJ_DUALNUM) {
5087 | branchPC RD 5636 | jnb <7
5637 } else {
5638 | jnb >2
5639 | branchPC RD
5640 }
5088 } else if (op == BC_JFORI) { 5641 } else if (op == BC_JFORI) {
5089 | branchPC RD 5642 | branchPC RD
5090 | movzx RD, PC_RD 5643 | movzx RD, PC_RD
5091 | jnb =>BC_JLOOP 5644 | jnb =>BC_JLOOP
5092 } else if (op == BC_IFORL) { 5645 } else if (op == BC_IFORL) {
5093 | jb >2 5646 if (LJ_DUALNUM) {
5094 | branchPC RD 5647 | jb <7
5648 } else {
5649 | jb >2
5650 | branchPC RD
5651 }
5095 } else { 5652 } else {
5096 | jnb =>BC_JLOOP 5653 | jnb =>BC_JLOOP
5097 } 5654 }
5098 |2: 5655 if (LJ_DUALNUM) {
5099 | ins_next 5656 | jmp <6
5657 } else {
5658 |2:
5659 | ins_next
5660 }
5100 if (sse) { 5661 if (sse) {
5101 |3: // Invert comparison if step is negative. 5662 |3: // Invert comparison if step is negative.
5102 | ucomisd xmm0, xmm1 5663 | ucomisd xmm0, xmm1
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 4e687076..75627697 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[15851] = { 15static const unsigned char build_actionlist[16902] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36, 17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15, 18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15,
@@ -54,601 +54,643 @@ static const unsigned char build_actionlist[15851] = {
54 132,244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4, 54 132,244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,
55 137,69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20,237, 55 137,69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20,237,
56 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65, 56 141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,
57 4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,255,252,242,15,42, 57 4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,255,199,68,36,20,237,
58 192,252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255, 58 137,68,36,16,255,252,242,15,42,192,252,242,15,17,68,36,16,255,137,68,36,12,
59 141,68,36,16,252,233,244,247,248,36,15,182,70,252,254,141,4,194,248,1,15, 59 219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244,247,248,36,15,182,
60 182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36, 60 70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,
61 8,137,44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15, 61 36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,
62 132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4, 62 1,1,139,149,233,133,192,15,132,244,249,248,32,15,182,78,252,253,139,104,4,
63 202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3, 63 139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,
64 139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252, 64 16,252,255,36,171,248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,
65 233,244,29,248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252, 65 105,252,248,184,237,252,233,244,29,248,37,137,68,36,16,199,68,36,20,237,141,
66 252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233, 66 68,36,16,128,126,252,252,235,15,133,244,247,255,141,139,233,137,41,199,65,
67 244,248,248,38,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,39, 67 4,237,137,205,252,233,244,248,248,38,15,182,70,252,254,255,141,68,36,16,252,
68 15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2, 68 233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,
69 137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24, 69 44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,
70 232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108, 70 233,137,116,36,24,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,
71 202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198, 71 252,253,139,108,202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,
72 4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252, 72 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,
73 253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105, 73 252,244,15,182,70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,
74 252,248,184,237,252,233,244,29,248,41,15,182,110,252,252,141,4,194,141,12, 74 177,233,41,214,139,105,252,248,184,237,252,233,244,29,248,41,15,182,110,252,
75 202,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149, 75 252,141,4,194,141,12,202,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,
76 233,137,116,36,24,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135, 76 4,137,44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139,149,233,255,131,
77 244,42,248,4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253, 77 252,248,1,15,135,244,42,248,4,141,118,4,15,130,244,252,248,5,15,183,70,252,
78 134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 78 254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,
79 171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44, 79 16,252,255,36,171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,
80 129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,108, 80 244,6,248,44,129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,
81 36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232, 81 36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,
82 251,1,4,252,233,244,3,248,46,255,131,252,238,4,139,108,36,48,137,149,233, 82 116,36,24,232,251,1,4,252,233,244,3,248,46,255,131,252,238,4,139,108,36,48,
83 137,252,233,139,86,252,252,137,116,36,24,232,251,1,5,252,233,244,3,255,248, 83 137,149,233,137,252,233,139,86,252,252,137,116,36,24,232,251,1,5,252,233,
84 47,141,4,199,252,233,244,247,248,48,141,4,199,141,44,252,234,149,252,233, 84 244,3,255,248,47,255,15,182,110,252,255,255,248,48,141,4,199,252,233,244,
85 244,248,248,49,141,4,194,137,197,252,233,244,248,248,50,141,4,194,248,1,141, 85 247,248,49,255,248,50,141,4,199,141,44,252,234,149,252,233,244,248,248,51,
86 44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182, 86 141,4,194,137,197,252,233,244,248,248,52,255,248,53,141,4,194,248,1,141,44,
87 70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232, 87 252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,
88 252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,
88 251,1,6,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252, 89 251,1,6,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,
89 244,141,176,233,184,237,252,233,244,27,248,51,255,139,108,36,48,137,149,233, 90 244,141,176,233,184,237,252,233,244,27,248,54,139,108,36,48,137,149,233,141,
90 141,20,194,137,252,233,137,116,36,24,232,251,1,7,139,149,233,252,233,244, 91 20,194,137,252,233,137,116,36,24,232,251,1,7,139,149,233,252,233,244,42,248,
91 42,248,52,141,76,202,8,248,28,137,76,36,20,137,68,36,16,131,252,233,8,141, 92 55,141,76,202,8,248,28,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,
92 4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,137,116, 93 139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,255,137,116,36,
93 36,24,232,251,1,8,139,149,233,139,76,36,20,139,68,36,16,139,105,252,248,131, 94 24,232,251,1,8,139,149,233,139,76,36,20,139,68,36,16,139,105,252,248,131,
94 192,1,57,215,15,132,244,53,137,202,137,114,252,252,139,181,233,139,14,15, 95 192,1,57,215,15,132,244,56,137,202,137,114,252,252,139,181,233,139,14,15,
95 182,252,233,15,182,205,131,198,4,252,255,36,171,248,54,139,108,36,48,137, 96 182,252,233,15,182,205,131,198,4,252,255,36,171,248,57,139,108,36,48,137,
96 149,233,137,202,137,252,233,137,116,36,24,232,251,1,9,139,149,233,139,70, 97 149,233,137,202,137,252,233,137,116,36,24,232,251,1,9,139,149,233,139,70,
97 252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248,55,129, 98 252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248,58,129,
98 252,248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,244,56,139, 99 252,248,239,15,130,244,59,139,106,4,129,252,253,239,15,131,244,59,139,114,
99 114,252,252,137,68,36,20,137,106,252,252,139,42,137,106,252,248,131,232,2, 100 252,252,137,68,36,20,137,106,252,252,139,42,137,106,252,248,131,232,2,15,
100 15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137, 101 132,244,248,137,209,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,
101 105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,20,252,233,244,57,248, 102 105,252,248,131,232,1,15,133,244,1,248,2,255,139,68,36,20,252,233,244,60,
102 58,129,252,248,239,15,130,244,56,139,106,4,184,237,252,247,213,57,232,255, 103 248,61,129,252,248,239,15,130,244,59,139,106,4,184,237,252,247,213,57,232,
103 15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,139, 104 255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,
104 132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,233, 105 139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,
105 244,59,248,60,129,252,248,239,15,130,244,56,139,106,4,139,114,252,252,129, 106 233,244,62,248,63,129,252,248,239,15,130,244,59,139,106,4,139,114,252,252,
106 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199, 107 129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,
107 66,252,252,237,15,132,244,59,139,131,233,199,66,252,252,237,255,137,106,252, 108 199,66,252,252,237,15,132,244,62,139,131,233,199,66,252,252,237,255,137,106,
108 248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15, 109 252,248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,
109 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244, 110 15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,
110 3,252,233,244,59,248,5,139,105,4,129,252,253,239,255,15,132,244,59,139,1, 111 244,3,252,233,244,62,248,5,139,105,4,129,252,253,239,255,15,132,244,62,139,
111 137,106,252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132, 112 1,137,106,252,252,137,66,252,248,252,233,244,62,248,6,129,252,253,239,15,
112 244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253, 113 132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,
113 171,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,255,129,122,253, 114 253,171,233,252,233,244,2,248,64,129,252,248,239,15,130,244,59,255,129,122,
114 4,239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,239, 115 253,4,239,15,133,244,59,139,42,131,189,233,0,15,133,244,59,129,122,253,12,
115 15,133,244,56,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137, 116 239,15,133,244,59,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,
116 106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233, 117 137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,
117 137,171,233,137,133,233,248,1,255,252,233,244,59,248,62,129,252,248,239,15, 118 233,137,171,233,137,133,233,248,1,255,252,233,244,62,248,65,129,252,248,239,
118 130,244,56,129,122,253,4,239,15,133,244,56,139,2,139,108,36,48,137,68,36, 119 15,130,244,59,129,122,253,4,239,15,133,244,59,139,2,139,108,36,48,137,68,
119 4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,1,10,137,252,234,139,40, 120 36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,1,10,137,252,234,139,
120 139,64,4,139,114,252,252,137,106,252,248,137,66,252,252,252,233,244,59,248, 121 40,139,64,4,139,114,252,252,137,106,252,248,137,66,252,252,252,233,244,62,
121 63,129,252,248,239,15,133,244,56,129,122,253,4,239,15,135,244,56,255,252, 122 248,66,129,252,248,239,15,133,244,59,129,122,253,4,239,255,15,133,244,247,
122 242,15,16,2,252,233,244,64,255,221,2,252,233,244,65,255,248,66,129,252,248, 123 139,42,252,233,244,67,248,1,15,135,244,59,255,15,131,244,59,255,252,242,15,
123 239,15,130,244,56,139,114,252,252,129,122,253,4,239,15,133,244,249,139,2, 124 16,2,252,233,244,68,255,221,2,252,233,244,69,255,248,70,129,252,248,239,15,
124 248,2,199,66,252,252,237,137,66,252,248,252,233,244,59,248,3,129,122,253, 125 130,244,59,139,114,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,
125 4,239,15,135,244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255, 126 66,252,252,237,137,66,252,248,252,233,244,62,248,3,129,122,253,4,239,15,135,
126 15,130,244,247,232,244,67,248,1,139,108,36,48,137,149,233,137,116,36,24,137, 127 244,59,131,187,233,0,15,133,244,59,139,171,233,59,171,233,255,15,130,244,
127 252,233,232,251,1,11,139,149,233,252,233,244,2,248,68,129,252,248,239,15, 128 247,232,244,71,248,1,139,108,36,48,137,149,233,137,116,36,24,137,252,233,
128 130,244,56,15,132,244,248,248,1,129,122,253,4,239,15,133,244,56,139,108,36, 129 255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,72,129,
129 48,137,149,233,255,137,149,233,139,114,252,252,139,2,137,68,36,4,137,44,36, 130 252,248,239,15,130,244,59,15,132,244,248,248,1,129,122,253,4,239,15,133,244,
130 131,194,8,137,84,36,8,137,116,36,24,232,251,1,12,139,149,233,133,192,15,132, 131 59,139,108,36,48,137,149,233,137,149,233,139,114,252,252,139,2,137,68,36,
131 244,249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,106,16,139, 132 4,137,44,36,131,194,8,137,84,36,8,137,116,36,24,232,251,1,13,139,149,233,
132 66,20,137,42,137,66,4,248,69,184,237,252,233,244,70,248,2,199,66,12,237,252, 133 133,192,15,132,244,249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,
133 233,244,1,248,3,199,66,252,252,237,252,233,244,59,248,71,129,252,248,239, 134 139,106,16,139,66,20,137,42,137,66,4,248,73,184,237,255,252,233,244,74,248,
134 15,130,244,56,255,139,42,129,122,253,4,239,15,133,244,56,255,131,189,233, 135 2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,62,248,
135 0,15,133,244,56,255,139,106,252,248,139,133,233,139,114,252,252,199,66,252, 136 75,129,252,248,239,15,130,244,59,139,42,129,122,253,4,239,15,133,244,59,255,
136 252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,70,248,72,129,252, 137 131,189,233,0,15,133,244,59,255,139,106,252,248,139,133,233,139,114,252,252,
137 248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,129,122,253,12,239, 138 199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,74,248,
138 15,135,244,56,139,114,252,252,255,252,242,15,16,66,8,189,0,0,252,240,63,102, 139 76,129,252,248,239,15,130,244,59,129,122,253,4,239,15,133,244,59,129,122,
139 15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242, 140 253,12,239,255,139,114,252,252,255,139,66,8,131,192,1,199,66,252,252,237,
140 15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,36,221,90,252,248,139, 141 137,66,252,248,255,252,242,15,16,66,8,189,0,0,252,240,63,102,15,110,205,102,
141 4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120, 142 15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,
142 253,4,239,15,132,244,73,139,40,139,64,4,137,42,137,66,4,252,233,244,69,248, 143 255,221,66,8,217,232,222,193,219,20,36,221,90,252,248,139,4,36,255,139,42,
143 2,131,189,233,0,15,132,244,73,137,252,233,137,213,137,194,232,251,1,13,137, 144 59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,
144 252,234,133,192,15,133,244,1,248,73,184,237,252,233,244,70,248,74,255,129, 145 132,244,77,139,40,139,64,4,137,42,137,66,4,252,233,244,73,248,2,131,189,233,
145 252,248,239,15,130,244,56,139,42,129,122,253,4,239,15,133,244,56,255,139, 146 0,15,132,244,77,137,252,233,137,213,137,194,232,251,1,14,137,252,234,133,
146 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248, 147 192,15,133,244,1,248,77,184,237,252,233,244,74,248,78,255,139,106,252,248,
147 255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252, 148 139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,255,199,66,
148 233,244,70,248,75,129,252,248,239,15,130,244,56,141,74,8,131,232,1,190,237, 149 12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,238,
149 248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,238,252,233,244,27,248, 150 221,90,8,255,184,237,252,233,244,74,248,79,129,252,248,239,15,130,244,59,
150 76,129,252,248,239,15,130,244,56,129,122,253,12,239,15,133,244,56,255,139, 151 141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,
151 106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,141,74,16, 152 1,252,238,252,233,244,27,248,80,129,252,248,239,15,130,244,59,129,122,253,
152 131,232,2,190,237,252,233,244,1,248,77,129,252,248,239,15,130,244,56,139, 153 12,239,15,133,244,59,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,
153 42,139,114,252,252,137,116,36,24,137,44,36,129,122,253,4,239,15,133,244,56, 154 8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,81,129,252,
154 131,189,233,0,15,133,244,56,128,189,233,235,15,135,244,56,139,141,233,15, 155 248,239,15,130,244,59,139,42,139,114,252,252,137,116,36,24,137,44,36,129,
155 132,244,247,255,59,141,233,15,132,244,56,248,1,141,116,193,252,240,59,181, 156 122,253,4,239,15,133,244,59,131,189,233,0,15,133,244,59,128,189,233,235,15,
156 233,15,135,244,56,137,181,233,139,108,36,48,137,149,233,131,194,8,137,149, 157 135,244,59,139,141,233,15,132,244,247,255,59,141,233,15,132,244,59,248,1,
157 233,141,108,194,232,41,252,245,57,206,15,132,244,249,248,2,139,68,46,4,137, 158 141,116,193,252,240,59,181,233,15,135,244,59,137,181,233,139,108,36,48,137,
158 70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248, 159 149,233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206,15,132,244,
159 3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237, 160 249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,
160 255,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248, 161 8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,
161 4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141, 162 244,24,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129,252,248,
162 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137, 163 239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,
163 4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70, 164 41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,
164 2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255, 165 213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,
165 252,255,252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199, 166 15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68,
166 66,252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4, 167 36,20,185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244,
167 137,66,4,184,237,252,233,244,7,248,9,139,12,36,137,185,233,137,252,242,137, 168 13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,
168 252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,78,139,106,252, 169 142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,12,
169 248,139,173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,233,0,15, 170 36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,
170 133,244,56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59, 171 252,233,244,4,248,82,139,106,252,248,139,173,233,139,114,252,252,137,116,
171 141,233,15,132,244,56,248,1,141,116,193,252,248,59,181,233,15,135,244,56, 172 36,24,137,44,36,131,189,233,0,15,133,244,59,255,128,189,233,235,15,135,244,
172 137,181,233,139,108,36,48,137,149,233,137,149,233,141,108,194,252,240,41, 173 59,139,141,233,15,132,244,247,59,141,233,15,132,244,59,248,1,141,116,193,
173 252,245,57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,252,139,4, 174 252,248,59,181,233,15,135,244,59,137,181,233,139,108,36,48,137,149,233,137,
174 46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49, 175 149,233,141,108,194,252,240,41,252,245,57,206,15,132,244,249,248,2,255,139,
175 201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237,139,108,36,48,139, 176 68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,
176 52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190, 177 244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131,
177 233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3, 178 233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,
178 59,133,233,15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,65, 179 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,
179 4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139, 180 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5,
180 116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14, 181 139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,
181 248,8,137,252,242,137,252,233,232,251,1,14,248,9,139,12,36,137,185,233,137, 182 6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,
182 252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,79, 183 244,13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,15,248,9,139,
183 139,108,36,48,252,247,133,233,237,15,132,244,56,255,137,149,233,141,68,194, 184 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,
184 252,248,137,133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16, 185 252,233,244,4,248,83,139,108,36,48,252,247,133,233,237,15,132,244,59,255,
185 255,248,65,139,114,252,252,221,90,252,248,252,233,244,59,248,80,129,252,248, 186 137,149,233,141,68,194,252,248,137,133,233,49,192,137,133,233,176,235,136,
186 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,102,15, 187 133,233,252,233,244,16,255,248,67,255,248,69,139,114,252,252,221,90,252,248,
187 252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,64,139,114,252, 188 252,233,244,62,255,248,84,129,252,248,239,15,130,244,59,255,129,122,253,4,
188 252,252,242,15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,56,129, 189 239,15,133,244,248,139,42,131,252,253,0,15,137,244,67,252,247,221,15,136,
189 122,253,4,239,15,135,244,56,221,2,217,225,248,64,248,65,139,114,252,252,221, 190 244,247,248,85,248,67,139,114,252,252,199,66,252,252,237,137,106,252,248,
190 90,252,248,255,248,59,184,237,248,70,137,68,36,20,248,57,252,247,198,237, 191 252,233,244,62,248,1,139,114,252,252,199,66,252,252,0,0,224,65,199,66,252,
191 15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,252,247, 192 248,0,0,0,0,252,233,244,62,248,2,15,135,244,59,255,129,122,253,4,239,15,131,
192 209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 193 244,59,255,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209,
193 171,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,252,248, 194 1,15,84,193,248,68,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,
194 252,255,252,255,252,255,252,233,244,14,255,248,81,129,252,248,239,15,130, 195 225,248,68,248,69,139,114,252,252,221,90,252,248,255,248,62,184,237,248,74,
195 244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,252,233,244,64,248, 196 137,68,36,20,248,60,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,
196 82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242, 197 135,244,252,15,182,78,252,253,252,247,209,141,20,202,139,6,15,182,204,15,
197 15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244,56, 198 182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,194,252,244,237,
198 129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,85,252,233,244,64, 199 131,192,1,252,233,244,5,248,7,185,252,248,252,255,252,255,252,255,252,233,
199 255,248,81,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56, 200 244,14,248,86,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,67,
200 221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56,129, 201 248,1,15,135,244,59,255,252,242,15,16,2,232,244,87,255,252,242,15,45,232,
201 122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,65,248,84,255,129, 202 129,252,253,0,0,0,128,15,133,244,67,252,242,15,42,205,102,15,46,193,15,138,
202 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,85, 203 244,68,15,132,244,67,255,221,2,232,244,87,255,219,20,36,139,44,36,129,252,
203 252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,122,253,4,239, 204 253,0,0,0,128,15,133,244,248,217,192,219,4,36,255,223,252,233,221,216,255,
204 15,135,244,56,217,252,237,221,2,217,252,241,252,233,244,65,248,87,129,252, 205 218,252,233,223,224,158,255,15,138,244,69,15,133,244,69,248,2,221,216,252,
205 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,217,252,236,221,2,217, 206 233,244,67,255,248,88,255,252,242,15,16,2,232,244,89,255,221,2,232,244,89,
206 252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129,122,253, 207 255,248,90,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,
207 4,239,15,135,244,56,221,2,232,244,89,252,233,244,65,248,90,129,252,248,239, 208 252,242,15,81,2,252,233,244,68,255,248,90,129,252,248,239,15,130,244,59,129,
208 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,254,252,233,244, 209 122,253,4,239,15,131,244,59,221,2,217,252,250,252,233,244,69,255,248,91,129,
209 65,248,91,129,252,248,239,255,15,130,244,56,129,122,253,4,239,15,135,244, 210 252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,217,252,237,221,
210 56,221,2,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130,244,56, 211 2,217,252,241,252,233,244,69,248,92,129,252,248,239,15,130,244,59,129,122,
211 129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,216,252,233,244,65, 212 253,4,239,15,131,244,59,217,252,236,221,2,217,252,241,252,233,244,69,248,
212 248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,239,15,135,244,56, 213 93,129,252,248,239,255,15,130,244,59,129,122,253,4,239,15,131,244,59,221,
213 221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244, 214 2,232,244,94,252,233,244,69,248,95,129,252,248,239,15,130,244,59,129,122,
214 65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221, 215 253,4,239,15,131,244,59,221,2,217,252,254,252,233,244,69,248,96,129,252,248,
215 2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233, 216 239,255,15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,217,252,255,252,
216 244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 217 233,244,69,248,97,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,
217 56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,129,252,248,239, 218 244,59,221,2,217,252,242,221,216,252,233,244,69,248,98,129,252,248,239,15,
218 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,252,242,15, 219 130,244,59,255,129,122,253,4,239,15,131,244,59,221,2,217,192,216,200,217,
219 17,4,36,255,248,96,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135, 220 232,222,225,217,252,250,217,252,243,252,233,244,69,248,99,129,252,248,239,
220 244,56,221,2,221,28,36,255,137,213,232,251,1,15,137,252,234,252,233,244,65, 221 15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,217,192,216,200,217,232,
221 255,248,97,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56, 222 222,225,217,252,250,217,201,217,252,243,252,233,244,69,248,100,129,252,248,
222 252,242,15,16,2,252,242,15,17,4,36,255,248,97,129,252,248,239,15,130,244, 223 239,15,130,244,59,129,122,253,4,239,15,131,244,59,255,221,2,217,232,217,252,
223 56,129,122,253,4,239,15,135,244,56,221,2,221,28,36,255,137,213,232,251,1, 224 243,252,233,244,69,255,248,101,129,252,248,239,15,130,244,59,129,122,253,
224 16,137,252,234,252,233,244,65,255,248,98,129,252,248,239,15,130,244,56,129, 225 4,239,15,131,244,59,252,242,15,16,2,252,242,15,17,4,36,255,248,101,129,252,
225 122,253,4,239,15,135,244,56,252,242,15,16,2,252,242,15,17,4,36,255,248,98, 226 248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,221,2,221,28,36,255,
226 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,221,28, 227 137,213,232,251,1,16,137,252,234,252,233,244,69,255,248,102,129,252,248,239,
227 36,255,137,213,232,251,1,17,137,252,234,252,233,244,65,248,99,255,248,100, 228 15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,252,242,15,
228 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15, 229 17,4,36,255,248,102,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,
229 16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,64,255,248,100,129, 230 244,59,221,2,221,28,36,255,137,213,232,251,1,17,137,252,234,252,233,244,69,
230 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,139,106,252, 231 255,248,103,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,
231 248,220,141,233,252,233,244,65,255,248,101,129,252,248,239,15,130,244,56, 232 252,242,15,16,2,252,242,15,17,4,36,255,248,103,129,252,248,239,15,130,244,
232 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221, 233 59,129,122,253,4,239,15,131,244,59,221,2,221,28,36,255,137,213,232,251,1,
233 66,8,217,252,243,252,233,244,65,248,102,129,252,248,239,15,130,244,56,129, 234 18,137,252,234,252,233,244,69,248,104,255,248,105,129,252,248,239,15,130,
234 122,253,4,239,15,135,244,56,129,122,253,12,239,255,15,135,244,56,221,66,8, 235 244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,139,106,252,248,252,
235 221,2,217,252,253,221,217,252,233,244,65,248,103,129,252,248,239,15,130,244, 236 242,15,89,133,233,252,233,244,68,255,248,105,129,252,248,239,15,130,244,59,
236 56,139,106,4,129,252,253,239,15,135,244,56,139,114,252,252,139,2,137,106, 237 129,122,253,4,239,15,131,244,59,221,2,139,106,252,248,220,141,233,252,233,
237 252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249, 238 244,69,255,248,106,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,
238 9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250, 239 244,59,129,122,253,12,239,15,131,244,59,221,2,221,66,8,217,252,243,252,233,
239 248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68, 240 244,69,248,107,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,
240 36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224, 241 59,129,122,253,12,239,255,15,131,244,59,221,66,8,221,2,217,252,253,221,217,
241 63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233, 242 252,233,244,69,248,108,129,252,248,239,15,130,244,59,139,106,4,129,252,253,
242 244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255, 243 239,15,131,244,59,139,114,252,252,139,2,137,106,252,252,137,66,252,248,209,
243 248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,102,15,112,201,81, 244 229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,
244 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,16,0,0,128, 245 254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,
245 90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252, 246 255,252,242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,106,252,252,
246 233,244,1,255,248,104,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 247 129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,
247 135,244,56,252,242,15,16,2,255,248,104,129,252,248,239,15,130,244,56,129, 248 252,242,15,17,2,255,221,26,255,184,237,252,233,244,74,248,3,255,15,87,192,
248 122,253,4,239,15,135,244,56,221,2,255,139,106,4,139,114,252,252,209,229,129, 249 252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,
249 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,105,252,242, 250 189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15,89,193,252,242,
250 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232, 251 15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,90,216,76,36,16,221,90,252,
251 244,105,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106, 252 248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,109,129,
252 4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248,3,129,252,245,0, 253 252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,252,242,15,16,2,
253 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217, 254 255,248,109,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,
254 252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15,130,244,56,129, 255 221,2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,
255 122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,66,8,221, 256 132,244,250,255,15,40,224,232,244,110,252,242,15,92,224,248,1,252,242,15,
256 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,65,255,248, 257 17,66,252,248,252,242,15,17,34,255,217,192,232,244,110,220,252,233,248,1,
257 107,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122, 258 221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,
258 253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,232,244,108,252, 259 248,2,184,237,252,233,244,74,248,3,129,252,245,0,0,0,128,137,106,4,252,233,
259 233,244,64,255,248,107,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 260 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,
260 135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,232,244,108,252, 261 1,255,248,111,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,
261 233,244,65,255,248,109,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 262 59,129,122,253,12,239,15,131,244,59,221,66,8,221,2,248,1,217,252,248,223,
262 135,244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124, 263 224,158,15,138,244,1,221,217,252,233,244,69,255,248,112,129,252,248,239,15,
263 253,252,234,252,252,239,15,135,244,56,252,242,15,16,76,252,234,252,248,252, 264 130,244,59,129,122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,
264 242,15,93,193,131,197,1,252,233,244,1,255,248,109,129,252,248,239,15,130, 265 59,252,242,15,16,2,252,242,15,16,74,8,232,244,113,252,233,244,68,255,248,
265 244,56,129,122,253,4,239,15,135,244,56,221,2,189,2,0,0,0,248,1,57,197,15, 266 112,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,122,
266 131,244,65,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234, 267 253,12,239,15,131,244,59,221,2,221,66,8,232,244,113,252,233,244,69,255,248,
267 252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,246,196, 268 114,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,
268 1,15,132,244,248,217,201,248,2,221,216,88,255,248,110,129,252,248,239,15, 269 15,131,244,67,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,
269 130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,2,0,0,0,248, 270 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,59,255,252,
270 1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,15,135,244,56,252, 271 233,244,252,248,4,15,135,244,59,255,252,242,15,16,2,248,5,57,193,15,131,244,
271 242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,1,252,233,244,1,255, 272 68,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,59,252,242,15,
272 248,110,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221, 273 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,
273 2,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124,253,252,234,252,252,239, 274 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,221,2,248,5,57,193,15,
274 15,135,244,251,221,68,252,234,252,248,255,219,252,233,218,209,221,217,255, 275 131,244,69,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,255,
275 80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88, 276 219,68,202,252,248,252,233,244,253,255,15,131,244,255,255,248,6,221,68,202,
276 255,248,5,221,216,252,233,244,56,255,248,111,129,252,248,239,15,130,244,56, 277 252,248,248,7,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,
277 129,122,253,4,239,15,133,244,56,139,42,255,252,242,15,42,133,233,252,233, 278 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,115,185,2,0,0,0,
278 244,64,255,219,133,233,252,233,244,65,255,248,112,129,252,248,239,15,133, 279 129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,67,129,
279 244,56,129,122,253,4,239,15,133,244,56,139,42,139,114,252,252,131,189,233, 280 124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,
280 1,15,130,244,73,15,182,173,233,255,252,242,15,42,197,252,233,244,64,255,137, 281 248,131,193,1,252,233,244,1,248,3,15,135,244,59,255,248,6,252,242,15,16,76,
281 108,36,16,219,68,36,16,252,233,244,65,255,248,113,139,171,233,59,171,233, 282 202,252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,219,252,233,
282 15,130,244,247,232,244,67,248,1,129,252,248,239,15,133,244,56,129,122,253, 283 218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
283 4,239,15,135,244,56,255,252,242,15,44,42,129,252,253,252,255,0,0,0,15,135, 284 248,2,221,216,88,255,248,9,221,216,252,233,244,59,255,248,116,129,252,248,
284 244,56,137,108,36,20,255,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15, 285 239,15,130,244,59,129,122,253,4,239,15,133,244,59,139,42,255,139,173,233,
285 135,244,56,255,199,68,36,8,1,0,0,0,141,68,36,20,248,114,139,108,36,48,137, 286 252,233,244,67,255,252,242,15,42,133,233,252,233,244,68,255,219,133,233,252,
286 149,233,137,68,36,4,137,44,36,137,116,36,24,232,251,1,18,139,149,233,139, 287 233,244,69,255,248,117,129,252,248,239,15,133,244,59,129,122,253,4,239,15,
287 114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,59,248,115,139, 288 133,244,59,139,42,139,114,252,252,131,189,233,1,15,130,244,77,15,182,173,
288 171,233,59,171,233,15,130,244,247,232,244,67,248,1,199,68,36,20,252,255,252, 289 233,255,252,242,15,42,197,252,233,244,68,255,137,108,36,16,219,68,36,16,252,
289 255,252,255,252,255,129,252,248,239,15,130,244,56,15,134,244,247,129,122, 290 233,244,69,255,248,118,139,171,233,59,171,233,15,130,244,247,232,244,71,248,
290 253,20,239,255,252,242,15,44,106,16,137,108,36,20,255,221,66,16,219,92,36, 291 1,129,252,248,239,15,133,244,59,129,122,253,4,239,255,15,133,244,59,139,42,
291 20,255,248,1,129,122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244, 292 129,252,253,252,255,0,0,0,15,135,244,59,137,108,36,20,255,15,131,244,59,252,
292 56,139,42,137,108,36,12,139,173,233,255,252,242,15,44,74,8,255,221,66,8,219, 293 242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,59,137,108,36,20,255,15,
293 92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201, 294 131,244,59,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,59,255,
294 15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,116,141,172,253,13,233, 295 199,68,36,8,1,0,0,0,141,68,36,20,248,119,139,108,36,48,137,149,233,137,68,
295 131,192,1,248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252, 296 36,4,137,44,36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199,
296 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244, 297 66,252,252,237,137,66,252,248,252,233,244,62,248,120,139,171,233,59,171,233,
297 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248, 298 15,130,244,247,232,244,71,248,1,199,68,36,20,252,255,252,255,252,255,252,
298 116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,139,171,233, 299 255,129,252,248,239,15,130,244,59,15,134,244,247,129,122,253,20,239,255,15,
299 59,171,233,15,130,244,247,232,244,67,248,1,255,129,122,253,4,239,15,133,244, 300 133,244,59,139,106,16,137,108,36,20,255,15,131,244,59,252,242,15,44,106,16,
300 56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,44,66,8,255,221, 301 137,108,36,20,255,15,131,244,59,221,66,16,219,92,36,20,255,248,1,129,122,
301 66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,116,131,189,233,1,15, 302 253,4,239,15,133,244,59,129,122,253,12,239,255,139,42,137,108,36,12,139,173,
302 130,244,116,15,133,244,118,57,131,233,15,130,244,118,15,182,141,233,139,171, 303 233,255,139,74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,
303 233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233, 304 8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,
304 252,233,244,114,248,119,129,252,248,239,255,15,130,244,56,139,171,233,59, 305 3,139,108,36,12,41,200,15,140,244,121,141,172,253,13,233,131,192,1,248,4,
305 171,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139, 306 137,68,36,8,137,232,252,233,244,119,248,5,15,140,244,252,141,68,40,1,252,
306 42,139,133,233,133,192,15,132,244,116,57,131,233,15,130,244,120,129,197,239, 307 233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,
307 137,116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131, 308 131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,121,49,192,252,
308 232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,114,248, 309 233,244,4,248,122,129,252,248,239,15,130,244,59,139,171,233,59,171,233,15,
309 121,129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232, 310 130,244,247,232,244,71,248,1,255,129,122,253,4,239,15,133,244,59,129,122,
310 244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,57,131,233, 311 253,12,239,139,42,255,15,133,244,59,139,66,8,255,15,131,244,59,252,242,15,
311 255,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252, 312 44,66,8,255,15,131,244,59,221,66,8,219,92,36,20,139,68,36,20,255,133,192,
312 233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249, 313 15,142,244,121,131,189,233,1,15,130,244,121,15,133,244,123,57,131,233,15,
313 90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244, 314 130,244,123,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,
314 1,137,252,240,139,116,36,20,252,233,244,114,248,122,129,252,248,239,15,130, 315 1,131,232,1,15,133,244,1,139,131,233,252,233,244,119,248,124,129,252,248,
315 244,56,255,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,122, 316 239,255,15,130,244,59,139,171,233,59,171,233,15,130,244,247,232,244,71,248,
316 253,4,239,15,133,244,56,139,42,139,133,233,57,131,233,15,130,244,120,129, 317 1,129,122,253,4,239,15,133,244,59,139,42,139,133,233,133,192,15,132,244,121,
317 197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182, 318 57,131,233,15,130,244,125,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
318 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131, 319 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,
319 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116, 320 139,116,36,20,252,233,244,119,248,126,129,252,248,239,15,130,244,59,139,171,
320 36,20,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,122,253,4, 321 233,59,171,233,15,130,244,247,232,244,71,248,1,129,122,253,4,239,15,133,244,
321 239,15,133,244,56,137,213,139,10,232,251,1,19,137,252,234,255,252,242,15, 322 59,139,42,139,133,233,57,131,233,255,15,130,244,125,129,197,239,137,116,36,
322 42,192,252,233,244,64,255,137,4,36,219,4,36,252,233,244,65,255,248,124,129, 323 20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,
323 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2, 324 65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,
324 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126, 325 12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,119,
325 197,252,242,15,42,197,252,233,244,64,255,248,124,129,252,248,239,15,130,244, 326 248,127,129,252,248,239,15,130,244,59,255,139,171,233,59,171,233,15,130,244,
326 56,129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,0,0,192,89,216,68,36, 327 247,232,244,71,248,1,129,122,253,4,239,15,133,244,59,139,42,139,133,233,57,
327 16,221,28,36,219,4,36,252,233,244,65,255,248,125,129,252,248,239,15,130,244, 328 131,233,15,130,244,125,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
328 56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110, 329 252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,
329 205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,125,129,252, 330 252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,
330 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,199,68,36,16, 331 15,137,244,1,137,252,240,139,116,36,20,252,233,244,119,248,128,129,252,248,
331 0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,194,252, 332 239,15,130,244,59,129,122,253,4,239,15,133,244,59,137,213,139,10,232,251,
332 240,248,1,57,208,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252, 333 1,20,137,252,234,255,137,197,252,233,244,67,255,252,242,15,42,192,252,233,
333 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16, 334 244,68,255,137,4,36,219,4,36,252,233,244,69,255,248,129,129,122,253,4,239,
334 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,128,129,252,248,239, 335 255,15,133,244,247,139,42,252,233,244,85,248,1,15,135,244,59,255,252,242,
335 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,0,0,56, 336 15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,
336 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, 337 102,15,126,197,255,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,255,
337 248,128,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221, 338 139,44,36,255,252,233,244,85,255,248,130,255,189,0,0,56,67,102,15,110,205,
338 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15, 339 102,15,112,201,81,255,199,68,36,16,0,0,192,89,255,15,133,244,247,139,42,252,
339 16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,221,28, 340 233,244,248,248,1,15,135,244,59,255,252,242,15,16,2,252,242,15,88,193,102,
340 36,11,44,36,255,248,129,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 341 15,126,197,255,221,2,216,68,36,16,221,28,36,139,44,36,255,248,2,137,68,36,
341 135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 342 20,141,68,194,252,240,248,1,57,208,15,134,244,85,129,120,253,4,239,255,15,
342 252,242,15,88,193,102,15,126,197,255,248,129,129,252,248,239,15,130,244,56, 343 133,244,248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,131,255,15,131,
343 129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,0,0,192,89,216,68,36,16, 344 244,131,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,
344 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193, 345 0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,233,244,1,248,132,255,
345 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,130,129,252,248, 346 15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,131,255,252,
346 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,0,0, 347 242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,
347 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, 348 221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,133,255,15,133,244,248,
348 248,130,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221, 349 51,40,131,232,8,252,233,244,1,248,2,15,135,244,131,255,252,242,15,16,0,252,
349 2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252, 350 242,15,88,193,102,15,126,193,49,205,255,221,0,216,68,36,16,221,28,36,51,44,
350 233,244,126,255,248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15, 351 36,255,131,232,8,252,233,244,1,248,134,129,122,253,4,239,255,221,2,199,68,
351 135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 352 36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233,
352 252,242,15,88,193,102,15,126,197,255,248,131,129,252,248,239,15,130,244,56, 353 244,85,248,135,129,122,253,4,239,255,248,2,252,247,213,255,248,85,252,242,
353 129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,0,0,192,89,216,68,36,16, 354 15,42,197,252,233,244,68,255,248,85,137,44,36,219,4,36,252,233,244,69,255,
354 221,28,36,139,44,36,255,252,247,213,255,248,126,252,242,15,42,197,252,233, 355 248,131,139,68,36,20,252,233,244,59,255,248,136,129,122,253,4,239,255,248,
355 244,64,255,248,126,137,44,36,219,4,36,252,233,244,65,255,248,127,139,68,36, 356 2,129,122,253,12,239,15,133,244,59,139,74,8,255,248,136,129,252,248,239,15,
356 20,252,233,244,56,255,248,132,129,252,248,239,15,130,244,56,129,122,253,4, 357 130,244,59,129,122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,
357 239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242, 358 59,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,
358 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194, 359 112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,
359 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,129,252, 360 201,255,248,136,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,
360 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239, 361 59,129,122,253,12,239,15,131,244,59,221,2,221,66,8,199,68,36,16,0,0,192,89,
361 15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92, 362 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,
362 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137, 363 211,229,252,233,244,85,255,248,137,129,122,253,4,239,255,248,137,129,252,
363 193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,129,122,253, 364 248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,122,253,12,239,
364 4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252, 365 15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,
365 242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15, 366 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,
366 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133, 367 102,15,126,201,255,248,137,129,252,248,239,15,130,244,59,129,122,253,4,239,
367 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253, 368 15,131,244,59,129,122,253,12,239,15,131,244,59,221,2,221,66,8,199,68,36,16,
368 12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16, 369 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,
369 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, 370 44,36,255,211,252,237,252,233,244,85,255,248,138,129,122,253,4,239,255,248,
370 252,237,137,193,252,233,244,126,255,248,134,129,252,248,239,15,130,244,56, 371 138,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,129,122,
371 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242, 372 253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,
372 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81, 373 102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,
373 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201, 374 15,126,197,102,15,126,201,255,248,138,129,252,248,239,15,130,244,59,129,122,
374 255,248,134,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56, 375 253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,221,2,221,66,8,199,
375 129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,216, 376 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,
376 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36, 377 36,8,139,44,36,255,211,252,253,252,233,244,85,255,248,139,129,122,253,4,239,
377 255,211,252,253,137,193,252,233,244,126,255,248,135,129,252,248,239,15,130, 378 255,248,139,129,252,248,239,15,130,244,59,129,122,253,4,239,15,131,244,59,
378 244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252, 379 129,122,253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,74,8,189,0,
379 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 380 0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,
380 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, 381 202,102,15,126,197,102,15,126,201,255,248,139,129,252,248,239,15,130,244,
381 201,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 382 59,129,122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,59,221,2,
382 56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89, 383 221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,
383 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, 384 28,36,139,76,36,8,139,44,36,255,211,197,252,233,244,85,255,248,140,129,122,
384 36,255,211,197,137,193,252,233,244,126,255,248,136,129,252,248,239,15,130, 385 253,4,239,255,248,140,129,252,248,239,15,130,244,59,129,122,253,4,239,15,
385 244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252, 386 131,244,59,129,122,253,12,239,15,131,244,59,252,242,15,16,2,252,242,15,16,
386 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210, 387 74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
387 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, 388 242,15,88,202,102,15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,
388 201,255,248,136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244, 389 130,244,59,129,122,253,4,239,15,131,244,59,129,122,253,12,239,15,131,244,
389 56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89, 390 59,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
390 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, 391 36,16,221,28,36,139,76,36,8,139,44,36,255,211,205,252,233,244,85,248,123,
391 36,255,211,205,137,193,252,233,244,126,248,118,184,237,252,233,244,56,248, 392 184,237,252,233,244,59,248,125,184,237,248,59,139,108,36,48,139,114,252,252,
392 120,184,237,248,56,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233, 393 137,116,36,24,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,
393 141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135, 394 66,252,248,59,141,233,15,135,244,251,137,44,36,252,255,144,233,139,149,233,
394 244,251,137,44,36,252,255,144,233,139,149,233,133,192,15,143,244,70,248,1, 395 133,192,15,143,244,74,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
395 255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15, 396 141,65,1,139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,252,233,
396 133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255, 397 15,182,205,131,198,4,252,255,36,171,248,2,137,209,252,247,198,237,15,133,
397 36,171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,252, 398 244,249,15,182,110,252,253,252,247,213,141,20,252,234,252,233,244,27,248,
398 247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,41, 399 3,137,252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,
399 252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233, 400 252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,71,93,137,108,36,
400 49,192,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,137,116,36,24, 401 16,139,108,36,48,137,116,36,24,137,149,233,255,141,68,194,252,248,137,252,
401 137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,20,139, 402 233,137,133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,
402 149,233,139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,137, 403 192,1,139,108,36,16,85,195,248,141,255,15,182,131,233,168,235,15,133,244,
403 255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235, 404 251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,
404 15,132,244,247,252,255,139,233,252,233,244,247,255,248,138,15,182,131,233, 405 244,247,255,248,142,15,182,131,233,168,235,15,133,244,251,252,233,244,247,
405 168,235,15,133,244,251,252,233,244,247,248,139,15,182,131,233,168,235,15, 406 248,143,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,
406 133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,235, 407 255,139,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,48,
407 15,132,244,251,248,1,255,139,108,36,48,137,149,233,137,252,242,137,252,233, 408 137,149,233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,
408 232,251,1,21,248,3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252, 409 15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,
409 252,15,183,70,252,254,252,255,164,253,171,233,248,140,131,198,4,139,77,232, 410 253,171,233,248,144,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,145,
410 137,76,36,20,252,233,244,4,248,141,255,139,106,252,248,139,173,233,15,182, 411 255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,48,137,
411 133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139, 412 149,233,137,133,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,
412 233,137,171,233,137,116,36,24,232,251,1,22,252,233,244,3,255,248,142,137, 413 251,1,23,252,233,244,3,255,248,146,137,116,36,24,255,248,147,255,137,116,
413 116,36,24,255,248,143,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252, 414 36,24,131,206,1,248,1,255,141,68,194,252,248,139,108,36,48,137,149,233,137,
414 248,139,108,36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251, 415 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,24,0,0,0,0,255,131,
415 1,23,199,68,36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139, 416 230,252,254,255,139,149,233,137,193,139,133,233,41,208,137,205,15,182,78,
416 133,233,41,208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229, 417 252,253,193,232,3,131,192,1,252,255,229,248,148,255,85,141,108,36,12,85,83,
417 248,144,255,85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252, 418 82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,252,248,
418 248,137,125,252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237, 419 139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,252,236,
419 137,131,233,137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15, 420 239,252,242,15,17,125,216,252,242,15,17,117,208,252,242,15,17,109,200,252,
420 17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184, 421 242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,
421 252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233, 422 77,168,252,242,15,17,69,160,139,171,233,139,147,233,137,171,233,199,131,233,
422 139,147,233,137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141, 423 0,0,0,0,137,149,233,141,84,36,16,141,139,233,232,251,1,25,139,141,233,129,
423 139,233,232,251,1,24,139,141,233,129,225,239,137,204,137,169,233,139,149, 424 225,239,137,204,137,169,233,139,149,233,139,177,233,255,248,149,255,133,192,
424 233,139,177,233,255,248,145,255,133,192,15,136,244,249,137,68,36,20,139,122, 425 15,136,244,249,137,68,36,20,139,122,252,248,139,191,233,139,191,233,199,131,
425 252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6, 426 233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
426 15,182,204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248, 427 16,129,252,253,239,15,130,244,248,139,68,36,20,248,2,252,255,36,171,248,3,
427 139,68,36,20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232, 428 252,247,216,137,252,233,137,194,232,251,1,26,255,248,87,255,217,124,36,4,
428 251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36, 429 137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,
429 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, 430 36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,150,102,
430 36,4,139,68,36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15, 431 15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,
431 115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15, 432 102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
432 84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, 433 15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,
433 15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210, 434 63,102,15,110,208,102,15,112,210,81,252,242,15,194,193,1,102,15,84,194,252,
434 81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195, 435 242,15,92,200,15,40,193,248,1,195,248,89,255,217,124,36,4,137,68,36,8,102,
435 248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252, 436 184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,
436 255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68, 437 6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,151,102,15,252,239,210,
437 36,8,195,255,248,147,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184, 438 102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,
438 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15, 439 81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,
439 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 440 242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,
440 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15, 441 110,208,102,15,112,210,81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
441 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,105,255, 442 200,15,40,193,248,1,195,248,110,255,217,124,36,4,137,68,36,8,102,184,0,12,
442 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217, 443 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
443 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,148,102,15,252, 444 68,36,8,195,255,248,152,102,15,252,239,210,102,15,118,210,102,15,115,210,
444 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102, 445 1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,
445 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 446 102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,
446 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102, 447 242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,15,112,219,81,252,242,
447 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15, 448 15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,
448 92,200,102,15,86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,15, 449 1,195,248,153,255,15,40,232,252,242,15,94,193,102,15,252,239,210,102,15,118,
449 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102, 450 210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,
450 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134, 451 224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,
451 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184, 452 227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,63,102,15,110,208,102,
452 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102, 453 15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,
453 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193, 454 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,
454 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216, 455 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,
455 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 456 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
456 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195, 457 252,252,217,108,36,4,222,201,222,252,233,195,255,248,94,217,252,234,222,201,
457 255,248,89,217,252,234,222,201,248,150,217,84,36,4,129,124,36,4,0,0,128,127, 458 248,154,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4,
458 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,151,217,192, 459 0,0,128,252,255,15,132,244,248,248,155,217,192,217,252,252,220,252,233,217,
459 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 460 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
460 217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219,84,36,4,219,68, 461 217,252,238,195,255,248,113,219,84,36,4,219,68,36,4,255,223,252,233,255,221,
461 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138, 462 252,233,223,224,158,255,15,133,244,254,15,138,244,255,221,216,139,68,36,4,
462 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0, 463 131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209,
463 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 464 232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209,
464 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233, 465 232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,4,255,222,201,248,
465 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232, 466 5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,241,252,247,216,131,
466 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221, 467 252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,232,195,248,8,217,
467 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224, 468 84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0,0,252,255,15,132,244,
468 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0, 469 248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252,255,15,132,244,250,217,
469 0,252,255,15,132,244,250,217,252,241,252,233,244,151,248,9,255,217,232,255, 470 252,241,252,233,244,155,248,9,255,217,232,255,223,252,234,255,221,252,234,
470 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1, 471 223,224,158,255,15,132,244,247,217,201,248,1,221,216,195,248,2,217,225,217,
471 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217, 472 232,255,15,132,244,249,221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,
472 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201, 473 209,200,51,68,36,4,15,137,244,249,217,201,248,3,221,217,217,225,195,248,4,
473 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216, 474 131,124,36,4,0,15,141,244,3,221,216,221,216,133,192,15,132,244,251,217,252,
474 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217, 475 238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,4,195,255,248,113,255,248,
475 68,36,4,195,255,248,108,255,248,152,252,242,15,45,193,252,242,15,42,208,102, 476 156,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,
476 15,46,202,15,133,244,254,15,138,244,255,248,153,131,252,248,1,15,142,244, 477 244,255,248,157,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,
477 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244, 478 248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
478 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232, 479 15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,
479 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252, 480 252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,
480 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232, 481 132,244,5,15,130,244,253,252,247,216,232,244,1,184,0,0,252,240,63,102,15,
481 244,1,184,0,0,252,240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200, 482 110,200,102,15,112,201,81,252,242,15,94,200,15,40,193,195,248,7,184,0,0,252,
482 15,40,193,195,248,7,184,0,0,252,240,63,102,15,110,192,102,15,112,192,81,195, 483 240,63,102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,
483 248,8,252,242,15,17,76,36,12,252,242,15,17,68,36,4,131,124,36,12,0,15,133, 484 252,242,15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,
484 244,247,139,68,36,16,209,224,61,0,0,224,252,255,15,132,244,248,248,1,131, 485 61,0,0,224,252,255,15,132,244,248,248,1,131,124,36,4,0,15,133,244,247,255,
485 124,36,4,0,15,133,244,247,255,139,68,36,8,209,224,15,132,244,250,61,0,0,224, 486 139,68,36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,
486 252,255,15,132,244,251,248,1,221,68,36,12,221,68,36,4,217,252,241,217,192, 487 1,221,68,36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,
487 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 488 201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,
488 217,221,92,36,4,252,242,15,16,68,36,4,195,248,9,184,0,0,252,240,63,102,15, 489 16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,
489 110,208,102,15,112,210,81,102,15,46,194,15,132,244,247,15,40,193,248,1,195, 490 102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,
490 248,2,102,15,252,239,210,102,15,118,210,102,15,115,210,1,102,15,84,194,184, 491 102,15,118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,
491 0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194,15,132,244, 492 208,102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,
492 1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184, 493 136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,
493 0,0,252,240,127,102,15,110,192,102,15,112,192,81,195,248,4,102,15,80,193, 494 192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,
494 133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244, 495 192,195,248,5,102,15,80,193,133,192,15,132,244,3,255,15,87,192,195,248,158,
495 3,255,15,87,192,195,248,154,255,139,68,36,12,252,242,15,16,68,36,4,131,252, 496 255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,
496 248,1,15,132,244,247,15,135,244,248,232,244,83,252,233,244,253,248,1,232, 497 244,248,232,244,87,252,233,244,253,248,1,232,244,89,252,233,244,253,248,2,
497 244,85,252,233,244,253,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 498 131,252,248,3,15,132,244,247,15,135,244,248,232,244,110,255,252,233,244,253,
498 232,244,105,255,252,233,244,253,248,1,252,242,15,81,192,248,7,252,242,15, 499 248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,
499 17,68,36,4,221,68,36,4,195,248,2,221,68,36,4,131,252,248,5,15,130,244,89, 500 221,68,36,4,131,252,248,5,15,130,244,94,15,132,244,154,248,2,131,252,248,
500 15,132,244,150,248,2,131,252,248,7,15,132,244,247,15,135,244,248,217,252, 501 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,
501 237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131, 502 217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
502 252,248,9,15,132,244,247,15,135,244,248,255,217,252,236,217,201,217,252,241, 503 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
503 195,248,1,217,252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244, 504 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
504 255,217,252,255,195,248,1,217,252,242,221,216,195,255,139,68,36,12,221,68, 505 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,
505 36,4,131,252,248,1,15,130,244,83,15,132,244,85,131,252,248,3,15,130,244,105, 506 87,15,132,244,89,131,252,248,3,15,130,244,110,15,135,244,248,217,252,250,
506 15,135,244,248,217,252,250,195,248,2,131,252,248,5,15,130,244,89,15,132,244, 507 195,248,2,131,252,248,5,15,130,244,94,15,132,244,154,131,252,248,7,15,132,
507 150,131,252,248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252, 508 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,
508 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132, 509 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,
509 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 510 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,
510 252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255, 511 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,
511 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,155,255,139,68,36, 512 216,195,255,248,9,204,255,248,159,255,139,68,36,20,252,242,15,16,68,36,4,
512 20,252,242,15,16,68,36,4,252,242,15,16,76,36,12,131,252,248,1,15,132,244, 513 252,242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,
513 247,15,135,244,248,252,242,15,88,193,248,7,252,242,15,17,68,36,4,221,68,36, 514 15,88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,
514 4,195,248,1,252,242,15,92,193,252,233,244,7,248,2,131,252,248,3,15,132,244, 515 193,252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,
515 247,15,135,244,248,252,242,15,89,193,252,233,244,7,248,1,252,242,15,94,193, 516 15,89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,
516 252,233,244,7,248,2,131,252,248,5,15,132,244,247,255,15,135,244,248,232,244, 517 248,5,15,132,244,247,255,15,135,244,248,232,244,153,252,233,244,7,248,1,90,
517 149,252,233,244,7,248,1,90,232,244,108,82,252,233,244,7,248,2,131,252,248, 518 232,244,113,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
518 7,15,132,244,247,15,135,244,248,184,0,0,0,128,102,15,110,200,102,15,112,201, 519 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,
519 81,15,87,193,252,233,244,7,248,1,102,15,252,239,201,102,15,118,201,102,15, 520 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,
520 115,209,1,15,84,193,252,233,244,7,248,2,255,131,252,248,9,15,135,244,248, 521 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,
521 221,68,36,4,221,68,36,12,15,132,244,247,217,252,243,195,248,1,217,201,217, 522 15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
522 252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,252, 523 2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,252,233,
523 242,15,93,193,252,233,244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204, 524 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,
524 255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15, 525 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
525 135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132, 526 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
526 244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248, 527 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,153,15,132,
527 5,15,130,244,149,15,132,244,108,131,252,248,7,15,132,244,247,15,135,244,248, 528 244,113,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
528 255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15, 529 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
529 132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221, 530 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
530 217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233, 531 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
531 219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223, 532 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
532 224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225, 533 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
533 223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,156, 534 244,248,217,201,248,2,221,216,195,255,248,160,156,90,137,209,129,252,242,
534 156,90,137,209,129,252,242,0,0,32,0,82,157,156,90,49,192,57,209,15,132,244, 535 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
535 247,139,68,36,4,87,83,15,162,139,124,36,16,137,7,137,95,4,137,79,8,137,87, 536 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,161,
536 12,91,95,248,1,195,248,157,255,85,137,229,83,137,203,43,163,233,255,137,163, 537 255,85,137,229,83,137,203,43,163,233,255,137,163,233,255,15,182,139,233,131,
537 233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,139,132,253,139, 538 252,233,1,15,136,244,248,248,1,139,132,253,139,233,137,4,140,131,252,233,
538 233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233,139,147,233,252, 539 1,15,137,244,1,248,2,139,139,233,139,147,233,252,255,147,233,137,131,233,
539 255,147,233,137,131,233,137,147,233,128,187,233,1,15,130,244,253,15,132,244, 540 137,147,233,128,187,233,1,15,130,244,253,15,132,244,252,221,155,233,252,233,
540 252,221,155,233,252,233,244,253,248,6,255,217,155,233,248,7,255,41,163,233, 541 244,253,248,6,255,217,155,233,248,7,255,41,163,233,255,139,93,252,252,201,
541 255,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239,15,135,244,41, 542 195,255,249,255,129,124,253,202,4,239,15,133,244,253,129,124,253,194,4,239,
542 129,124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102, 543 15,133,244,254,139,44,202,131,198,4,59,44,194,255,15,141,244,255,255,15,140,
543 15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255, 544 244,255,255,15,143,244,255,255,15,142,244,255,255,248,6,15,183,70,252,254,
544 218,252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15, 545 141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
545 183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131, 546 252,255,36,171,248,7,15,135,244,41,129,124,253,194,4,239,15,130,244,247,15,
546 198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129,252,253,239, 547 133,244,41,255,252,242,15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,
547 15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194, 548 252,233,244,249,255,248,8,15,135,244,41,255,252,242,15,42,12,202,252,242,
548 102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248, 549 15,16,4,194,131,198,4,102,15,46,193,255,15,134,244,9,255,15,135,244,9,255,
549 255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253, 550 15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,219,4,202,252,233,244,
550 134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248, 551 248,255,129,124,253,202,4,239,15,131,244,41,129,124,253,194,4,239,15,131,
551 5,255,129,252,253,239,15,132,244,46,129,124,253,202,4,239,15,132,244,46,255, 552 244,41,255,248,1,252,242,15,16,4,194,248,2,131,198,4,102,15,46,4,202,248,
552 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, 553 3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,198,4,255,15,134,244,247,
553 57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237, 554 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,
554 15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0, 555 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
555 0,0,255,252,233,244,45,255,248,3,129,252,253,239,15,133,244,2,252,233,244, 556 16,252,255,36,171,255,139,108,194,4,131,198,4,255,129,252,253,239,15,133,
556 46,255,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,133,244,249, 557 244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,
557 139,12,202,59,12,135,255,139,108,202,4,131,198,4,129,252,253,239,15,135,244, 558 133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
558 249,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252, 559 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
559 247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254, 560 7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,
560 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 561 252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,
561 252,255,36,171,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,15,132, 562 255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,
562 244,248,129,252,253,239,15,132,244,46,15,183,70,252,254,141,180,253,134,233, 563 244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,
563 248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 564 251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,
564 139,108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244, 565 4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,
565 247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180, 566 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,
566 253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 567 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,9,
567 36,171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204, 568 255,248,5,255,129,252,253,239,15,132,244,46,129,124,253,202,4,239,15,132,
568 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253, 569 244,46,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,
569 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4, 570 202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,
570 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,49,255,252, 571 133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,
571 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193, 572 255,189,1,0,0,0,255,252,233,244,45,255,248,3,129,252,253,239,255,15,133,244,
572 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194, 573 9,255,252,233,244,46,255,252,247,208,139,108,202,4,131,198,4,129,252,253,
573 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1, 574 239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,
574 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204, 575 252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,
575 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239, 576 59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,
576 15,133,244,51,139,12,194,137,213,232,251,1,19,255,252,242,15,42,192,137,252, 577 15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,249,129,124,
577 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1, 578 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252,
578 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,47, 579 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221,
579 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199, 580 4,194,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248,
580 255,129,124,253,252,234,4,239,15,135,244,48,255,252,242,15,16,4,199,252,242, 581 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,255,252,247,208,
582 139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,141,180,
583 253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
584 36,171,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,15,132,244,248,
585 129,252,253,239,15,132,244,46,15,183,70,252,254,141,180,253,134,233,248,2,
586 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,
587 194,4,131,198,4,129,252,253,239,255,137,108,202,4,139,44,194,137,44,202,255,
588 139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,
589 131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,
590 129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
591 252,255,36,171,255,129,124,253,194,4,239,15,133,244,251,139,44,194,252,247,
592 221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15,182,204,15,
593 182,232,131,198,4,193,232,16,252,255,36,171,248,4,199,68,202,4,0,0,224,65,
594 199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,51,255,129,124,253,194,4,
595 239,15,131,244,51,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,
596 15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,
597 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,248,
598 1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252,
599 242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,
600 182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,15,
601 133,244,54,139,12,194,137,213,232,251,1,20,255,252,242,15,42,192,255,137,
602 4,36,219,4,36,255,137,252,234,15,182,78,252,253,252,233,244,1,255,15,182,
603 252,236,15,182,192,255,129,124,253,252,234,4,239,15,133,244,48,129,124,253,
604 199,4,239,15,133,244,48,139,44,252,234,3,44,199,15,128,244,47,255,129,124,
605 253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,4,
606 199,3,4,252,234,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,53,
607 129,124,253,194,4,239,15,133,244,53,139,44,252,234,3,44,194,15,128,244,52,
608 255,199,68,202,4,237,255,129,124,253,252,234,4,239,15,131,244,48,255,129,
609 124,253,199,4,239,15,131,244,48,255,252,242,15,16,4,252,234,252,242,15,88,
610 4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,
611 50,255,129,124,253,199,4,239,15,131,244,50,255,252,242,15,16,4,199,252,242,
581 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239, 612 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,
582 15,135,244,50,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,252, 613 15,131,244,53,129,124,253,194,4,239,15,131,244,53,255,252,242,15,16,4,252,
583 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252, 614 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,129,124,253,252,234,
584 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4, 615 4,239,15,133,244,48,129,124,253,199,4,239,15,133,244,48,139,44,252,234,43,
585 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16, 616 44,199,15,128,244,47,255,129,124,253,252,234,4,239,15,133,244,50,129,124,
586 4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15, 617 253,199,4,239,15,133,244,50,139,4,199,43,4,252,234,15,128,244,49,255,129,
587 16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242, 618 124,253,252,234,4,239,15,133,244,53,129,124,253,194,4,239,15,133,244,53,139,
588 15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252, 619 44,252,234,43,44,194,15,128,244,52,255,252,242,15,16,4,252,234,252,242,15,
589 242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255, 620 92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,
590 252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199, 621 92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,
591 255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252, 622 242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,252,234,4,239,
592 234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220, 623 15,133,244,48,129,124,253,199,4,239,15,133,244,48,139,44,252,234,15,175,44,
593 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234, 624 199,15,128,244,47,255,129,124,253,252,234,4,239,15,133,244,50,129,124,253,
594 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199, 625 199,4,239,15,133,244,50,139,4,199,15,175,4,252,234,15,128,244,49,255,129,
595 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4, 626 124,253,252,234,4,239,15,133,244,53,129,124,253,194,4,239,15,133,244,53,139,
596 252,234,221,4,194,255,248,158,232,244,149,255,252,233,244,158,255,232,244, 627 44,252,234,15,175,44,194,15,128,244,52,255,252,242,15,16,4,252,234,252,242,
597 108,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36, 628 15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,
598 8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,26,139, 629 15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,
599 149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68, 630 252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,
600 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182, 631 234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,
601 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68, 632 199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,
602 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 633 4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,
603 255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70, 634 16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,
604 252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4, 635 15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,
605 199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131, 636 242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,
606 198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,237,137, 637 248,162,232,244,153,255,252,233,244,162,255,232,244,113,255,15,182,252,236,
607 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15, 638 15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,108,36,48,
608 182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253, 639 137,44,36,137,149,233,137,116,36,24,232,251,1,27,139,149,233,133,192,15,133,
609 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182, 640 244,42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,
610 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139, 641 137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
611 172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77, 642 252,255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,
612 0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6, 643 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,
613 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,232,239, 644 199,68,202,4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,
614 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141, 645 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,
615 139,233,255,232,251,1,27,137,252,234,252,233,244,1,255,252,247,208,139,106, 646 4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,
616 252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252, 647 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,
617 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198, 648 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,
618 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189, 649 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,
619 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,27,137,252,234,252, 650 106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,
620 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141, 651 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
621 233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252, 652 171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,
622 248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232, 653 12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,
623 131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48, 654 15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
624 131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1, 655 255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,
625 28,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 656 235,15,132,244,1,135,213,141,139,233,255,232,251,1,28,137,252,234,252,233,
626 255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76, 657 244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,
627 36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,29,139,149, 658 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,
628 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, 659 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,
629 232,131,198,4,193,232,16,252,255,36,171,255,139,108,36,48,137,149,233,139, 660 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,
630 139,233,59,139,233,137,116,36,24,15,131,244,251,248,1,137,193,37,252,255, 661 232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,
631 7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,132,244,249,248,2,137, 662 16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
632 44,36,137,68,36,4,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199, 663 25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,
664 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,
665 180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,
666 20,202,137,252,233,232,251,1,29,139,149,233,248,1,139,6,15,182,204,15,182,
667 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,
668 4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,
669 36,24,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
670 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,
671 36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248,
672 1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,
673 132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,31,139,149,233,15,182,78,
674 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,
675 193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,
676 232,251,1,32,15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,
677 139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,
678 20,135,137,252,233,232,251,1,33,139,149,233,15,182,78,252,253,137,4,202,199,
633 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 679 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
634 171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,31,15,183, 680 171,248,3,137,252,233,232,251,1,32,15,183,70,252,254,252,247,208,252,233,
635 70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116, 681 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,163,
636 36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233, 682 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,164,255,
637 232,251,1,32,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139, 683 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,
638 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252, 684 252,234,255,129,124,253,194,4,239,15,133,244,251,139,4,194,255,129,124,253,
639 233,232,251,1,31,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247, 685 194,4,239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,
640 208,139,106,252,248,139,173,233,139,4,135,252,233,244,159,255,252,247,208, 686 15,42,200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,
641 139,106,252,248,139,173,233,139,4,135,252,233,244,160,255,15,182,252,236, 687 255,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,
642 15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,
643 253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,
644 242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,
645 36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,
646 244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15, 688 244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,
647 182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244, 689 182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,
648 249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3, 690 249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3,
649 255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244, 691 199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
650 36,139,4,194,252,233,244,159,255,15,182,252,236,15,182,192,252,247,208,139, 692 36,139,4,194,252,233,244,163,255,15,182,252,236,15,182,192,252,247,208,139,
651 4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,159,139, 693 4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,163,139,
652 141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244, 694 141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,
653 250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70, 695 250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,
654 252,253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204, 696 252,253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204,
@@ -661,123 +703,131 @@ static const unsigned char build_actionlist[15851] = {
661 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233, 703 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,
662 0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182, 704 0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,
663 78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182, 705 78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,
664 192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194, 706 192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,15,133,244,
665 4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3, 707 39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,
666 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133, 708 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,
667 244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15, 709 139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,
668 182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244, 710 16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
669 1,139,141,233,255,252,246,129,233,235,15,132,244,39,15,182,78,252,253,252, 711 233,235,255,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,
670 233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,194,252,233,244, 712 194,4,239,15,133,244,39,139,4,194,252,233,244,164,248,7,128,165,233,235,139,
671 160,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252, 713 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,
672 253,252,233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129, 714 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
673 124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,160,139,141,233,35, 715 244,37,139,44,252,234,248,164,139,141,233,35,136,233,105,201,239,198,133,
674 136,233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133, 716 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
675 244,251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2, 717 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
676 255,252,246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194, 718 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,
677 4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232, 719 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,
678 16,252,255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233, 720 233,0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,
679 252,246,129,233,235,15,132,244,37,139,76,36,16,252,233,244,2,248,5,139,137, 721 37,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,
680 233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129, 722 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,
681 233,235,15,132,244,37,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141, 723 6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,
682 68,36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137, 724 108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,34,139,
683 116,36,24,232,251,1,33,139,149,233,139,108,36,12,137,193,252,233,244,2,248, 725 149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,
684 7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15, 726 233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,
685 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44,252, 727 124,253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,
686 234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132, 728 38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,
687 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139, 729 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,
688 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 730 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,
689 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233, 731 233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,
690 235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, 732 78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,
691 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124, 733 141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,139,60,199,248,
692 36,16,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15, 734 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
693 133,244,253,248,2,139,68,36,20,131,232,1,15,132,244,250,1,252,248,59,133, 735 68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,233,15,135,244,251,41,
694 233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139, 736 252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,
695 105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 737 4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,
696 36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 738 182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,
697 5,137,108,36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36, 739 48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,1,35,139,149,233,
698 24,232,251,1,34,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 740 15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,137,
699 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 741 171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,
700 20,255,129,124,253,202,4,239,139,44,202,15,133,244,52,141,84,202,8,137,114, 742 139,44,202,15,133,244,55,141,84,202,8,137,114,252,252,139,181,233,139,14,
701 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 743 15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,
702 171,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133, 744 139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,56,139,114,252,
703 244,28,248,53,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106, 745 252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,
704 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105, 746 232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,131,193,8,137,111,4,131,
705 4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248, 747 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,
706 3,139,68,36,20,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182, 748 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
707 252,233,15,182,205,131,198,4,252,255,36,171,248,5,255,252,247,198,237,15, 749 4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,
708 133,244,4,15,182,78,252,253,252,247,209,141,12,202,139,121,252,248,139,191, 750 252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,
709 233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15,133, 751 4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,137,215,
710 244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198,239, 752 139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,141,76,
711 252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4, 753 202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,
712 139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,228, 754 244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,
713 137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,28,137, 755 252,129,252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,139,181,
714 202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198, 756 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,137,124,
715 4,252,255,36,171,255,137,124,36,16,137,92,36,20,139,108,202,252,240,139,68, 757 36,16,137,92,36,20,139,108,202,252,240,139,68,202,252,248,139,157,233,131,
716 202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,15,131,244,251, 758 198,4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,
717 129,124,253,199,4,239,15,132,244,250,255,252,242,15,42,192,255,219,68,202, 759 244,250,255,219,68,202,252,248,255,139,108,199,4,137,108,202,12,139,44,199,
718 252,248,255,139,108,199,4,137,108,202,12,139,44,199,137,108,202,8,131,192, 760 137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,
719 1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248, 761 180,253,134,233,248,3,139,92,36,20,139,124,36,16,139,6,15,182,204,15,182,
720 3,139,92,36,20,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232, 762 232,131,198,4,193,232,16,252,255,36,171,248,4,131,192,1,255,137,68,202,252,
721 16,252,255,36,171,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244, 763 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252,
722 1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129, 764 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,139,175,233,
723 191,233,239,15,132,244,253,141,92,24,1,139,175,233,139,135,233,137,44,202, 765 139,135,233,137,44,202,137,68,202,4,139,175,233,139,135,233,137,108,202,8,
724 137,68,202,4,139,175,233,139,135,233,137,108,202,8,137,68,202,12,137,92,202, 766 137,68,202,12,137,92,202,252,248,252,233,244,2,248,7,255,131,192,1,252,233,
725 252,248,252,233,244,2,248,7,255,131,192,1,252,233,244,6,255,129,124,253,202, 767 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
726 252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239,15, 768 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
727 133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235,15, 769 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
728 133,244,251,141,180,253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15, 770 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
729 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,198,70,252,252, 771 36,171,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,244,
730 235,141,180,253,134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182, 772 1,255,15,182,252,236,15,182,192,137,124,36,16,141,188,253,194,233,141,12,
731 192,137,124,36,16,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237, 773 202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,
732 15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248,1,139,71, 774 215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,
733 252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,233,15,131, 775 65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,
734 244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130, 776 4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182,
735 244,2,248,3,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 777 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,
736 252,255,36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3, 778 0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,
737 137,197,193,252,237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133, 779 36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,255,139,71,252,
738 233,15,135,244,253,248,6,255,139,71,252,248,137,1,139,71,252,252,131,199, 780 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
739 8,137,65,4,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233, 781 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,139,84,36,
740 137,141,233,137,116,36,24,41,215,139,84,36,20,131,252,234,1,137,252,233,232, 782 20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,
741 251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248, 783 233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,
742 1,139,114,252,252,137,68,36,20,252,247,198,237,15,133,244,253,255,248,13, 784 237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,139,
743 137,215,131,232,1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108, 785 44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15,
744 15,4,137,111,252,252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20, 786 133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252,
745 15,182,110,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252, 787 255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,70,
746 252,139,44,10,137,106,252,248,255,248,5,56,70,252,255,15,135,244,252,255, 788 252,255,15,135,244,252,255,15,182,78,252,253,252,247,209,141,20,202,139,122,
747 15,182,78,252,253,252,247,209,141,20,202,139,122,252,248,139,191,233,139, 789 252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,
748 191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 790 232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,
749 6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,192, 791 252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,
750 1,252,233,244,5,248,7,141,174,233,252,247,197,237,15,133,244,14,41,252,234, 792 15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,
751 255,1,252,233,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43, 793 239,102,131,172,253,43,233,1,15,132,244,145,255,141,12,202,255,129,121,253,
752 233,1,15,132,244,141,255,141,12,202,255,129,121,253,4,239,15,135,244,54,129, 794 4,239,15,133,244,255,255,129,121,253,12,239,15,133,244,57,129,121,253,20,
753 121,253,12,239,15,135,244,54,255,139,105,20,255,129,252,253,239,15,135,244, 795 239,15,133,244,57,139,41,131,121,16,0,15,140,244,251,255,139,105,16,133,252,
754 54,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242, 796 237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,
755 15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248, 797 137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,
798 253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,
799 6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,
800 4,193,232,16,252,255,36,171,248,5,255,3,41,15,128,244,1,137,41,255,15,141,
801 244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,
802 7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,57,129,121,
803 253,12,239,15,131,244,57,255,139,105,20,255,129,252,253,239,15,131,244,57,
804 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,
805 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,
756 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133, 806 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,
757 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255, 807 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,
758 15,183,70,252,254,255,15,131,244,248,141,180,253,134,233,255,141,180,253, 808 15,183,70,252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,
759 134,233,15,183,70,252,254,15,131,245,255,15,130,244,248,141,180,253,134,233, 809 255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,
760 255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253, 810 15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,
761 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245, 811 255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,
762 255,141,180,253,134,233,139,1,137,105,252,252,137,65,252,248,255,139,139, 812 139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,
763 233,139,4,129,139,128,233,139,108,36,48,137,147,233,137,171,233,252,255,224, 813 252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,
764 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 814 137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,
765 252,255,36,171,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43, 815 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,252,245,209,252,
766 233,1,15,132,244,143,255,139,190,233,139,108,36,48,141,12,202,59,141,233, 816 237,129,229,239,102,131,172,253,43,233,1,15,132,244,147,255,139,190,233,139,
767 15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252, 817 108,36,48,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,
768 254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, 818 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,
769 244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104, 819 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,
770 252,252,137,120,252,248,139,108,36,48,141,12,200,59,141,233,15,135,244,22, 820 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,
771 137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8, 821 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,
772 57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131, 822 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
773 192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233, 823 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
774 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3, 824 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
775 199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106, 825 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,
776 252,248,139,189,233,139,108,36,48,141,68,194,252,248,137,149,233,141,136, 826 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,
777 233,59,141,233,137,133,233,255,137,44,36,255,137,124,36,4,137,44,36,255,15, 827 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,
778 135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,255,199,131, 828 137,124,36,4,137,44,36,255,15,135,244,21,199,131,233,237,255,252,255,215,
779 233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,252,252,252, 829 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,
780 233,244,12,255,254,0 830 3,141,233,139,114,252,252,252,233,244,12,255,254,0
781}; 831};
782 832
783enum { 833enum {
@@ -818,9 +868,12 @@ enum {
818 GLOB_cont_condf, 868 GLOB_cont_condf,
819 GLOB_vmeta_equal, 869 GLOB_vmeta_equal,
820 GLOB_vmeta_equal_cd, 870 GLOB_vmeta_equal_cd,
871 GLOB_vmeta_arith_vno,
821 GLOB_vmeta_arith_vn, 872 GLOB_vmeta_arith_vn,
873 GLOB_vmeta_arith_nvo,
822 GLOB_vmeta_arith_nv, 874 GLOB_vmeta_arith_nv,
823 GLOB_vmeta_unm, 875 GLOB_vmeta_unm,
876 GLOB_vmeta_arith_vvo,
824 GLOB_vmeta_arith_vv, 877 GLOB_vmeta_arith_vv,
825 GLOB_vmeta_len, 878 GLOB_vmeta_len,
826 GLOB_vmeta_call_ra, 879 GLOB_vmeta_call_ra,
@@ -835,6 +888,7 @@ enum {
835 GLOB_ff_setmetatable, 888 GLOB_ff_setmetatable,
836 GLOB_ff_rawget, 889 GLOB_ff_rawget,
837 GLOB_ff_tonumber, 890 GLOB_ff_tonumber,
891 GLOB_fff_resi,
838 GLOB_fff_resxmm0, 892 GLOB_fff_resxmm0,
839 GLOB_fff_resn, 893 GLOB_fff_resn,
840 GLOB_ff_tostring, 894 GLOB_ff_tostring,
@@ -852,11 +906,12 @@ enum {
852 GLOB_ff_coroutine_wrap_aux, 906 GLOB_ff_coroutine_wrap_aux,
853 GLOB_ff_coroutine_yield, 907 GLOB_ff_coroutine_yield,
854 GLOB_ff_math_abs, 908 GLOB_ff_math_abs,
855 GLOB_ff_math_sqrt, 909 GLOB_fff_resbit,
856 GLOB_ff_math_floor, 910 GLOB_ff_math_floor,
857 GLOB_vm_floor, 911 GLOB_vm_floor,
858 GLOB_ff_math_ceil, 912 GLOB_ff_math_ceil,
859 GLOB_vm_ceil, 913 GLOB_vm_ceil,
914 GLOB_ff_math_sqrt,
860 GLOB_ff_math_log, 915 GLOB_ff_math_log,
861 GLOB_ff_math_log10, 916 GLOB_ff_math_log10,
862 GLOB_ff_math_exp, 917 GLOB_ff_math_exp,
@@ -897,7 +952,6 @@ enum {
897 GLOB_ff_table_getn, 952 GLOB_ff_table_getn,
898 GLOB_ff_bit_tobit, 953 GLOB_ff_bit_tobit,
899 GLOB_ff_bit_band, 954 GLOB_ff_bit_band,
900 GLOB_fff_resbit,
901 GLOB_fff_fallback_bit_op, 955 GLOB_fff_fallback_bit_op,
902 GLOB_ff_bit_bor, 956 GLOB_ff_bit_bor,
903 GLOB_ff_bit_bxor, 957 GLOB_ff_bit_bxor,
@@ -972,9 +1026,12 @@ static const char *const globnames[] = {
972 "cont_condf", 1026 "cont_condf",
973 "vmeta_equal", 1027 "vmeta_equal",
974 "vmeta_equal_cd", 1028 "vmeta_equal_cd",
1029 "vmeta_arith_vno",
975 "vmeta_arith_vn", 1030 "vmeta_arith_vn",
1031 "vmeta_arith_nvo",
976 "vmeta_arith_nv", 1032 "vmeta_arith_nv",
977 "vmeta_unm", 1033 "vmeta_unm",
1034 "vmeta_arith_vvo",
978 "vmeta_arith_vv", 1035 "vmeta_arith_vv",
979 "vmeta_len", 1036 "vmeta_len",
980 "vmeta_call_ra", 1037 "vmeta_call_ra",
@@ -989,6 +1046,7 @@ static const char *const globnames[] = {
989 "ff_setmetatable", 1046 "ff_setmetatable",
990 "ff_rawget", 1047 "ff_rawget",
991 "ff_tonumber", 1048 "ff_tonumber",
1049 "fff_resi",
992 "fff_resxmm0", 1050 "fff_resxmm0",
993 "fff_resn", 1051 "fff_resn",
994 "ff_tostring", 1052 "ff_tostring",
@@ -1006,11 +1064,12 @@ static const char *const globnames[] = {
1006 "ff_coroutine_wrap_aux", 1064 "ff_coroutine_wrap_aux",
1007 "ff_coroutine_yield", 1065 "ff_coroutine_yield",
1008 "ff_math_abs", 1066 "ff_math_abs",
1009 "ff_math_sqrt", 1067 "fff_resbit",
1010 "ff_math_floor", 1068 "ff_math_floor",
1011 "vm_floor", 1069 "vm_floor",
1012 "ff_math_ceil", 1070 "ff_math_ceil",
1013 "vm_ceil", 1071 "vm_ceil",
1072 "ff_math_sqrt",
1014 "ff_math_log", 1073 "ff_math_log",
1015 "ff_math_log10", 1074 "ff_math_log10",
1016 "ff_math_exp", 1075 "ff_math_exp",
@@ -1051,7 +1110,6 @@ static const char *const globnames[] = {
1051 "ff_table_getn", 1110 "ff_table_getn",
1052 "ff_bit_tobit", 1111 "ff_bit_tobit",
1053 "ff_bit_band", 1112 "ff_bit_band",
1054 "fff_resbit",
1055 "fff_fallback_bit_op", 1113 "fff_fallback_bit_op",
1056 "ff_bit_bor", 1114 "ff_bit_bor",
1057 "ff_bit_bxor", 1115 "ff_bit_bxor",
@@ -1100,6 +1158,7 @@ static const char *const extnames[] = {
1100 "lj_meta_call", 1158 "lj_meta_call",
1101 "lj_meta_for@8", 1159 "lj_meta_for@8",
1102 "lj_tab_get", 1160 "lj_tab_get",
1161 "lj_str_fromnumber@8",
1103 "lj_str_fromnum@8", 1162 "lj_str_fromnum@8",
1104 "lj_tab_next", 1163 "lj_tab_next",
1105 "lj_tab_getinth@8", 1164 "lj_tab_getinth@8",
@@ -1156,446 +1215,751 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1156 dasm_put(Dst, 497, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 1215 dasm_put(Dst, 497, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
1157 dasm_put(Dst, 588, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k)); 1216 dasm_put(Dst, 588, LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pc), PC2PROTO(k));
1158 dasm_put(Dst, 760, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1217 dasm_put(Dst, 760, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1159 if (sse) { 1218 if (LJ_DUALNUM) {
1160 dasm_put(Dst, 856); 1219 dasm_put(Dst, 856, LJ_TISNUM);
1220 } else if (sse) {
1221 dasm_put(Dst, 866);
1161 } else { 1222 } else {
1162 dasm_put(Dst, 869); 1223 dasm_put(Dst, 879);
1163 } 1224 }
1164 dasm_put(Dst, 882, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET); 1225 dasm_put(Dst, 892, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
1165 dasm_put(Dst, 1034, DISPATCH_GL(tmptv), LJ_TTAB); 1226 dasm_put(Dst, 1044, DISPATCH_GL(tmptv), LJ_TTAB);
1166 if (sse) { 1227 if (LJ_DUALNUM) {
1167 dasm_put(Dst, 856); 1228 dasm_put(Dst, 856, LJ_TISNUM);
1229 } else if (sse) {
1230 dasm_put(Dst, 866);
1168 } else { 1231 } else {
1169 dasm_put(Dst, 869); 1232 dasm_put(Dst, 879);
1170 } 1233 }
1171 dasm_put(Dst, 1057, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1234 dasm_put(Dst, 1067, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1172 dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1235 dasm_put(Dst, 1261, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1173 dasm_put(Dst, 1358); 1236 dasm_put(Dst, 1368);
1174#if LJ_HASFFI 1237#if LJ_HASFFI
1175 dasm_put(Dst, 1373, Dt1(->base)); 1238 dasm_put(Dst, 1383, Dt1(->base));
1239#endif
1240 dasm_put(Dst, 1414);
1241#if LJ_DUALNUM
1242 dasm_put(Dst, 1417);
1243#endif
1244 dasm_put(Dst, 1423);
1245#if LJ_DUALNUM
1246 dasm_put(Dst, 850);
1247#endif
1248 dasm_put(Dst, 1435);
1249#if LJ_DUALNUM
1250 dasm_put(Dst, 1417);
1176#endif 1251#endif
1177 dasm_put(Dst, 1404, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1); 1252 dasm_put(Dst, 1463, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base), Dt1(->base));
1178 dasm_put(Dst, 1524, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND); 1253 dasm_put(Dst, 1618, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1179 dasm_put(Dst, 1712, 1+1, ~LJ_TNUMX); 1254 dasm_put(Dst, 1795, 1+1, ~LJ_TNUMX);
1180 if (cmov) { 1255 if (cmov) {
1181 dasm_put(Dst, 1799); 1256 dasm_put(Dst, 1824);
1182 } else { 1257 } else {
1183 dasm_put(Dst, 1803); 1258 dasm_put(Dst, 1828);
1259 }
1260 dasm_put(Dst, 1837, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
1261 dasm_put(Dst, 1920, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1262 dasm_put(Dst, 1978, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
1263 dasm_put(Dst, 2041, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1264 dasm_put(Dst, 2113, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1265 if (LJ_DUALNUM) {
1266 dasm_put(Dst, 2202);
1267 } else {
1268 dasm_put(Dst, 2219);
1184 } 1269 }
1185 dasm_put(Dst, 1812, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
1186 dasm_put(Dst, 1895, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1187 dasm_put(Dst, 1953, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
1188 dasm_put(Dst, 2016, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1189 dasm_put(Dst, 2088, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1190 if (sse) { 1270 if (sse) {
1191 dasm_put(Dst, 2181); 1271 dasm_put(Dst, 2224);
1272 } else {
1273 dasm_put(Dst, 2234);
1274 }
1275 dasm_put(Dst, 2241, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1276 dasm_put(Dst, 2307, Dt1(->base));
1277 if (LJ_DUALNUM) {
1278 dasm_put(Dst, 2331);
1192 } else { 1279 } else {
1193 dasm_put(Dst, 2191); 1280 dasm_put(Dst, 2336);
1194 } 1281 }
1195 dasm_put(Dst, 2198, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1282 dasm_put(Dst, 2341, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
1196 dasm_put(Dst, 2264, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1283 dasm_put(Dst, 2450, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1197 dasm_put(Dst, 2331, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
1198 dasm_put(Dst, 2436, LJ_TTAB);
1199#ifdef LUAJIT_ENABLE_LUA52COMPAT 1284#ifdef LUAJIT_ENABLE_LUA52COMPAT
1200 dasm_put(Dst, 2448, Dt6(->metatable)); 1285 dasm_put(Dst, 2497, Dt6(->metatable));
1201#endif 1286#endif
1202 dasm_put(Dst, 2457, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1287 dasm_put(Dst, 2506, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1203 if (sse) { 1288 if (LJ_DUALNUM) {
1204 dasm_put(Dst, 2520); 1289 dasm_put(Dst, 2492);
1290 } else {
1291 dasm_put(Dst, 2219);
1292 }
1293 dasm_put(Dst, 2561);
1294 if (LJ_DUALNUM) {
1295 dasm_put(Dst, 2566, LJ_TISNUM);
1296 } else if (sse) {
1297 dasm_put(Dst, 2582);
1205 } else { 1298 } else {
1206 dasm_put(Dst, 2559); 1299 dasm_put(Dst, 2621);
1207 } 1300 }
1208 dasm_put(Dst, 2577, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1301 dasm_put(Dst, 2639, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1209 dasm_put(Dst, 2658, 1+1, LJ_TTAB); 1302 dasm_put(Dst, 2477, 1+1, LJ_TTAB);
1210#ifdef LUAJIT_ENABLE_LUA52COMPAT 1303#ifdef LUAJIT_ENABLE_LUA52COMPAT
1211 dasm_put(Dst, 2448, Dt6(->metatable)); 1304 dasm_put(Dst, 2497, Dt6(->metatable));
1212#endif 1305#endif
1213 dasm_put(Dst, 2678, Dt8(->upvalue[0]), LJ_TFUNC); 1306 dasm_put(Dst, 2720, Dt8(->upvalue[0]), LJ_TFUNC);
1307 if (LJ_DUALNUM) {
1308 dasm_put(Dst, 2741, LJ_TISNUM);
1309 } else if (sse) {
1310 dasm_put(Dst, 2753);
1311 } else {
1312 dasm_put(Dst, 2763);
1313 }
1314 dasm_put(Dst, 2770, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1315 dasm_put(Dst, 2834, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1316 dasm_put(Dst, 2922, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1317 dasm_put(Dst, 3023, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1318 dasm_put(Dst, 3137, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1319 dasm_put(Dst, 3235, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1320 dasm_put(Dst, 3301, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1321 dasm_put(Dst, 3402, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1322 dasm_put(Dst, 3515, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1323 if (!LJ_DUALNUM) {
1324 dasm_put(Dst, 3541);
1325 }
1214 if (sse) { 1326 if (sse) {
1215 dasm_put(Dst, 2699); 1327 dasm_put(Dst, 3544);
1216 } else { 1328 }
1217 dasm_put(Dst, 2709); 1329 dasm_put(Dst, 3559, 1+1);
1218 } 1330 if (LJ_DUALNUM) {
1219 dasm_put(Dst, 2716, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1331 dasm_put(Dst, 3570, LJ_TISNUM, LJ_TISNUM);
1220 dasm_put(Dst, 2780, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1332 } else {
1221 dasm_put(Dst, 2868, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1333 dasm_put(Dst, 3650, LJ_TISNUM);
1222 dasm_put(Dst, 2969, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1334 }
1223 dasm_put(Dst, 3083, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1224 dasm_put(Dst, 3181, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1225 dasm_put(Dst, 3247, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1226 dasm_put(Dst, 3348, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1227 dasm_put(Dst, 3461, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1228 if (sse) { 1335 if (sse) {
1229 dasm_put(Dst, 3487, 1+1, LJ_TISNUM); 1336 dasm_put(Dst, 3660);
1230 } else { 1337 } else {
1231 dasm_put(Dst, 3556, 1+1, LJ_TISNUM); 1338 dasm_put(Dst, 3696);
1339 }
1340 dasm_put(Dst, 3713, 1+1, FRAME_TYPE, LJ_TNIL);
1341 if (LJ_DUALNUM) {
1342 dasm_put(Dst, 3805, LJ_TISNUM);
1343 } else {
1344 dasm_put(Dst, 3650, LJ_TISNUM);
1232 } 1345 }
1233 dasm_put(Dst, 3592, 1+1, FRAME_TYPE, LJ_TNIL);
1234 if (sse) { 1346 if (sse) {
1235 dasm_put(Dst, 3682, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1347 dasm_put(Dst, 3827);
1236 dasm_put(Dst, 3744, 1+1, LJ_TISNUM); 1348 if (LJ_DUALNUM) {
1349 dasm_put(Dst, 3836);
1350 }
1351 dasm_put(Dst, 2229);
1352 } else {
1353 dasm_put(Dst, 3870);
1354 if (LJ_DUALNUM) {
1355 dasm_put(Dst, 3876);
1356 if (cmov) {
1357 dasm_put(Dst, 3899);
1237 } else { 1358 } else {
1238 dasm_put(Dst, 3774, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1359 dasm_put(Dst, 3905);
1239 dasm_put(Dst, 3833, 1+1, LJ_TISNUM); 1360 }
1361 dasm_put(Dst, 3912);
1362 } else {
1363 dasm_put(Dst, 2236);
1364 }
1365 }
1366 dasm_put(Dst, 3929);
1367 if (LJ_DUALNUM) {
1368 dasm_put(Dst, 3805, LJ_TISNUM);
1369 } else {
1370 dasm_put(Dst, 3650, LJ_TISNUM);
1240 } 1371 }
1241 dasm_put(Dst, 3860, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1242 dasm_put(Dst, 3929, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1243 dasm_put(Dst, 3986, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1244 dasm_put(Dst, 4049, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1245 dasm_put(Dst, 4139);
1246 if (sse) { 1372 if (sse) {
1247 dasm_put(Dst, 4151, 1+1, LJ_TISNUM); 1373 dasm_put(Dst, 3932);
1374 if (LJ_DUALNUM) {
1375 dasm_put(Dst, 3836);
1376 }
1377 dasm_put(Dst, 2229);
1378 } else {
1379 dasm_put(Dst, 3941);
1380 if (LJ_DUALNUM) {
1381 dasm_put(Dst, 3876);
1382 if (cmov) {
1383 dasm_put(Dst, 3899);
1248 } else { 1384 } else {
1249 dasm_put(Dst, 4182, 1+1, LJ_TISNUM); 1385 dasm_put(Dst, 3905);
1386 }
1387 dasm_put(Dst, 3912);
1388 } else {
1389 dasm_put(Dst, 2236);
1390 }
1250 } 1391 }
1251 dasm_put(Dst, 4207);
1252 if (sse) { 1392 if (sse) {
1253 dasm_put(Dst, 4221, 1+1, LJ_TISNUM); 1393 dasm_put(Dst, 3947, 1+1, LJ_TISNUM);
1254 } else { 1394 } else {
1255 dasm_put(Dst, 4252, 1+1, LJ_TISNUM); 1395 dasm_put(Dst, 3976, 1+1, LJ_TISNUM);
1256 } 1396 }
1257 dasm_put(Dst, 4277); 1397 dasm_put(Dst, 4005, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1398 dasm_put(Dst, 4074, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1399 dasm_put(Dst, 4131, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1400 dasm_put(Dst, 4194, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1401 dasm_put(Dst, 4284);
1258 if (sse) { 1402 if (sse) {
1259 dasm_put(Dst, 4291, 1+1, LJ_TISNUM); 1403 dasm_put(Dst, 4296, 1+1, LJ_TISNUM);
1260 } else { 1404 } else {
1261 dasm_put(Dst, 4322, 1+1, LJ_TISNUM); 1405 dasm_put(Dst, 4327, 1+1, LJ_TISNUM);
1262 } 1406 }
1263 dasm_put(Dst, 4347); 1407 dasm_put(Dst, 4352);
1264 if (sse) { 1408 if (sse) {
1265 dasm_put(Dst, 4363, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1409 dasm_put(Dst, 4366, 1+1, LJ_TISNUM);
1266 } else { 1410 } else {
1267 dasm_put(Dst, 4402, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1411 dasm_put(Dst, 4397, 1+1, LJ_TISNUM);
1268 } 1412 }
1269 dasm_put(Dst, 4435, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1413 dasm_put(Dst, 4422);
1270 dasm_put(Dst, 4500, 1+1, LJ_TISNUM);
1271 if (sse) { 1414 if (sse) {
1272 dasm_put(Dst, 4599); 1415 dasm_put(Dst, 4436, 1+1, LJ_TISNUM);
1273 } else { 1416 } else {
1274 dasm_put(Dst, 4605); 1417 dasm_put(Dst, 4467, 1+1, LJ_TISNUM);
1275 } 1418 }
1276 dasm_put(Dst, 4614); 1419 dasm_put(Dst, 4492);
1277 if (sse) { 1420 if (sse) {
1278 dasm_put(Dst, 4639); 1421 dasm_put(Dst, 4508, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1279 } else { 1422 } else {
1280 dasm_put(Dst, 4645); 1423 dasm_put(Dst, 4547, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1281 } 1424 }
1282 dasm_put(Dst, 4648, 1+2); 1425 dasm_put(Dst, 4580, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1426 dasm_put(Dst, 4645, 1+1, LJ_TISNUM);
1283 if (sse) { 1427 if (sse) {
1284 dasm_put(Dst, 4657); 1428 dasm_put(Dst, 4744);
1285 } else { 1429 } else {
1286 dasm_put(Dst, 4665); 1430 dasm_put(Dst, 4750);
1287 } 1431 }
1288 dasm_put(Dst, 4673); 1432 dasm_put(Dst, 4759);
1289 if (sse) { 1433 if (sse) {
1290 dasm_put(Dst, 4676); 1434 dasm_put(Dst, 4784);
1291 } else { 1435 } else {
1292 dasm_put(Dst, 4708); 1436 dasm_put(Dst, 4790);
1293 } 1437 }
1294 dasm_put(Dst, 4727); 1438 dasm_put(Dst, 4793, 1+2);
1295 if (sse) { 1439 if (sse) {
1296 dasm_put(Dst, 4743, 1+1, LJ_TISNUM); 1440 dasm_put(Dst, 4802);
1297 } else { 1441 } else {
1298 dasm_put(Dst, 4768, 1+1, LJ_TISNUM); 1442 dasm_put(Dst, 4810);
1299 } 1443 }
1300 dasm_put(Dst, 4790); 1444 dasm_put(Dst, 4818);
1301 if (sse) { 1445 if (sse) {
1302 dasm_put(Dst, 4812); 1446 dasm_put(Dst, 4821);
1303 } else { 1447 } else {
1304 dasm_put(Dst, 4838); 1448 dasm_put(Dst, 4853);
1305 } 1449 }
1306 dasm_put(Dst, 4855, 1+2); 1450 dasm_put(Dst, 4872);
1307 if (sse) { 1451 if (sse) {
1308 dasm_put(Dst, 4895); 1452 dasm_put(Dst, 4888, 1+1, LJ_TISNUM);
1309 } else { 1453 } else {
1310 dasm_put(Dst, 4903); 1454 dasm_put(Dst, 4913, 1+1, LJ_TISNUM);
1311 } 1455 }
1312 dasm_put(Dst, 4913, 2+1, LJ_TISNUM, LJ_TISNUM); 1456 dasm_put(Dst, 4935);
1313 if (sse) { 1457 if (sse) {
1314 dasm_put(Dst, 4965, 2+1, LJ_TISNUM, LJ_TISNUM); 1458 dasm_put(Dst, 4957);
1315 } else { 1459 } else {
1316 dasm_put(Dst, 5012, 2+1, LJ_TISNUM, LJ_TISNUM); 1460 dasm_put(Dst, 4983);
1317 } 1461 }
1462 dasm_put(Dst, 5000, 1+2);
1318 if (sse) { 1463 if (sse) {
1319 dasm_put(Dst, 5053, 1+1, LJ_TISNUM, LJ_TISNUM); 1464 dasm_put(Dst, 5040);
1320 } else { 1465 } else {
1321 dasm_put(Dst, 5124, 1+1, LJ_TISNUM, LJ_TISNUM); 1466 dasm_put(Dst, 5048);
1467 }
1468 dasm_put(Dst, 5058, 2+1, LJ_TISNUM, LJ_TISNUM);
1469 if (sse) {
1470 dasm_put(Dst, 5110, 2+1, LJ_TISNUM, LJ_TISNUM);
1471 } else {
1472 dasm_put(Dst, 5157, 2+1, LJ_TISNUM, LJ_TISNUM);
1473 }
1474 dasm_put(Dst, 5198, LJ_TISNUM);
1475 if (LJ_DUALNUM) {
1476 dasm_put(Dst, 5211, LJ_TISNUM);
1477 if (sse) {
1478 dasm_put(Dst, 4744);
1479 } else {
1480 dasm_put(Dst, 4750);
1481 }
1482 dasm_put(Dst, 5261);
1483 } else {
1484 dasm_put(Dst, 2219);
1485 }
1486 if (sse) {
1487 dasm_put(Dst, 5272, LJ_TISNUM);
1488 if (LJ_DUALNUM) {
1489 dasm_put(Dst, 5293);
1490 } else {
1491 dasm_put(Dst, 2219);
1492 }
1493 dasm_put(Dst, 5314);
1494 } else {
1495 dasm_put(Dst, 5339, LJ_TISNUM);
1496 if (LJ_DUALNUM) {
1497 dasm_put(Dst, 5357);
1498 } else {
1499 dasm_put(Dst, 5375);
1500 }
1501 dasm_put(Dst, 5380);
1322 if (cmov) { 1502 if (cmov) {
1323 dasm_put(Dst, 5177); 1503 dasm_put(Dst, 5390);
1504 } else {
1505 dasm_put(Dst, 5398);
1506 }
1507 dasm_put(Dst, 5331);
1508 }
1509 dasm_put(Dst, 5419, LJ_TISNUM);
1510 if (LJ_DUALNUM) {
1511 dasm_put(Dst, 5432, LJ_TISNUM);
1512 if (sse) {
1513 dasm_put(Dst, 4744);
1324 } else { 1514 } else {
1325 dasm_put(Dst, 5185); 1515 dasm_put(Dst, 4750);
1326 } 1516 }
1327 dasm_put(Dst, 5116); 1517 dasm_put(Dst, 5261);
1518 } else {
1519 dasm_put(Dst, 2219);
1328 } 1520 }
1329 if (sse) { 1521 if (sse) {
1330 dasm_put(Dst, 5206, 1+1, LJ_TISNUM, LJ_TISNUM); 1522 dasm_put(Dst, 5272, LJ_TISNUM);
1523 if (LJ_DUALNUM) {
1524 dasm_put(Dst, 5293);
1525 } else {
1526 dasm_put(Dst, 2219);
1527 }
1528 dasm_put(Dst, 5482);
1529 } else {
1530 dasm_put(Dst, 5339, LJ_TISNUM);
1531 if (LJ_DUALNUM) {
1532 dasm_put(Dst, 5357);
1331 } else { 1533 } else {
1332 dasm_put(Dst, 5277, 1+1, LJ_TISNUM, LJ_TISNUM); 1534 dasm_put(Dst, 5375);
1535 }
1536 dasm_put(Dst, 5380);
1333 if (cmov) { 1537 if (cmov) {
1334 dasm_put(Dst, 5330); 1538 dasm_put(Dst, 5507);
1335 } else { 1539 } else {
1336 dasm_put(Dst, 5338); 1540 dasm_put(Dst, 5515);
1337 } 1541 }
1338 dasm_put(Dst, 5116); 1542 dasm_put(Dst, 5331);
1339 } 1543 }
1340 if (!sse) { 1544 if (!sse) {
1341 dasm_put(Dst, 5359); 1545 dasm_put(Dst, 5536);
1342 } 1546 }
1343 dasm_put(Dst, 5368, 1+1, LJ_TSTR); 1547 dasm_put(Dst, 5545, 1+1, LJ_TSTR);
1344 if (sse) { 1548 if (LJ_DUALNUM) {
1345 dasm_put(Dst, 5390, Dt5(->len)); 1549 dasm_put(Dst, 5567, Dt5(->len));
1550 } else if (sse) {
1551 dasm_put(Dst, 5575, Dt5(->len));
1346 } else { 1552 } else {
1347 dasm_put(Dst, 5401, Dt5(->len)); 1553 dasm_put(Dst, 5586, Dt5(->len));
1348 } 1554 }
1349 dasm_put(Dst, 5409, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1555 dasm_put(Dst, 5594, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1350 if (sse) { 1556 if (LJ_DUALNUM) {
1351 dasm_put(Dst, 5447); 1557 dasm_put(Dst, 3924);
1558 } else if (sse) {
1559 dasm_put(Dst, 5632);
1352 } else { 1560 } else {
1353 dasm_put(Dst, 5457); 1561 dasm_put(Dst, 5642);
1354 } 1562 }
1355 dasm_put(Dst, 5470, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1563 dasm_put(Dst, 5655, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1356 if (sse) { 1564 if (LJ_DUALNUM) {
1357 dasm_put(Dst, 5505); 1565 dasm_put(Dst, 5686);
1566 } else if (sse) {
1567 dasm_put(Dst, 5709);
1358 } else { 1568 } else {
1359 dasm_put(Dst, 5527); 1569 dasm_put(Dst, 5735);
1360 } 1570 }
1361 dasm_put(Dst, 5547, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1571 dasm_put(Dst, 5759, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1362 dasm_put(Dst, 2176); 1572 if (LJ_DUALNUM) {
1363 if (sse) { 1573 dasm_put(Dst, 5862);
1364 dasm_put(Dst, 5650); 1574 } else if (sse) {
1575 dasm_put(Dst, 5874);
1365 } else { 1576 } else {
1366 dasm_put(Dst, 5661); 1577 dasm_put(Dst, 5889);
1367 } 1578 }
1368 dasm_put(Dst, 5669, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1579 dasm_put(Dst, 5901, LJ_TSTR, LJ_TISNUM);
1369 if (sse) { 1580 if (LJ_DUALNUM) {
1370 dasm_put(Dst, 5699); 1581 dasm_put(Dst, 2492);
1371 } else { 1582 } else {
1372 dasm_put(Dst, 5706); 1583 dasm_put(Dst, 2219);
1584 }
1585 dasm_put(Dst, 5918, Dt5(->len));
1586 if (LJ_DUALNUM) {
1587 dasm_put(Dst, 5928);
1588 } else if (sse) {
1589 dasm_put(Dst, 5932);
1590 } else {
1591 dasm_put(Dst, 5939);
1592 }
1593 dasm_put(Dst, 5951, sizeof(GCstr)-1);
1594 dasm_put(Dst, 6026, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1595 dasm_put(Dst, 6085, LJ_TSTR, LJ_TISNUM);
1596 if (LJ_DUALNUM) {
1597 dasm_put(Dst, 6102);
1598 } else if (sse) {
1599 dasm_put(Dst, 6110);
1600 } else {
1601 dasm_put(Dst, 6121);
1602 }
1603 dasm_put(Dst, 6137, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1604 dasm_put(Dst, 6202, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1605 dasm_put(Dst, 6265, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1606 dasm_put(Dst, 6336, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1607 dasm_put(Dst, 6421, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1608 dasm_put(Dst, 6491, 1+1, LJ_TTAB);
1609 if (LJ_DUALNUM) {
1610 dasm_put(Dst, 6559);
1611 } else if (sse) {
1612 dasm_put(Dst, 6566);
1613 } else {
1614 dasm_put(Dst, 6576);
1615 }
1616 dasm_put(Dst, 6587, LJ_TISNUM);
1617 if (LJ_DUALNUM) {
1618 dasm_put(Dst, 6595);
1619 } else {
1620 dasm_put(Dst, 2219);
1373 } 1621 }
1374 dasm_put(Dst, 5718, sizeof(GCstr)-1);
1375 dasm_put(Dst, 5793, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1376 dasm_put(Dst, 5852, LJ_TSTR, LJ_TISNUM);
1377 if (sse) { 1622 if (sse) {
1378 dasm_put(Dst, 5873); 1623 dasm_put(Dst, 6612);
1624 } else {
1625 dasm_put(Dst, 6641);
1626 }
1627 dasm_put(Dst, 111);
1628 if (LJ_DUALNUM || sse) {
1629 if (!sse) {
1630 dasm_put(Dst, 6659);
1631 }
1632 dasm_put(Dst, 6663);
1379 } else { 1633 } else {
1380 dasm_put(Dst, 5880); 1634 dasm_put(Dst, 6579);
1381 } 1635 }
1382 dasm_put(Dst, 5892, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1636 dasm_put(Dst, 6668);
1383 dasm_put(Dst, 5957, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1384 dasm_put(Dst, 6020, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1385 dasm_put(Dst, 6091, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1386 dasm_put(Dst, 6176, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1387 dasm_put(Dst, 6246, 1+1, LJ_TTAB);
1388 if (sse) { 1637 if (sse) {
1389 dasm_put(Dst, 6314); 1638 dasm_put(Dst, 6671);
1639 } else {
1640 dasm_put(Dst, 6686);
1641 }
1642 dasm_put(Dst, 2196, LJ_TISNUM);
1643 if (LJ_DUALNUM) {
1644 dasm_put(Dst, 6695);
1390 } else { 1645 } else {
1391 dasm_put(Dst, 6324); 1646 dasm_put(Dst, 2219);
1392 } 1647 }
1393 if (sse) { 1648 if (sse) {
1394 dasm_put(Dst, 6335, 1+1, LJ_TISNUM); 1649 dasm_put(Dst, 6712);
1650 } else {
1651 dasm_put(Dst, 6727);
1652 }
1653 dasm_put(Dst, 6740, LJ_TISNUM);
1654 if (LJ_DUALNUM) {
1655 dasm_put(Dst, 6765);
1395 } else { 1656 } else {
1396 dasm_put(Dst, 6392, 1+1, LJ_TISNUM); 1657 dasm_put(Dst, 6785);
1397 } 1658 }
1398 if (sse) { 1659 if (sse) {
1399 dasm_put(Dst, 6436, 1+1, LJ_TISNUM); 1660 dasm_put(Dst, 6790);
1400 } else { 1661 } else {
1401 dasm_put(Dst, 6484, 1+1, LJ_TISNUM); 1662 dasm_put(Dst, 6807);
1402 } 1663 }
1403 dasm_put(Dst, 6524, LJ_TISNUM); 1664 dasm_put(Dst, 6820);
1404 if (sse) { 1665 if (sse) {
1405 dasm_put(Dst, 6551); 1666 dasm_put(Dst, 6671);
1667 } else {
1668 dasm_put(Dst, 6686);
1669 }
1670 dasm_put(Dst, 2196, LJ_TISNUM);
1671 if (LJ_DUALNUM) {
1672 dasm_put(Dst, 6695);
1406 } else { 1673 } else {
1407 dasm_put(Dst, 6568); 1674 dasm_put(Dst, 2219);
1408 } 1675 }
1409 dasm_put(Dst, 6581);
1410 if (sse) { 1676 if (sse) {
1411 dasm_put(Dst, 6589, 1+1, LJ_TISNUM); 1677 dasm_put(Dst, 6712);
1412 } else { 1678 } else {
1413 dasm_put(Dst, 6637, 1+1, LJ_TISNUM); 1679 dasm_put(Dst, 6727);
1680 }
1681 dasm_put(Dst, 6740, LJ_TISNUM);
1682 if (LJ_DUALNUM) {
1683 dasm_put(Dst, 6830);
1684 } else {
1685 dasm_put(Dst, 6785);
1414 } 1686 }
1415 dasm_put(Dst, 6524, LJ_TISNUM);
1416 if (sse) { 1687 if (sse) {
1417 dasm_put(Dst, 6677); 1688 dasm_put(Dst, 6850);
1418 } else { 1689 } else {
1419 dasm_put(Dst, 6694); 1690 dasm_put(Dst, 6867);
1420 } 1691 }
1421 dasm_put(Dst, 6581); 1692 dasm_put(Dst, 6880);
1422 if (sse) { 1693 if (sse) {
1423 dasm_put(Dst, 6707, 1+1, LJ_TISNUM); 1694 dasm_put(Dst, 6671);
1695 } else {
1696 dasm_put(Dst, 6686);
1697 }
1698 dasm_put(Dst, 2196, LJ_TISNUM);
1699 if (LJ_DUALNUM) {
1700 dasm_put(Dst, 6695);
1424 } else { 1701 } else {
1425 dasm_put(Dst, 6755, 1+1, LJ_TISNUM); 1702 dasm_put(Dst, 2219);
1426 } 1703 }
1427 dasm_put(Dst, 6524, LJ_TISNUM);
1428 if (sse) { 1704 if (sse) {
1429 dasm_put(Dst, 6795); 1705 dasm_put(Dst, 6712);
1430 } else { 1706 } else {
1431 dasm_put(Dst, 6812); 1707 dasm_put(Dst, 6727);
1708 }
1709 dasm_put(Dst, 6740, LJ_TISNUM);
1710 if (LJ_DUALNUM) {
1711 dasm_put(Dst, 6890);
1712 } else {
1713 dasm_put(Dst, 6785);
1432 } 1714 }
1433 dasm_put(Dst, 6581);
1434 if (sse) { 1715 if (sse) {
1435 dasm_put(Dst, 6825, 1+1, LJ_TISNUM); 1716 dasm_put(Dst, 6910);
1717 } else {
1718 dasm_put(Dst, 6927);
1719 }
1720 dasm_put(Dst, 6940, LJ_TISNUM);
1721 if (LJ_DUALNUM) {
1722 dasm_put(Dst, 6695);
1436 } else { 1723 } else {
1437 dasm_put(Dst, 6873, 1+1, LJ_TISNUM); 1724 dasm_put(Dst, 2219);
1438 } 1725 }
1439 dasm_put(Dst, 6913);
1440 if (sse) { 1726 if (sse) {
1441 dasm_put(Dst, 6920, 1+1, LJ_TISNUM); 1727 dasm_put(Dst, 6612);
1442 } else { 1728 } else {
1443 dasm_put(Dst, 6968, 1+1, LJ_TISNUM); 1729 dasm_put(Dst, 6955);
1730 }
1731 dasm_put(Dst, 6976, LJ_TISNUM);
1732 if (LJ_DUALNUM) {
1733 dasm_put(Dst, 6695);
1734 } else {
1735 dasm_put(Dst, 2219);
1444 } 1736 }
1445 dasm_put(Dst, 7008);
1446 if (sse) { 1737 if (sse) {
1447 dasm_put(Dst, 7012); 1738 dasm_put(Dst, 6612);
1739 } else {
1740 dasm_put(Dst, 6955);
1741 }
1742 dasm_put(Dst, 6992);
1743 if (LJ_DUALNUM) {
1744 dasm_put(Dst, 6663);
1745 } else if (sse) {
1746 dasm_put(Dst, 6998);
1448 } else { 1747 } else {
1449 dasm_put(Dst, 7024); 1748 dasm_put(Dst, 7010);
1749 }
1750 dasm_put(Dst, 7023);
1751 if (LJ_DUALNUM) {
1752 dasm_put(Dst, 7034, LJ_TISNUM);
1753 if (LJ_DUALNUM) {
1754 dasm_put(Dst, 6695);
1755 } else {
1756 dasm_put(Dst, 2219);
1450 } 1757 }
1451 dasm_put(Dst, 7037);
1452 if (sse) { 1758 if (sse) {
1453 dasm_put(Dst, 7048, 2+1, LJ_TISNUM, LJ_TISNUM); 1759 dasm_put(Dst, 6612);
1454 } else { 1760 } else {
1455 dasm_put(Dst, 7122, 2+1, LJ_TISNUM, LJ_TISNUM); 1761 dasm_put(Dst, 6955);
1762 }
1763 dasm_put(Dst, 7042, LJ_TISNUM);
1764 } else if (sse) {
1765 dasm_put(Dst, 7057, 2+1, LJ_TISNUM, LJ_TISNUM);
1766 } else {
1767 dasm_put(Dst, 7129, 2+1, LJ_TISNUM, LJ_TISNUM);
1768 }
1769 dasm_put(Dst, 7193);
1770 if (LJ_DUALNUM) {
1771 dasm_put(Dst, 7200, LJ_TISNUM);
1772 if (LJ_DUALNUM) {
1773 dasm_put(Dst, 6695);
1774 } else {
1775 dasm_put(Dst, 2219);
1456 } 1776 }
1457 dasm_put(Dst, 7188);
1458 if (sse) { 1777 if (sse) {
1459 dasm_put(Dst, 7197, 2+1, LJ_TISNUM, LJ_TISNUM); 1778 dasm_put(Dst, 6612);
1779 } else {
1780 dasm_put(Dst, 6955);
1781 }
1782 dasm_put(Dst, 7042, LJ_TISNUM);
1783 } else if (sse) {
1784 dasm_put(Dst, 7208, 2+1, LJ_TISNUM, LJ_TISNUM);
1460 } else { 1785 } else {
1461 dasm_put(Dst, 7271, 2+1, LJ_TISNUM, LJ_TISNUM); 1786 dasm_put(Dst, 7280, 2+1, LJ_TISNUM, LJ_TISNUM);
1787 }
1788 dasm_put(Dst, 7344);
1789 if (LJ_DUALNUM) {
1790 dasm_put(Dst, 7352, LJ_TISNUM);
1791 if (LJ_DUALNUM) {
1792 dasm_put(Dst, 6695);
1793 } else {
1794 dasm_put(Dst, 2219);
1462 } 1795 }
1463 dasm_put(Dst, 7337);
1464 if (sse) { 1796 if (sse) {
1465 dasm_put(Dst, 7347, 2+1, LJ_TISNUM, LJ_TISNUM); 1797 dasm_put(Dst, 6612);
1798 } else {
1799 dasm_put(Dst, 6955);
1800 }
1801 dasm_put(Dst, 7042, LJ_TISNUM);
1802 } else if (sse) {
1803 dasm_put(Dst, 7360, 2+1, LJ_TISNUM, LJ_TISNUM);
1804 } else {
1805 dasm_put(Dst, 7432, 2+1, LJ_TISNUM, LJ_TISNUM);
1806 }
1807 dasm_put(Dst, 7496);
1808 if (LJ_DUALNUM) {
1809 dasm_put(Dst, 7504, LJ_TISNUM);
1810 if (LJ_DUALNUM) {
1811 dasm_put(Dst, 6695);
1466 } else { 1812 } else {
1467 dasm_put(Dst, 7421, 2+1, LJ_TISNUM, LJ_TISNUM); 1813 dasm_put(Dst, 2219);
1468 } 1814 }
1469 dasm_put(Dst, 7487);
1470 if (sse) { 1815 if (sse) {
1471 dasm_put(Dst, 7497, 2+1, LJ_TISNUM, LJ_TISNUM); 1816 dasm_put(Dst, 6612);
1817 } else {
1818 dasm_put(Dst, 6955);
1819 }
1820 dasm_put(Dst, 7042, LJ_TISNUM);
1821 } else if (sse) {
1822 dasm_put(Dst, 7512, 2+1, LJ_TISNUM, LJ_TISNUM);
1472 } else { 1823 } else {
1473 dasm_put(Dst, 7571, 2+1, LJ_TISNUM, LJ_TISNUM); 1824 dasm_put(Dst, 7584, 2+1, LJ_TISNUM, LJ_TISNUM);
1825 }
1826 dasm_put(Dst, 7648);
1827 if (LJ_DUALNUM) {
1828 dasm_put(Dst, 7655, LJ_TISNUM);
1829 if (LJ_DUALNUM) {
1830 dasm_put(Dst, 6695);
1831 } else {
1832 dasm_put(Dst, 2219);
1474 } 1833 }
1475 dasm_put(Dst, 7637);
1476 if (sse) { 1834 if (sse) {
1477 dasm_put(Dst, 7646, 2+1, LJ_TISNUM, LJ_TISNUM); 1835 dasm_put(Dst, 6612);
1836 } else {
1837 dasm_put(Dst, 6955);
1838 }
1839 dasm_put(Dst, 7042, LJ_TISNUM);
1840 } else if (sse) {
1841 dasm_put(Dst, 7663, 2+1, LJ_TISNUM, LJ_TISNUM);
1478 } else { 1842 } else {
1479 dasm_put(Dst, 7720, 2+1, LJ_TISNUM, LJ_TISNUM); 1843 dasm_put(Dst, 7735, 2+1, LJ_TISNUM, LJ_TISNUM);
1480 } 1844 }
1481 dasm_put(Dst, 7786, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1845 dasm_put(Dst, 7799, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1482 dasm_put(Dst, 7864, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1846 dasm_put(Dst, 7875, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1483 dasm_put(Dst, 7988, Dt1(->top), Dt1(->base), Dt1(->top)); 1847 dasm_put(Dst, 7999, Dt1(->top), Dt1(->base), Dt1(->top));
1484#if LJ_HASJIT 1848#if LJ_HASJIT
1485 dasm_put(Dst, 8026, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1849 dasm_put(Dst, 8037, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1486#endif 1850#endif
1487 dasm_put(Dst, 8057, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1851 dasm_put(Dst, 8068, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1488 dasm_put(Dst, 8108, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1852 dasm_put(Dst, 8119, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1489#if LJ_HASJIT 1853#if LJ_HASJIT
1490 dasm_put(Dst, 8174, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1854 dasm_put(Dst, 8185, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1491#endif 1855#endif
1492 dasm_put(Dst, 8220); 1856 dasm_put(Dst, 8231);
1493#if LJ_HASJIT 1857#if LJ_HASJIT
1494 dasm_put(Dst, 8052); 1858 dasm_put(Dst, 8063);
1495#endif 1859#endif
1496 dasm_put(Dst, 8227); 1860 dasm_put(Dst, 8238);
1497#if LJ_HASJIT 1861#if LJ_HASJIT
1498 dasm_put(Dst, 8230); 1862 dasm_put(Dst, 8241);
1499#endif 1863#endif
1500 dasm_put(Dst, 8240, Dt1(->base), Dt1(->top)); 1864 dasm_put(Dst, 8251, Dt1(->base), Dt1(->top));
1501#if LJ_HASJIT 1865#if LJ_HASJIT
1502 dasm_put(Dst, 8274); 1866 dasm_put(Dst, 8285);
1503#endif 1867#endif
1504 dasm_put(Dst, 8279, Dt1(->base), Dt1(->top)); 1868 dasm_put(Dst, 8290, Dt1(->base), Dt1(->top));
1505#if LJ_HASJIT 1869#if LJ_HASJIT
1506 dasm_put(Dst, 8308, 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); 1870 dasm_put(Dst, 8319, 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);
1507#endif 1871#endif
1508 dasm_put(Dst, 8451); 1872 dasm_put(Dst, 8462);
1509#if LJ_HASJIT 1873#if LJ_HASJIT
1510 dasm_put(Dst, 8454, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1874 dasm_put(Dst, 8465, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1511#endif 1875#endif
1512 dasm_put(Dst, 8532); 1876 dasm_put(Dst, 8543);
1513 if (!sse) { 1877 if (!sse) {
1514 dasm_put(Dst, 8535); 1878 dasm_put(Dst, 8546);
1515 } 1879 }
1516 dasm_put(Dst, 8580); 1880 dasm_put(Dst, 8591);
1517 if (!sse) { 1881 if (!sse) {
1518 dasm_put(Dst, 8682); 1882 dasm_put(Dst, 8693);
1519 } 1883 }
1520 dasm_put(Dst, 8727); 1884 dasm_put(Dst, 8738);
1521 if (!sse) { 1885 if (!sse) {
1522 dasm_put(Dst, 8829); 1886 dasm_put(Dst, 8840);
1523 } 1887 }
1524 dasm_put(Dst, 8868); 1888 dasm_put(Dst, 8879);
1525 if (sse) { 1889 if (sse) {
1526 dasm_put(Dst, 8973); 1890 dasm_put(Dst, 8984);
1527 } else { 1891 } else {
1528 dasm_put(Dst, 9103); 1892 dasm_put(Dst, 9114);
1529 } 1893 }
1530 dasm_put(Dst, 9150); 1894 dasm_put(Dst, 9161);
1531 if (!sse) { 1895 if (!sse) {
1532 dasm_put(Dst, 9224);
1533 if (cmov) {
1534 dasm_put(Dst, 9235); 1896 dasm_put(Dst, 9235);
1897 if (cmov) {
1898 dasm_put(Dst, 9246);
1535 } else { 1899 } else {
1536 dasm_put(Dst, 9239); 1900 dasm_put(Dst, 9250);
1537 } 1901 }
1538 dasm_put(Dst, 9246); 1902 dasm_put(Dst, 9257);
1539 dasm_put(Dst, 9320); 1903 dasm_put(Dst, 9331);
1540 dasm_put(Dst, 9420); 1904 dasm_put(Dst, 9431);
1541 if (cmov) { 1905 if (cmov) {
1542 dasm_put(Dst, 9423); 1906 dasm_put(Dst, 9434);
1543 } else { 1907 } else {
1544 dasm_put(Dst, 9427); 1908 dasm_put(Dst, 9438);
1545 } 1909 }
1546 dasm_put(Dst, 9434); 1910 dasm_put(Dst, 9445);
1547 if (cmov) { 1911 if (cmov) {
1548 dasm_put(Dst, 9235); 1912 dasm_put(Dst, 9246);
1549 } else { 1913 } else {
1550 dasm_put(Dst, 9239); 1914 dasm_put(Dst, 9250);
1551 } 1915 }
1552 dasm_put(Dst, 9452); 1916 dasm_put(Dst, 9463);
1553 } else { 1917 } else {
1554 dasm_put(Dst, 9531); 1918 dasm_put(Dst, 9542);
1555 } 1919 }
1556 dasm_put(Dst, 9534); 1920 dasm_put(Dst, 9545);
1557 dasm_put(Dst, 9619); 1921 dasm_put(Dst, 9630);
1558 dasm_put(Dst, 9749); 1922 dasm_put(Dst, 9760);
1559 dasm_put(Dst, 9955); 1923 dasm_put(Dst, 9966);
1560#if LJ_HASJIT 1924#if LJ_HASJIT
1561 if (sse) { 1925 if (sse) {
1562 dasm_put(Dst, 9962); 1926 dasm_put(Dst, 9973);
1563 dasm_put(Dst, 10019); 1927 dasm_put(Dst, 10030);
1564 dasm_put(Dst, 10110); 1928 dasm_put(Dst, 10121);
1565 } else { 1929 } else {
1566 dasm_put(Dst, 10152); 1930 dasm_put(Dst, 10163);
1567 dasm_put(Dst, 10244); 1931 dasm_put(Dst, 10255);
1568 } 1932 }
1569 dasm_put(Dst, 10290); 1933 dasm_put(Dst, 10301);
1570#endif 1934#endif
1571 dasm_put(Dst, 10294); 1935 dasm_put(Dst, 10305);
1572 if (sse) { 1936 if (sse) {
1573 dasm_put(Dst, 10297); 1937 dasm_put(Dst, 10308);
1574 dasm_put(Dst, 10402); 1938 dasm_put(Dst, 10413);
1575 dasm_put(Dst, 10485); 1939 dasm_put(Dst, 10496);
1576 } else { 1940 } else {
1577 dasm_put(Dst, 10557); 1941 dasm_put(Dst, 10568);
1578 dasm_put(Dst, 10640); 1942 dasm_put(Dst, 10651);
1579 if (cmov) { 1943 if (cmov) {
1580 dasm_put(Dst, 10695); 1944 dasm_put(Dst, 10706);
1581 } else { 1945 } else {
1582 dasm_put(Dst, 10714); 1946 dasm_put(Dst, 10725);
1583 } 1947 }
1584 dasm_put(Dst, 10290); 1948 dasm_put(Dst, 10301);
1585 } 1949 }
1586 dasm_put(Dst, 10755); 1950 dasm_put(Dst, 10766);
1587#if LJ_HASFFI 1951#if LJ_HASFFI
1588#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1952#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1589 dasm_put(Dst, 10811, DtE(->spadj)); 1953 dasm_put(Dst, 10822, DtE(->spadj));
1590#if LJ_TARGET_WINDOWS 1954#if LJ_TARGET_WINDOWS
1591 dasm_put(Dst, 10821, DtE(->spadj)); 1955 dasm_put(Dst, 10832, DtE(->spadj));
1592#endif 1956#endif
1593 dasm_put(Dst, 10825, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0])); 1957 dasm_put(Dst, 10836, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0]));
1594 dasm_put(Dst, 10895, DtE(->fpr[0].f[0])); 1958 dasm_put(Dst, 10906, DtE(->fpr[0].f[0]));
1595#if LJ_TARGET_WINDOWS 1959#if LJ_TARGET_WINDOWS
1596 dasm_put(Dst, 10901, DtE(->spadj)); 1960 dasm_put(Dst, 10912, DtE(->spadj));
1597#endif 1961#endif
1598 dasm_put(Dst, 10905); 1962 dasm_put(Dst, 10916);
1599#endif 1963#endif
1600} 1964}
1601 1965
@@ -1603,7 +1967,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1603static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1967static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1604{ 1968{
1605 int vk = 0; 1969 int vk = 0;
1606 dasm_put(Dst, 10912, defop); 1970 dasm_put(Dst, 10923, defop);
1607 1971
1608 switch (op) { 1972 switch (op) {
1609 1973
@@ -1611,658 +1975,922 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1611 1975
1612 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1976 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1613 1977
1978
1614 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1979 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1615 dasm_put(Dst, 10914, LJ_TISNUM, LJ_TISNUM); 1980 if (LJ_DUALNUM) {
1981 dasm_put(Dst, 10925, LJ_TISNUM, LJ_TISNUM);
1982 switch (op) {
1983 case BC_ISLT:
1984 dasm_put(Dst, 10955);
1985 break;
1986 case BC_ISGE:
1987 dasm_put(Dst, 10960);
1988 break;
1989 case BC_ISLE:
1990 dasm_put(Dst, 10965);
1991 break;
1992 case BC_ISGT:
1993 dasm_put(Dst, 10970);
1994 break;
1995 default: break; /* Shut up GCC. */
1996 }
1997 dasm_put(Dst, 10975, -BCBIAS_J*4, LJ_TISNUM);
1998 if (sse) {
1999 dasm_put(Dst, 11028);
2000 } else {
2001 dasm_put(Dst, 11039);
2002 }
2003 dasm_put(Dst, 11050);
2004 if (sse) {
2005 dasm_put(Dst, 11057);
2006 switch (op) {
2007 case BC_ISLT:
2008 dasm_put(Dst, 11077);
2009 break;
2010 case BC_ISGE:
2011 dasm_put(Dst, 11082);
2012 break;
2013 case BC_ISLE:
2014 dasm_put(Dst, 11087);
2015 break;
2016 case BC_ISGT:
2017 dasm_put(Dst, 11092);
2018 break;
2019 default: break; /* Shut up GCC. */
2020 }
2021 dasm_put(Dst, 11097);
2022 } else {
2023 dasm_put(Dst, 11102);
2024 }
2025 } else {
2026 dasm_put(Dst, 11110, LJ_TISNUM, LJ_TISNUM);
2027 }
1616 if (sse) { 2028 if (sse) {
1617 dasm_put(Dst, 10935); 2029 dasm_put(Dst, 11131);
1618 } else { 2030 } else {
1619 dasm_put(Dst, 10950); 2031 dasm_put(Dst, 11152);
1620 if (cmov) { 2032 if (cmov) {
1621 dasm_put(Dst, 10960); 2033 dasm_put(Dst, 3899);
1622 } else { 2034 } else {
1623 dasm_put(Dst, 10966); 2035 dasm_put(Dst, 3905);
1624 } 2036 }
1625 } 2037 }
1626 switch (op) { 2038 if (LJ_DUALNUM) {
1627 case BC_ISLT: 2039 switch (op) {
1628 dasm_put(Dst, 10973); 2040 case BC_ISLT:
2041 dasm_put(Dst, 11077);
2042 break;
2043 case BC_ISGE:
2044 dasm_put(Dst, 11082);
2045 break;
2046 case BC_ISLE:
2047 dasm_put(Dst, 11087);
2048 break;
2049 case BC_ISGT:
2050 dasm_put(Dst, 11092);
1629 break; 2051 break;
1630 case BC_ISGE: 2052 default: break; /* Shut up GCC. */
1631 dasm_put(Dst, 10105); 2053 }
2054 dasm_put(Dst, 11097);
2055 } else {
2056 switch (op) {
2057 case BC_ISLT:
2058 dasm_put(Dst, 11168);
1632 break; 2059 break;
1633 case BC_ISLE: 2060 case BC_ISGE:
1634 dasm_put(Dst, 6241); 2061 dasm_put(Dst, 11173);
1635 break; 2062 break;
1636 case BC_ISGT: 2063 case BC_ISLE:
1637 dasm_put(Dst, 10978); 2064 dasm_put(Dst, 11178);
1638 break; 2065 break;
1639 default: break; /* Shut up GCC. */ 2066 case BC_ISGT:
2067 dasm_put(Dst, 11183);
2068 break;
2069 default: break; /* Shut up GCC. */
2070 }
2071 dasm_put(Dst, 11188, -BCBIAS_J*4);
1640 } 2072 }
1641 dasm_put(Dst, 10983, -BCBIAS_J*4);
1642 break; 2073 break;
1643 2074
1644 case BC_ISEQV: case BC_ISNEV: 2075 case BC_ISEQV: case BC_ISNEV:
1645 vk = op == BC_ISEQV; 2076 vk = op == BC_ISEQV;
1646 dasm_put(Dst, 11016, LJ_TISNUM, LJ_TISNUM); 2077 dasm_put(Dst, 11219);
2078 if (LJ_DUALNUM) {
2079 dasm_put(Dst, 11227, LJ_TISNUM, LJ_TISNUM);
2080 if (vk) {
2081 dasm_put(Dst, 11252);
2082 } else {
2083 dasm_put(Dst, 11257);
2084 }
2085 dasm_put(Dst, 11262, -BCBIAS_J*4, LJ_TISNUM);
2086 if (sse) {
2087 dasm_put(Dst, 11313);
2088 } else {
2089 dasm_put(Dst, 11320);
2090 }
2091 dasm_put(Dst, 11324);
2092 if (sse) {
2093 dasm_put(Dst, 11335);
2094 } else {
2095 dasm_put(Dst, 11347);
2096 }
2097 dasm_put(Dst, 11354);
2098 } else {
2099 dasm_put(Dst, 11359, LJ_TISNUM, LJ_TISNUM);
2100 }
1647 if (sse) { 2101 if (sse) {
1648 dasm_put(Dst, 11042); 2102 dasm_put(Dst, 11378);
1649 } else { 2103 } else {
1650 dasm_put(Dst, 11054); 2104 dasm_put(Dst, 11396);
1651 if (cmov) { 2105 if (cmov) {
1652 dasm_put(Dst, 10960); 2106 dasm_put(Dst, 3899);
1653 } else { 2107 } else {
1654 dasm_put(Dst, 10966); 2108 dasm_put(Dst, 3905);
1655 } 2109 }
1656 } 2110 }
1657 iseqne_fp: 2111 iseqne_fp:
1658 if (vk) { 2112 if (vk) {
1659 dasm_put(Dst, 11061); 2113 dasm_put(Dst, 11409);
1660 } else { 2114 } else {
1661 dasm_put(Dst, 11070); 2115 dasm_put(Dst, 11418);
1662 } 2116 }
1663 iseqne_end: 2117 iseqne_end:
1664 if (vk) { 2118 if (vk) {
1665 dasm_put(Dst, 11079, -BCBIAS_J*4); 2119 dasm_put(Dst, 11427, -BCBIAS_J*4);
1666 if (!LJ_HASFFI) { 2120 if (!LJ_HASFFI) {
1667 dasm_put(Dst, 4654); 2121 dasm_put(Dst, 4799);
1668 } 2122 }
1669 } else { 2123 } else {
1670 if (!LJ_HASFFI) { 2124 if (!LJ_HASFFI) {
1671 dasm_put(Dst, 4654); 2125 dasm_put(Dst, 4799);
1672 } 2126 }
1673 dasm_put(Dst, 11094, -BCBIAS_J*4); 2127 dasm_put(Dst, 11442, -BCBIAS_J*4);
2128 }
2129 if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
2130 op == BC_ISEQN || op == BC_ISNEN)) {
2131 dasm_put(Dst, 11457);
2132 } else {
2133 dasm_put(Dst, 11200);
1674 } 2134 }
1675 dasm_put(Dst, 10997);
1676 if (op == BC_ISEQV || op == BC_ISNEV) { 2135 if (op == BC_ISEQV || op == BC_ISNEV) {
1677 dasm_put(Dst, 11109); 2136 dasm_put(Dst, 11462);
1678 if (LJ_HASFFI) { 2137 if (LJ_HASFFI) {
1679 dasm_put(Dst, 11112, LJ_TCDATA, LJ_TCDATA); 2138 dasm_put(Dst, 11465, LJ_TCDATA, LJ_TCDATA);
1680 } 2139 }
1681 dasm_put(Dst, 11131, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 2140 dasm_put(Dst, 11484, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1682 if (vk) { 2141 if (vk) {
1683 dasm_put(Dst, 11187); 2142 dasm_put(Dst, 11540);
1684 } else { 2143 } else {
1685 dasm_put(Dst, 11191); 2144 dasm_put(Dst, 11544);
1686 } 2145 }
1687 dasm_put(Dst, 11197); 2146 dasm_put(Dst, 11550);
1688 } else if (LJ_HASFFI) { 2147 } else if (LJ_HASFFI) {
1689 dasm_put(Dst, 11202, LJ_TCDATA); 2148 dasm_put(Dst, 11555, LJ_TCDATA);
2149 if (LJ_DUALNUM && vk) {
2150 dasm_put(Dst, 11562);
2151 } else {
2152 dasm_put(Dst, 11535);
2153 }
2154 dasm_put(Dst, 11567);
1690 } 2155 }
1691 break; 2156 break;
1692 case BC_ISEQS: case BC_ISNES: 2157 case BC_ISEQS: case BC_ISNES:
1693 vk = op == BC_ISEQS; 2158 vk = op == BC_ISEQS;
1694 dasm_put(Dst, 11217, LJ_TSTR); 2159 dasm_put(Dst, 11572, LJ_TSTR);
1695 iseqne_test: 2160 iseqne_test:
1696 if (vk) { 2161 if (vk) {
1697 dasm_put(Dst, 11065); 2162 dasm_put(Dst, 11413);
1698 } else { 2163 } else {
1699 dasm_put(Dst, 2863); 2164 dasm_put(Dst, 2917);
1700 } 2165 }
1701 goto iseqne_end; 2166 goto iseqne_end;
1702 case BC_ISEQN: case BC_ISNEN: 2167 case BC_ISEQN: case BC_ISNEN:
1703 vk = op == BC_ISEQN; 2168 vk = op == BC_ISEQN;
1704 dasm_put(Dst, 11242, LJ_TISNUM); 2169 dasm_put(Dst, 11597);
2170 if (LJ_DUALNUM) {
2171 dasm_put(Dst, 11605, LJ_TISNUM, LJ_TISNUM);
2172 if (vk) {
2173 dasm_put(Dst, 11252);
2174 } else {
2175 dasm_put(Dst, 11257);
2176 }
2177 dasm_put(Dst, 11630, -BCBIAS_J*4, LJ_TISNUM);
2178 if (sse) {
2179 dasm_put(Dst, 11677);
2180 } else {
2181 dasm_put(Dst, 11684);
2182 }
2183 dasm_put(Dst, 11688);
2184 if (sse) {
2185 dasm_put(Dst, 11695);
2186 } else {
2187 dasm_put(Dst, 11707);
2188 }
2189 dasm_put(Dst, 11354);
2190 } else {
2191 dasm_put(Dst, 11714, LJ_TISNUM);
2192 }
1705 if (sse) { 2193 if (sse) {
1706 dasm_put(Dst, 11258); 2194 dasm_put(Dst, 11723);
1707 } else { 2195 } else {
1708 dasm_put(Dst, 11270); 2196 dasm_put(Dst, 11741);
1709 if (cmov) { 2197 if (cmov) {
1710 dasm_put(Dst, 10960); 2198 dasm_put(Dst, 3899);
1711 } else { 2199 } else {
1712 dasm_put(Dst, 10966); 2200 dasm_put(Dst, 3905);
1713 } 2201 }
2202 dasm_put(Dst, 4818);
1714 } 2203 }
1715 goto iseqne_fp; 2204 goto iseqne_fp;
1716 case BC_ISEQP: case BC_ISNEP: 2205 case BC_ISEQP: case BC_ISNEP:
1717 vk = op == BC_ISEQP; 2206 vk = op == BC_ISEQP;
1718 dasm_put(Dst, 11277); 2207 dasm_put(Dst, 11752);
1719 if (!LJ_HASFFI) goto iseqne_test; 2208 if (!LJ_HASFFI) goto iseqne_test;
1720 if (vk) { 2209 if (vk) {
1721 dasm_put(Dst, 11290, -BCBIAS_J*4, LJ_TCDATA); 2210 dasm_put(Dst, 11765, -BCBIAS_J*4, LJ_TCDATA);
1722 } else { 2211 } else {
1723 dasm_put(Dst, 11339, LJ_TCDATA, -BCBIAS_J*4); 2212 dasm_put(Dst, 11814, LJ_TCDATA, -BCBIAS_J*4);
1724 } 2213 }
1725 break; 2214 break;
1726 2215
1727 /* -- Unary test and copy ops ------------------------------------------- */ 2216 /* -- Unary test and copy ops ------------------------------------------- */
1728 2217
1729 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 2218 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1730 dasm_put(Dst, 11382, LJ_TISTRUECOND); 2219 dasm_put(Dst, 11857, LJ_TISTRUECOND);
1731 if (op == BC_IST || op == BC_ISTC) { 2220 if (op == BC_IST || op == BC_ISTC) {
1732 dasm_put(Dst, 11394); 2221 dasm_put(Dst, 11183);
1733 } else { 2222 } else {
1734 dasm_put(Dst, 11399); 2223 dasm_put(Dst, 11178);
1735 } 2224 }
1736 if (op == BC_ISTC || op == BC_ISFC) { 2225 if (op == BC_ISTC || op == BC_ISFC) {
1737 dasm_put(Dst, 11404); 2226 dasm_put(Dst, 11869);
1738 } 2227 }
1739 dasm_put(Dst, 11415, -BCBIAS_J*4); 2228 dasm_put(Dst, 11188, -BCBIAS_J*4);
1740 break; 2229 break;
1741 2230
1742 /* -- Unary ops --------------------------------------------------------- */ 2231 /* -- Unary ops --------------------------------------------------------- */
1743 2232
1744 case BC_MOV: 2233 case BC_MOV:
1745 dasm_put(Dst, 11446); 2234 dasm_put(Dst, 11880);
1746 break; 2235 break;
1747 case BC_NOT: 2236 case BC_NOT:
1748 dasm_put(Dst, 11479, LJ_TISTRUECOND, LJ_TTRUE); 2237 dasm_put(Dst, 11913, LJ_TISTRUECOND, LJ_TTRUE);
1749 break; 2238 break;
1750 case BC_UNM: 2239 case BC_UNM:
1751 dasm_put(Dst, 11514, LJ_TISNUM); 2240 if (LJ_DUALNUM) {
2241 dasm_put(Dst, 11948, LJ_TISNUM, LJ_TISNUM);
2242 } else {
2243 dasm_put(Dst, 12024, LJ_TISNUM);
2244 }
1752 if (sse) { 2245 if (sse) {
1753 dasm_put(Dst, 11525); 2246 dasm_put(Dst, 12035);
1754 } else { 2247 } else {
1755 dasm_put(Dst, 11555); 2248 dasm_put(Dst, 12065);
2249 }
2250 if (LJ_DUALNUM) {
2251 dasm_put(Dst, 11457);
2252 } else {
2253 dasm_put(Dst, 11200);
1756 } 2254 }
1757 dasm_put(Dst, 10997);
1758 break; 2255 break;
1759 case BC_LEN: 2256 case BC_LEN:
1760 dasm_put(Dst, 11564, LJ_TSTR); 2257 dasm_put(Dst, 12074, LJ_TSTR);
1761 if (sse) { 2258 if (LJ_DUALNUM) {
1762 dasm_put(Dst, 11578, Dt5(->len)); 2259 dasm_put(Dst, 12088, Dt5(->len), LJ_TISNUM);
2260 } else if (sse) {
2261 dasm_put(Dst, 12102, Dt5(->len));
1763 } else { 2262 } else {
1764 dasm_put(Dst, 11596, Dt5(->len)); 2263 dasm_put(Dst, 12120, Dt5(->len));
1765 } 2264 }
1766 dasm_put(Dst, 11605, LJ_TTAB); 2265 dasm_put(Dst, 12129, LJ_TTAB);
1767 if (sse) { 2266 if (LJ_DUALNUM) {
1768 dasm_put(Dst, 11645); 2267 } else if (sse) {
2268 dasm_put(Dst, 12169);
1769 } else { 2269 } else {
1770 dasm_put(Dst, 11654); 2270 dasm_put(Dst, 12175);
1771 } 2271 }
1772 dasm_put(Dst, 11664); 2272 dasm_put(Dst, 12182);
1773 break; 2273 break;
1774 2274
1775 /* -- Binary ops -------------------------------------------------------- */ 2275 /* -- Binary ops -------------------------------------------------------- */
1776 2276
1777 2277
1778 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 2278 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1779 dasm_put(Dst, 11674); 2279 if (LJ_DUALNUM) {
2280 dasm_put(Dst, 12195);
1780 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2281 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1781 switch (vk) { 2282 switch (vk) {
1782 case 0: 2283 case 0:
1783 dasm_put(Dst, 11682, LJ_TISNUM); 2284 dasm_put(Dst, 12203, LJ_TISNUM, LJ_TISNUM);
2285 break;
2286 case 1:
2287 dasm_put(Dst, 12236, LJ_TISNUM, LJ_TISNUM);
2288 break;
2289 default:
2290 dasm_put(Dst, 12269, LJ_TISNUM, LJ_TISNUM);
2291 break;
2292 }
2293 dasm_put(Dst, 12302, LJ_TISNUM);
2294 if (vk == 1) {
2295 dasm_put(Dst, 12098);
2296 } else {
2297 dasm_put(Dst, 11876);
2298 }
2299 dasm_put(Dst, 11200);
2300 } else {
2301 dasm_put(Dst, 12195);
2302 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2303 switch (vk) {
2304 case 0:
2305 dasm_put(Dst, 12308, LJ_TISNUM);
2306 if (LJ_DUALNUM) {
2307 dasm_put(Dst, 12320, LJ_TISNUM);
2308 }
1784 if (sse) { 2309 if (sse) {
1785 dasm_put(Dst, 11694); 2310 dasm_put(Dst, 12331);
1786 } else { 2311 } else {
1787 dasm_put(Dst, 11708); 2312 dasm_put(Dst, 12345);
1788 } 2313 }
1789 break; 2314 break;
1790 case 1: 2315 case 1:
1791 dasm_put(Dst, 11716, LJ_TISNUM); 2316 dasm_put(Dst, 12353, LJ_TISNUM);
2317 if (LJ_DUALNUM) {
2318 dasm_put(Dst, 12365, LJ_TISNUM);
2319 }
1792 if (sse) { 2320 if (sse) {
1793 dasm_put(Dst, 11728); 2321 dasm_put(Dst, 12376);
1794 } else { 2322 } else {
1795 dasm_put(Dst, 11742); 2323 dasm_put(Dst, 12390);
1796 } 2324 }
1797 break; 2325 break;
1798 default: 2326 default:
1799 dasm_put(Dst, 11750, LJ_TISNUM, LJ_TISNUM); 2327 dasm_put(Dst, 12398, LJ_TISNUM, LJ_TISNUM);
1800 if (sse) { 2328 if (sse) {
1801 dasm_put(Dst, 11772); 2329 dasm_put(Dst, 12420);
1802 } else { 2330 } else {
1803 dasm_put(Dst, 11786); 2331 dasm_put(Dst, 12434);
1804 } 2332 }
1805 break; 2333 break;
1806 } 2334 }
1807 if (sse) { 2335 if (sse) {
1808 dasm_put(Dst, 11548); 2336 dasm_put(Dst, 12058);
1809 } else { 2337 } else {
1810 dasm_put(Dst, 11560); 2338 dasm_put(Dst, 12070);
2339 }
2340 dasm_put(Dst, 11200);
1811 } 2341 }
1812 dasm_put(Dst, 10997);
1813 break; 2342 break;
1814 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 2343 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1815 dasm_put(Dst, 11674); 2344 if (LJ_DUALNUM) {
2345 dasm_put(Dst, 12195);
1816 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2346 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1817 switch (vk) { 2347 switch (vk) {
1818 case 0: 2348 case 0:
1819 dasm_put(Dst, 11682, LJ_TISNUM); 2349 dasm_put(Dst, 12442, LJ_TISNUM, LJ_TISNUM);
2350 break;
2351 case 1:
2352 dasm_put(Dst, 12475, LJ_TISNUM, LJ_TISNUM);
2353 break;
2354 default:
2355 dasm_put(Dst, 12508, LJ_TISNUM, LJ_TISNUM);
2356 break;
2357 }
2358 dasm_put(Dst, 12302, LJ_TISNUM);
2359 if (vk == 1) {
2360 dasm_put(Dst, 12098);
2361 } else {
2362 dasm_put(Dst, 11876);
2363 }
2364 dasm_put(Dst, 11200);
2365 } else {
2366 dasm_put(Dst, 12195);
2367 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2368 switch (vk) {
2369 case 0:
2370 dasm_put(Dst, 12308, LJ_TISNUM);
2371 if (LJ_DUALNUM) {
2372 dasm_put(Dst, 12320, LJ_TISNUM);
2373 }
1820 if (sse) { 2374 if (sse) {
1821 dasm_put(Dst, 11794); 2375 dasm_put(Dst, 12541);
1822 } else { 2376 } else {
1823 dasm_put(Dst, 11808); 2377 dasm_put(Dst, 12555);
1824 } 2378 }
1825 break; 2379 break;
1826 case 1: 2380 case 1:
1827 dasm_put(Dst, 11716, LJ_TISNUM); 2381 dasm_put(Dst, 12353, LJ_TISNUM);
2382 if (LJ_DUALNUM) {
2383 dasm_put(Dst, 12365, LJ_TISNUM);
2384 }
1828 if (sse) { 2385 if (sse) {
1829 dasm_put(Dst, 11816); 2386 dasm_put(Dst, 12563);
1830 } else { 2387 } else {
1831 dasm_put(Dst, 11830); 2388 dasm_put(Dst, 12577);
1832 } 2389 }
1833 break; 2390 break;
1834 default: 2391 default:
1835 dasm_put(Dst, 11750, LJ_TISNUM, LJ_TISNUM); 2392 dasm_put(Dst, 12398, LJ_TISNUM, LJ_TISNUM);
1836 if (sse) { 2393 if (sse) {
1837 dasm_put(Dst, 11838); 2394 dasm_put(Dst, 12585);
1838 } else { 2395 } else {
1839 dasm_put(Dst, 11852); 2396 dasm_put(Dst, 12599);
1840 } 2397 }
1841 break; 2398 break;
1842 } 2399 }
1843 if (sse) { 2400 if (sse) {
1844 dasm_put(Dst, 11548); 2401 dasm_put(Dst, 12058);
1845 } else { 2402 } else {
1846 dasm_put(Dst, 11560); 2403 dasm_put(Dst, 12070);
2404 }
2405 dasm_put(Dst, 11200);
1847 } 2406 }
1848 dasm_put(Dst, 10997);
1849 break; 2407 break;
1850 case BC_MULVN: case BC_MULNV: case BC_MULVV: 2408 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1851 dasm_put(Dst, 11674); 2409 if (LJ_DUALNUM) {
2410 dasm_put(Dst, 12195);
1852 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2411 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1853 switch (vk) { 2412 switch (vk) {
1854 case 0: 2413 case 0:
1855 dasm_put(Dst, 11682, LJ_TISNUM); 2414 dasm_put(Dst, 12607, LJ_TISNUM, LJ_TISNUM);
2415 break;
2416 case 1:
2417 dasm_put(Dst, 12641, LJ_TISNUM, LJ_TISNUM);
2418 break;
2419 default:
2420 dasm_put(Dst, 12675, LJ_TISNUM, LJ_TISNUM);
2421 break;
2422 }
2423 dasm_put(Dst, 12302, LJ_TISNUM);
2424 if (vk == 1) {
2425 dasm_put(Dst, 12098);
2426 } else {
2427 dasm_put(Dst, 11876);
2428 }
2429 dasm_put(Dst, 11200);
2430 } else {
2431 dasm_put(Dst, 12195);
2432 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2433 switch (vk) {
2434 case 0:
2435 dasm_put(Dst, 12308, LJ_TISNUM);
2436 if (LJ_DUALNUM) {
2437 dasm_put(Dst, 12320, LJ_TISNUM);
2438 }
1856 if (sse) { 2439 if (sse) {
1857 dasm_put(Dst, 11860); 2440 dasm_put(Dst, 12709);
1858 } else { 2441 } else {
1859 dasm_put(Dst, 11874); 2442 dasm_put(Dst, 12723);
1860 } 2443 }
1861 break; 2444 break;
1862 case 1: 2445 case 1:
1863 dasm_put(Dst, 11716, LJ_TISNUM); 2446 dasm_put(Dst, 12353, LJ_TISNUM);
2447 if (LJ_DUALNUM) {
2448 dasm_put(Dst, 12365, LJ_TISNUM);
2449 }
1864 if (sse) { 2450 if (sse) {
1865 dasm_put(Dst, 11882); 2451 dasm_put(Dst, 12731);
1866 } else { 2452 } else {
1867 dasm_put(Dst, 11896); 2453 dasm_put(Dst, 12745);
1868 } 2454 }
1869 break; 2455 break;
1870 default: 2456 default:
1871 dasm_put(Dst, 11750, LJ_TISNUM, LJ_TISNUM); 2457 dasm_put(Dst, 12398, LJ_TISNUM, LJ_TISNUM);
1872 if (sse) { 2458 if (sse) {
1873 dasm_put(Dst, 11904); 2459 dasm_put(Dst, 12753);
1874 } else { 2460 } else {
1875 dasm_put(Dst, 11918); 2461 dasm_put(Dst, 12767);
1876 } 2462 }
1877 break; 2463 break;
1878 } 2464 }
1879 if (sse) { 2465 if (sse) {
1880 dasm_put(Dst, 11548); 2466 dasm_put(Dst, 12058);
1881 } else { 2467 } else {
1882 dasm_put(Dst, 11560); 2468 dasm_put(Dst, 12070);
2469 }
2470 dasm_put(Dst, 11200);
1883 } 2471 }
1884 dasm_put(Dst, 10997);
1885 break; 2472 break;
1886 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 2473 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1887 dasm_put(Dst, 11674); 2474 dasm_put(Dst, 12195);
1888 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2475 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1889 switch (vk) { 2476 switch (vk) {
1890 case 0: 2477 case 0:
1891 dasm_put(Dst, 11682, LJ_TISNUM); 2478 dasm_put(Dst, 12308, LJ_TISNUM);
2479 if (LJ_DUALNUM) {
2480 dasm_put(Dst, 12320, LJ_TISNUM);
2481 }
1892 if (sse) { 2482 if (sse) {
1893 dasm_put(Dst, 11926); 2483 dasm_put(Dst, 12775);
1894 } else { 2484 } else {
1895 dasm_put(Dst, 11940); 2485 dasm_put(Dst, 12789);
1896 } 2486 }
1897 break; 2487 break;
1898 case 1: 2488 case 1:
1899 dasm_put(Dst, 11716, LJ_TISNUM); 2489 dasm_put(Dst, 12353, LJ_TISNUM);
2490 if (LJ_DUALNUM) {
2491 dasm_put(Dst, 12365, LJ_TISNUM);
2492 }
1900 if (sse) { 2493 if (sse) {
1901 dasm_put(Dst, 11948); 2494 dasm_put(Dst, 12797);
1902 } else { 2495 } else {
1903 dasm_put(Dst, 11962); 2496 dasm_put(Dst, 12811);
1904 } 2497 }
1905 break; 2498 break;
1906 default: 2499 default:
1907 dasm_put(Dst, 11750, LJ_TISNUM, LJ_TISNUM); 2500 dasm_put(Dst, 12398, LJ_TISNUM, LJ_TISNUM);
1908 if (sse) { 2501 if (sse) {
1909 dasm_put(Dst, 11970); 2502 dasm_put(Dst, 12819);
1910 } else { 2503 } else {
1911 dasm_put(Dst, 11984); 2504 dasm_put(Dst, 12833);
1912 } 2505 }
1913 break; 2506 break;
1914 } 2507 }
1915 if (sse) { 2508 if (sse) {
1916 dasm_put(Dst, 11548); 2509 dasm_put(Dst, 12058);
1917 } else { 2510 } else {
1918 dasm_put(Dst, 11560); 2511 dasm_put(Dst, 12070);
1919 } 2512 }
1920 dasm_put(Dst, 10997); 2513 dasm_put(Dst, 11200);
1921 break; 2514 break;
1922 case BC_MODVN: 2515 case BC_MODVN:
1923 dasm_put(Dst, 11674); 2516 dasm_put(Dst, 12195);
1924 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2517 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1925 switch (vk) { 2518 switch (vk) {
1926 case 0: 2519 case 0:
1927 dasm_put(Dst, 11682, LJ_TISNUM); 2520 dasm_put(Dst, 12308, LJ_TISNUM);
2521 if (LJ_DUALNUM) {
2522 dasm_put(Dst, 12320, LJ_TISNUM);
2523 }
1928 if (sse) { 2524 if (sse) {
1929 dasm_put(Dst, 11992); 2525 dasm_put(Dst, 12841);
1930 } else { 2526 } else {
1931 dasm_put(Dst, 12006); 2527 dasm_put(Dst, 12855);
1932 } 2528 }
1933 break; 2529 break;
1934 case 1: 2530 case 1:
1935 dasm_put(Dst, 11716, LJ_TISNUM); 2531 dasm_put(Dst, 12353, LJ_TISNUM);
2532 if (LJ_DUALNUM) {
2533 dasm_put(Dst, 12365, LJ_TISNUM);
2534 }
1936 if (sse) { 2535 if (sse) {
1937 dasm_put(Dst, 12014); 2536 dasm_put(Dst, 12863);
1938 } else { 2537 } else {
1939 dasm_put(Dst, 12028); 2538 dasm_put(Dst, 12877);
1940 } 2539 }
1941 break; 2540 break;
1942 default: 2541 default:
1943 dasm_put(Dst, 11750, LJ_TISNUM, LJ_TISNUM); 2542 dasm_put(Dst, 12398, LJ_TISNUM, LJ_TISNUM);
1944 if (sse) { 2543 if (sse) {
1945 dasm_put(Dst, 12036); 2544 dasm_put(Dst, 12885);
1946 } else { 2545 } else {
1947 dasm_put(Dst, 12050); 2546 dasm_put(Dst, 12899);
1948 } 2547 }
1949 break; 2548 break;
1950 } 2549 }
1951 dasm_put(Dst, 12058); 2550 dasm_put(Dst, 12907);
1952 if (sse) { 2551 if (sse) {
1953 dasm_put(Dst, 11548); 2552 dasm_put(Dst, 12058);
1954 } else { 2553 } else {
1955 dasm_put(Dst, 11560); 2554 dasm_put(Dst, 12070);
1956 } 2555 }
1957 dasm_put(Dst, 10997); 2556 dasm_put(Dst, 11200);
1958 break; 2557 break;
1959 case BC_MODNV: case BC_MODVV: 2558 case BC_MODNV: case BC_MODVV:
1960 dasm_put(Dst, 11674); 2559 dasm_put(Dst, 12195);
1961 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2560 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1962 switch (vk) { 2561 switch (vk) {
1963 case 0: 2562 case 0:
1964 dasm_put(Dst, 11682, LJ_TISNUM); 2563 dasm_put(Dst, 12308, LJ_TISNUM);
2564 if (LJ_DUALNUM) {
2565 dasm_put(Dst, 12320, LJ_TISNUM);
2566 }
1965 if (sse) { 2567 if (sse) {
1966 dasm_put(Dst, 11992); 2568 dasm_put(Dst, 12841);
1967 } else { 2569 } else {
1968 dasm_put(Dst, 12006); 2570 dasm_put(Dst, 12855);
1969 } 2571 }
1970 break; 2572 break;
1971 case 1: 2573 case 1:
1972 dasm_put(Dst, 11716, LJ_TISNUM); 2574 dasm_put(Dst, 12353, LJ_TISNUM);
2575 if (LJ_DUALNUM) {
2576 dasm_put(Dst, 12365, LJ_TISNUM);
2577 }
1973 if (sse) { 2578 if (sse) {
1974 dasm_put(Dst, 12014); 2579 dasm_put(Dst, 12863);
1975 } else { 2580 } else {
1976 dasm_put(Dst, 12028); 2581 dasm_put(Dst, 12877);
1977 } 2582 }
1978 break; 2583 break;
1979 default: 2584 default:
1980 dasm_put(Dst, 11750, LJ_TISNUM, LJ_TISNUM); 2585 dasm_put(Dst, 12398, LJ_TISNUM, LJ_TISNUM);
1981 if (sse) { 2586 if (sse) {
1982 dasm_put(Dst, 12036); 2587 dasm_put(Dst, 12885);
1983 } else { 2588 } else {
1984 dasm_put(Dst, 12050); 2589 dasm_put(Dst, 12899);
1985 } 2590 }
1986 break; 2591 break;
1987 } 2592 }
1988 dasm_put(Dst, 12064); 2593 dasm_put(Dst, 12913);
1989 break; 2594 break;
1990 case BC_POW: 2595 case BC_POW:
1991 dasm_put(Dst, 11674); 2596 dasm_put(Dst, 12195);
1992 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2597 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1993 switch (vk) { 2598 switch (vk) {
1994 case 0: 2599 case 0:
1995 dasm_put(Dst, 11682, LJ_TISNUM); 2600 dasm_put(Dst, 12308, LJ_TISNUM);
2601 if (LJ_DUALNUM) {
2602 dasm_put(Dst, 12320, LJ_TISNUM);
2603 }
1996 if (sse) { 2604 if (sse) {
1997 dasm_put(Dst, 11992); 2605 dasm_put(Dst, 12841);
1998 } else { 2606 } else {
1999 dasm_put(Dst, 12006); 2607 dasm_put(Dst, 12855);
2000 } 2608 }
2001 break; 2609 break;
2002 case 1: 2610 case 1:
2003 dasm_put(Dst, 11716, LJ_TISNUM); 2611 dasm_put(Dst, 12353, LJ_TISNUM);
2612 if (LJ_DUALNUM) {
2613 dasm_put(Dst, 12365, LJ_TISNUM);
2614 }
2004 if (sse) { 2615 if (sse) {
2005 dasm_put(Dst, 12014); 2616 dasm_put(Dst, 12863);
2006 } else { 2617 } else {
2007 dasm_put(Dst, 12028); 2618 dasm_put(Dst, 12877);
2008 } 2619 }
2009 break; 2620 break;
2010 default: 2621 default:
2011 dasm_put(Dst, 11750, LJ_TISNUM, LJ_TISNUM); 2622 dasm_put(Dst, 12398, LJ_TISNUM, LJ_TISNUM);
2012 if (sse) { 2623 if (sse) {
2013 dasm_put(Dst, 12036); 2624 dasm_put(Dst, 12885);
2014 } else { 2625 } else {
2015 dasm_put(Dst, 12050); 2626 dasm_put(Dst, 12899);
2016 } 2627 }
2017 break; 2628 break;
2018 } 2629 }
2019 dasm_put(Dst, 12069); 2630 dasm_put(Dst, 12918);
2020 if (sse) { 2631 if (sse) {
2021 dasm_put(Dst, 11548); 2632 dasm_put(Dst, 12058);
2022 } else { 2633 } else {
2023 dasm_put(Dst, 11560); 2634 dasm_put(Dst, 12070);
2024 } 2635 }
2025 dasm_put(Dst, 10997); 2636 dasm_put(Dst, 11200);
2026 break; 2637 break;
2027 2638
2028 case BC_CAT: 2639 case BC_CAT:
2029 dasm_put(Dst, 12073, Dt1(->base), Dt1(->base)); 2640 dasm_put(Dst, 12922, Dt1(->base), Dt1(->base));
2030 break; 2641 break;
2031 2642
2032 /* -- Constant ops ------------------------------------------------------ */ 2643 /* -- Constant ops ------------------------------------------------------ */
2033 2644
2034 case BC_KSTR: 2645 case BC_KSTR:
2035 dasm_put(Dst, 12167, LJ_TSTR); 2646 dasm_put(Dst, 13016, LJ_TSTR);
2036 break; 2647 break;
2037 case BC_KCDATA: 2648 case BC_KCDATA:
2038#if LJ_HASFFI 2649#if LJ_HASFFI
2039 dasm_put(Dst, 12167, LJ_TCDATA); 2650 dasm_put(Dst, 13016, LJ_TCDATA);
2040#endif 2651#endif
2041 break; 2652 break;
2042 case BC_KSHORT: 2653 case BC_KSHORT:
2043 if (sse) { 2654 if (LJ_DUALNUM) {
2044 dasm_put(Dst, 12200); 2655 dasm_put(Dst, 13049, LJ_TISNUM);
2656 } else if (sse) {
2657 dasm_put(Dst, 13061);
2045 } else { 2658 } else {
2046 dasm_put(Dst, 12215); 2659 dasm_put(Dst, 13076);
2047 } 2660 }
2048 dasm_put(Dst, 10997); 2661 dasm_put(Dst, 11200);
2049 break; 2662 break;
2050 case BC_KNUM: 2663 case BC_KNUM:
2051 if (sse) { 2664 if (sse) {
2052 dasm_put(Dst, 12223); 2665 dasm_put(Dst, 13084);
2053 } else { 2666 } else {
2054 dasm_put(Dst, 12236); 2667 dasm_put(Dst, 13097);
2055 } 2668 }
2056 dasm_put(Dst, 10997); 2669 dasm_put(Dst, 11200);
2057 break; 2670 break;
2058 case BC_KPRI: 2671 case BC_KPRI:
2059 dasm_put(Dst, 12243); 2672 dasm_put(Dst, 13104);
2060 break; 2673 break;
2061 case BC_KNIL: 2674 case BC_KNIL:
2062 dasm_put(Dst, 12269, LJ_TNIL); 2675 dasm_put(Dst, 13130, LJ_TNIL);
2063 break; 2676 break;
2064 2677
2065 /* -- Upvalue and function ops ------------------------------------------ */ 2678 /* -- Upvalue and function ops ------------------------------------------ */
2066 2679
2067 case BC_UGET: 2680 case BC_UGET:
2068 dasm_put(Dst, 12315, offsetof(GCfuncL, uvptr), DtA(->v)); 2681 dasm_put(Dst, 13176, offsetof(GCfuncL, uvptr), DtA(->v));
2069 break; 2682 break;
2070 case BC_USETV: 2683 case BC_USETV:
2071#define TV2MARKOFS \ 2684#define TV2MARKOFS \
2072 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2685 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2073 dasm_put(Dst, 12359, 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); 2686 dasm_put(Dst, 13220, 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);
2074 dasm_put(Dst, 12449); 2687 dasm_put(Dst, 13310);
2075 break; 2688 break;
2076#undef TV2MARKOFS 2689#undef TV2MARKOFS
2077 case BC_USETS: 2690 case BC_USETS:
2078 dasm_put(Dst, 12461, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2691 dasm_put(Dst, 13322, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2079 break; 2692 break;
2080 case BC_USETN: 2693 case BC_USETN:
2081 dasm_put(Dst, 12552); 2694 dasm_put(Dst, 13413);
2082 if (sse) { 2695 if (sse) {
2083 dasm_put(Dst, 12557); 2696 dasm_put(Dst, 13418);
2084 } else { 2697 } else {
2085 dasm_put(Dst, 11273); 2698 dasm_put(Dst, 12859);
2086 } 2699 }
2087 dasm_put(Dst, 12564, offsetof(GCfuncL, uvptr), DtA(->v)); 2700 dasm_put(Dst, 13425, offsetof(GCfuncL, uvptr), DtA(->v));
2088 if (sse) { 2701 if (sse) {
2089 dasm_put(Dst, 12573); 2702 dasm_put(Dst, 13434);
2090 } else { 2703 } else {
2091 dasm_put(Dst, 12579); 2704 dasm_put(Dst, 13440);
2092 } 2705 }
2093 dasm_put(Dst, 10997); 2706 dasm_put(Dst, 11200);
2094 break; 2707 break;
2095 case BC_USETP: 2708 case BC_USETP:
2096 dasm_put(Dst, 12582, offsetof(GCfuncL, uvptr), DtA(->v)); 2709 dasm_put(Dst, 13443, offsetof(GCfuncL, uvptr), DtA(->v));
2097 break; 2710 break;
2098 case BC_UCLO: 2711 case BC_UCLO:
2099 dasm_put(Dst, 12619, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2712 dasm_put(Dst, 13480, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2100 break; 2713 break;
2101 2714
2102 case BC_FNEW: 2715 case BC_FNEW:
2103 dasm_put(Dst, 12673, Dt1(->base), Dt1(->base), LJ_TFUNC); 2716 dasm_put(Dst, 13534, Dt1(->base), Dt1(->base), LJ_TFUNC);
2104 break; 2717 break;
2105 2718
2106 /* -- Table ops --------------------------------------------------------- */ 2719 /* -- Table ops --------------------------------------------------------- */
2107 2720
2108 case BC_TNEW: 2721 case BC_TNEW:
2109 dasm_put(Dst, 12744, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2722 dasm_put(Dst, 13605, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2110 break; 2723 break;
2111 case BC_TDUP: 2724 case BC_TDUP:
2112 dasm_put(Dst, 12870, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2725 dasm_put(Dst, 13731, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2113 break; 2726 break;
2114 2727
2115 case BC_GGET: 2728 case BC_GGET:
2116 dasm_put(Dst, 12962, Dt7(->env)); 2729 dasm_put(Dst, 13823, Dt7(->env));
2117 break; 2730 break;
2118 case BC_GSET: 2731 case BC_GSET:
2119 dasm_put(Dst, 12980, Dt7(->env)); 2732 dasm_put(Dst, 13841, Dt7(->env));
2120 break; 2733 break;
2121 2734
2122 case BC_TGETV: 2735 case BC_TGETV:
2123 dasm_put(Dst, 12998, LJ_TTAB, LJ_TISNUM); 2736 dasm_put(Dst, 13859, LJ_TTAB);
2124 if (sse) { 2737 if (LJ_DUALNUM) {
2125 dasm_put(Dst, 13031); 2738 dasm_put(Dst, 13882, LJ_TISNUM);
2126 } else { 2739 } else {
2127 dasm_put(Dst, 13052); 2740 dasm_put(Dst, 13896, LJ_TISNUM);
2128 if (cmov) { 2741 if (sse) {
2129 dasm_put(Dst, 10960); 2742 dasm_put(Dst, 13907);
2130 } else { 2743 } else {
2131 dasm_put(Dst, 10966); 2744 dasm_put(Dst, 13928);
2745 if (cmov) {
2746 dasm_put(Dst, 3899);
2747 } else {
2748 dasm_put(Dst, 3905);
2749 }
2750 dasm_put(Dst, 2635);
2132 } 2751 }
2133 dasm_put(Dst, 2573); 2752 dasm_put(Dst, 13938);
2134 } 2753 }
2135 dasm_put(Dst, 13062, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2754 dasm_put(Dst, 13943, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TNIL);
2136 dasm_put(Dst, 13150, LJ_TNIL, LJ_TSTR); 2755 dasm_put(Dst, 14038, LJ_TSTR);
2137 break; 2756 break;
2138 case BC_TGETS: 2757 case BC_TGETS:
2139 dasm_put(Dst, 13179, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2758 dasm_put(Dst, 14056, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2140 dasm_put(Dst, 13267, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2759 dasm_put(Dst, 14144, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2141 break; 2760 break;
2142 case BC_TGETB: 2761 case BC_TGETB:
2143 dasm_put(Dst, 13337, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2762 dasm_put(Dst, 14214, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2144 dasm_put(Dst, 13436, LJ_TNIL); 2763 dasm_put(Dst, 14313, LJ_TNIL);
2145 break; 2764 break;
2146 2765
2147 case BC_TSETV: 2766 case BC_TSETV:
2148 dasm_put(Dst, 13453, LJ_TTAB, LJ_TISNUM); 2767 dasm_put(Dst, 14330, LJ_TTAB);
2149 if (sse) { 2768 if (LJ_DUALNUM) {
2150 dasm_put(Dst, 13031); 2769 dasm_put(Dst, 13882, LJ_TISNUM);
2151 } else { 2770 } else {
2152 dasm_put(Dst, 13052); 2771 dasm_put(Dst, 13896, LJ_TISNUM);
2153 if (cmov) { 2772 if (sse) {
2154 dasm_put(Dst, 10960); 2773 dasm_put(Dst, 13907);
2155 } else { 2774 } else {
2156 dasm_put(Dst, 10966); 2775 dasm_put(Dst, 13928);
2776 if (cmov) {
2777 dasm_put(Dst, 3899);
2778 } else {
2779 dasm_put(Dst, 3905);
2780 }
2781 dasm_put(Dst, 2635);
2157 } 2782 }
2158 dasm_put(Dst, 2573); 2783 dasm_put(Dst, 14353);
2159 } 2784 }
2160 dasm_put(Dst, 13486, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2785 dasm_put(Dst, 14358, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
2161 dasm_put(Dst, 13569, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2786 dasm_put(Dst, 14442, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2162 break; 2787 break;
2163 case BC_TSETS: 2788 case BC_TSETS:
2164 dasm_put(Dst, 13631, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2789 dasm_put(Dst, 14499, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2165 dasm_put(Dst, 13706, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2790 dasm_put(Dst, 14574, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2166 dasm_put(Dst, 13798, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2791 dasm_put(Dst, 14666, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2167 break; 2792 break;
2168 case BC_TSETB: 2793 case BC_TSETB:
2169 dasm_put(Dst, 13894, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2794 dasm_put(Dst, 14762, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2170 dasm_put(Dst, 13992, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2795 dasm_put(Dst, 14860, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2171 break; 2796 break;
2172 2797
2173 case BC_TSETM: 2798 case BC_TSETM:
2174 dasm_put(Dst, 14038, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2799 dasm_put(Dst, 14906, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2175 dasm_put(Dst, 14187, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2800 dasm_put(Dst, 15055, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2176 break; 2801 break;
2177 2802
2178 /* -- Calls and vararg handling ----------------------------------------- */ 2803 /* -- Calls and vararg handling ----------------------------------------- */
2179 2804
2180 case BC_CALL: case BC_CALLM: 2805 case BC_CALL: case BC_CALLM:
2181 dasm_put(Dst, 11678); 2806 dasm_put(Dst, 12199);
2182 if (op == BC_CALLM) { 2807 if (op == BC_CALLM) {
2183 dasm_put(Dst, 14205); 2808 dasm_put(Dst, 15073);
2184 } 2809 }
2185 dasm_put(Dst, 14210, LJ_TFUNC, Dt7(->pc)); 2810 dasm_put(Dst, 15078, LJ_TFUNC, Dt7(->pc));
2186 break; 2811 break;
2187 2812
2188 case BC_CALLMT: 2813 case BC_CALLMT:
2189 dasm_put(Dst, 14205); 2814 dasm_put(Dst, 15073);
2190 break; 2815 break;
2191 case BC_CALLT: 2816 case BC_CALLT:
2192 dasm_put(Dst, 14251, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2817 dasm_put(Dst, 15119, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2193 dasm_put(Dst, 14369, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2818 dasm_put(Dst, 15237, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2194 break; 2819 break;
2195 2820
2196 case BC_ITERC: 2821 case BC_ITERC:
2197 dasm_put(Dst, 14439, LJ_TFUNC, 2+1, Dt7(->pc)); 2822 dasm_put(Dst, 15307, LJ_TFUNC, 2+1, Dt7(->pc));
2198 break; 2823 break;
2199 2824
2200 case BC_ITERN: 2825 case BC_ITERN:
2201#if LJ_HASJIT 2826#if LJ_HASJIT
2202#endif 2827#endif
2203 dasm_put(Dst, 14519, Dt6(->asize), Dt6(->array), LJ_TNIL); 2828 dasm_put(Dst, 15387, Dt6(->asize), Dt6(->array), LJ_TNIL);
2204 if (sse) { 2829 if (LJ_DUALNUM) {
2205 dasm_put(Dst, 14565); 2830 dasm_put(Dst, 12093, LJ_TISNUM);
2831 } else if (sse) {
2832 dasm_put(Dst, 12169);
2206 } else { 2833 } else {
2207 dasm_put(Dst, 14571); 2834 dasm_put(Dst, 15433);
2208 } 2835 }
2209 dasm_put(Dst, 14577); 2836 dasm_put(Dst, 15439);
2210 if (sse) { 2837 if (LJ_DUALNUM) {
2211 dasm_put(Dst, 11548); 2838 } else if (sse) {
2839 dasm_put(Dst, 12058);
2212 } else { 2840 } else {
2213 dasm_put(Dst, 11560); 2841 dasm_put(Dst, 12070);
2214 } 2842 }
2215 dasm_put(Dst, 14596, -BCBIAS_J*4); 2843 dasm_put(Dst, 15458, -BCBIAS_J*4);
2216 if (!sse) { 2844 if (!LJ_DUALNUM && !sse) {
2217 dasm_put(Dst, 14647); 2845 dasm_put(Dst, 15509);
2218 } 2846 }
2219 dasm_put(Dst, 14653, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); 2847 dasm_put(Dst, 15515, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
2220 dasm_put(Dst, 14728); 2848 dasm_put(Dst, 15590);
2221 break; 2849 break;
2222 2850
2223 case BC_ISNEXT: 2851 case BC_ISNEXT:
2224 dasm_put(Dst, 14736, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2852 dasm_put(Dst, 15598, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2225 break; 2853 break;
2226 2854
2227 case BC_VARG: 2855 case BC_VARG:
2228 dasm_put(Dst, 14835, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2856 dasm_put(Dst, 15697, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2229 dasm_put(Dst, 14999, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2857 dasm_put(Dst, 15861, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2230 break; 2858 break;
2231 2859
2232 /* -- Returns ----------------------------------------------------------- */ 2860 /* -- Returns ----------------------------------------------------------- */
2233 2861
2234 case BC_RETM: 2862 case BC_RETM:
2235 dasm_put(Dst, 14205); 2863 dasm_put(Dst, 15073);
2236 break; 2864 break;
2237 2865
2238 case BC_RET: case BC_RET0: case BC_RET1: 2866 case BC_RET: case BC_RET0: case BC_RET1:
2239 if (op != BC_RET0) { 2867 if (op != BC_RET0) {
2240 dasm_put(Dst, 15070); 2868 dasm_put(Dst, 15932);
2241 } 2869 }
2242 dasm_put(Dst, 15074, FRAME_TYPE); 2870 dasm_put(Dst, 15936, FRAME_TYPE);
2243 switch (op) { 2871 switch (op) {
2244 case BC_RET: 2872 case BC_RET:
2245 dasm_put(Dst, 15093); 2873 dasm_put(Dst, 15955);
2246 break; 2874 break;
2247 case BC_RET1: 2875 case BC_RET1:
2248 dasm_put(Dst, 15151); 2876 dasm_put(Dst, 16013);
2249 /* fallthrough */ 2877 /* fallthrough */
2250 case BC_RET0: 2878 case BC_RET0:
2251 dasm_put(Dst, 15167); 2879 dasm_put(Dst, 16029);
2252 default: 2880 default:
2253 break; 2881 break;
2254 } 2882 }
2255 dasm_put(Dst, 15178, Dt7(->pc), PC2PROTO(k)); 2883 dasm_put(Dst, 16040, Dt7(->pc), PC2PROTO(k));
2256 if (op == BC_RET) { 2884 if (op == BC_RET) {
2257 dasm_put(Dst, 15220, LJ_TNIL); 2885 dasm_put(Dst, 16082, LJ_TNIL);
2258 } else { 2886 } else {
2259 dasm_put(Dst, 15229, LJ_TNIL); 2887 dasm_put(Dst, 16091, LJ_TNIL);
2260 } 2888 }
2261 dasm_put(Dst, 15236, -FRAME_VARG, FRAME_TYPEP); 2889 dasm_put(Dst, 16098, -FRAME_VARG, FRAME_TYPEP);
2262 if (op != BC_RET0) { 2890 if (op != BC_RET0) {
2263 dasm_put(Dst, 15260); 2891 dasm_put(Dst, 16122);
2264 } 2892 }
2265 dasm_put(Dst, 4738); 2893 dasm_put(Dst, 4883);
2266 break; 2894 break;
2267 2895
2268 /* -- Loops and branches ------------------------------------------------ */ 2896 /* -- Loops and branches ------------------------------------------------ */
@@ -2270,7 +2898,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2270 2898
2271 case BC_FORL: 2899 case BC_FORL:
2272#if LJ_HASJIT 2900#if LJ_HASJIT
2273 dasm_put(Dst, 15264, HOTCOUNT_PCMASK, GG_DISP2HOT); 2901 dasm_put(Dst, 16126, HOTCOUNT_PCMASK, GG_DISP2HOT);
2274#endif 2902#endif
2275 break; 2903 break;
2276 2904
@@ -2282,57 +2910,104 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2282 case BC_FORI: 2910 case BC_FORI:
2283 case BC_IFORL: 2911 case BC_IFORL:
2284 vk = (op == BC_IFORL || op == BC_JFORL); 2912 vk = (op == BC_IFORL || op == BC_JFORL);
2285 dasm_put(Dst, 15285); 2913 dasm_put(Dst, 16147);
2914 if (LJ_DUALNUM) {
2915 dasm_put(Dst, 16151, LJ_TISNUM);
2916 if (!vk) {
2917 dasm_put(Dst, 16161, LJ_TISNUM, LJ_TISNUM);
2918 } else {
2919 dasm_put(Dst, 16190);
2920 }
2921 dasm_put(Dst, 16209, LJ_TISNUM);
2922 if (op == BC_FORI) {
2923 dasm_put(Dst, 16220, -BCBIAS_J*4);
2924 } else if (op == BC_JFORI) {
2925 dasm_put(Dst, 16234, -BCBIAS_J*4, BC_JLOOP);
2926 } else if (op == BC_IFORL) {
2927 dasm_put(Dst, 16252, -BCBIAS_J*4);
2928 } else {
2929 dasm_put(Dst, 16244, BC_JLOOP);
2930 }
2931 dasm_put(Dst, 16266);
2932 if (vk) {
2933 dasm_put(Dst, 16289);
2934 }
2935 dasm_put(Dst, 16209, LJ_TISNUM);
2936 if (op == BC_FORI) {
2937 dasm_put(Dst, 16298);
2938 } else if (op == BC_JFORI) {
2939 dasm_put(Dst, 16303, -BCBIAS_J*4, BC_JLOOP);
2940 } else if (op == BC_IFORL) {
2941 dasm_put(Dst, 16317);
2942 } else {
2943 dasm_put(Dst, 16313, BC_JLOOP);
2944 }
2945 dasm_put(Dst, 16322);
2946 } else if (!vk) {
2947 dasm_put(Dst, 16329, LJ_TISNUM);
2948 }
2286 if (!vk) { 2949 if (!vk) {
2287 dasm_put(Dst, 15289, LJ_TISNUM, LJ_TISNUM); 2950 dasm_put(Dst, 16335, LJ_TISNUM);
2288 } 2951 }
2289 dasm_put(Dst, 15308); 2952 dasm_put(Dst, 16349);
2290 if (!vk) { 2953 if (!vk) {
2291 dasm_put(Dst, 15312, LJ_TISNUM); 2954 dasm_put(Dst, 16353, LJ_TISNUM);
2292 } 2955 }
2293 if (sse) { 2956 if (sse) {
2294 dasm_put(Dst, 15321); 2957 dasm_put(Dst, 16362);
2295 if (vk) { 2958 if (vk) {
2296 dasm_put(Dst, 15333); 2959 dasm_put(Dst, 16374);
2297 } else { 2960 } else {
2298 dasm_put(Dst, 15352); 2961 dasm_put(Dst, 16393);
2299 } 2962 }
2300 dasm_put(Dst, 15357); 2963 dasm_put(Dst, 16398);
2301 } else { 2964 } else {
2302 dasm_put(Dst, 15370); 2965 dasm_put(Dst, 16411);
2303 if (vk) { 2966 if (vk) {
2304 dasm_put(Dst, 15376); 2967 dasm_put(Dst, 16417);
2305 } else { 2968 } else {
2306 dasm_put(Dst, 15392); 2969 dasm_put(Dst, 16433);
2307 } 2970 }
2308 dasm_put(Dst, 15400); 2971 dasm_put(Dst, 16441);
2309 if (cmov) { 2972 if (cmov) {
2310 dasm_put(Dst, 10960); 2973 dasm_put(Dst, 3899);
2311 } else { 2974 } else {
2312 dasm_put(Dst, 10966); 2975 dasm_put(Dst, 3905);
2313 } 2976 }
2314 if (!cmov) { 2977 if (!cmov) {
2315 dasm_put(Dst, 15405); 2978 dasm_put(Dst, 16446);
2316 } 2979 }
2317 } 2980 }
2318 if (op == BC_FORI) { 2981 if (op == BC_FORI) {
2319 dasm_put(Dst, 15411, -BCBIAS_J*4); 2982 if (LJ_DUALNUM) {
2983 dasm_put(Dst, 16452);
2984 } else {
2985 dasm_put(Dst, 16457, -BCBIAS_J*4);
2986 }
2320 } else if (op == BC_JFORI) { 2987 } else if (op == BC_JFORI) {
2321 dasm_put(Dst, 15421, -BCBIAS_J*4, BC_JLOOP); 2988 dasm_put(Dst, 16467, -BCBIAS_J*4, BC_JLOOP);
2322 } else if (op == BC_IFORL) { 2989 } else if (op == BC_IFORL) {
2323 dasm_put(Dst, 15435, -BCBIAS_J*4); 2990 if (LJ_DUALNUM) {
2991 dasm_put(Dst, 16481);
2992 } else {
2993 dasm_put(Dst, 16486, -BCBIAS_J*4);
2994 }
2995 } else {
2996 dasm_put(Dst, 16477, BC_JLOOP);
2997 }
2998 if (LJ_DUALNUM) {
2999 dasm_put(Dst, 11097);
2324 } else { 3000 } else {
2325 dasm_put(Dst, 15431, BC_JLOOP); 3001 dasm_put(Dst, 11836);
2326 } 3002 }
2327 dasm_put(Dst, 10995);
2328 if (sse) { 3003 if (sse) {
2329 dasm_put(Dst, 15445); 3004 dasm_put(Dst, 16496);
2330 } 3005 }
2331 break; 3006 break;
2332 3007
2333 case BC_ITERL: 3008 case BC_ITERL:
2334#if LJ_HASJIT 3009#if LJ_HASJIT
2335 dasm_put(Dst, 15264, HOTCOUNT_PCMASK, GG_DISP2HOT); 3010 dasm_put(Dst, 16126, HOTCOUNT_PCMASK, GG_DISP2HOT);
2336#endif 3011#endif
2337 break; 3012 break;
2338 3013
@@ -2341,33 +3016,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2341 break; 3016 break;
2342#endif 3017#endif
2343 case BC_IITERL: 3018 case BC_IITERL:
2344 dasm_put(Dst, 15456, LJ_TNIL); 3019 dasm_put(Dst, 16507, LJ_TNIL);
2345 if (op == BC_JITERL) { 3020 if (op == BC_JITERL) {
2346 dasm_put(Dst, 15471, BC_JLOOP); 3021 dasm_put(Dst, 16522, BC_JLOOP);
2347 } else { 3022 } else {
2348 dasm_put(Dst, 15485, -BCBIAS_J*4); 3023 dasm_put(Dst, 16536, -BCBIAS_J*4);
2349 } 3024 }
2350 dasm_put(Dst, 11425); 3025 dasm_put(Dst, 11198);
2351 break; 3026 break;
2352 3027
2353 case BC_LOOP: 3028 case BC_LOOP:
2354#if LJ_HASJIT 3029#if LJ_HASJIT
2355 dasm_put(Dst, 15264, HOTCOUNT_PCMASK, GG_DISP2HOT); 3030 dasm_put(Dst, 16126, HOTCOUNT_PCMASK, GG_DISP2HOT);
2356#endif 3031#endif
2357 break; 3032 break;
2358 3033
2359 case BC_ILOOP: 3034 case BC_ILOOP:
2360 dasm_put(Dst, 10997); 3035 dasm_put(Dst, 11200);
2361 break; 3036 break;
2362 3037
2363 case BC_JLOOP: 3038 case BC_JLOOP:
2364#if LJ_HASJIT 3039#if LJ_HASJIT
2365 dasm_put(Dst, 15501, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 3040 dasm_put(Dst, 16552, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2366#endif 3041#endif
2367 break; 3042 break;
2368 3043
2369 case BC_JMP: 3044 case BC_JMP:
2370 dasm_put(Dst, 15524, -BCBIAS_J*4); 3045 dasm_put(Dst, 16575, -BCBIAS_J*4);
2371 break; 3046 break;
2372 3047
2373 /* -- Function headers -------------------------------------------------- */ 3048 /* -- Function headers -------------------------------------------------- */
@@ -2381,7 +3056,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2381 3056
2382 case BC_FUNCF: 3057 case BC_FUNCF:
2383#if LJ_HASJIT 3058#if LJ_HASJIT
2384 dasm_put(Dst, 15548, HOTCOUNT_PCMASK, GG_DISP2HOT); 3059 dasm_put(Dst, 16599, HOTCOUNT_PCMASK, GG_DISP2HOT);
2385#endif 3060#endif
2386 case BC_FUNCV: /* NYI: compiled vararg functions. */ 3061 case BC_FUNCV: /* NYI: compiled vararg functions. */
2387 break; 3062 break;
@@ -2391,47 +3066,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2391 break; 3066 break;
2392#endif 3067#endif
2393 case BC_IFUNCF: 3068 case BC_IFUNCF:
2394 dasm_put(Dst, 15569, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 3069 dasm_put(Dst, 16620, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2395 if (op == BC_JFUNCF) { 3070 if (op == BC_JFUNCF) {
2396 dasm_put(Dst, 15599, BC_JLOOP); 3071 dasm_put(Dst, 16650, BC_JLOOP);
2397 } else { 3072 } else {
2398 dasm_put(Dst, 10997); 3073 dasm_put(Dst, 11200);
2399 } 3074 }
2400 dasm_put(Dst, 15608, LJ_TNIL); 3075 dasm_put(Dst, 16659, LJ_TNIL);
2401 break; 3076 break;
2402 3077
2403 case BC_JFUNCV: 3078 case BC_JFUNCV:
2404#if !LJ_HASJIT 3079#if !LJ_HASJIT
2405 break; 3080 break;
2406#endif 3081#endif
2407 dasm_put(Dst, 10292); 3082 dasm_put(Dst, 10303);
2408 break; /* NYI: compiled vararg functions. */ 3083 break; /* NYI: compiled vararg functions. */
2409 3084
2410 case BC_IFUNCV: 3085 case BC_IFUNCV:
2411 dasm_put(Dst, 15630, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 3086 dasm_put(Dst, 16681, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2412 if (op == BC_JFUNCV) { 3087 if (op == BC_JFUNCV) {
2413 dasm_put(Dst, 15599, BC_JLOOP); 3088 dasm_put(Dst, 16650, BC_JLOOP);
2414 } else { 3089 } else {
2415 dasm_put(Dst, 15721, -4+PC2PROTO(k)); 3090 dasm_put(Dst, 16772, -4+PC2PROTO(k));
2416 } 3091 }
2417 dasm_put(Dst, 15743, LJ_TNIL); 3092 dasm_put(Dst, 16794, LJ_TNIL);
2418 break; 3093 break;
2419 3094
2420 case BC_FUNCC: 3095 case BC_FUNCC:
2421 case BC_FUNCCW: 3096 case BC_FUNCCW:
2422 dasm_put(Dst, 15765, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 3097 dasm_put(Dst, 16816, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2423 if (op == BC_FUNCC) { 3098 if (op == BC_FUNCC) {
2424 dasm_put(Dst, 15794); 3099 dasm_put(Dst, 16845);
2425 } else { 3100 } else {
2426 dasm_put(Dst, 15798); 3101 dasm_put(Dst, 16849);
2427 } 3102 }
2428 dasm_put(Dst, 15806, DISPATCH_GL(vmstate), ~LJ_VMST_C); 3103 dasm_put(Dst, 16857, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2429 if (op == BC_FUNCC) { 3104 if (op == BC_FUNCC) {
2430 dasm_put(Dst, 15815); 3105 dasm_put(Dst, 16866);
2431 } else { 3106 } else {
2432 dasm_put(Dst, 15819, DISPATCH_GL(wrapf)); 3107 dasm_put(Dst, 16870, DISPATCH_GL(wrapf));
2433 } 3108 }
2434 dasm_put(Dst, 15824, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 3109 dasm_put(Dst, 16875, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2435 break; 3110 break;
2436 3111
2437 /* ---------------------------------------------------------------------- */ 3112 /* ---------------------------------------------------------------------- */
@@ -2459,7 +3134,7 @@ static int build_backend(BuildCtx *ctx)
2459 3134
2460 build_subroutines(ctx, cmov, sse); 3135 build_subroutines(ctx, cmov, sse);
2461 3136
2462 dasm_put(Dst, 15849); 3137 dasm_put(Dst, 16900);
2463 for (op = 0; op < BC__MAX; op++) 3138 for (op = 0; op < BC__MAX; op++)
2464 build_ins(ctx, (BCOp)op, op, cmov, sse); 3139 build_ins(ctx, (BCOp)op, op, cmov, sse);
2465 3140
diff --git a/src/lib_base.c b/src/lib_base.c
index 2672a076..fd7279af 100644
--- a/src/lib_base.c
+++ b/src/lib_base.c
@@ -197,6 +197,18 @@ LJLIB_ASM(tonumber) LJLIB_REC(.)
197#if LJ_HASFFI 197#if LJ_HASFFI
198 if (tviscdata(o)) { 198 if (tviscdata(o)) {
199 CTState *cts = ctype_cts(L); 199 CTState *cts = ctype_cts(L);
200 if (LJ_DUALNUM) {
201 CType *ct = ctype_raw(cts, cdataV(o)->typeid);
202 if (ctype_isinteger_or_bool(ct->info)) {
203 int64_t i;
204 lj_cconv_ct_tv(cts, ctype_get(cts, CTID_INT64), (uint8_t *)&i, o, 0);
205 if ((ct->size == 8 && (ct->info & CTF_UNSIGNED)) ?
206 (uint64_t)i <= 0x7fffffffu : checki32(i)) {
207 setintV(L->base-1, (int32_t)i);
208 return FFH_RES(1);
209 } /* else: retry and convert to double. */
210 }
211 }
200 lj_cconv_ct_tv(cts, ctype_get(cts, CTID_DOUBLE), 212 lj_cconv_ct_tv(cts, ctype_get(cts, CTID_DOUBLE),
201 (uint8_t *)&(L->base-1)->n, o, 0); 213 (uint8_t *)&(L->base-1)->n, o, 0);
202 return FFH_RES(1); 214 return FFH_RES(1);
@@ -294,7 +306,7 @@ LJLIB_ASM(pairs)
294LJLIB_NOREGUV LJLIB_ASM(ipairs_aux) LJLIB_REC(.) 306LJLIB_NOREGUV LJLIB_ASM(ipairs_aux) LJLIB_REC(.)
295{ 307{
296 lj_lib_checktab(L, 1); 308 lj_lib_checktab(L, 1);
297 lj_lib_checknum(L, 2); 309 lj_lib_checkint(L, 2);
298 return FFH_UNREACHABLE; 310 return FFH_UNREACHABLE;
299} 311}
300 312
diff --git a/src/lib_bit.c b/src/lib_bit.c
index c200404b..c6c5c6fe 100644
--- a/src/lib_bit.c
+++ b/src/lib_bit.c
@@ -21,7 +21,7 @@
21 21
22LJLIB_ASM(bit_tobit) LJLIB_REC(bit_unary IR_TOBIT) 22LJLIB_ASM(bit_tobit) LJLIB_REC(bit_unary IR_TOBIT)
23{ 23{
24 lj_lib_checknum(L, 1); 24 lj_lib_checknumber(L, 1);
25 return FFH_RETRY; 25 return FFH_RETRY;
26} 26}
27LJLIB_ASM_(bit_bnot) LJLIB_REC(bit_unary IR_BNOT) 27LJLIB_ASM_(bit_bnot) LJLIB_REC(bit_unary IR_BNOT)
@@ -29,8 +29,8 @@ LJLIB_ASM_(bit_bswap) LJLIB_REC(bit_unary IR_BSWAP)
29 29
30LJLIB_ASM(bit_lshift) LJLIB_REC(bit_shift IR_BSHL) 30LJLIB_ASM(bit_lshift) LJLIB_REC(bit_shift IR_BSHL)
31{ 31{
32 lj_lib_checknum(L, 1); 32 lj_lib_checknumber(L, 1);
33 lj_lib_checknum(L, 2); 33 lj_lib_checkbit(L, 2);
34 return FFH_RETRY; 34 return FFH_RETRY;
35} 35}
36LJLIB_ASM_(bit_rshift) LJLIB_REC(bit_shift IR_BSHR) 36LJLIB_ASM_(bit_rshift) LJLIB_REC(bit_shift IR_BSHR)
@@ -41,7 +41,7 @@ LJLIB_ASM_(bit_ror) LJLIB_REC(bit_shift IR_BROR)
41LJLIB_ASM(bit_band) LJLIB_REC(bit_nary IR_BAND) 41LJLIB_ASM(bit_band) LJLIB_REC(bit_nary IR_BAND)
42{ 42{
43 int i = 0; 43 int i = 0;
44 do { lj_lib_checknum(L, ++i); } while (L->base+i < L->top); 44 do { lj_lib_checknumber(L, ++i); } while (L->base+i < L->top);
45 return FFH_RETRY; 45 return FFH_RETRY;
46} 46}
47LJLIB_ASM_(bit_bor) LJLIB_REC(bit_nary IR_BOR) 47LJLIB_ASM_(bit_bor) LJLIB_REC(bit_nary IR_BOR)
@@ -51,8 +51,8 @@ LJLIB_ASM_(bit_bxor) LJLIB_REC(bit_nary IR_BXOR)
51 51
52LJLIB_CF(bit_tohex) 52LJLIB_CF(bit_tohex)
53{ 53{
54 uint32_t b = (uint32_t)lj_num2bit(lj_lib_checknum(L, 1)); 54 uint32_t b = (uint32_t)lj_lib_checkbit(L, 1);
55 int32_t i, n = L->base+1 >= L->top ? 8 : lj_num2bit(lj_lib_checknum(L, 2)); 55 int32_t i, n = L->base+1 >= L->top ? 8 : lj_lib_checkbit(L, 2);
56 const char *hexdigits = "0123456789abcdef"; 56 const char *hexdigits = "0123456789abcdef";
57 char buf[8]; 57 char buf[8];
58 if (n < 0) { n = -n; hexdigits = "0123456789ABCDEF"; } 58 if (n < 0) { n = -n; hexdigits = "0123456789ABCDEF"; }
diff --git a/src/lib_io.c b/src/lib_io.c
index d3dac7a0..f4888c1c 100644
--- a/src/lib_io.c
+++ b/src/lib_io.c
@@ -137,6 +137,13 @@ static int io_file_readnum(lua_State *L, FILE *fp)
137{ 137{
138 lua_Number d; 138 lua_Number d;
139 if (fscanf(fp, LUA_NUMBER_SCAN, &d) == 1) { 139 if (fscanf(fp, LUA_NUMBER_SCAN, &d) == 1) {
140 if (LJ_DUALNUM) {
141 int32_t i = lj_num2int(d);
142 if (d == (lua_Number)i && !tvismzero((cTValue *)&d)) {
143 setintV(L->top++, i);
144 return 1;
145 }
146 }
140 setnumV(L->top++, d); 147 setnumV(L->top++, d);
141 return 1; 148 return 1;
142 } else { 149 } else {
@@ -217,7 +224,7 @@ static int io_file_read(lua_State *L, FILE *fp, int start)
217 io_file_readchars(L, fp, ~((size_t)0)); 224 io_file_readchars(L, fp, ~((size_t)0));
218 else 225 else
219 lj_err_arg(L, n+1, LJ_ERR_INVFMT); 226 lj_err_arg(L, n+1, LJ_ERR_INVFMT);
220 } else if (tvisnum(L->base+n)) { 227 } else if (tvisnumber(L->base+n)) {
221 size_t len = (size_t)lj_lib_checkint(L, n+1); 228 size_t len = (size_t)lj_lib_checkint(L, n+1);
222 ok = len ? io_file_readchars(L, fp, len) : io_file_testeof(L, fp); 229 ok = len ? io_file_readchars(L, fp, len) : io_file_testeof(L, fp);
223 } else { 230 } else {
diff --git a/src/lib_math.c b/src/lib_math.c
index 46841e08..5843e2f5 100644
--- a/src/lib_math.c
+++ b/src/lib_math.c
@@ -21,12 +21,17 @@
21 21
22LJLIB_ASM(math_abs) LJLIB_REC(.) 22LJLIB_ASM(math_abs) LJLIB_REC(.)
23{ 23{
24 lj_lib_checknum(L, 1); 24 lj_lib_checknumber(L, 1);
25 return FFH_RETRY; 25 return FFH_RETRY;
26} 26}
27LJLIB_ASM_(math_floor) LJLIB_REC(math_round IRFPM_FLOOR) 27LJLIB_ASM_(math_floor) LJLIB_REC(math_round IRFPM_FLOOR)
28LJLIB_ASM_(math_ceil) LJLIB_REC(math_round IRFPM_CEIL) 28LJLIB_ASM_(math_ceil) LJLIB_REC(math_round IRFPM_CEIL)
29LJLIB_ASM_(math_sqrt) LJLIB_REC(math_unary IRFPM_SQRT) 29
30LJLIB_ASM(math_sqrt) LJLIB_REC(math_unary IRFPM_SQRT)
31{
32 lj_lib_checknum(L, 1);
33 return FFH_RETRY;
34}
30LJLIB_ASM_(math_log) LJLIB_REC(math_unary IRFPM_LOG) 35LJLIB_ASM_(math_log) LJLIB_REC(math_unary IRFPM_LOG)
31LJLIB_ASM_(math_log10) LJLIB_REC(math_unary IRFPM_LOG10) 36LJLIB_ASM_(math_log10) LJLIB_REC(math_unary IRFPM_LOG10)
32LJLIB_ASM_(math_exp) LJLIB_REC(math_unary IRFPM_EXP) 37LJLIB_ASM_(math_exp) LJLIB_REC(math_unary IRFPM_EXP)
@@ -61,7 +66,7 @@ LJLIB_ASM_(math_fmod)
61LJLIB_ASM(math_min) LJLIB_REC(math_minmax IR_MIN) 66LJLIB_ASM(math_min) LJLIB_REC(math_minmax IR_MIN)
62{ 67{
63 int i = 0; 68 int i = 0;
64 do { lj_lib_checknum(L, ++i); } while (L->base+i < L->top); 69 do { lj_lib_checknumber(L, ++i); } while (L->base+i < L->top);
65 return FFH_RETRY; 70 return FFH_RETRY;
66} 71}
67LJLIB_ASM_(math_max) LJLIB_REC(math_minmax IR_MAX) 72LJLIB_ASM_(math_max) LJLIB_REC(math_minmax IR_MAX)
@@ -137,13 +142,42 @@ LJLIB_CF(math_random) LJLIB_REC(.)
137 u.u64 = lj_math_random_step(rs); 142 u.u64 = lj_math_random_step(rs);
138 d = u.d - 1.0; 143 d = u.d - 1.0;
139 if (n > 0) { 144 if (n > 0) {
145#if LJ_DUALNUM
146 int isint = 1;
147 double r1;
148 lj_lib_checknumber(L, 1);
149 if (tvisint(L->base)) {
150 r1 = (lua_Number)intV(L->base);
151 } else {
152 isint = 0;
153 r1 = numV(L->base);
154 }
155#else
140 double r1 = lj_lib_checknum(L, 1); 156 double r1 = lj_lib_checknum(L, 1);
157#endif
141 if (n == 1) { 158 if (n == 1) {
142 d = floor(d*r1) + 1.0; /* d is an int in range [1, r1] */ 159 d = floor(d*r1) + 1.0; /* d is an int in range [1, r1] */
143 } else { 160 } else {
161#if LJ_DUALNUM
162 double r2;
163 lj_lib_checknumber(L, 2);
164 if (tvisint(L->base+1)) {
165 r2 = (lua_Number)intV(L->base+1);
166 } else {
167 isint = 0;
168 r2 = numV(L->base+1);
169 }
170#else
144 double r2 = lj_lib_checknum(L, 2); 171 double r2 = lj_lib_checknum(L, 2);
172#endif
145 d = floor(d*(r2-r1+1.0)) + r1; /* d is an int in range [r1, r2] */ 173 d = floor(d*(r2-r1+1.0)) + r1; /* d is an int in range [r1, r2] */
146 } 174 }
175#if LJ_DUALNUM
176 if (isint) {
177 setintV(L->top-1, lj_num2int(d));
178 return 1;
179 }
180#endif
147 } /* else: d is a double in range [0, 1] */ 181 } /* else: d is a double in range [0, 1] */
148 setnumV(L->top++, d); 182 setnumV(L->top++, d);
149 return 1; 183 return 1;
diff --git a/src/lib_package.c b/src/lib_package.c
index 48d4b140..71e0826b 100644
--- a/src/lib_package.c
+++ b/src/lib_package.c
@@ -217,7 +217,7 @@ static const char *searchpath (lua_State *L, const char *name,
217 lua_pushliteral(L, ""); /* error accumulator */ 217 lua_pushliteral(L, ""); /* error accumulator */
218 while ((path = pushnexttemplate(L, path)) != NULL) { 218 while ((path = pushnexttemplate(L, path)) != NULL) {
219 const char *filename = luaL_gsub(L, lua_tostring(L, -1), 219 const char *filename = luaL_gsub(L, lua_tostring(L, -1),
220 LUA_PATH_MARK, name); 220 LUA_PATH_MARK, name);
221 lua_remove(L, -2); /* remove path template */ 221 lua_remove(L, -2); /* remove path template */
222 if (readable(filename)) /* does file exist and is readable? */ 222 if (readable(filename)) /* does file exist and is readable? */
223 return filename; /* return that file name */ 223 return filename; /* return that file name */
diff --git a/src/lib_string.c b/src/lib_string.c
index 61f73060..e2396abb 100644
--- a/src/lib_string.c
+++ b/src/lib_string.c
@@ -702,6 +702,38 @@ static void addintlen(char *form)
702 form[l + sizeof(LUA_INTFRMLEN) - 1] = '\0'; 702 form[l + sizeof(LUA_INTFRMLEN) - 1] = '\0';
703} 703}
704 704
705static unsigned LUA_INTFRM_T num2intfrm(lua_State *L, int arg)
706{
707 if (sizeof(LUA_INTFRM_T) == 4) {
708 return (LUA_INTFRM_T)lj_lib_checkbit(L, arg);
709 } else {
710 cTValue *o;
711 lj_lib_checknumber(L, arg);
712 o = L->base+arg-1;
713 if (tvisint(o))
714 return (LUA_INTFRM_T)intV(o);
715 else
716 return (LUA_INTFRM_T)numV(o);
717 }
718}
719
720static unsigned LUA_INTFRM_T num2uintfrm(lua_State *L, int arg)
721{
722 if (sizeof(LUA_INTFRM_T) == 4) {
723 return (unsigned LUA_INTFRM_T)lj_lib_checkbit(L, arg);
724 } else {
725 cTValue *o;
726 lj_lib_checknumber(L, arg);
727 o = L->base+arg-1;
728 if (tvisint(o))
729 return (unsigned LUA_INTFRM_T)intV(o);
730 else if ((int32_t)o->u32.hi < 0)
731 return (unsigned LUA_INTFRM_T)(LUA_INTFRM_T)numV(o);
732 else
733 return (unsigned LUA_INTFRM_T)numV(o);
734 }
735}
736
705LJLIB_CF(string_format) 737LJLIB_CF(string_format)
706{ 738{
707 int arg = 1; 739 int arg = 1;
@@ -726,11 +758,11 @@ LJLIB_CF(string_format)
726 break; 758 break;
727 case 'd': case 'i': 759 case 'd': case 'i':
728 addintlen(form); 760 addintlen(form);
729 sprintf(buff, form, (LUA_INTFRM_T)lj_lib_checknum(L, arg)); 761 sprintf(buff, form, num2intfrm(L, arg));
730 break; 762 break;
731 case 'o': case 'u': case 'x': case 'X': 763 case 'o': case 'u': case 'x': case 'X':
732 addintlen(form); 764 addintlen(form);
733 sprintf(buff, form, (unsigned LUA_INTFRM_T)lj_lib_checknum(L, arg)); 765 sprintf(buff, form, num2uintfrm(L, arg));
734 break; 766 break;
735 case 'e': case 'E': case 'f': case 'g': case 'G': { 767 case 'e': case 'E': case 'f': case 'g': case 'G': {
736 TValue tv; 768 TValue tv;
diff --git a/src/lj_lib.c b/src/lj_lib.c
index 930e59a0..655ad085 100644
--- a/src/lj_lib.c
+++ b/src/lj_lib.c
@@ -151,13 +151,29 @@ GCstr *lj_lib_optstr(lua_State *L, int narg)
151 return (o < L->top && !tvisnil(o)) ? lj_lib_checkstr(L, narg) : NULL; 151 return (o < L->top && !tvisnil(o)) ? lj_lib_checkstr(L, narg) : NULL;
152} 152}
153 153
154#if LJ_DUALNUM
155void lj_lib_checknumber(lua_State *L, int narg)
156{
157 TValue *o = L->base + narg-1;
158 if (!(o < L->top &&
159 (tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), o)))))
160 lj_err_argt(L, narg, LUA_TNUMBER);
161}
162#endif
163
154lua_Number lj_lib_checknum(lua_State *L, int narg) 164lua_Number lj_lib_checknum(lua_State *L, int narg)
155{ 165{
156 TValue *o = L->base + narg-1; 166 TValue *o = L->base + narg-1;
157 if (!(o < L->top && 167 if (!(o < L->top &&
158 (tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), o))))) 168 (tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), o)))))
159 lj_err_argt(L, narg, LUA_TNUMBER); 169 lj_err_argt(L, narg, LUA_TNUMBER);
160 return numberVnum(o); 170 if (LJ_UNLIKELY(tvisint(o))) {
171 lua_Number n = (lua_Number)intV(o);
172 setnumV(o, n);
173 return n;
174 } else {
175 return numV(o);
176 }
161} 177}
162 178
163int32_t lj_lib_checkint(lua_State *L, int narg) 179int32_t lj_lib_checkint(lua_State *L, int narg)
@@ -166,7 +182,13 @@ int32_t lj_lib_checkint(lua_State *L, int narg)
166 if (!(o < L->top && 182 if (!(o < L->top &&
167 (tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), o))))) 183 (tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), o)))))
168 lj_err_argt(L, narg, LUA_TNUMBER); 184 lj_err_argt(L, narg, LUA_TNUMBER);
169 return numberVint(o); 185 if (LJ_LIKELY(tvisint(o))) {
186 return intV(o);
187 } else {
188 int32_t i = lj_num2int(numV(o));
189 if (LJ_DUALNUM) setintV(o, i);
190 return i;
191 }
170} 192}
171 193
172int32_t lj_lib_optint(lua_State *L, int narg, int32_t def) 194int32_t lj_lib_optint(lua_State *L, int narg, int32_t def)
@@ -175,6 +197,21 @@ int32_t lj_lib_optint(lua_State *L, int narg, int32_t def)
175 return (o < L->top && !tvisnil(o)) ? lj_lib_checkint(L, narg) : def; 197 return (o < L->top && !tvisnil(o)) ? lj_lib_checkint(L, narg) : def;
176} 198}
177 199
200int32_t lj_lib_checkbit(lua_State *L, int narg)
201{
202 TValue *o = L->base + narg-1;
203 if (!(o < L->top &&
204 (tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), o)))))
205 lj_err_argt(L, narg, LUA_TNUMBER);
206 if (LJ_LIKELY(tvisint(o))) {
207 return intV(o);
208 } else {
209 int32_t i = lj_num2bit(numV(o));
210 if (LJ_DUALNUM) setintV(o, i);
211 return i;
212 }
213}
214
178GCfunc *lj_lib_checkfunc(lua_State *L, int narg) 215GCfunc *lj_lib_checkfunc(lua_State *L, int narg)
179{ 216{
180 TValue *o = L->base + narg-1; 217 TValue *o = L->base + narg-1;
diff --git a/src/lj_lib.h b/src/lj_lib.h
index ae4be384..2c30b68d 100644
--- a/src/lj_lib.h
+++ b/src/lj_lib.h
@@ -33,9 +33,15 @@
33LJ_FUNC TValue *lj_lib_checkany(lua_State *L, int narg); 33LJ_FUNC TValue *lj_lib_checkany(lua_State *L, int narg);
34LJ_FUNC GCstr *lj_lib_checkstr(lua_State *L, int narg); 34LJ_FUNC GCstr *lj_lib_checkstr(lua_State *L, int narg);
35LJ_FUNC GCstr *lj_lib_optstr(lua_State *L, int narg); 35LJ_FUNC GCstr *lj_lib_optstr(lua_State *L, int narg);
36#if LJ_DUALNUM
37LJ_FUNC void lj_lib_checknumber(lua_State *L, int narg);
38#else
39#define lj_lib_checknumber(L, narg) lj_lib_checknum((L), (narg))
40#endif
36LJ_FUNC lua_Number lj_lib_checknum(lua_State *L, int narg); 41LJ_FUNC lua_Number lj_lib_checknum(lua_State *L, int narg);
37LJ_FUNC int32_t lj_lib_checkint(lua_State *L, int narg); 42LJ_FUNC int32_t lj_lib_checkint(lua_State *L, int narg);
38LJ_FUNC int32_t lj_lib_optint(lua_State *L, int narg, int32_t def); 43LJ_FUNC int32_t lj_lib_optint(lua_State *L, int narg, int32_t def);
44LJ_FUNC int32_t lj_lib_checkbit(lua_State *L, int narg);
39LJ_FUNC GCfunc *lj_lib_checkfunc(lua_State *L, int narg); 45LJ_FUNC GCfunc *lj_lib_checkfunc(lua_State *L, int narg);
40LJ_FUNC GCtab *lj_lib_checktab(lua_State *L, int narg); 46LJ_FUNC GCtab *lj_lib_checktab(lua_State *L, int narg);
41LJ_FUNC GCtab *lj_lib_checktabornil(lua_State *L, int narg); 47LJ_FUNC GCtab *lj_lib_checktabornil(lua_State *L, int narg);
diff --git a/src/lj_meta.c b/src/lj_meta.c
index 32024e85..23f11f58 100644
--- a/src/lj_meta.c
+++ b/src/lj_meta.c
@@ -385,10 +385,21 @@ void lj_meta_call(lua_State *L, TValue *func, TValue *top)
385} 385}
386 386
387/* Helper for FORI. Coercion. */ 387/* Helper for FORI. Coercion. */
388void LJ_FASTCALL lj_meta_for(lua_State *L, TValue *base) 388void LJ_FASTCALL lj_meta_for(lua_State *L, TValue *o)
389{ 389{
390 if (!str2num(base, base)) lj_err_msg(L, LJ_ERR_FORINIT); 390 if (!(tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), o))))
391 if (!str2num(base+1, base+1)) lj_err_msg(L, LJ_ERR_FORLIM); 391 lj_err_msg(L, LJ_ERR_FORINIT);
392 if (!str2num(base+2, base+2)) lj_err_msg(L, LJ_ERR_FORSTEP); 392 if (!(tvisnumber(o+1) || (tvisstr(o+1) && lj_str_tonumber(strV(o+1), o+1))))
393 lj_err_msg(L, LJ_ERR_FORLIM);
394 if (!(tvisnumber(o+2) || (tvisstr(o+2) && lj_str_tonumber(strV(o+2), o+2))))
395 lj_err_msg(L, LJ_ERR_FORSTEP);
396#if LJ_DUALNUM
397 /* Ensure all slots are integers or all slots are numbers. */
398 if (!(tvisint(o) && tvisint(o+1) && tvisint(o+2))) {
399 if (tvisint(o)) setnumV(o, (lua_Number)intV(o));
400 if (tvisint(o+1)) setnumV(o+1, (lua_Number)intV(o+1));
401 if (tvisint(o+2)) setnumV(o+2, (lua_Number)intV(o+2));
402 }
403#endif
393} 404}
394 405
diff --git a/src/lj_parse.c b/src/lj_parse.c
index cfc1a261..81c7c96e 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -935,6 +935,7 @@ static void bcemit_unop(FuncState *fs, BCOp op, ExpDesc *e)
935 setnumV(o, -(lua_Number)k); 935 setnumV(o, -(lua_Number)k);
936 else 936 else
937 setintV(o, -k); 937 setintV(o, -k);
938 return;
938 } else { 939 } else {
939 o->u64 ^= U64x(80000000,00000000); 940 o->u64 ^= U64x(80000000,00000000);
940 return; 941 return;
diff --git a/src/lj_str.c b/src/lj_str.c
index dea02858..febe6fbf 100644
--- a/src/lj_str.c
+++ b/src/lj_str.c
@@ -187,7 +187,7 @@ int LJ_FASTCALL lj_str_tonumber(GCstr *str, TValue *n)
187int LJ_FASTCALL lj_str_numconv(const char *s, TValue *n) 187int LJ_FASTCALL lj_str_numconv(const char *s, TValue *n)
188{ 188{
189#if LJ_DUALNUM 189#if LJ_DUALNUM
190 int sign = 0; 190 int sign = 1;
191#else 191#else
192 lua_Number sign = 1; 192 lua_Number sign = 1;
193#endif 193#endif
@@ -216,7 +216,7 @@ int LJ_FASTCALL lj_str_numconv(const char *s, TValue *n)
216 while (LJ_UNLIKELY(lj_char_isspace(*p))) p++; 216 while (LJ_UNLIKELY(lj_char_isspace(*p))) p++;
217 if (LJ_LIKELY(*p == '\0')) { 217 if (LJ_LIKELY(*p == '\0')) {
218#if LJ_DUALNUM 218#if LJ_DUALNUM
219 if (!sign) { 219 if (sign == 1) {
220 if (k < 0x80000000u) { 220 if (k < 0x80000000u) {
221 setintV(n, (int32_t)k); 221 setintV(n, (int32_t)k);
222 return 1; 222 return 1;
@@ -225,10 +225,9 @@ int LJ_FASTCALL lj_str_numconv(const char *s, TValue *n)
225 setintV(n, -(int32_t)k); 225 setintV(n, -(int32_t)k);
226 return 1; 226 return 1;
227 } 227 }
228#else 228#endif
229 setnumV(n, sign * (lua_Number)k); 229 setnumV(n, sign * (lua_Number)k);
230 return 1; 230 return 1;
231#endif
232 } 231 }
233 } 232 }
234parsedbl: 233parsedbl:
diff --git a/src/lj_str.h b/src/lj_str.h
index 406e2522..fc3d57f5 100644
--- a/src/lj_str.h
+++ b/src/lj_str.h
@@ -27,7 +27,7 @@ LJ_FUNC size_t LJ_FASTCALL lj_str_bufnum(char *s, cTValue *o);
27LJ_FUNC char * LJ_FASTCALL lj_str_bufint(char *p, int32_t k); 27LJ_FUNC char * LJ_FASTCALL lj_str_bufint(char *p, int32_t k);
28LJ_FUNCA GCstr * LJ_FASTCALL lj_str_fromnum(lua_State *L, const lua_Number *np); 28LJ_FUNCA GCstr * LJ_FASTCALL lj_str_fromnum(lua_State *L, const lua_Number *np);
29LJ_FUNC GCstr * LJ_FASTCALL lj_str_fromint(lua_State *L, int32_t k); 29LJ_FUNC GCstr * LJ_FASTCALL lj_str_fromint(lua_State *L, int32_t k);
30LJ_FUNC GCstr * LJ_FASTCALL lj_str_fromnumber(lua_State *L, cTValue *o); 30LJ_FUNCA GCstr * LJ_FASTCALL lj_str_fromnumber(lua_State *L, cTValue *o);
31 31
32#define LJ_STR_INTBUF (1+10) 32#define LJ_STR_INTBUF (1+10)
33#define LJ_STR_NUMBUF LUAI_MAXNUMBER2STR 33#define LJ_STR_NUMBUF LUAI_MAXNUMBER2STR